C Rutina 061 C------------------------------------------------------------------PC_BIE_TERM--- C C SUBRUTINA PC_BIE_TERM C C SUMA DE LOS TERMINOS DE TENSIONES TERMICAS A SFIS, C CORRESPONDIENTES A UN PUNTO DE COLOCACION C SUBROUTINE PC_BIE_TERM(PRB,PRBS,SOLS,MATS,CNTS,ELTS,NODS,PCS,SFiS, @ CEC,NODT,PRBT,ALFA,MATT) C IMPLICIT NONE INCLUDE '_param.for' INCLUDE '_struct.for' C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C VARIABLES EXTERNAS CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C PRB,PRBS,PRBT : Variables globales del problema RECORD /S_problema/ PRB RECORD /S_problema/ PRBS RECORD /S_problema/ PRBT C SOLS : Solido RECORD /S_solido/ SOLS C MATS,MATT : Material RECORD /S_material/ MATS RECORD /S_material/ MATT C CNTS : Contornos del problema RECORD /S_contorno/ CNTS(N_MAX_CNT) C ELTS : Elementos del problema RECORD /S_elemento/ ELTS(N_MAX_ELT) C NODS,NODT : Nodos del problema RECORD /S_nodo/ NODS(N_MAX_NOD) RECORD /S_nodo/ NODT(N_MAX_NOD) C PCS : Punto de colocacion RECORD /S_coloc/ PCS C SFiS() : Termino independiente. REAL*8 SFiS(N_MAX_INC) C ALFA : Coeficientes de dilatacion termica REAL*8 ALFA C CEC : Ecuacion INTEGER CEC C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C VARIABLES INTERNAS CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C K,M,N,P,Q,R,S : Contadores INTEGER k,m,n,p,q,r,s C CCNT,CELTP,CELT,CNOD,CMAT,CINC,CNDTP,CBC :Contadores INTEGER CCNT,CELTP,CELT,CNOD,CINC,CNDTP,CBC C ELTPNNI,N1,N2 : Variables auxiliares INTEGER ELTPNNI,N1,N2 C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C CALCULO DE LAS MATRICES Eij C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CALL CALC_EIJ_TERM(PRB,PRBS,PCS,MATS,SOLS,CNTS,ELTS,NODS,NODT, @ PRBT,ALFA,MATT) C C SEGUN SEA EL P.C. MONTAMOS LAS COMPONENTES DE LA ECUACION C SELECT CASE (PCS.CMP) CASE(1) C Ambas componentes n1=1 n2=2 CASE(2) C Primera componente n1=1 n2=1 CASE(3) C Segunda componente n1=2 n2=2 CASE DEFAULT WRITE(F_W,08211) PCS.NUM , PCS.CMP WRITE (*,08211) PCS.NUM , PCS.CMP STOP END SELECT C C BUCLE QUE RECORRE LAS COMPONENTES DE LA ECUACION C DO n = n1 , n2 cec=cec+1 C C BUCLE QUE RECORRE LOS CONTORNOS DEL SOLIDO C DO k = 1 , SOLS.NCNT ccnt=SOLS.CNT(k) C C BUCLE QUE RECORRE LOS ELEMENTOS DEL CONTORNO C DO m = 1 , CNTS(ccnt).NELT celt=CNTS(ccnt).ELT(m) celtp=ELTS(celt).TIP ELTPNNI=PRBS.ELTP(celtp).NNI C C BUCLE QUE RECORRE LOS NODOS DEL ELEMENTO C DO p = 1 , ELTPNNI cnod=ELTS(celt).NI(p) cndtp=PRBS.ELTP(celtp).TNI(p) C DO r = 1 , PRBT.ELTP(celtp).NVE DO s = 1 , 3 C C CALCULO DEL TERMINO INDEPENDIENTE(añadir tens.term) C SFiS(cec)=SFiS(cec)+ @ PCS.EIJT(celt).EijT(n,r)* @ PRBT.ELTP(celtp).Rij(p,r,s)* @ NODT(cnod).SOLU(s) C END DO END DO C C FIN BUCLE QUE RECORRE LOS NODOS DEL ELEMENTO C C WRITE(F_H,15) cnod,(NODT(cnod).SOLU(s), s=1,3) END DO C C FIN BUCLE QUE RECORRE LOS ELEMENTOS DEL CONTORNO C END DO C C FIN BUCLE QUE RECORRE LOS CONTORNOS DEL SOLIDO C END DO C C FIN BUCLE QUE RECORRE LAS COMPONENTES DE LA ECUACION C END DO C C FIN DE LA RUTINA C RETURN C C FORMATOS DE ESCRITURA. C 08211 FORMAT(/,2x,'ERROR 08211 - PC_BIE_TERM - Punto de colocacion ',i4, @ '. Codigo ',i2,' no valido.') 15 FORMAT(4x,i4,4x,e22.16,4x,e22.16,4x,e22.16,4x,e22.16,4x,e22.16 @ ,4x,e22.16,4x,e22.16,4x,e22.16,4x,e22.16,4x,e22.16,4x,e22.16 @ ,4x,e22.16,4x,e22.16,4x,e22.16) C END C