Download four2tri.procedur

Back to the list

   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