C THETA SOURCE PV 20/09/12 21:15:35 10711 C======================================================================= C= T H E T A = C= --------- = C= = C= OPERATEUR CAST3M "THETA" : = C= -------------------------- = C= SIG1 = 'THETA' MODL1 | CHP1 | CARA1 ; = C= | CHEL1 | = C= = C= Cet operateur sert a calculer les contraintes dues a un champ de = C= temperatures (contraintes dites thermiques). = C= = C= ARGUMENTS : = C= ----------- = C= MODL1 (MMODEL) Modele (global) associe a la structure = C= CHP1 (CHPOINT) Temperatures aux NOEUDS = C= CHEL1 (MCHAML) Temperatures donnees par ELEMENT = C= Sous-type 'TEMPERATURES' = C= CARA1 (MCHAML) Caracteristiques des materiaux = C= Sous-type 'CARACTERISTIQUES' = C= = C= RESULTAT : = C= ---------- = C= SIG1 (MCHAML) Contraintes d'origine thermique = C======================================================================= SUBROUTINE THETA IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMCHAML -INC SMELEME -INC SMCOORD segact mcoord C 1 - LECTURE DES ARGUMENTS DE L'OPERATEUR C ========================================== C 1.1 - Lecture OBLIGATOIRE du modele (IPMODL) C ===== MOTERR(1:8)='MODELE' CALL MESLIR(-137) CALL LIROBJ('MMODEL ',IPMODL,1,IRET) CALL ACTOBJ('MMODEL ',IPMODL,1) IF (IERR.NE.0) RETURN C ===== C 1.2 - Lecture OBLIGATOIRE du champ de caracteristiques (IPCHA1) C ===== IPCHA1=0 CALL LIROBJ('MCHAML ',IPCHA1,1,IRET) CALL ACTOBJ('MCHAML ',IPCHA1,1) IF (IERR.NE.0) RETURN call reduaf(ipcha1,ipmodl,ipch,0,ir,ker) if (ir.ne.1) call erreur(ker) IF (IERR.NE.0) RETURN ipcha1=ipch C ===== C 1.3 - Lecture OBLIGATOIRE du champ de temperatures donne par : C 1) un CHPOINT (IPCHPO) converti en MCHAML (IPCHE2) C ou 2) un MCHAML (IPCHA2) qui est duplique en IPCHE2 C ===== C= 1.3.1 - Syntaxe 1 : lecture d'un CHPOINT CALL LIROBJ('CHPOINT ',IPCHPO,0,IRET) IF (IERR.NE.0) RETURN IF (IRET.NE.0) THEN CALL ACTOBJ('CHPOINT ',IPCHPO,1) IPCHE1=IPCHA1 CALL CHAME1(0,IPMODL,IPCHPO,' ',IPCHE2,1) IF (IERR.NE.0) RETURN ELSE C= 1.3.2 - Syntaxe 2 : lecture d'un MCHAML C= Mise en ordre des MCHAML lus C= 1 -> IPCHE1 = Caracteristiques, 2 -> IPCHE2 = Temperatures IPCHA2=0 CALL LIROBJ('MCHAML ',IPCHA2,1,IRET) CALL ACTOBJ('MCHAML ',IPCHA2,1) IF (IERR.NE.0) RETURN call reduaf(ipcha2,ipmodl,ipch,0,ir,ker) if (ir.ne.1) call erreur(ker) IF (IERR.NE.0) RETURN ipcha2=ipch IPCHE1=0 IPCHE2=0 CALL RNGCHA(IPCHA1,IPCHA2,'CARACTERISTIQUES','TEMPERATURES', . IPCHE1,IPCHE2) C= 1.3.3 - ERREUR si les sous-types ne sont pas corrects IF (IPCHE1.EQ.0.OR.IPCHE2.EQ.0) THEN CALL ERREUR(554) RETURN ENDIF C= 1.3.4 - Copie du MCHAML de temperatures pour la linearisation CALL ECROBJ('MCHAML ',IPCHE2) CALL COPIER CALL LIROBJ('MCHAML ',IPCHE2,1,IRET) IF (IERR.NE.0) RETURN ENDIF C 2 - LINEARISATION DES TEMPERATURES POUR LES NOEUDS MILIEUX C ============================================================ CALL LINEAT(IPCHE2) C 3 - CALCUL DU MCHAML DE CONTRAINTES THERMIQUES C ================================================ CALL THETAP(IPMODL,IPCHE1,IPCHE2,IPSTRS,IRET) C 4 - ECRITURE DU MCHAML RESULTAT C ================================= IF (IRET.EQ.1) THEN CALL ACTOBJ('MCHAML ',IPSTRS,1) CALL ECROBJ('MCHAML ',IPSTRS) ENDIF END