rtens2
C RTENS2 SOURCE BP208322 15/06/22 21:22:39 8543 & IVARES,IDEFO,IINTE,MELE,NPINT,NVEC,V1,V2,W2,W3, & CENTR1,CENTR2,AXEI1,IER1) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *-----------------------------------------------------------------------* * Operateur RTENS : cas de la formulation coque (COQ2, COQ3, DKT) * * * * 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 * * IER1 (s) =1 : erreur puis 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 RTENS2 * 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),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) * IER1 = 0 NDIM = 2 MELEME = IELEME NBNN = NUM(/1) NBELEM = NUM(/2) MINTE = IINTE NBPGAU = POIGAU(/1) SEGINI MWRK3 IF (IPCHE1.EQ.0) SEGINI MWRK1 * * Boucle sur les elements * DO 1030 IB=1,NBELEM * IF (IPCHE1.EQ.0) THEN * * Matrice de passage repere global -> repere local * * IF (IMOT.EQ.0) THEN * * Passage du tenseur dans un autre repere cartesien defini * par le(s) vecteur(s) V1 (et V2) * 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 1040 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 1040 ENDIF WL33=( VL11*VL22-VL12*VL21)/(VL1N*VL2N) WL21=(-WL33*VL12)/VL1N WL22=( WL33*VL11)/VL1N ENDIF * * Matrice de rotation : repere local de la coque ---> * nouveau repere defini a partir de la projection du * vecteur V1 (et event. de 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 SIGFLX= 1.D0 ELSE R(1,1)= VL11/VL1N R(2,1)= VL12/VL1N R(1,2)= WL21 R(2,2)= WL22 SIGFLX= WL33 ENDIF ENDIF ENDIF * * Boucle sur les points de Gauss * DO 1030 IGAU=1,NBPGAU * IF (IPCHE1.NE.0) 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) R(1,2)=-R(2,1) R(2,2)= R(1,1) RN=R(1,1)*R(1,1)+R(2,1)*R(2,1) IF (RN.EQ.0.D0) THEN IER1 = 1 GOTO 1040 ENDIF SIGFLX=1.D0 ENDIF * IF (IMOT.NE.0) 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 1040 ENDIF ENDIF * IF (NPINT.EQ.0) THEN KN=2 ELSE KN=1 ENDIF * * Boucle sur les points d'integration * DO 1030 K=1,KN * NF=(K-1)*3 * MPTVAL=IVACOM * MELVAL=IVAL(NF+1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(1,1) = VELCHE(IGMN,IBMN) * MELVAL=IVAL(NF+2) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(2,2) = VELCHE(IGMN,IBMN) * IF (NPINT.EQ.0) THEN MELVAL=IVAL(NF+3) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(1,2) = VELCHE(IGMN,IBMN) ELSE MELVAL=IVAL(NF+4) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(1,2) = VELCHE(IGMN,IBMN) * MELVAL=IVAL(NF+3) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) COMP3 = VELCHE(IGMN,IBMN) ENDIF * IF (K.EQ.2) THEN A(1,1)=SIGFLX*A(1,1) A(2,2)=SIGFLX*A(2,2) A(1,2)=SIGFLX*A(1,2) ENDIF * IF (IDEFO.EQ.1) A(1,2)=A(1,2)/2.D0 * A(2,1)=A(1,2) * t * >>> Rotation du tenseur : A = R A R <<< * * MPTVAL=IVARES * MELVAL=IVAL(NF+1) VELCHE(IGAU,IB)=A(1,1) * MELVAL=IVAL(NF+2) VELCHE(IGAU,IB)=A(2,2) * IF (IDEFO.EQ.1) A(1,2)=A(1,2)*2.D0 * IF (NPINT.EQ.0) THEN MELVAL=IVAL(NF+3) VELCHE(IGAU,IB) = A(1,2) ELSE MELVAL=IVAL(NF+4) VELCHE(IGAU,IB) = A(1,2) * MELVAL=IVAL(NF+3) VELCHE(IGAU,IB) = COMP3 ENDIF * * Fin des trois boucles * 1030 CONTINUE 1040 CONTINUE SEGSUP MWRK3 IF (IPCHE1.EQ.0) SEGSUP MWRK1 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales