1 : * FOUR2TRI PROCEDUR BP208322 13/03/01 21:15:00 7704 2 : * FOUR2TRI PROCEDUR DC 06/12/19 21:15:15 5617 3 : * FOUR2TRI PROCEDUR DC 07/01/03 21:15:00 5625 4 : DEBPROC FOUR2TRI MOD1*MMODEL TAB1*TABLE NUMFOUR/ENTIER PRANGL/LISTREEL; 5 : ************************************************************************ 6 : * Procédure FOUR2TRI (ou 4 2 3 pour les numériciens purs....) 7 : * 8 : * Génère un maillage 3D à partir d'un modèle Fourier 9 : * 10 : * Creation : D. Combescure, SEMT/DYN, CEA Saclay, Decembre 2006 11 : * Modifs : B Prabel, 02/2013 : qq corrections 12 : * 13 : ************************************************************************ 14 : * 15 : SI (NEG (TYPE PRANGL) 'LISTREEL'); 16 : PRANGL = PROG 0. PAS 10. 360.; 17 : FINSI; 18 : * 19 : SI (NEG (TYPE NUMFOUR) 'ENTIER'); 20 : NUMFOUR = 0; 21 : FINSI; 22 : * 23 : * On ne crée le maillage 3D que s'il n'existe pas déjà 24 : * 25 : SI (NON (EXISTE TAB1 'MAILLAGE_3D')); 26 : FLAGMAIL = VRAI; 27 : SINON; 28 : FLAGMAIL = FAUX; 29 : FINSI; 30 : * 31 : MAI3D = TABLE; 32 : * 33 : * On ne crée le champs de déplacements 3D uniquement 34 : * si celui en 2D Fourier est donné 35 : * 36 : SI (EXISTE TAB1 'DEPLACEMENTS'); 37 : FLAGDEPL = VRAI; 38 : SINON; 39 : FLAGDEPL = FAUX; 40 : FINSI; 41 : * 42 : DEP3D = TABLE; 43 : * 44 : * On ne crée le champs de forces 3D uniquement 45 : * si celui en 2D Fourier est donné 46 : * 47 : SI (EXISTE TAB1 'EFFORTS'); 48 : FLAGFOR = VRAI; 49 : SINON; 50 : FLAGFOR = FAUX; 51 : FINSI; 52 : * 53 : FOR3D = TABLE; 54 : * 55 : * On ne crée le CHPO 3D uniquement 56 : * si celui en 2D Fourier est donné 57 : * 58 : SI (EXISTE TAB1 'CHAMPS_POINTS_SYMETRIQUES'); 59 : FLAGCHPS = VRAI; 60 : SINON; 61 : FLAGCHPS = FAUX; 62 : FINSI; 63 : * 64 : CHS3D = TABLE; 65 : * 66 : SI (EXISTE TAB1 'CHAMPS_POINTS_ANTISYMETRIQUES'); 67 : FLAGCHPA = VRAI; 68 : SINON; 69 : FLAGCHPA = FAUX; 70 : FINSI; 71 : * 72 : CHA3D = TABLE; 73 : * 74 : * 75 : ********************************************** 76 : * 77 : * Création du maillage 3D 78 : * 79 : ********************************************** 80 : SI FLAGMAIL; 81 : TAMOD = EXTR MOD1 ZONE; 82 : * 83 : * Boucle sur les sous-zones 84 : * 85 : REPETER LAB0 (ENTIER (0.5*(DIME TAMOD))); 86 : MESH2DJ = TAMOD. (2*&LAB0); 87 : NTYPE = EXTR (MESH2DJ 'ELEM' TYPE) 1; 88 : SI ((EGA NTYPE 'SEG2') OU (EGA NTYPE 'POI1')); 89 : CONT2DJ = MESH2DJ; 90 : SINON; 91 : SI (EGA NTYPE 'RAC2'); 92 : CONT2DJ = CHAN LIGNE MESH2DJ; 93 : SINON; 94 : CONT2DJ = CONTOUR MESH2DJ; 95 : FINSI; 96 : FINSI; 97 : SI (&LAB0 EGA 1); 98 : CONT2D = TABLE; 99 : MESH2D = TABLE; 100 : FINSI; 101 : CONT2D.&LAB0 = CONT2DJ; 102 : MESH2D.&LAB0 = MESH2DJ; 103 : TAMOD.((2*&LAB0) - 1) = CONT2DJ; 104 : FIN LAB0; 105 : * 106 : * ELIM 0.000001 (MESH2D et CONT2D); 107 : * 108 : OPTI DIME 3 ELEM QUA4; 109 : * 110 : p00000 = 0. 0. 0.; 111 : p00001 = 0. 1. 0.; 112 : * 113 : * 114 : NTRANCHE = DIME PRANGL; 115 : * 116 : * MAI3D. 0 = MESH2D ; 117 : REPETER LAB12 (ENTIER (0.5*(DIME TAMOD))); 118 : CONT2DJ = TAMOD.((2*&LAB12) - 1); 119 : MESH2D = TAMOD. (2*&LAB12); 120 : SI (EGA &LAB12 1); 121 : MAI3D. 0 = TABLE ; 122 : FINSI; 123 : MAI3D. 0 . &LAB12= MESH2D ; 124 : * 125 : REPETER LAB1 NTRANCHE; 126 : * 127 : * mess 'Sous domaine et Secteur N°:'; 128 : * list &LAB12; 129 : * list &LAB1; 130 : MAI3D. 'ANGLES' = PRANGL; 131 : ANGLAB1 = EXTR PRANGL &LAB1; 132 : * 133 : MESHJ = MESH2D TOUR ANGLAB1 p00000 P00001; 134 : NTYPE = EXTR (MESHJ 'ELEM' TYPE) 1; 135 : SI ((EGA NTYPE 'SEG2') OU (EGA NTYPE 'POI1')); 136 : CON3DJ = MESHJ; 137 : SINON; 138 : SI (EGA NTYPE 'RAC2'); 139 : CON3DJ = CHAN LIGNE MESHJ; 140 : SINON; 141 : CON3DJ = CONTOUR MESHJ; 142 : FINSI; 143 : FINSI; 144 : SI (EGA &LAB12 1); 145 : MAI3D. &LAB1 = TABLE; 146 : FINSI; 147 : MAI3D. &LAB1 . &LAB12 = MESHJ; 148 : * 149 : * ELIM 0.000001 (CON3DJ et (MAI3D. &LAB1)); 150 : * 151 : SI (EGA &LAB1 1); 152 : SI (EGA &LAB12 1); 153 : MESH3D = MAI3D. 1 . &LAB12; 154 : SINON; 155 : MESH3D = MESH3D ET (MAI3D. 1 . &LAB12); 156 : FINSI; 157 : SINON; 158 : SI ((EGA &LAB1 2) ET (EGA &LAB12 1)); 159 : SI (NEG (EXTR (CON3DJ0 ELEM TYPE) 1) POI1); 160 : MAI3D. 'ENVELOPPE' = CON3DJ0 REGLER 1 CON3DJ; 161 : SINON; 162 : MAI3D. 'ENVELOPPE' = CON3DJ0; 163 : FINSI; 164 : SINON; 165 : SI (NEG (EXTR (CON3DJ0 ELEM TYPE) 1) POI1); 166 : MAI3D. 'ENVELOPPE' = (MAI3D. 'ENVELOPPE') ET 167 : (CON3DJ0 REGLER 1 CON3DJ); 168 : SINON; 169 : MAI3D. 'ENVELOPPE' = (MAI3D. 'ENVELOPPE') ET 170 : CON3DJ0; 171 : FINSI; 172 : FINSI; 173 : SI (EGA &LAB1 NTRANCHE); 174 : MESH3D = MESH3D ET (MAI3D. NTRANCHE . &LAB12); 175 : FINSI; 176 : FINSI; 177 : CON3DJ0 = CON3DJ; 178 : FIN LAB1; 179 : FIN LAB12; 180 : MESH3D = MESH3D ET (MAI3D. 'ENVELOPPE'); 181 : * 182 : * On range le nouveau maillage 3D 183 : * 184 : MAI3D . 'TOTAL' = MESH3D; 185 : TAB1.'MAILLAGE_3D' = MAI3D; 186 : * 187 : SINON; 188 : MESH3D = TAB1 . 'MAILLAGE_3D' . 'TOTAL'; 189 : FINSI; 190 : * 191 : * 192 : ************************************************** 193 : * 194 : * Champs de Déplacement 3D 195 : * 196 : *************************************************** 197 : 198 : SI FLAGDEPL; 199 : * 200 : OPTI DIME 3 MODE FOUR NUMFOUR; 201 : * 202 : p00000 = 0. 0. 0.; 203 : p00001 = 0. 1. 0.; 204 : NTRANCHE = (DIME (TAB1. 'MAILLAGE_3D')) - 4; 205 : NDEP = DIME (TAB1.'DEPLACEMENTS'); 206 : PRANGL = TAB1. 'MAILLAGE_3D'. 'ANGLES' ; 207 : * 208 : NZONE = (DIME (TAB1. 'MAILLAGE_3D' . 0)); 209 : * 210 : REPETER LAB20 NZONE; 211 : MESH2DI = (TAB1. 'MAILLAGE_3D' . 0 . &LAB20 ); 212 : * 213 : REPETER LAB2 NDEP; 214 : i2 = &lab2; 215 : OPTI MODE FOUR NUMFOUR; 216 : LCOMPU = EXTR (TAB1.'DEPLACEMENTS'.i2) COMP; 217 : * 218 : SI (EXIS LCOMPU 'UR'); 219 : DEP2DJR = (REDU (EXCO (TAB1.'DEPLACEMENTS'.i2) 220 : 'UR' 'SCAL' NATURE DIFFUS) MESH2DI) + 221 : (MANU CHPO MESH2DI 1 'SCAL' 0. 222 : NATURE DIFFUS); 223 : SINON; 224 : *bp OPTI MODE FOUR 0; 225 : DEP2DJR = (MANU CHPO MESH2DI 1 'SCAL' 0. 226 : NATURE DIFFUS); 227 : *bp OPTI MODE FOUR NUMFOUR; 228 : FINSI; 229 : SI (EXIS LCOMPU 'UT'); 230 : DEP2DJT = (REDU (EXCO (TAB1.'DEPLACEMENTS'.i2) 231 : 'UT' 'SCAL' NATURE DIFFUS) MESH2DI) + 232 : (MANU CHPO MESH2DI 1 'SCAL' 0. 233 : NATURE DIFFUS); 234 : SINON; 235 : *bp OPTI MODE FOUR 0; 236 : DEP2DJT = (MANU CHPO MESH2DI 1 'SCAL' 0. 237 : NATURE DIFFUS); 238 : *bp OPTI MODE FOUR NUMFOUR; 239 : FINSI; 240 : SI (EXIS LCOMPU 'UZ'); 241 : DEP2DJZ = (REDU (EXCO (TAB1.'DEPLACEMENTS'.i2) 242 : 'UZ' 'SCAL' NATURE DIFFUS) MESH2DI) + 243 : (MANU CHPO MESH2DI 1 'SCAL' 0. 244 : NATURE DIFFUS); 245 : SINON; 246 : *bp OPTI MODE FOUR 0; 247 : DEP2DJZ = (MANU CHPO MESH2DI 1 'SCAL' 0. 248 : NATURE DIFFUS); 249 : *bp OPTI MODE FOUR NUMFOUR; 250 : FINSI; 251 : SI (EXIS LCOMPU 'IUR'); 252 : DEP2DJRI = (REDU (EXCO (TAB1.'DEPLACEMENTS'.i2) 253 : 'IUR' 'SCAL' NATURE DIFFUS) MESH2DI) + 254 : (MANU CHPO MESH2DI 1 'SCAL' 0. 255 : NATURE DIFFUS); 256 : SINON; 257 : *bp OPTI MODE FOUR 0; 258 : DEP2DJRI = (MANU CHPO MESH2DI 1 'SCAL' 0. 259 : NATURE DIFFUS); 260 : *bp OPTI MODE FOUR NUMFOUR; 261 : FINSI; 262 : SI (EXIS LCOMPU 'IUT'); 263 : DEP2DJTI = (REDU (EXCO (TAB1.'DEPLACEMENTS'.i2) 264 : 'IUT' 'SCAL' NATURE DIFFUS) MESH2DI) + 265 : (MANU CHPO MESH2DI 1 'SCAL' 0. 266 : NATURE DIFFUS); 267 : SINON; 268 : *bp OPTI MODE FOUR 0; 269 : DEP2DJTI = MANU CHPO MESH2DI 1 'SCAL' 0. 270 : NATURE DIFFUS; 271 : *bp OPTI MODE FOUR NUMFOUR; 272 : FINSI; 273 : SI (EXIS LCOMPU 'IUZ'); 274 : DEP2DJZI = (REDU (EXCO (TAB1.'DEPLACEMENTS'.i2) 275 : 'IUZ' 'SCAL' NATURE DIFFUS) MESH2DI) + 276 : (MANU CHPO MESH2DI 1 'SCAL' 0. 277 : NATURE DIFFUS); 278 : SINON; 279 : *bp OPTI MODE FOUR 0; 280 : DEP2DJZI = MANU CHPO MESH2DI 1 'SCAL' 0. 281 : NATURE DIFFUS; 282 : *bp OPTI MODE FOUR NUMFOUR; 283 : FINSI; 284 : * 285 : *bp OPTI MODE FOUR 0; 286 : OPTI MODE TRID; 287 : * 288 : REPETER LAB21 NTRANCHE; 289 : * 290 : ANGLAB1 = EXTR PRANGL &LAB21; 291 : ANGLABN = NUMFOUR*ANGLAB1; 292 : ANGLAB2 = ANGLAB1; 293 : MESH2DN = TAB1. 'MAILLAGE_3D' . &LAB21 . &LAB20; 294 : * 295 : DEP3DJR DEP3DJT DEP3DJZ DEP3DJRI DEP3DJTI DEP3DJZI= 296 : DEP2DJR DEP2DJT DEP2DJZ DEP2DJRI DEP2DJTI DEP2DJZI 297 : DEDU ANGLAB1 p00000 P00001 'ROTA' MESH2DI MESH2DN; 298 : *bp : serie de Fourier 299 : DEP3DJ0 = ((EXCO DEP3DJR 'SCAL' 'UR')*(COS ANGLABN)) + 300 : ((EXCO DEP3DJT 'SCAL' 'UT')*(SIN ANGLABN)) + 301 : ((EXCO DEP3DJZ 'SCAL' 'UZ')*(COS ANGLABN)) + 302 : *bp ((EXCO DEP3DJRI 'SCAL' 'IUR')*(SIN ANGLABN)) + 303 : ((EXCO DEP3DJRI 'SCAL' 'IUR')*(SIN ANGLABN)) - 304 : ((EXCO DEP3DJTI 'SCAL' 'IUT')*(COS ANGLABN)) + 305 : ((EXCO DEP3DJZI 'SCAL' 'IUZ')*(SIN ANGLABN)); 306 : *bp : changement de repere 307 : DEP3DJ1 = ((EXCO DEP3DJ0 'UR' 'UX')*(COS ANGLAB1)) + 308 : ((-1.)*(EXCO DEP3DJ0 'UR' 'UZ')*(SIN ANGLAB1)) + 309 : ((-1.)*(EXCO DEP3DJ0 'UT' 'UX')*(SIN ANGLAB1)) + 310 : ((-1.)*(EXCO DEP3DJ0 'UT' 'UZ')*(COS ANGLAB1)) + 311 : (EXCO DEP3DJ0 'UZ' 'UY'); 312 : DEP3DJ1 = DEP3DJ1 + ((EXCO DEP3DJ0 'IUR' 'UX')*(COS ANGLAB1)) + 313 : ((-1.)*(EXCO DEP3DJ0 'IUR' 'UZ')*(SIN ANGLAB1)) + 314 : ((-1.)*(EXCO DEP3DJ0 'IUT' 'UX')*(SIN ANGLAB1)) + 315 : ((-1.)*(EXCO DEP3DJ0 'IUT' 'UZ')*(COS ANGLAB1)) + 316 : (EXCO DEP3DJ0 'IUZ' 'UY'); 317 : SI ((EGA &LAB21 1) et (EGA &LAB20 1)); 318 : DEP3DJ = DEP3DJ1; 319 : SINON; 320 : DEP3DJ = DEP3DJ ET DEP3DJ1; 321 : FINSI; 322 : * 323 : FIN LAB21; 324 : DEP3D.i2 = DEP3DJ; 325 : FIN LAB2; 326 : * 327 : FIN LAB20; 328 : * 329 : 330 : FINSI; 331 : ************************************************** 332 : * 333 : * Champs d'efforts 3D 334 : * 335 : *************************************************** 336 : SI FLAGFOR; 337 : * 338 : OPTI DIME 3 MODE FOUR NUMFOUR; 339 : * 340 : p00000 = 0 0 0; 341 : p00001 = 0 1 0; 342 : NTRANCHE = (DIME (TAB1. 'MAILLAGE_3D')) - 4; 343 : NFOR = DIME (TAB1.'EFFORTS'); 344 : PRANGL = TAB1. 'MAILLAGE_3D'. 'ANGLES' ; 345 : * 346 : NZONE = DIME (TAB1. 'MAILLAGE_3D' . 0); 347 : * 348 : REPETER LAB30 NZONE; 349 : * 350 : MESH2DI = TAB1. 'MAILLAGE_3D' . 0 . &LAB30; 351 : * 352 : REPETER LAB3 NFOR; 353 : i3 = &lab3; 354 : OPTI MODE FOUR NUMFOUR; 355 : LCOMPU = EXTR (TAB1.'EFFORTS'.i3) COMP; 356 : * 357 : SI (EXIS LCOMPU 'FR'); 358 : FOR2DJR = (REDU (EXCO (TAB1.'EFFORTS'.i3) 359 : 'FR' 'SCAL' NATURE DISCRET) MESH2DI) + 360 : (MANU CHPO MESH2DI 1 'SCAL' 0. 361 : NATURE DISCRET);; 362 : SINON; 363 : *bp OPTI MODE FOUR 0; 364 : FOR2DJR = MANU CHPO MESH2DI 1 'SCAL' 0. 365 : NATURE DISCRET; 366 : *bp OPTI MODE FOUR NUMFOUR; 367 : FINSI; 368 : SI (EXIS LCOMPU 'FT'); 369 : FOR2DJT = (REDU (EXCO (TAB1.'EFFORTS'.i3) 370 : 'FT' 'SCAL' NATURE DISCRET) MESH2DI) + 371 : (MANU CHPO MESH2DI 1 'SCAL' 0. 372 : NATURE DISCRET);; 373 : SINON; 374 : *bp OPTI MODE FOUR 0; 375 : FOR2DJT = MANU CHPO MESH2DI 1 'SCAL' 0. 376 : NATURE DISCRET; 377 : *bp OPTI MODE FOUR NUMFOUR; 378 : FINSI; 379 : SI (EXIS LCOMPU 'FZ'); 380 : FOR2DJZ = (REDU (EXCO (TAB1.'EFFORTS'.i3) 381 : 'FZ' 'SCAL' NATURE DISCRET) MESH2DI) + 382 : (MANU CHPO MESH2DI 1 'SCAL' 0. 383 : NATURE DISCRET);; 384 : SINON; 385 : *bp OPTI MODE FOUR 0; 386 : FOR2DJZ = MANU CHPO MESH2DI 1 'SCAL' 0. 387 : NATURE DISCRET; 388 : *bp OPTI MODE FOUR NUMFOUR; 389 : FINSI; 390 : SI (EXIS LCOMPU 'IFR'); 391 : FOR2DJRI = (REDU (EXCO (TAB1.'EFFORTS'.i3) 392 : 'IFR' 'SCAL' NATURE DISCRET) MESH2DI) + 393 : (MANU CHPO MESH2DI 1 'SCAL' 0. 394 : NATURE DISCRET);; 395 : SINON; 396 : *bp OPTI MODE FOUR 0; 397 : FOR2DJRI = MANU CHPO MESH2DI 1 'SCAL' 0. 398 : NATURE DISCRET; 399 : *bp OPTI MODE FOUR NUMFOUR; 400 : FINSI; 401 : SI (EXIS LCOMPU 'IFT'); 402 : FOR2DJTI = (REDU (EXCO (TAB1.'EFFORTS'.i3) 403 : 'IFT' 'SCAL' NATURE DISCRET) MESH2DI) + 404 : (MANU CHPO MESH2DI 1 'SCAL' 0. 405 : NATURE DISCRET);; 406 : SINON; 407 : *bp OPTI MODE FOUR 0; 408 : FOR2DJTI = MANU CHPO MESH2DI 1 'SCAL' 0. 409 : NATURE DISCRET; 410 : *bp OPTI MODE FOUR NUMFOUR; 411 : FINSI; 412 : SI (EXIS LCOMPU 'IUZ'); 413 : FOR2DJZI = (REDU (EXCO (TAB1.'EFFORTS'.i3) 414 : 'IFZ' 'SCAL' NATURE DISCRET) MESH2DI) + 415 : (MANU CHPO MESH2DI 1 'SCAL' 0. 416 : NATURE DISCRET);; 417 : SINON; 418 : *bp OPTI MODE FOUR 0; 419 : FOR2DJZI = MANU CHPO MESH2DI 1 'SCAL' 0. 420 : NATURE DISCRET; 421 : *bp OPTI MODE FOUR NUMFOUR; 422 : FINSI; 423 : *bp OPTI MODE FOUR 0; 424 : OPTI MODE TRID; 425 : * 426 : REPETER LAB31 NTRANCHE; 427 : * 428 : ANGLAB1 = EXTR PRANGL &LAB31; 429 : ANGLABN = NUMFOUR*(EXTR PRANGL &LAB31); 430 : MESH2DN = TAB1. 'MAILLAGE_3D' . &LAB31 . &LAB30; 431 : FOR3DJR FOR3DJT FOR3DJZ FOR3DJRI FOR3DJTI FOR3DJZI = 432 : FOR2DJR FOR2DJT FOR2DJZ FOR2DJRI FOR2DJTI FOR2DJZI 433 : DEDU ANGLAB1 p00000 P00001 434 : 'ROTA' MESH2DI MESH2DN; 435 : FOR3DJ0 = ((EXCO FOR3DJR 'SCAL' 'FR')*(COS ANGLABN)) + 436 : ((EXCO FOR3DJT 'SCAL' 'FT')*(SIN ANGLABN)) + 437 : ((EXCO FOR3DJZ 'SCAL' 'FZ')*(COS ANGLABN)) + 438 : ((EXCO FOR3DJRI 'SCAL' 'IFR')*(SIN ANGLABN)) - 439 : ((EXCO FOR3DJTI 'SCAL' 'IFT')*(COS ANGLABN)) + 440 : ((EXCO FOR3DJZI 'SCAL' 'IFZ')*(SIN ANGLABN)); 441 : FOR3DJ1 = ((EXCO FOR3DJ0 'FR' 'FX')*(COS ANGLAB1)) + 442 : ((-1.)*(EXCO FOR3DJ0 'FR' 'FZ')*(SIN ANGLAB1)) + 443 : ((-1.)*(EXCO FOR3DJ0 'FT' 'FX')*(SIN ANGLAB1)) + 444 : ((-1.)*(EXCO FOR3DJ0 'FT' 'FZ')*(COS ANGLAB1)) + 445 : (EXCO FOR3DJ0 'FZ' 'FY'); 446 : FOR3DJ1 = FOR3DJ1 + (((EXCO FOR3DJ0 'IFR' 'FX')*(COS ANGLAB1)) + 447 : ((-1.)*(EXCO FOR3DJ0 'IFR' 'FZ')*(SIN ANGLAB1)) + 448 : ((-1.)*(EXCO FOR3DJ0 'IFT' 'FX')*(SIN ANGLAB1)) + 449 : ((-1.)*(EXCO FOR3DJ0 'IFT' 'FZ')*(COS ANGLAB1)) + 450 : (EXCO FOR3DJ0 'IFZ' 'FY')); 451 : * 452 : SI ((EGA &LAB31 1) et (EGA &LAB30 1)); 453 : FOR3DJ = FOR3DJ1; 454 : SINON; 455 : FOR3DJ = FOR3DJ ET FOR3DJ1; 456 : FINSI; 457 : * 458 : FIN LAB31; 459 : FOR3D.i3 = FOR3DJ; 460 : FIN LAB3; 461 : * 462 : FIN LAB30; 463 : * 464 : FINSI; 465 : * 466 : ************************************************** 467 : * 468 : * CHPO 3D quelconques - Pression, épaisseur... - Cas symetrique 469 : * 470 : *************************************************** 471 : SI (FLAGCHPS); 472 : * 473 : OPTI DIME 3 MODE FOUR NUMFOUR; 474 : * 475 : p00000 = 0 0 0; 476 : p00001 = 0 1 0; 477 : NTRANCHE = (DIME (TAB1. 'MAILLAGE_3D')) - 4; 478 : NCHPS = DIME (TAB1.'CHAMPS_POINTS_SYMETRIQUES'); 479 : PRANGL = TAB1. 'MAILLAGE_3D'. 'ANGLES' ; 480 : * 481 : NZONE = DIME (TAB1. 'MAILLAGE_3D' . 0); 482 : * 483 : REPETER LAB30 NZONE; 484 : * 485 : MESH2DI = TAB1. 'MAILLAGE_3D' . 0 . &LAB30; 486 : * 487 : REPETER LAB3 NCHPS; 488 : i3 = &lab3; 489 : OPTI MODE FOUR NUMFOUR; 490 : LCOMPU = EXTR 491 : (TAB1.'CHAMPS_POINTS_SYMETRIQUES'.i3) COMP; 492 : * 493 : REPETER LAB32 (DIME LCOMPU); 494 : OPTI MODE FOUR NUMFOUR; 495 : NCOMPJ = EXTR LCOMPU &LAB32; 496 : CHP2DJ = (REDU (EXCO 497 : (TAB1.'CHAMPS_POINTS_SYMETRIQUES'.i3) 498 : NCOMPJ SCAL NATURE DIFFUS) MESH2DI) + 499 : (MANU CHPO MESH2DI 1 'SCAL' 0. 500 : NATURE DIFFUS);; 501 : * 502 : REPETER LAB31 NTRANCHE; 503 : * 504 : ANGLAB1 = EXTR PRANGL &LAB31; 505 : ANGLABN = NUMFOUR*(EXTR PRANGL &LAB31); 506 : MESH2DN = TAB1. 'MAILLAGE_3D' . &LAB31 . &LAB30; 507 : CHP3DJ1 = (CHP2DJ DEDU ANGLAB1 p00000 P00001 508 : 'ROTA' MESH2DI MESH2DN)*(COS ANGLABN); 509 : *bp OPTI MODE FOUR 0; 510 : OPTI MODE TRID; 511 : CHP3DJ1 =EXCO CHP3DJ1 SCAL NCOMPJ; 512 : * 513 : SI ((EGA &LAB31 1) et (EGA &LAB30 1) 514 : et (EGA &LAB32 1)); 515 : CHP3DJ = CHP3DJ1; 516 : SINON; 517 : CHP3DJ = CHP3DJ ET CHP3DJ1; 518 : FINSI; 519 : * 520 : FIN LAB31; 521 : * 522 : FIN LAB32; 523 : CHS3D.i3 = CHP3DJ; 524 : FIN LAB3; 525 : * 526 : FIN LAB30; 527 : * 528 : FINSI; 529 : * 530 : ************************************************** 531 : * 532 : * CHPO 3D quelconques - Pression, épaisseur... - Cas antisymetrique 533 : * 534 : *************************************************** 535 : SI FLAGCHPA; 536 : * 537 : OPTI DIME 3 MODE FOUR NUMFOUR; 538 : * 539 : p00000 = 0 0 0; 540 : p00001 = 0 1 0; 541 : NTRANCHE = (DIME (TAB1. 'MAILLAGE_3D')) - 4; 542 : NCHPA = DIME (TAB1.'CHAMPS_POINTS_ANTISYMETRIQUES'); 543 : PRANGL = TAB1. 'MAILLAGE_3D'. 'ANGLES' ; 544 : * 545 : NZONE = DIME (TAB1. 'MAILLAGE_3D' . 0); 546 : * 547 : REPETER LAB30 NZONE; 548 : * 549 : MESH2DI = TAB1. 'MAILLAGE_3D' . 0 . &LAB30; 550 : * 551 : REPETER LAB3 NCHPA; 552 : i3 = &lab3; 553 : OPTI MODE FOUR NUMFOUR; 554 : LCOMPU = EXTR 555 : (TAB1.'CHAMPS_POINTS_ANTISYMETRIQUES'.i3) COMP; 556 : * 557 : REPETER LAB32 (DIME LCOMPU); 558 : OPTI MODE FOUR NUMFOUR; 559 : NCOMPJ = EXTR LCOMPU &LAB32; 560 : CHP2DJ = REDU (EXCO 561 : (TAB1.'CHAMPS_POINTS_ANTISYMETRIQUES'.i3) 562 : NCOMPJ SCAL NATURE DIFFUS) MESH2DI; 563 : * 564 : REPETER LAB31 NTRANCHE; 565 : * 566 : ANGLAB1 = EXTR PRANGL &LAB31; 567 : ANGLABN = NUMFOUR*(EXTR PRANGL &LAB31); 568 : MESH2DN = TAB1. 'MAILLAGE_3D' . &LAB31 . &LAB30; 569 : CHP3DJ1 = (CHP2DJ DEDU ANGLAB1 p00000 P00001 570 : 'ROTA' MESH2DI MESH2DN)*(SIN ANGLABN); 571 : *bp OPTI MODE FOUR 0; 572 : OPTI MODE TRID; 573 : CHP3DJ1 =EXCO CHP3DJ1 SCAL NCOMPJ; 574 : * 575 : SI ((EGA &LAB31 1) et (EGA &LAB30 1) 576 : et (EGA &LAB32 1)); 577 : CHP3DJ = CHP3DJ1; 578 : SINON; 579 : CHP3DJ = CHP3DJ ET CHP3DJ1; 580 : FINSI; 581 : * 582 : FIN LAB31; 583 : * 584 : FIN LAB32; 585 : CHA3D.i3 = CHP3DJ; 586 : FIN LAB3; 587 : * 588 : FIN LAB30; 589 : * 590 : FINSI; 591 : * Il manque les champs de contraintes et de déformations..... 592 : * 593 : * 594 : * 595 : *************************************************** 596 : * 597 : * Rangement si nécessaire 598 : * 599 : ************************************************** 600 : * On stocke les résultats sur le maillage 3D 601 : * 602 : SI FLAGDEPL; 603 : TAB1.'DEPLACEMENTS_3D' = DEP3D; 604 : FINSI; 605 : * 606 : SI FLAGFOR; 607 : TAB1.'EFFORTS_3D' = FOR3D; 608 : FINSI; 609 : * 610 : SI FLAGCHPS; 611 : TAB1.'CHAMPS_POINTS_SYME_3D' = CHS3D; 612 : FINSI; 613 : * 614 : SI FLAGCHPS; 615 : TAB1.'CHAMPS_POINTS_ANTI_3D' = CHA3D; 616 : FINSI; 617 : * 618 : 'FINPROC' MESH3D; 619 : * 620 : 621 : 622 : 623 :
© Cast3M 2003 - All rights reserved.
Disclaimer