1 : C THETOR SOURCE AM 08/02/14 21:31:49 6050 2 : 3 : C======================================================================= 4 : C= T H E T O R = 5 : C= ----------- = 6 : C= = 7 : C= Fonction : = 8 : C= ---------- = 9 : C= Calcul des contraintes d'origine THERMIQUE dans le cas des mate- = 10 : C= riaux ORTHOTROPES. Sous-programme appele par THETAP (thetap.eso). = 11 : C= = 12 : C= Parametres : (E)=Entree (S)=Sortie = 13 : C= ------------ = 14 : C= MFR (E) Numero de la FORMULATION utilisee = 15 : C= MELE (E) Numero de l'element fini dans NOMTP (cf. CCHAMP) = 16 : C= VALMAT (E) Tableau des caracteristiques du materiau = 17 : C= LHOOK (E) Dimension de la matrice de Hooke = 18 : C= NSTRS (E) Nombre de composantes de contraintes = 19 : C= TEMP (E) Temperature au point de Gauss considere = 20 : C= THIF (E) | Temperatures des differentes couches = 21 : C= THM (E) | dans les cas des elements coques = 22 : C= THSU (E) | (couches INFErieure, MOYEnne, SUPErieure) = 23 : C= E3 (E) Excentrement dans la cas d'elements coques = 24 : C= SD (E) Section dans le cas d'elements barres = 25 : C= EPAIST (E) Epaisseur dans le cas d'elements coques = 26 : C= RES (S) Tableau des valeurs des deformation thermiques = 27 : C= KERRE (S) Indicateur d'erreur si non nul = 28 : C= DHOOK (S) Matrice de Hooke au point de Gauss considere = 29 : C= TXR,XLOC,XGLOB,ROTS (E/S) Tableaux de travail = 30 : C======================================================================= 31 : 32 : SUBROUTINE THETOR (MFR,MELE,VALMAT,LHOOK,NSTRS,TEMP,THIF,THM, 33 : . THSU,E3,SD,EPAIST,TXR,XLOC,XGLOB,ROTS,DHOOK, 34 : . RES,KERRE) 35 : 36 : IMPLICIT INTEGER(I-N) 37 : IMPLICIT REAL*8 (A-H,O-Z) 38 : 39 : -INC CCOPTIO 40 : -INC CCHAMP 41 : -INC CCREEL 42 : 43 : DIMENSION XLOC(IDIM,*),XGLOB(IDIM,*),ROTS(NSTRS,*),DHOOK(LHOOK,*), 44 : . TXR(IDIM,*),RES(NSTRS),VALMAT(*) 45 : 46 : PARAMETER (UN=1.,DEUX=2.) 47 : 48 : KERRE=0 49 : 50 : C 1 - Elements MASSIFS et POREUX 51 : C ================================ 52 : IF (MFR.EQ.1.OR.MFR.EQ.33.OR.MFR.EQ.31) THEN 53 : C ===== 54 : C 1.1 - Bidimensionnel PLAN Contraintes Planes 55 : C ===== 56 : IF (IFOUR.EQ.-2)THEN 57 : YG1=VALMAT(1) 58 : YG2=VALMAT(2) 59 : XNU12=VALMAT(3) 60 : ALP1=VALMAT(4) 61 : ALP2=VALMAT(5) 62 : XLOC(1,1)=VALMAT(6) 63 : XLOC(2,1)=VALMAT(7) 64 : XLOC(1,2)=-XLOC(2,1) 65 : XLOC(2,2)=XLOC(1,1) 66 : DO K=1,IDIM 67 : DO J=1,IDIM 68 : AA=XZero 69 : DO I=1,IDIM 70 : AA=AA+TXR(J,I)*XLOC(I,K) 71 : ENDDO 72 : XGLOB(J,K)=AA 73 : ENDDO 74 : ENDDO 75 : CC=XGLOB(1,1)*XGLOB(1,1) 76 : SS=XGLOB(2,1)*XGLOB(2,1) 77 : CS=XGLOB(1,1)*XGLOB(2,1) 78 : AA=TEMP/(UN-(XNU12*XNU12*YG2/YG1)) 79 : st1=(YG1*ALP1+XNU12*YG2*ALP2)*AA 80 : st2=(YG2*ALP2+XNU12*YG2*ALP1)*AA 81 : RES(1)=CC*st1+SS*st2 82 : RES(2)=CC*st2+SS*st1 83 : RES(3)=XZero 84 : RES(4)=CS*(st1-st2) 85 : C ===== 86 : C 1.2 - Bidimensionnel PLAN (DP/DPGE) et Axisymetrie et Fourier 87 : C ===== 88 : ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-3.OR. 89 : . IFOUR.EQ.0.OR.IFOUR.EQ.1) THEN 90 : YG1=VALMAT(1) 91 : YG2=VALMAT(2) 92 : YG3=VALMAT(3) 93 : XNU12=VALMAT(4) 94 : XNU23=VALMAT(5) 95 : XNU13=VALMAT(6) 96 : ALP1=VALMAT(7) 97 : ALP2=VALMAT(8) 98 : ALP3=VALMAT(9) 99 : XLOC(1,1)=VALMAT(10) 100 : XLOC(2,1)=VALMAT(11) 101 : XLOC(1,2)=-XLOC(2,1) 102 : XLOC(2,2)=XLOC(1,1) 103 : DO K=1,IDIM 104 : DO J=1,IDIM 105 : AA=XZero 106 : DO I=1,IDIM 107 : AA=AA+TXR(J,I)*XLOC(I,K) 108 : ENDDO 109 : XGLOB(J,K)=AA 110 : ENDDO 111 : ENDDO 112 : CC=XGLOB(1,1)*XGLOB(1,1) 113 : SS=XGLOB(2,1)*XGLOB(2,1) 114 : CS=XGLOB(1,1)*XGLOB(2,1) 115 : XNU21=(YG2/YG1)*XNU12 116 : XNU32=(YG3/YG2)*XNU23 117 : XNU31=(YG3/YG1)*XNU13 118 : AUX=(UN-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31 119 : . -DEUX*XNU21*XNU32*XNU13) 120 : AUX1=YG1/AUX 121 : AUX2=YG2/AUX 122 : AUX3=YG3/AUX 123 : DHOOK(1,1)=(UN-XNU23*XNU32)*AUX1 124 : DHOOK(1,2)=(XNU21+XNU31*XNU23)*AUX1 125 : DHOOK(2,1)=DHOOK(1,2) 126 : DHOOK(1,3)=(XNU31+XNU21*XNU32)*AUX1 127 : DHOOK(3,1)=DHOOK(1,3) 128 : DHOOK(2,2)=(UN-XNU13*XNU31)*AUX2 129 : DHOOK(2,3)=(XNU32+XNU12*XNU31)*AUX2 130 : DHOOK(3,2)=DHOOK(2,3) 131 : DHOOK(3,3)=(UN-XNU12*XNU21)*AUX3 132 : st1=DHOOK(1,1)*ALP1+DHOOK(1,2)*ALP2+DHOOK(1,3)*ALP3 133 : st2=DHOOK(2,1)*ALP1+DHOOK(2,2)*ALP2+DHOOK(2,3)*ALP3 134 : st3=DHOOK(3,1)*ALP1+DHOOK(3,2)*ALP2+DHOOK(3,3)*ALP3 135 : RES(1)=(CC*st1+SS*st2)*TEMP 136 : RES(2)=(CC*st2+SS*st1)*TEMP 137 : RES(3)=st3*TEMP 138 : RES(4)=CS*(st1-st2)*TEMP 139 : IF (IFOUR.EQ.1) THEN 140 : RES(5)=XZero 141 : RES(6)=XZero 142 : ENDIF 143 : C ===== 144 : C 1.3 - Tridimensionnel 145 : C ===== 146 : ELSE IF (IFOUR.EQ.2) THEN 147 : YG1=VALMAT(1) 148 : YG2=VALMAT(2) 149 : YG3=VALMAT(3) 150 : XNU12=VALMAT(4) 151 : XNU23=VALMAT(5) 152 : XNU13=VALMAT(6) 153 : ALP1=VALMAT(7) 154 : ALP2=VALMAT(8) 155 : ALP3=VALMAT(9) 156 : XLOC(1,1)=VALMAT(10) 157 : XLOC(2,1)=VALMAT(11) 158 : XLOC(3,1)=VALMAT(12) 159 : XLOC(1,2)=VALMAT(13) 160 : XLOC(2,2)=VALMAT(14) 161 : XLOC(3,2)=VALMAT(15) 161 : CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR) 162 : DO K=1,IDIM 163 : DO J=1,IDIM 164 : AA=XZero 165 : DO I=1,IDIM 166 : AA=AA+TXR(J,I)*XLOC(I,K) 167 : ENDDO 168 : XGLOB(J,K)=AA 169 : ROTS(J,K)=AA*AA 170 : ENDDO 171 : ENDDO 172 : DO i=1,3 173 : ROTS(i,4)=2.*XGLOB(i,1)*XGLOB(i,2) 174 : ROTS(i,5)=2.*XGLOB(i,2)*XGLOB(i,3) 175 : ROTS(i,6)=2.*XGLOB(i,1)*XGLOB(i,3) 176 : ROTS(4,i)=XGLOB(1,i)*XGLOB(2,i) 177 : ROTS(5,i)=XGLOB(2,i)*XGLOB(3,i) 178 : ROTS(6,i)=XGLOB(1,i)*XGLOB(3,i) 179 : ENDDO 180 : DO i=4,6 181 : IL1=i-3 182 : IL2=IL1+1 183 : IF (IL2.GT.3) IL2=IL2-3 184 : DO j=4,6 185 : IC1=j-3 186 : IC2=IC1+1 187 : IF (IC2.GT.3) IC2=IC2-3 188 : ROTS(i,j)= XGLOB(IL1,IC1)*XGLOB(IL2,IC2) 189 : . +XGLOB(IL1,IC2)*XGLOB(IL2,IC1) 190 : ENDDO 191 : ENDDO 192 : DO i=1,6 193 : AA=ROTS(6,i) 194 : ROTS(6,i)=ROTS(5,i) 195 : ROTS(5,i)=AA 196 : ENDDO 197 : DO i=1,6 198 : AA=ROTS(i,6) 199 : ROTS(i,6)=ROTS(i,5) 200 : ROTS(i,5)=AA 201 : ENDDO 202 : XNU21=(YG2/YG1)*XNU12 203 : XNU32=(YG3/YG2)*XNU23 204 : XNU31=(YG3/YG1)*XNU13 205 : AUX=(UN-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31 206 : . -DEUX*XNU21*XNU32*XNU13) 207 : AUX1=YG1/AUX 208 : AUX2=YG2/AUX 209 : AUX3=YG3/AUX 210 : DHOOK(1,1)=(UN-XNU23*XNU32)*AUX1 211 : DHOOK(1,2)=(XNU21+XNU31*XNU23)*AUX1 212 : DHOOK(2,1)=DHOOK(1,2) 213 : DHOOK(1,3)=(XNU31+XNU21*XNU32)*AUX1 214 : DHOOK(3,1)=DHOOK(1,3) 215 : DHOOK(2,2)=(UN-XNU13*XNU31)*AUX2 216 : DHOOK(2,3)=(XNU32+XNU12*XNU31)*AUX2 217 : DHOOK(3,2)=DHOOK(2,3) 218 : DHOOK(3,3)=(UN-XNU12*XNU21)*AUX3 219 : st1=DHOOK(1,1)*ALP1+DHOOK(1,2)*ALP2+DHOOK(1,3)*ALP3 220 : st2=DHOOK(2,1)*ALP1+DHOOK(2,2)*ALP2+DHOOK(2,3)*ALP3 221 : st3=DHOOK(3,1)*ALP1+DHOOK(3,2)*ALP2+DHOOK(3,3)*ALP3 222 : RES(1)=(st1*ROTS(1,1)+st2*ROTS(1,2)+st3*ROTS(1,3))*TEMP 223 : RES(2)=(st1*ROTS(2,1)+st2*ROTS(2,2)+st3*ROTS(2,3))*TEMP 224 : RES(3)=(st1*ROTS(3,1)+st2*ROTS(3,2)+st3*ROTS(3,3))*TEMP 225 : RES(4)=(st1*ROTS(4,1)+st2*ROTS(4,2)+st3*ROTS(4,3))*TEMP 226 : RES(5)=(st1*ROTS(5,1)+st2*ROTS(5,2)+st3*ROTS(5,3))*TEMP 227 : RES(6)=(st1*ROTS(6,1)+st2*ROTS(6,2)+st3*ROTS(6,3))*TEMP 228 : C ===== 229 : C 1.4 - Unidimensionnel (1D) 230 : C Les axes d'orthotropie sont confondus avec le repere global. 231 : C ===== 232 : ELSE IF (IFOUR.GE.3.AND.IFOUR.LE.15.AND.MFR.EQ.1) THEN 233 : IF (IFOUR.EQ.6) THEN 234 : RES(1)=VALMAT(1)*VALMAT(7)*TEMP 235 : RES(2)=0. 236 : RES(3)=0. 237 : ELSE IF (IFOUR.EQ.4.OR.IFOUR.EQ.8) THEN 238 : YG1=VALMAT(1) 239 : YG2=VALMAT(2) 240 : XNU12=VALMAT(4) 241 : XNU21=(YG2/YG1)*XNU12 242 : AUX=Un/(Un-XNU12*XNU21) 243 : DHOOK(1,1)=YG1*AUX 244 : DHOOK(2,1)=XNU21*YG1*AUX 245 : DHOOK(1,2)=DHOOK(2,1) 246 : DHOOK(2,2)=YG2*AUX 247 : ALP1=VALMAT(7) 248 : ALP2=VALMAT(8) 249 : RES(1)=(DHOOK(1,1)*ALP1+DHOOK(1,2)*ALP2)*TEMP 250 : RES(2)=(DHOOK(2,1)*ALP1+DHOOK(2,2)*ALP2)*TEMP 251 : RES(3)=0. 252 : ELSE IF (IFOUR.EQ.5.OR.IFOUR.EQ.10.OR.IFOUR.EQ.13) THEN 253 : YG1=VALMAT(1) 254 : YG3=VALMAT(3) 255 : XNU13=VALMAT(6) 256 : XNU31=(YG3/YG1)*XNU13 257 : AUX=Un/(Un-XNU13*XNU31) 258 : DHOOK(1,1)=YG1*AUX 259 : DHOOK(3,1)=XNU31*YG1*AUX 260 : DHOOK(1,3)=DHOOK(3,1) 261 : DHOOK(3,3)=YG3*AUX 262 : ALP1=VALMAT(7) 263 : ALP3=VALMAT(8) 264 : RES(1)=(DHOOK(1,1)*ALP1+DHOOK(1,3)*ALP3)*TEMP 265 : RES(2)=0. 266 : RES(3)=(DHOOK(3,1)*ALP1+DHOOK(3,3)*ALP3)*TEMP 267 : ELSE 268 : YG1=VALMAT(1) 269 : YG2=VALMAT(2) 270 : YG3=VALMAT(3) 271 : XNU12=VALMAT(4) 272 : XNU23=VALMAT(5) 273 : XNU13=VALMAT(6) 274 : XNU21=(YG2/YG1)*XNU12 275 : XNU32=(YG3/YG2)*XNU23 276 : XNU31=(YG3/YG1)*XNU13 277 : AUX=Un/(Un-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31 278 : . -Deux*XNU12*XNU23*XNU31) 279 : AUX1=AUX*YG1 280 : DHOOK(1,1)=(Un-XNU23*XNU32)*AUX1 281 : DHOOK(1,2)=(XNU21+XNU31*XNU23)*AUX1 282 : DHOOK(2,1)=DHOOK(1,2) 283 : DHOOK(1,3)=(XNU31+XNU21*XNU32)*AUX1 284 : DHOOK(3,1)=DHOOK(1,3) 285 : AUX2=AUX*YG2 286 : DHOOK(2,2)=(Un-XNU13*XNU31)*AUX2 287 : DHOOK(2,3)=(XNU32+XNU12*XNU31)*AUX2 288 : DHOOK(3,2)=DHOOK(2,3) 289 : DHOOK(3,3)=(Un-XNU12*XNU21)*AUX*YG3 290 : ALP1=VALMAT(7)*TEMP 291 : ALP2=VALMAT(8)*TEMP 292 : ALP3=VALMAT(9)*TEMP 293 : RES(1)=DHOOK(1,1)*ALP1+DHOOK(1,2)*ALP2+DHOOK(1,3)*ALP3 294 : RES(2)=DHOOK(2,1)*ALP1+DHOOK(2,2)*ALP2+DHOOK(2,3)*ALP3 295 : RES(3)=DHOOK(3,1)*ALP1+DHOOK(3,2)*ALP2+DHOOK(3,3)*ALP3 296 : ENDIF 297 : C ===== 298 : C 1.5 - Cas non prevus 299 : C ===== 300 : ELSE 301 : KERRE=19 302 : ENDIF 303 : 304 : C 2 - Elements JOINT 3D : JOT4 et JOI4 305 : C ====================================== 306 : ELSE IF (MELE.EQ.87.OR.MELE.EQ.88) THEN 307 : IF (IFOUR.EQ.2) THEN 308 : ZKN=VALMAT(3) 309 : ALPN=VALMAT(4) 310 : RES(1)=XZero 311 : RES(2)=XZero 312 : RES(3)=ALPN * ZKN * TEMP 313 : ELSE 314 : KERRE=19 315 : ENDIF 316 : 317 : C 3 - Elements COQUES MINCES sauf COQ2 318 : C ====================================== 319 : ELSE IF (MELE.EQ.27.OR.MELE.EQ.28.OR.MELE.EQ.49.OR. 320 : . MELE.EQ.93) THEN 321 : IF (IFOUR.GT.0) THEN 322 : YG1=VALMAT(1) 323 : YG2=VALMAT(2) 324 : XNU12=VALMAT(3) 325 : ALP1=VALMAT(4) 326 : ALP2=VALMAT(5) 327 : V1X=VALMAT(6) 328 : V1Y=VALMAT(7) 329 : CC=V1X*V1X 330 : SS=V1Y*V1Y 331 : CS=V1X*V1Y 332 : X1NUNU=UN-(XNU12*XNU12 * YG2 /YG1) 333 : THMO=(THSU+THIF+4.D0*THM)/6.D0 334 : THDI=THSU-THIF 335 : EXCEN=XZero 336 : EP2=EPAIST*EPAIST/12.D0 337 : FACM=THMO*EPAIST 338 : FACF=THMO*EPAIST*EXCEN+THDI*EP2 339 : st1=(YG1*ALP1+XNU12*YG2*ALP2)/X1NUNU 340 : st2=(YG2*ALP2+XNU12*YG2*ALP1)/X1NUNU 341 : RES(4)=CC*st1+SS*st2 342 : RES(5)=CC*st2+SS*st1 343 : RES(6)=CS*(st1-st2) 344 : RES(1)=RES(4)*FACM 345 : RES(2)=RES(5)*FACM 346 : RES(3)=RES(6)*FACM 347 : RES(4)=RES(4)*FACF 348 : RES(5)=RES(5)*FACF 349 : RES(6)=RES(6)*FACF 350 : ELSE 351 : KERRE=19 352 : ENDIF 353 : 354 : C 4 - Element COQ2 355 : C ================== 356 : ELSE IF (MELE.EQ.44) THEN 357 : YG1=VALMAT(1) 358 : YG2=VALMAT(2) 359 : XNU12=VALMAT(3) 360 : ALP1=VALMAT(4) 361 : ALP2=VALMAT(5) 362 : V1X=VALMAT(6) 363 : V1Y=VALMAT(7) 364 : CC=V1X*V1X 365 : SS=V1Y*V1Y 366 : CS=V1X*V1Y 367 : X1NUNU=UN-(XNU12*XNU12 * YG2 / YG1) 368 : THMO=(THSU+THIF+4.D0*THM)/6.D0 369 : THDI=THSU-THIF 370 : EXCEN=XZero 371 : EP2=EPAIST*EPAIST/12.D0 372 : FACM=THMO*EPAIST 373 : FACF=THMO*EPAIST*EXCEN+THDI*EP2 374 : st1=(YG1*ALP1+XNU12*YG2*ALP2)/X1NUNU 375 : st2=(YG2*ALP2+XNU12*YG2*ALP1)/X1NUNU 376 : IF (IFOUR.GT.0) THEN 377 : RES(4)=CC*st1+SS*st2 378 : RES(5)=CC*st2+SS*st1 379 : RES(6)=CS*(st1-st2) 380 : RES(1)=RES(4)*FACM 381 : RES(2)=RES(5)*FACM 382 : RES(3)=RES(6)*FACM 383 : RES(4)=RES(4)*FACF 384 : RES(5)=RES(5)*FACF 385 : RES(6)=RES(6)*FACF 386 : ELSE IF (IFOUR.EQ.0) THEN 387 : RES(3)=CC*st1+SS*st2 388 : RES(4)=CC*st2+SS*st1 389 : RES(1)=RES(3)*FACM 390 : RES(2)=RES(4)*FACM 391 : RES(3)=RES(3)*FACF 392 : RES(4)=RES(4)*FACF 393 : ELSE 394 : KERRE=19 395 : ENDIF 396 : 397 : C 5 - Elements COQUES EPAISSES 398 : C ============================== 399 : ELSE IF (MELE.EQ.41.OR.MELE.EQ.56) THEN 400 : YG1=VALMAT(1) 401 : YG2=VALMAT(2) 402 : XNU12=VALMAT(3) 403 : ALP1=VALMAT(4) 404 : ALP2=VALMAT(5) 405 : V1X=VALMAT(6) 406 : V1Y=VALMAT(7) 407 : CC=V1X*V1X 408 : SS=V1Y*V1Y 409 : CS=V1X*V1Y 410 : X1NUNU=UN-(XNU12*XNU12 * YG2 / YG1) 411 : THG=0.5*E3*((E3+UN)*THSU+(E3-UN)*THIF)+(UN-E3*E3)*THM 412 : st1=(YG1*ALP1+XNU12*YG2*ALP2)/X1NUNU 413 : st2=(YG2*ALP2+XNU12*YG2*ALP1)/X1NUNU 414 : RES(1)=(CC*st1+SS*st2)*THG 415 : RES(2)=(CC*st2+SS*st1)*THG 416 : RES(3)=CS*(st1-st2)*THG 417 : RES(4)=XZero 418 : RES(5)=XZero 419 : 420 : C 6 - Elements POUTRES et TUYAUX 421 : C ================================ 422 : ELSE IF (MELE.EQ.29.OR.MELE.EQ.42.OR.MELE.EQ.84) THEN 423 : YOU=VALMAT(1) 424 : ALPH=VALMAT(2) 425 : RES(1)=YOU*ALPH*SD*TEMP 426 : 427 : C 7 - Elements BARRES, CERCES et POINT 428 : C ====================================== 429 : ELSEIF(MELE.EQ.46.OR.MELE.EQ.95.OR.MELE.EQ.45)THEN 430 : IF (MELE.EQ.45.AND.IFOUR.NE.-3) THEN 431 : KERRE=86 432 : ELSE IF (MELE.EQ.95.AND.IFOUR.NE.0) THEN 433 : KERRE=86 434 : ELSE 435 : YOU=VALMAT(1) 436 : ALPH=VALMAT(2) 437 : RES(1)=YOU*ALPH*SD*TEMP 438 : ENDIF 439 : 440 : C 8 - Autres cas non prevus 441 : C =========================== 442 : ELSE 443 : KERRE=19 444 : ENDIF 445 : 446 : RETURN 447 : END 448 : 449 : 450 : 451 :
© Cast3M 2003 - All rights reserved.
Disclaimer