rtens3
C RTENS3 SOURCE BP208322 15/06/22 21:22:40 8543 & IVARES,IVAEP,IDEFO,IINTE,IINTE1,MELE,NPINT,NVEC, & V1,V2,W2,W3,CENTR1,CENTR2,AXEI1,ICAS,IER1) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *-----------------------------------------------------------------------* * Operateur RTENS : cas de la formulation coque epaisse * * (COQ6, COQ8) * * * * IPCHE1 (e) pointeur sur un MCHAML de caracteristiques * * = 0 si isotropie * * IFOMEM (e) = IFOUR de CCOPTIO * * IMOT (e) indique le type de repere desire (cf RTENS) * * IPTV2 (e) pointeur sur le 2nd point repere * * IELEME (e) pointeur sur le segment MELEME (actif) * * IVAVEC (e/s) pointeur sur un segment MPTVAL (actif) * * IVACOM (e/s) pointeur sur un segment MPTVAL (actif) * * IVARES (e/s) pointeur sur un segment MPTVAL (actif) * * IVAEP (e) pointeur sur un segment MPTVAL (actif) * * IDEFO (e) =1 : tenseur de deformations (contraintes sinon) * * IINTE (e) pointeur sur le segment MINTE (actif) * * IINTE1 (e) pointeur sur le segment MINTE1 (non actif) * * MELE (e) numero de l'element-fini dans NOMTP * * NPINT (e) nombre de points d'integration (coques) * * NVEC (e) nombre de composantes du futur MCHAML * * V1 (e) coordonnees et norme du 1er vecteur * * V2 (e) coordonnees et norme du 2nd vecteur * * W2 (e) coordonnees d'un 1er vecteur de travail * * W3 (e) coordonnees d'un 2nd vecteur de travail * * CENTR1 (e) coordonnees du 1er point repere * * CENTR2 (e) coordonnees du 2nd point repere * * AXEI1 (e) coordonnees du vecteur de l'axe de symetrie * * ICAS (e) distingue les differentes syntaxes d'appel * * IER1 (s) code d'erreur pour desactivation * * D.R.-M. le 21/3/94 * *-----------------------------------------------------------------------* -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC SMCHAML -INC SMINTE -INC SMCOORD -INC SMELEME * * MWRK1,2,3 initialises dans RTENS3 * SEGMENT MWRK1 REAL*8 XEL(3,NBNN),XEL2(3,NBNN) ENDSEGMENT * SEGMENT MWRK2 REAL*8 TXR(3,3,NBNN),TH(NBNN) ENDSEGMENT * SEGMENT MWRK3 REAL*8 A(NDIM,NDIM),R(NDIM,NDIM),RT(NDIM,NDIM),TRAV(NDIM,NDIM) ENDSEGMENT * * Les MPTVAL recueillent les donnees pour le MCHAML resultat * IVAL contient les pointeurs des MELVAL du nouveau MCHAML * SEGMENT MPTVAL INTEGER IPOS(NS) , NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * DIMENSION BPSS(3,3),T(9),V1(4),V2(4),W2(3),W3(3) DIMENSION CENTR1(3),CENTR2(3),AXEI1(3) * IER1=0 MELEME = IELEME NBNN = NUM(/1) NBELEM = NUM(/2) NDIM = 3 MINTE = IINTE NBPGAU = POIGAU(/1) SEGINI MWRK1,MWRK2,MWRK3 MINTE1 = IINTE1 SEGACT MINTE1 * * Boucle sur les elements * DO 1050 IB=1,NBELEM * IF (ICAS.NE.1) THEN * * Epaisseur de l'element courant * DO 1060 IG = 1,NBNN MPTVAL = IVAEP MELVAL=IVAL(1) IGMN=MIN(IG,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) TH(IG)=VELCHE(IGMN,IBMN) 1060 CONTINUE * ENDIF * * Boucle sur les points de Gauss * DO 1050 IGAU=1,NBPGAU * IF (ICAS.EQ.1) THEN * * On veut le tenseur dans le repere d'orthotropie * MPTVAL=IVAVEC * MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) R(1,1)=VELCHE(IGMN,IBMN) * MELVAL=IVAL(2) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) R(2,1)=VELCHE(IGMN,IBMN) RN=R(1,1)*R(1,1)+R(2,1)*R(2,1) * IF (RN.EQ.0.D0) THEN IER1 = 1 GOTO 1050 ENDIF * R(1,2)=-R(2,1) R(2,2)= R(1,1) R(3,3)= 1.D0 * ELSE E = DZEGAU(IGAU) * * Construction de la matrice de rotation qui fait * passer d'un repere global au repere local au point * d'integration * K=0 DO 1053 I=1,3 DO 1054 J=1,3 K=K+1 BPSS(I,J)=T(K) 1054 CONTINUE 1053 CONTINUE ENDIF * IF (ICAS.EQ.2) THEN * * On veut le tenseur dans un repere defini * par 1 ou 2 vecteurs * VL11=BPSS(1,1)*V1(1)+BPSS(1,2)*V1(2)+BPSS(1,3)*V1(3) VL12=BPSS(2,1)*V1(1)+BPSS(2,2)*V1(2)+BPSS(2,3)*V1(3) VL1N=SQRT(VL11**2+VL12**2) * IF (VL1N.EQ.0.D0) THEN IER1 = 1 GOTO 1050 ENDIF * IF (IPTV2.NE.0) THEN VL21=BPSS(1,1)*V2(1)+BPSS(1,2)*V2(2)+BPSS(1,3)*V2(3) VL22=BPSS(2,1)*V2(1)+BPSS(2,2)*V2(2)+BPSS(2,3)*V2(3) VL2N=SQRT(VL21**2+VL22**2) IF (VL2N.EQ.0.D0) THEN IER1 = 1 GOTO 1050 ENDIF * WL33=(VL11*VL22-VL12*VL21)/(VL1N*VL2N) WL21=(-WL33*VL12)/VL1N WL22=( WL33*VL11)/VL1N ENDIF * * Matrice de rotation faisant passer du repere local * au point de Gauss au nouveau repere local defini * a partir de la projection des vecteurs V1 et V2 * sur la coque * IF (IPTV2.EQ.0) THEN R(1,1)= VL11/VL1N R(2,1)= VL12/VL1N R(1,2)=-VL12/VL1N R(2,2)= VL11/VL1N R(3,3)= 1.D0 ELSE R(1,1)=VL11/VL1N R(2,1)=VL12/VL1N R(1,2)=WL21 R(2,2)=WL22 R(3,3)=WL33 ENDIF ENDIF * IF (ICAS.EQ.3) THEN * * Matrice de passage entre le repere local de la coque * et la projection sur celle-ci du repere global choisi * & SHPTOT,XEL,NBNN,NBPGAU,R,SIGFLX,IER1) IF (IER1.NE.0) THEN GOTO 1050 ENDIF ENDIF * * Rotation du tenseur pour les grandeurs de membrane * * MPTVAL=IVACOM * MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(1,1) = VELCHE(IGMN,IBMN) * MELVAL=IVAL(2) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(2,2) = VELCHE(IGMN,IBMN) * MELVAL=IVAL(3) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(1,2) = VELCHE(IGMN,IBMN) * MELVAL=IVAL(4) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(1,3) = VELCHE(IGMN,IBMN) * MELVAL=IVAL(5) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(2,3) = VELCHE(IGMN,IBMN) * IF (IDEFO.EQ.1) A(1,2)=A(1,2)/2.D0 IF (IDEFO.EQ.1) A(1,3)=A(1,3)/2.D0 IF (IDEFO.EQ.1) A(2,3)=A(2,3)/2.D0 A(2,1)=A(1,2) A(3,1)=A(1,3) A(3,2)=A(2,3) * t * >>> Changement de repere : A = R A R <<< * * MPTVAL=IVARES * MELVAL=IVAL(1) VELCHE(IGAU,IB)=A(1,1) * MELVAL=IVAL(2) VELCHE(IGAU,IB)=A(2,2) * IF (IDEFO.EQ.1) A(1,2)=A(1,2)*2.D0 IF (IDEFO.EQ.1) A(1,3)=A(1,3)*2.D0 IF (IDEFO.EQ.1) A(2,3)=A(2,3)*2.D0 * MELVAL=IVAL(3) VELCHE(IGAU,IB) = A(1,2) * MELVAL=IVAL(4) VELCHE(IGAU,IB)=A(1,3) * MELVAL=IVAL(5) VELCHE(IGAU,IB)=A(2,3) * * Fin des deux boucles * 1050 CONTINUE * SEGDES MINTE,MINTE1 SEGSUP MWRK1,MWRK2,MWRK3 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales