rtens4
C RTENS4 SOURCE BP208322 15/06/22 21:22:41 8543 & IVARES,IDEFO,IINTE,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 avec * * cisaillement transverse (DST, COQ4) * * * * 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) * * IDEFO (e) =1 : tenseur de deformations (contraintes sinon) * * IINTE (e) pointeur sur le segment MINTE (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 dans RTENS * * D.R.-M. le 18/3/94 * *-----------------------------------------------------------------------* -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC SMCHAML -INC SMINTE -INC SMCOORD -INC SMELEME * * MWRK1,3 initialises dans RTENS4 * SEGMENT MWRK1 REAL*8 XEL(3,NBNN),XEL2(3,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),VECWRK(3),V1(4),V2(4),W2(3),W3(3) DIMENSION CENTR1(3),CENTR2(3),AXEI1(3),VECX(3),VECY(3) DIMENSION UR(3),UTHETA(3),UPHI(3),UN(3),UT(3),XIGAU(3) * NDIM=3 IER1 = 0 MELEME = IELEME NBNN = NUM(/1) NBELEM = NUM(/2) MINTE = IINTE NBPGAU = POIGAU(/1) * SEGINI MWRK3 IF (ICAS.NE.1) SEGINI MWRK1 * * Boucle sur les elements * DO 1090 IB=1,NBELEM * IF (ICAS.NE.1) THEN IF (MELE.EQ.49) THEN ELSE IF (MELE.EQ.93) THEN ENDIF ENDIF * IF (ICAS.EQ.2) THEN * * On veut le tenseur dans un repere defini par * un ou deux 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.) THEN IER1 = 1 GOTO 1100 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.) THEN IER1 = 1 GOTO 1100 ENDIF WL33=(VL11*VL22-VL12*VL21)/(VL1N*VL2N) WL21=(-WL33*VL12)/VL1N WL22=(WL33*VL11)/VL1N ENDIF * * Construction de la matrice de rotation qui fait * passer du repere local a la coque 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 SIGFLX=R(3,3) ENDIF * * Boucle sur les points de Gauss * DO 1090 IGAU=1,NBPGAU * IF (ICAS.EQ.1) THEN * * On veut le tenseur dans le repere d'orthotropie * MPTVAL=IVAVEC * MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) 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 1100 ENDIF * R(1,2)=-R(2,1) R(2,2)= R(1,1) R(3,3)= 1.D0 SIGFLX= 1.D0 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 1100 ENDIF ENDIF * * Rotation du tenseur pour les termes 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(7) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(1,3) = VELCHE(IGMN,IBMN) * MELVAL=IVAL(8) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(2,3) = VELCHE(IGMN,IBMN) * MELVAL=IVAL(4) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) AUX4=VELCHE(IGMN,IBMN) * MELVAL=IVAL(5) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) AUX5 = VELCHE(IGMN,IBMN) * MELVAL=IVAL(6) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) AUX6 = 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(7) VELCHE(IGAU,IB)=A(1,3) * MELVAL=IVAL(8) VELCHE(IGAU,IB)=A(2,3) * * Rotation du tenseur pour les termes de flexion * * A(1,1)=SIGFLX*AUX4 A(2,2)=SIGFLX*AUX5 A(1,2)=SIGFLX*AUX6 IF (IDEFO.EQ.1) A(1,2)=A(1,2)/2.D0 A(2,1)=A(1,2) * t * >>> Changement de repere : A = R A R <<< * * MELVAL=IVAL(4) VELCHE(IGAU,IB)=A(1,1) * MELVAL=IVAL(5) VELCHE(IGAU,IB)=A(2,2) * IF (IDEFO.EQ.1) A(1,2)=A(1,2)*2.D0 * MELVAL=IVAL(6) VELCHE(IGAU,IB)=A(1,2) * * Fin des deux boucles * 1090 CONTINUE 1100 CONTINUE SEGSUP MWRK3 IF (ICAS.NE.1) SEGSUP MWRK1 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales