1 : C RTENS5 SOURCE CHAT 05/01/13 03:09:00 5004 2 : SUBROUTINE RTENS5(IMOT,ICAS,IGAU,NDIM,V1,CENTR1,CENTR2,BPSS, 3 : & SHPTOT,XEL,NBNN,NBPGAU,R,SIGFLX,IER1) 4 : IMPLICIT INTEGER(I-N) 5 : IMPLICIT REAL*8(A-H,O-Z) 6 : *-----------------------------------------------------------------------* 7 : * Matrice de passage entre le repere local d'une coque en un point * 8 : * d'integration et le repere obtenu par projection des axes d'un * 9 : * repere global (spherique, cylindrique ou torique) sur cette coque * 10 : * * 11 : * IMOT (e) type du repere choisi * 12 : * = 2 : repere cylindrique * 13 : * = 3 : repere spherique * 14 : * = 4 : repere torique circulaire * 15 : * = 5 : repere torique cartesien * 16 : * ICAS (e) identification du module appelant * 17 : * = 2 : module coques minces * 18 : * = 3 : module coques epaisses * 19 : * = 4 : module coques avec cisaillement transverse * 20 : * IGAU (e) numero du point d'integration concerne * 21 : * NDIM (e) dimension du probleme * 22 : * V1 (e) | * 23 : * CENTR1 (e) | points servant a la definition du repere * 24 : * CENTR2 (e) | * 25 : * BPSS (e) matrice de passage repere local / global * 26 : * SHPTOT (e) fonctions de forme de l'element-fini * 27 : * XEL (e) coordonnees des noeuds de l'element-fini * 28 : * NBNN (e) nombre de noeuds dans un element * 29 : * NBPGAU (e) nombre de points d'integration dans un element * 30 : * R (s) matrice de passage resultat * 31 : * SIGFLX (s) * 32 : * IER1 (s) code d'erreur * 33 : * = 1 : vecteur pas dans le plan de la coque * 34 : * = 2 : vecteur radial nul * 35 : * * 36 : * D.R.-M. le 1/4/94 * 37 : *-----------------------------------------------------------------------* 38 : * 39 : DIMENSION BPSS(3,3),VECWRK(3),V1(3),UV1(3),UV2(3),UV3(3) 40 : DIMENSION XEL(3,NBNN),SHPTOT(6,NBNN,NBPGAU),R(NDIM,NDIM) 41 : DIMENSION CENTR1(3),CENTR2(3),AXEI1(3),VECX(3),VECY(3) 42 : DIMENSION UR(3),UTHETA(3),UPHI(3),UN(3),UT(3),XIGAU(3) 43 : DIMENSION BPST(3,3),A(3,3) 44 : * 45 : PARAMETER (COS1D = 0.99985D0) 46 : PARAMETER (SIN1D = 0.01745D0) 47 : * 48 : IER1 = 0 49 : * 50 : DO 1100 IC=1,3 51 : XIGAU(IC) = 0.D0 52 : UTHETA(IC) = 0.D0 53 : UPHI(IC) = 0.D0 54 : UT(IC) = 0.D0 55 : VECX(IC) = 0.D0 56 : VECY(IC) = 0.D0 57 : DO 1100 IL=1,NBNN 58 : XIGAU(IC)=XIGAU(IC)+(SHPTOT(1,IL,IGAU)*XEL(IC,IL)) 59 : 1100 CONTINUE 60 : DO 1110 IC=1,3 61 : UR(IC) = XIGAU(IC) - CENTR1(IC) 62 : UN(IC) = UR(IC) 63 : 1110 CONTINUE 64 : SCAL = 0.D0 65 : DO 1120 IC=1,3 66 : SCAL = SCAL + UR(IC) * V1(IC) 67 : 1120 CONTINUE 68 : DO 1130 IC=1,3 69 : UR(IC) = UR(IC) - SCAL * V1(IC) 70 : 1130 CONTINUE 71 : SCAL = 0.D0 72 : DO 1140 IC=1,3 73 : SCAL = SCAL + UR(IC) ** 2 74 : 1140 CONTINUE 75 : IF (SCAL.EQ.0.D0) THEN 76 : IER1 = 2 77 : RETURN 78 : ELSE 78 : CALL NORMER(UR) 78 : CALL NORMER(UN) 78 : CALL PROVEC(V1,UR,UTHETA) 79 : ENDIF 80 : * 81 : * On projette les deux vecteurs formant un plan proche de 82 : * celui de la coque 83 : * 84 : IF ((IMOT.EQ.2).OR.(IMOT.EQ.5)) THEN 85 : * 86 : * >>> Repere CYLINDRIQUE : plan UTHETA V1 <<< 87 : * >>> Repere TORIQUE CARTESIEN : plan UTHETA V1 <<< 88 : * 89 : DO 20 II = 1,3 90 : UV1(II)=UTHETA(II) 91 : UV2(II)=V1(II) 92 : 20 CONTINUE 93 : ENDIF 94 : * 95 : IF (IMOT.EQ.3) THEN 96 : * 97 : * >>> Repere SPHERIQUE : plan UTHETA UPHI <<< 98 : * 99 : UR(1) = UN(1) 100 : UR(2) = UN(2) 101 : UR(3) = UN(3) 102 : UPHI(1) = UTHETA(1) 103 : UPHI(2) = UTHETA(2) 104 : UPHI(3) = UTHETA(3) 104 : CALL PROVEC(UPHI,UR,UTHETA) 105 : DO 30 II = 1,3 106 : UV1(II)=UTHETA(II) 107 : UV2(II)=UPHI(II) 108 : 30 CONTINUE 109 : ENDIF 110 : * 111 : IF (IMOT.EQ.4) THEN 112 : * 113 : * >>> Repere TORIQUE CIRCULAIRE : plan UTHETA UT <<< 114 : * 115 : VECWRK(1) = CENTR2(1) - CENTR1(1) 116 : VECWRK(2) = CENTR2(2) - CENTR1(2) 117 : VECWRK(3) = CENTR2(2) - CENTR1(3) 117 : CALL NORME(VECWRK,SCAL) 118 : UN(1) = UN(1) - SCAL * UR(1) 119 : UN(2) = UN(2) - SCAL * UR(2) 120 : UN(3) = UN(3) - SCAL * UR(3) 120 : CALL NORMER(UN) 120 : CALL PROVEC(UN,UTHETA,UT) 121 : DO 40 II = 1,3 122 : UV1(II)=UTHETA(II) 123 : UV2(II)=UT(II) 124 : 40 CONTINUE 125 : ENDIF 126 : * 127 : * Projection selon BPSS 128 : * 129 : * Projection du premier vecteur sur la coque 130 : * 131 : UV11=BPSS(1,1)*UV1(1)+BPSS(1,2)*UV1(2)+BPSS(1,3)*UV1(3) 132 : UV12=BPSS(2,1)*UV1(1)+BPSS(2,2)*UV1(2)+BPSS(2,3)*UV1(3) 133 : UV1N=SQRT(UV11**2+UV12**2) 134 : * 135 : IF (UV1N.EQ.0.D0) THEN 136 : IER1 = 1 137 : RETURN 138 : ENDIF 139 : * 140 : * Projection du second vecteur sur la coque 141 : * 142 : UV21=BPSS(1,1)*UV2(1)+BPSS(1,2)*UV2(2)+BPSS(1,3)*UV2(3) 143 : UV22=BPSS(2,1)*UV2(1)+BPSS(2,2)*UV2(2)+BPSS(2,3)*UV2(3) 144 : UV2N=SQRT(UV21**2+UV22**2) 145 : * 146 : * si l'axe de revolution est normal à l'element on choisit le repere 147 : * utheta (-ur).Le troisieme axe est celui defini par l'utilisateur 148 : IF ( UV2N.LT.1D-15) THEN 149 : DO 50 II = 1,3 150 : UV2(II)= -UR(II) 151 : 50 CONTINUE 152 : 153 : * 154 : * Projection du second vecteur sur la coque 155 : * 156 : UV21=BPSS(1,1)*UV2(1)+BPSS(1,2)*UV2(2)+BPSS(1,3)*UV2(3) 157 : UV22=BPSS(2,1)*UV2(1)+BPSS(2,2)*UV2(2)+BPSS(2,3)*UV2(3) 158 : UV2N=SQRT(UV21**2+UV22**2) 159 : 160 : ENDIF 161 : * 162 : * Vecteur normal a la coque 163 : * 164 : WL33=(UV11*UV22-UV12*UV21)/(UV1N*UV2N) 165 : * 166 : * WL2 est rendu orthogonal a la projection de UV1 167 : * 168 : WL21=(-WL33*UV12)/UV1N 169 : WL22=( WL33*UV11)/UV1N 170 : * 171 : R(1,1) = UV11 / UV1N 172 : R(2,1) = UV12 / UV1N 173 : R(1,2) = WL21 174 : R(2,2) = WL22 175 : IF (ICAS.EQ.2) SIGFLX = WL33 176 : IF (ICAS.EQ.3) R(3,3) = WL33 177 : IF (ICAS.EQ.4) THEN 178 : R(3,3) = WL33 179 : SIGFLX = WL33 180 : ENDIF 181 : * 182 : RETURN 183 : END 184 : 185 :
© Cast3M 2003 - All rights reserved.
Disclaimer