epthor
C EPTHOR SOURCE BP208322 17/03/01 21:17:27 9325 C======================================================================= C= E P T H O R = C= ----------- = C= = C= Fonction : = C= ---------- = C= Calcul des deformations d'origine THERMIQUE dans le cas des mate- = C= riaux ORTHOTROPES. Sous-programme appele par EPTHP (epthp.eso). = C= = C= Parametres : (E)=Entree (S)=Sortie = C= ------------ = C= MFR (E) Numero de la FORMULATION utilisee = C= MELE (E) Numero de l'element fini dans NOMTP (cf. CCHAMP) = C= VALMAT (E) Tableau des caracteristiques du materiau = C= NDEFS (E) Nombre de composantes de deformations = C= TEMP (E) Temperature au point de Gauss considere = C= THIF (E) | Temperatures des differentes couches = C= THM (E) | dans les cas des elements coques = C= THSU (E) | (couches INFErieure, MOYEnne, SUPErieure) = C= E3 (E) Excentrement dans la cas d'elements coques = C= EPAIST (E) Epaisseur dans le cas d'elements coques = C= RES (S) Tableau des valeurs des deformation thermiques = C= KERRE (S) Indicateur d'erreur si non nul = C= TXR,XLOC,XGLOB,ROTS (E/S) Tableaux de travail = C======================================================================= . EPAIST,TXR,XLOC,XGLOB,ROTS,RES,KERRE) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCREEL DIMENSION VALMAT(*),RES(*),XLOC(3,3),XGLOB(3,3), . TXR(IDIM,*),ROTS(NDEFS,*),EPS1(6) KERRE=0 C 1 - Elements MASSIFS et POREUX C ================================ IF (MFR.EQ.1.OR.MFR.EQ.33.OR.MFR.EQ.31) THEN C ===== C 1.1 - Bidimensionnel PLAN Contraintes Planes C ===== IF (IFOUR.EQ.-2) THEN ALP1=VALMAT(1) ALP2=VALMAT(2) XLOC(1,1)=VALMAT(3) XLOC(2,1)=VALMAT(4) XLOC(1,2)=-XLOC(2,1) XLOC(2,2)=XLOC(1,1) DO k=1,IDIM DO j=1,IDIM ZZ=XZero DO i=1,IDIM ZZ=ZZ+TXR(j,i)*XLOC(i,k) ENDDO XGLOB(j,k)=ZZ ENDDO ENDDO CC=XGLOB(1,1)*XGLOB(1,1) SS=XGLOB(2,1)*XGLOB(2,1) CS=XGLOB(1,1)*XGLOB(2,1) RES(1)=(CC*ALP1+SS*ALP2)*TEMP RES(2)=(CC*ALP2+SS*ALP1)*TEMP RES(3)=XZero RES(4)=2.*CS*(ALP1-ALP2)*TEMP C ===== C 1.2 - Bidimensionnel PLAN (DP/DPGE) et Axisymetrie C ===== ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-3.OR.IFOUR.EQ.0) THEN ALP1=VALMAT(1) ALP2=VALMAT(2) ALP3=VALMAT(3) XLOC(1,1)=VALMAT(4) XLOC(2,1)=VALMAT(5) XLOC(1,2)=-XLOC(2,1) XLOC(2,2)=XLOC(1,1) DO k=1,IDIM DO j=1,IDIM ZZ=XZero DO i=1,IDIM ZZ=ZZ+TXR(j,i)*XLOC(i,k) ENDDO XGLOB(j,k)=ZZ ENDDO ENDDO CC=XGLOB(1,1)*XGLOB(1,1) SS=XGLOB(2,1)*XGLOB(2,1) CS=XGLOB(1,1)*XGLOB(2,1) RES(1)=(CC*ALP1+SS*ALP2)*TEMP RES(2)=(CC*ALP2+SS*ALP1)*TEMP RES(3)=ALP3*TEMP RES(4)=2.*CS*(ALP1-ALP2)*TEMP IF (IFOUR.EQ.1) THEN RES(5)=XZero RES(6)=XZero ENDIF C ===== C 1.3 - Tridimensionnel et 2D Fourier C ===== ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.1) THEN ALP1=VALMAT(1) ALP2=VALMAT(2) ALP3=VALMAT(3) XLOC(1,1)=VALMAT(4) XLOC(2,1)=VALMAT(5) XLOC(3,1)=VALMAT(6) XLOC(1,2)=VALMAT(7) XLOC(2,2)=VALMAT(8) XLOC(3,2)=VALMAT(9) DO k=1,3 DO j=1,IDIM ZZ=XZero DO i=1,IDIM ZZ=ZZ+TXR(j,i)*XLOC(i,k) ENDDO cbp_doute : dans dohmao, il s'agit du terme XGLOB(k,j) XGLOB(j,k)=ZZ ROTS(j,k)=ZZ*ZZ ENDDO ENDDO cbp en 2D Fourier, vrai TXR = [TXR(2x2) [0] ; [0] 1] IF(IFOUR.EQ.1) THEN cbp : dans le doute, on n'ecrit pas dans le meme sens que dohmao... XGLOB(3,1)=XLOC(3,1) XGLOB(3,2)=XLOC(3,2) XGLOB(3,3)=XLOC(3,3) ENDIF DO i=1,3 ROTS(i,4)=XGLOB(i,1)*XGLOB(i,2) ROTS(i,5)=XGLOB(i,2)*XGLOB(i,3) ROTS(i,6)=XGLOB(i,1)*XGLOB(i,3) ROTS(4,i)=2.*XGLOB(1,i)*XGLOB(2,i) ROTS(5,i)=2.*XGLOB(2,i)*XGLOB(3,i) ROTS(6,i)=2.*XGLOB(1,i)*XGLOB(3,i) ENDDO DO i=4,6 i1=i-3 DO j=4,6 j1=j-3 ENDDO ENDDO DO i=1,6 ZZ=ROTS(6,i) ROTS(6,i)=ROTS(5,i) ROTS(5,i)=ZZ ENDDO DO i=1,6 ZZ=ROTS(i,6) ROTS(i,6)=ROTS(i,5) ROTS(i,5)=ZZ ENDDO RES(1)=(ROTS(1,1)*ALP1+ROTS(1,2)*ALP2+ROTS(1,3)*ALP3)*TEMP RES(2)=(ROTS(2,1)*ALP1+ROTS(2,2)*ALP2+ROTS(2,3)*ALP3)*TEMP RES(3)=(ROTS(3,1)*ALP1+ROTS(3,2)*ALP2+ROTS(3,3)*ALP3)*TEMP RES(4)=(ROTS(4,1)*ALP1+ROTS(4,2)*ALP2+ROTS(4,3)*ALP3)*TEMP RES(5)=(ROTS(5,1)*ALP1+ROTS(5,2)*ALP2+ROTS(5,3)*ALP3)*TEMP RES(6)=(ROTS(6,1)*ALP1+ROTS(6,2)*ALP2+ROTS(6,3)*ALP3)*TEMP C ===== C 1.4 - Unidimensionnel (1D) C ===== ELSE IF (IFOUR.GE.3.AND.IFOUR.LE.15.AND.MFR.EQ.1) THEN RES(1)=VALMAT(1)*TEMP IF (IFOUR.EQ.6) THEN RES(2)=XZero RES(3)=XZero ELSE IF (IFOUR.EQ.4.OR.IFOUR.EQ.8) THEN RES(2)=VALMAT(2)*TEMP RES(3)=XZero ELSE IF (IFOUR.EQ.5.OR.IFOUR.EQ.10.OR.IFOUR.EQ.13) THEN RES(2)=XZero RES(3)=VALMAT(2)*TEMP ELSE RES(2)=VALMAT(2)*TEMP RES(3)=VALMAT(3)*TEMP ENDIF C ===== C 1.5 - Cas non prevus C ===== ELSE KERRE=19 ENDIF C 2 - Element JOINT 3D : JOI4 C ============================== ELSE IF (MELE.EQ.88) THEN IF (IFOUR.EQ.2) THEN RES(1)=XZero RES(2)=XZero RES(3)=VALMAT(1)*TEMP ELSE KERRE=19 ENDIF C 3 - Elements COQUES MINCES sauf COQ2 C ====================================== ELSE IF (MELE.EQ.27.OR.MELE.EQ.28.OR.MELE.EQ.49.OR. . MELE.EQ.93) THEN IF (IFOUR.GT.0) THEN FACM=(THSU+THIF+4.D0*THM)/6.D0 FACF=(THSU-THIF)/EPAIST ALP1=VALMAT(1) ALP2=VALMAT(2) V1X=VALMAT(3) V1Y=VALMAT(4) CC=V1X*V1X SS=V1Y*V1Y CS=V1X*V1Y RES(4)=CC*ALP1+SS*ALP2 RES(5)=CC*ALP2+SS*ALP1 RES(6)=2.*CS*(ALP1-ALP2) RES(1)=RES(4)*FACM RES(2)=RES(5)*FACM RES(3)=RES(6)*FACM RES(4)=RES(4)*FACF RES(5)=RES(5)*FACF RES(6)=RES(6)*FACF ELSE IF (IFOUR.LE.0) THEN KERRE=19 ENDIF C 4 - Element COQ2 C ================== ELSE IF (MELE.EQ.44)THEN FACM=(THSU+THIF+4.D0*THM)/6.D0 FACF=(THSU-THIF)/EPAIST ALP1=VALMAT(1) ALP2=VALMAT(2) V1X=VALMAT(3) V1Y=VALMAT(4) CC=V1X*V1X SS=V1Y*V1Y IF (IFOUR.GT.0) THEN CS=V1X*V1Y RES(4)=CC*ALP1+SS*ALP2 RES(5)=CC*ALP2+SS*ALP1 RES(6)=2.*CS*(ALP1-ALP2) RES(1)=RES(4)*FACM RES(2)=RES(5)*FACM RES(3)=RES(6)*FACM RES(4)=RES(4)*FACF RES(5)=RES(5)*FACF RES(6)=RES(6)*FACF ELSE IF (IFOUR.EQ.0) THEN RES(3)=CC*ALP1+SS*ALP2 RES(4)=CC*ALP2+SS*ALP1 RES(1)=RES(3)*FACM RES(2)=RES(4)*FACM RES(3)=RES(3)*FACF RES(4)=RES(4)*FACF ELSE KERRE=19 ENDIF C 5 - Elements COQUES EPAISSES C ============================== ELSE IF (MELE.EQ.41.OR.MELE.EQ.56) THEN THG=0.5*E3*((E3+1.)*THSU+(E3-1.)*THIF)+(1.-E3*E3)*THM ALP1=VALMAT(1) ALP2=VALMAT(2) V1X=VALMAT(3) V1Y=VALMAT(4) CC=V1X*V1X SS=V1Y*V1Y CS=V1X*V1Y RES(1)=(CC*ALP1+SS*ALP2)*THG RES(2)=(CC*ALP2+SS*ALP1)*THG RES(3)=2.*CS*(ALP1-ALP2)*THG RES(4)=XZero RES(5)=XZero C 6 - Elements JOI1 C ============================== ELSE IF (MELE.EQ.265) THEN IF (IDIM.EQ.3) THEN ALPN=VALMAT(1) ALP1=VALMAT(2) ALP2=VALMAT(3) ALQN=VALMAT(4) ALQ1=VALMAT(5) ALQ2=VALMAT(6) * EPS1(1)=ALPN EPS1(2)=ALP1 EPS1(3)=ALP2 EPS1(4)=ALQN EPS1(5)=ALQ1 EPS1(6)=ALQ2 * DO I=1,6 RES(I)=EPS1(I)*TEMP ENDDO * ELSE IF (IDIM.EQ.2) THEN ALPN=VALMAT(1) ALPS=VALMAT(2) ALQS=VALMAT(3) * EPS1(1)=ALPN EPS1(2)=ALPS EPS1(2)=ALQS * DO I=1,3 RES(I)=EPS1(I)*TEMP ENDDO ENDIF C 7 - Autres cas non prevus C =========================== ELSE KERRE=19 ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales