Download t_piteta.procedur

Back to the list

   1 : * T_PITETA  PROCEDUR  JC220346  12/09/12    21:15:08     7501           
   2 : 'DEBPROC' T_PITETA TABMOD*'TABLE' MATERI*'MCHAML' SUPTAB*'TABLE';
   3 : *
   4 : *|=====================================================================|
   5 : *|                                                                     |
   6 : *|    OBJET :                                                          |
   7 : *|    =======                                                          |
   8 : *|                                                                     |
   9 : *| 1) calculer la derivee seconde de l'energie potentielle vis a vis   |
  10 : *|    de la longueur d'une (ou des) fissure(s) intéragissantes. dG/da  |
  11 : *|    (G = taux de restitution d'énergie, a = longueur le la fissure)  |
  12 : *|    pour etudier éventuellement la stabilite de propagation d'une    |
  13 : *|    (ou des) fissure(s).                                             |
  14 : *| 2) calculer une intégrale permettant de decouper les modes mixtes.  |
  15 : *|    Dans ce cas, la procedure, appelée par G_THETA, ne fonctionne    |
  16 : *|    qu'en elasticite pour problèmes de configuration en 2D, 3D ou    |
  17 : *|    axisymetrique modèlisés par éléments dits massifs. Seuls les     |
  18 : *|    materiaux homogenes et isotropes sont acceptables. L'application |
  19 : *|    du chargement peut etre de type mecaniques, thermiques, forces   |
  20 : *|    volumiques, ou/et pressions sur le fond de la fissure.           |
  21 : *|                                                                     |
  22 : *|                                                                     |
  23 : *|    ENTREE :                                                         |
  24 : *|    ========                                                         |
  25 : *|                                                                     |
  26 : *|    Arquments obliquatoires :                                        |
  27 : *|    -------------------------                                        |
  28 : *|                                                                     |
  29 : *| OBJMOD  objet du type TABLE stockant tous les objets MODELS         |
  30 : *|         sur une petite zone de maillage entourant le plus grand des |
  31 : *|         contours qu'on a defini pour calculer dG/da. L'indice       |
  32 : *|         de cette table est 1, 2, 3,...,n (n : nombre de modeles     |
  33 : *|         dans la petite zone de maillage). Si l'on n'a pas prevu des |
  34 : *|         modeles dans cette petite zone, OBJMOD ici doit contenir    |
  35 : *|         les objets MODELS globales du problems utilises dans la     |
  36 : *|         resolution par elements finis. Dans ce cas le support       |
  37 : *|         maillage de l'ensemble de modeles est la structure totale   |
  38 : *|         etudiee.                                                    |
  39 : *| MATERI  Objet MCHAML de sous-type CARACTERISTIQUES donnant les      |
  40 : *|         propriétés matérielles (module Young, coefficient de        |
  41 : *|         Poisson...) + les proprietes geometriques dans le cas       |
  42 : *|         des elements en coque mince (epaisseur, excentrement...).   |
  43 : *|         Les composantes de MATERI peuvent etre des objets de type   |
  44 : *|         FLOTTANT, MCHAML, EVOLUTIO, NUAGE selon le probleme traité. |
  45 : *|         Il convient de donner ici le materiau total du probleme     |
  46 : *|         englobant toute la structure.                               |
  47 : *| SUPTAB  Objet de type TABLE.                                        |
  48 : *|         En entrée, SUPTAB sert à définir les options et les         |
  49 : *|         paramètres du calcul. Ses indices sont des objets de type   |
  50 : *|         MOTS (à écrire en toutes lettres) dont voici la liste:      |
  51 : *|                                                                     |
  52 : *| SUPTAB.CHTHETA  = CHPOINT (TABLE en 3D) de deplacement cree         |
  53 : *|                   par la procedure CH_THETA.                        |
  54 : *| SUPTAB.DEPLACEMENT = TABLE si le calcul est effectue pas a pas,     |
  55 : *|                      CHPOINT si en un seul pas (probleme lineaire). |
  56 : *|                      Dans le premier cas SUPTAB.DEPLACEMENT         |
  57 : *|                      contient touts les deplacements en indice      |
  58 : *|                      de la definition des valeurs du parametre      |
  59 : *|                      d'evolution (ex : table RESUDEPL de NONLIN).   |
  60 : *| SUPTAB.CONTRAINTE  = TABLE si le calcul est effectue pas a pas,     |
  61 : *|                      MCHAML si en un seul pas (probleme lineaire).  |
  62 : *|                      Dans le premier cas SUPTAB.CONTRAINTE contient |
  63 : *|                      toutes les contraintes en meme indice du       |
  64 : *|                      parametre d'evolution que la table             |
  65 : *|                      SUPTAB.DEPLACEMDNT (ex : table RESUCONT de     |
  66 : *|                      NONLIN).                                       |
  67 : *|                                                                     |
  68 : *|                                                                     |
  69 : *|    Arquments facultatifs :                                          |
  70 : *|    -----------------------                                          |
  71 : *|                                                                     |
  72 : *|    1 : Probleme non-lineaire (elasto ou visco-plasticite)           |
  73 : *|                                                                     |
  74 : *| SUPTAB.VARINTERNE = TABLE. Pour les calculs non-lineaires effectues |
  75 : *|                     pas a pas, elle donne les variables internes    |
  76 : *|                     en meme indice d'evolution que les tables       |
  77 : *|                     SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE         |
  78 : *|                     (ex : table RESUVARI de NONLIN). Cette table    |
  79 : *|                     est fournie dans le cas ou les deformations     |
  80 : *|                     inelastiques ne sont pas nulles, sinon          |
  81 : *|                     le probleme est considere comme lineaire.       |
  82 : *|                                                                     |
  83 : *|    2 : En thermo-mecanique                                          |
  84 : *|                                                                     |
  85 : *| SUPTAB.TEMPERATURE = TABLE pour les calculs effectues pas a pas,    |
  86 : *|                      CHPOINT si en un seul pas (probleme lineaire). |
  87 : *|                      Dans le premier cas SUPTAB.TEMPERATURE         |
  88 : *|                      contient toutes les temperatures absolutes     |
  89 : *|                      en indice d'evolution du parametre de temps,   |
  90 : *|                      qui doit etre plus large ou egale a celle des  |
  91 : *|                      tables SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE |
  92 : *|                      (ex : table CHPOTHETA utilisee dans NONLIN).   |
  93 : *| SUPTAB.TREFERENCE  = CHPOINT de temperature de reference (ex :      |
  94 : *|                      chpoint TREFERENCE utilisee dans NONLIN).      |
  95 : *|                                                                     |
  96 : *|    3 : En presence de pression ou/et force volumique                |
  97 : *|        agissant dans un voisinage du fond de la fissure             |
  98 : *|                                                                     |
  99 : *| SUPTAB.PRESSION  = Objet de type CHPOINT ou CHARGEMENT, requis dans |
 100 : *|                    dans le cas ou il existe une force volumique     |
 101 : *|                    ou/et une pression s'exercant dans un voisinage  |
 102 : *|                    du fond de la fissure. Si cette force varie avec |
 103 : *|                    le temps on donne un objet de type CHARGEMENT.   |
 104 : *|                    SI cette force reste constante, on donne un      |
 105 : *|                    un objet de type CHPOINT                         |
 106 : *|                                                                     |
 107 : *|    4 : En cas de calcul de la derivee seconde de l'energie permet-  |
 108 : *|        tant d'etudier la stabilite de propagation des fissures      |
 109 : *|                                                                     |
 110 : *| SUPTAB.CHPI   = CHPOINT (TABLE en 3D) de deplacement cree           |
 111 : *|                 par la procedure CH_THETA.                          |
 112 : *| SUPTAB.RITOTA = RIGIDITE. C'est la rigidité complète de la          |
 113 : *|                 structure, y compris les conditions aux limites     |
 114 : *|                 de type DEPLACEMENT ou ROTATION.                    |
 115 : *|                                                                     |
 116 : *|    5 : En cas de calcul de la derivee seconde de l'energie          |
 117 : *|        avec une autre solution auxilaire (intégrale permettant,     |
 118 : *|        par exemple, de decouper les modes)                          |
 119 : *|                                                                     |
 120 : *| SUPTAB.'DEPL_AUXI' = Solution auxilaire de deplacement (CHPOINT)    |
 121 : *| SUPTAB.'CONT_AUXI' = Solution auxilaire de contrainte (MCHAML)      |
 122 : *| SUPTAB.'PRES_AUXI' = Pression auxilaire si elle applique sur le     |
 123 : *|                      voisinage du fond de la fissure (CHPOINT)      |
 124 : *|                                                                     |
 125 : *|                                                                     |
 126 : *|    6 : Pour un front de fissure tridimensionnel                     |
 127 : *|                                                                     |
 128 : *| SUPTAB.'AVANCE'   =  MAILLAGE pour donner les points du front pour  |
 129 : *|                      lesquels le calcul sera effectue. Si cet       |
 130 : *|                      argument est absent, le calcul sera fait pour  |
 131 : *|                      tous les noeuds sur le front de la fissure.    |
 132 : *|                                                                     |
 133 : *|    7 : En cas d'existence de plusieurs materiaux                    |
 134 : *|                                                                     |
 135 : *| SUPTAB.'PARALLELE' = VRAI si la fissure est parallele a l'interface |
 136 : *|                      FAUX sinon .                                   |
 137 : *|                                                                     |
 138 : *|    SORTIE :                                                         |
 139 : *|    ========                                                         |
 140 : *|                                                                     |
 141 : *|    Dans tous les cas de calcul                                      |
 142 : *|    ---------------------------                                      |
 143 : *|                                                                     |
 144 : *| SUPTAB.'DGDA' = En 2D, une table si le calcul est effectue pas a    |
 145 : *|                 pas, flottant si en un seul pas. Dans le premier    |
 146 : *|                 cas, dG/da est en meme indice d'evolution du        |
 147 : *|                 parametre de temps que celle des tables             |
 148 : *|                 SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE (ou         |
 149 : *|                 SUPTAB.VARINTERNE en elasto ou visco-plasticite).   |
 150 : *|                 En 3D, si le calcul est realise pas a pas           |
 151 : *|                 SUPTAB.'DGDA' est indicee par deux parametres dont  |
 152 : *|                 le premier est le facteur d'evolution de temps et   |
 153 : *|                 le deuxieme les points sur le front de la fissure.  |
 154 : *|                 Pour un calcul realise en un seul pas SUPTAB.G a    |
 155 : *|                 une seule indice representant les points sur le     |
 156 : *|                 front de la fissure.                                |
 157 : *|                 Exemple : la valeur de dG/da est                    |
 158 : *|                 en 2D pour un calcul realise pas a pas a l'instant  |
 159 : *|                       T1, (SUPTAB.'DGDA'.T1)                        |
 160 : *|                 en 2D pour un calcul en un seul pas, (SUPTAB.'DGDA')|
 161 : *|                 en 3D au point P1 pour un calcul realise pas a pas  |
 162 : *|                       a l'instant T1 et, (SUPTAB.'DGDA'.T1.P1)      |
 163 : *|                 en 3D au point P1 pour un calcul realise en un seul |
 164 : *|                       pas, (SUPTAB.'DGDA'.P1)                       |
 165 : *| SUPTAB.'IERR' = logique egale a VRAI si l'on n'a pas reussit le     |
 166 : *|                 calcul ou les donnees sont fautes, sinon            |
 167 : *|                 SUPTAB.'IERR' vaut FAUT.                            |
 168 : *|                                                                     |
 169 : *|    En cas de calcul effectue pas a pas                              |
 170 : *|    -----------------------------------                              |
 171 : *|                                                                     |
 172 : *| SUPTAB.EVOLDGDA   En cas de calcul de la variation seconde          |
 173 : *|                   d'énergie, SUPTAB.EVOLDGDA est un objet de type   |
 174 : *|                   EVOLUTION donnant la valeur de dG/da en fonction  |
 175 : *|                   du temps en elasto-plasticite. Pour un front de   |
 176 : *|                   fissure tridimensionnel EVOLDGDA est une table    |
 177 : *|                   indicee par les points donnant les evolutions de  |
 178 : *|                   dG/da pour chaque point en fonction du temps.     |
 179 : *|                   Exemple : En 2D, on peut tracer l'evolution de    |
 180 : *|                   dG/da par : DESS (SUPTAB.'EVOLDGDA');             |
 181 : *|                   En 3D, on peut tracer l'evolution de dG/da        |
 182 : *|                   au point P1 en fonction du temps par :            |
 183 : *|                   DESS (SUPTAB.'EVOLDGDA'.P1);                      |
 184 : *|=====================================================================|
 185 : *
 186 : &DIME ='VALE' 'DIME'; &MODE ='VALE' 'MODE';
 187 : &ELEM = 'VALEUR' 'ELEM'; MOTAX = 'MOT' AXIS ;
 188 : ****
 189 : IPAP = ('EGA' ('TYPE' SUPTAB.'CONTRAINTE') 'TABLE   ') 'ET'
 190 :        ('EGA' ('TYPE' SUPTAB.'DEPLACEMENT') 'TABLE   ');
 191 : ****
 192 : OBJMOD = TABMOD.1; NBOBJ = 'DIME' ('INDE' TABMOD); I = 1;
 193 : 'SI' ('>' NBOBJ 1) ;
 194 :   'REPETER' NBJ1 (NBOBJ - 1);
 195 :      I = I + 1; OBJMOD = OBJMOD 'ET' TABMOD.I;
 196 :   'FIN' NBJ1;
 197 : 'FINSI' ;
 198 : MAPART = 'EXTR' OBJMOD 'MAIL';
 199 : ****
 200 : NBNO1 = 'NBNO' ('ELEM' (CHAN 'LIGNE' MAPART) 1);
 201 : ILIN = 'EGA' NBNO1 2; IQUA = 'EGA' NBNO1 3;
 202 : ICOQU = (&DIME 'EGA' 3) 'ET' ILIN 'ET' (('EGA' &ELEM 'SEG2')
 203 :         'OU' ('EGA' &ELEM 'TRI3') 'OU' ('EGA' &ELEM 'QUA4'));
 204 : **************************************************
 205 : ********* TEST DE COMPABILITE DES DONNEES ********
 206 : **************************************************
 207 : SUPTAB.'IERR' = FAUX;
 208 : 'SI' ('<' ('NBNO' ('EXTR' MATERI 'MAIL')) ('NBNO' MAPART));
 209 :   'MESS' 'ERREUR : LE SUPPORT GEOMETRIQUE DE MATERIAU EST';
 210 :   'MESS' 'PLUS PETIT QUE CELUI DE L ENSEMBLE DE MODELES';
 211 :    SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 212 : 'FINSI';
 213 : 'SI' ('<' ('NBEL' ('EXTR' MATERI 'MAIL')) ('NBEL' MAPART));
 214 :   'MESS' 'ERREUR : LE SUPPORT GEOMETRIQUE DE MATERIAU EST';
 215 :   'MESS' 'PLUS PETIT QUE CELUI DE L ENSEMBLE DE MODELES';
 216 :    SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 217 : 'FINSI';
 218 : ****
 219 : IAUXI = ('EXIST' SUPTAB 'DEPL_AUXI') 'OU'
 220 :          ('EXIST' SUPTAB 'CONT_AUXI') 'OU'
 221 :          ('EXIST' SUPTAB 'PRES_AUXI');
 222 : 'SI' IAUXI;
 223 :    'SI' ('NON' ('EXIST' SUPTAB 'DEPL_AUXI'));
 224 :      'ERREUR' 'ON VEUT LA SOLUTION AUXILAIRE DE DEPLACEMENT';
 225 :       SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 226 :    'FINSI';
 227 :    'SI' ('NON' ('EXIST' SUPTAB 'CONT_AUXI'));
 228 :      'ERREUR' 'ON VEUT LA SOLUTION AUXILAIRE DE CONTRAINTE';
 229 :       SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 230 :    'FINSI';
 231 : 'FINSI';
 232 : IPRE_A = FAUX;
 233 : 'SI' ('EXIST' SUPTAB 'PRES_AUXI');
 234 :    PRES_A = SUPTAB.'PRES_AUXI'; IPRE_A = VRAI;
 235 : 'FINSI';
 236 : ****
 237 : 'SI' ('NON' ('EXISTE' SUPTAB 'CONTRAINTE'));
 238 :    'ERREUR' 'IL FAUT DONNER LE CHAMP DE CONTRAINTE';
 239 :    SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 240 : 'FINSI';
 241 : 'SI' ('NON' ('EXISTE' SUPTAB 'DEPLACEMENT'));
 242 :    'ERREUR' 'IL FAUT DONNER LE CHAMP DE DEPLACEMENT';
 243 :     SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 244 : 'FINSI';
 245 : 'SI' ('EXISTE' SUPTAB 'PARALLELE');
 246 :   'SI' (NBOBJ 'EGA' 1);
 247 :     'ERRE' 'IL FAUT UNE TABLE STOCKANT TOUS LES OBJETS MODELES';
 248 :   'FINSI';
 249 :    IPARAL = SUPTAB.'PARALLELE';
 250 : 'SINON';
 251 :     IPARAL = FAUX;
 252 : 'FINSI';
 253 : 'SI' IPAP;
 254 :   'SI' ('NON' ('EXISTE' SUPTAB 'VARINTERNE'));
 255 : *&    'MESS' '   ATTENTION : EN ABSENCE DES VARIABLES INTERNES';
 256 : *&    'MESS' '   LE PROBLEME EST CONSIDERE COMME LINEAIRE.';
 257 :   'FINSI';
 258 : 'FINSI';
 259 : 'SI' ('NON' ('EXISTE' SUPTAB 'CHTHETA'));
 260 :    'ERREUR' 'IL FAUT DONNER LE CHAMP THETA';
 261 :    SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 262 : 'FINSI';
 263 : ****
 264 : ISECO = ('EXIST' SUPTAB 'CHPI') 'OU'
 265 :         ('EXIST' SUPTAB 'RITOTA');
 266 : 'SI' ISECO;
 267 :    'SAUT' 1 'LIGNE';
 268 :    'SI' ('NON' ('EXIST' SUPTAB 'CHPI'));
 269 :      'ERREUR' 'IL FAUT DONNER LE CHAMP PI';
 270 :       SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 271 :    'FINSI';
 272 :    'SI' ('NON' ('EXIST' SUPTAB 'RITOTA'));
 273 :      'ERREUR' 'IL FAUT DONNER LA RIGIDITE COMPLETE';
 274 :       SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 275 :    'FINSI';
 276 :     RITOTA = SUPTAB.'RITOTA';
 277 :     MAILTO = 'EXTR' ('EXTR' RITOTA 'RIGI' 'NOMU') 'MAIL';
 278 : 'FINSI';
 279 : ****
 280 : 'SI' (('NON' IAUXI) 'ET' ('NON' ISECO));
 281 :   'ERREUR' 'LES DONNEES NE SONT PAS COMPLETES';
 282 :    SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 283 : 'FINSI';
 284 : 'SI' (IAUXI 'ET' ISECO);
 285 :   'ERREUR' 'LE TYPE D INTEGARLE A CALCULER N EST PAS UNIQUE';
 286 :    SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 287 : 'FINSI';
 288 : ****
 289 : PASA = FAUX;
 290 : ITHER = ('EXIST' SUPTAB 'TEMPERATURE') 'OU'
 291 :         ('EXIST' SUPTAB 'TREFERENCE');
 292 : 'SI' ITHER;
 293 :    'SI' ('NON' ('EXIST' SUPTAB 'TEMPERATURE')) ;
 294 :      'ERREUR' 'ON VEUT LA CARTE DE TEMPERATURE';
 295 :       SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 296 :    'FINSI' ;
 297 :    'SI' ('NON' ('EXIST' SUPTAB 'TREFERENCE')) ;
 298 :      'ERREUR' 'ON VEUT LA TEMPERATURE DE REFERENCE';
 299 :       SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 300 :    'FINSI' ;
 301 :   'SI' ('EGA' ('TYPE' SUPTAB.'TEMPERATURE') 'CHARGEME');
 302 :     'SI' ('EXIST' (SUPTAB.'TEMPERATURE') 'T   ') ;
 303 :        PASA = VRAI;
 304 :     'FINSI';
 305 :   'FINSI';
 306 : 'FINSI' ;
 307 : ****
 308 : IPRES = FAUX;
 309 : 'SI' ('EXIST' SUPTAB 'PRESSION') ;
 310 :    PRESSI = SUPTAB.'PRESSION'; IPRES = VRAI ;
 311 : 'FINSI' ;
 312 : ****
 313 : IPARTI = 'EXIS' SUPTAB 'AVANCE';
 314 : ****
 315 : YOUVARI = FAUX; NUVARI = FAUX; ALFVARI = FAUX;
 316 : TRAVARI = FAUX; SIGVARI = FAUX; HVARI = FAUX;
 317 : MATREDU = 'REDU' MATERI OBJMOD;
 318 : 'REPETER' BCMOD1 NBOBJ;
 319 :    MATI = 'REDU' MATREDU TABMOD.&BCMOD1;
 320 :    YO1 = 'EXCO' MATI 'YOUN';
 321 :    TYPYO = 'TYPE' ('EXTR' YO1 'YOUN' 1 1 1);
 322 :   'SI' ('EGA' TYPYO 'EVOLUTIO');
 323 :      YOUVARI = VRAI;
 324 :   'SINON';
 325 :      TEST1 = (('MAXI' YO1) - ('MINI' YO1))/('MINI' YO1);
 326 :     'SI' ((TEST1 '>' 1.E-10) ET (NON IPARAL));
 327 :        YOUVARI = VRAI;
 328 :     'FINSI';
 329 :   'FINSI';
 330 :    NU1 = 'EXCO' MATI 'NU';
 331 :    TYPNU = 'TYPE' ('EXTR' NU1 'NU' 1 1 1);
 332 :   'SI' ('EGA' TYPNU 'EVOLUTIO');
 333 :      NUVARI = VRAI;
 334 :   'SINON';
 335 :      TEST1 = (('MAXI' NU1) - ('MINI' NU1))/('MINI' NU1);
 336 :     'SI' ((TEST1 '>' 1.E-10) ET (NON IPARAL));
 337 :           NUVARI = VRAI;
 338 :     'FINSI';
 339 :   'FINSI';
 340 :   'SI' ITHER;
 341 :      AL1 = 'EXCO' MATI 'ALPH';
 342 :      TYPAL = 'TYPE' ('EXTR' AL1 'ALPH' 1 1 1);
 343 :     'SI' ('EGA' TYPAL 'EVOLUTIO');
 344 :        ALFVARI = VRAI;
 345 :     'SINON';
 346 :        TEST1 = (('MAXI' AL1) - ('MINI' AL1))/('MINI' AL1);
 347 :       'SI' (TEST1 '>' 1.E-10); ALFVARI = VRAI; 'FINSI';
 348 :     'FINSI';
 349 :   'FINSI';
 350 :   'SI' ('EXIST' MATI 'TRAC');
 351 :      TR1 = 'EXCO' MATI 'TRAC';
 352 :      TYPTR = 'TYPE' ('EXTR' TR1 'TRAC' 1 1 1);
 353 :     'SI' ('EGA' TYPTR 'NUAGE   ');
 354 :        TRAVARI = VRAI;
 355 :     'FINSI';
 356 :   'FINSI';
 357 :   'SI' ('EXIST' MATI 'SIGY');
 358 :      SI1 = 'EXCO' MATI 'SIGY';
 359 :      TYPSI = 'TYPE' ('EXTR' SI1 'SIGY' 1 1 1);
 360 :     'SI' ('EGA' TYPSI 'EVOLUTIO');
 361 :        SIGVARI = VRAI;
 362 :     'FINSI';
 363 :   'FINSI';
 364 :   'SI' ('EXIST' MATI 'H');
 365 :      H1 = 'EXCO' MATI 'H';
 366 :      TYPH = 'TYPE' ('EXTR' H1 'H' 1 1 1);
 367 :     'SI' ('EGA' TYPH 'EVOLUTIO');
 368 :        HVARI = VRAI;
 369 :     'FINSI';
 370 :   'FINSI';
 371 : 'FIN' BCMOD1;
 372 : MATVARI = YOUVARI 'OU' NUVARI 'OU' ALFVARI
 373 :          'OU' TRAVARI 'OU' SIGVARI 'OU' HVARI;
 374 : 'SI' MATVARI;
 375 :   'ERREUR' 'MATERIAU NON CONSTANT. OPTION NON DISPONIBLE';
 376 :    SUPTAB.'IERR' = VRAI; 'QUITTER' T_PITETA;
 377 : 'FINSI';
 378 : ****
 379 : 'SI' IPAP;
 380 :    TXMECANI= 'MOT' '    Mecanique';
 381 :    TXTERMI = 'MOT' '    Thermique';
 382 :    TXPRESS = 'MOT' '    Volumique';
 383 : 'SINON';
 384 :    TXMECANI= 'MOT' ' Mecanique';
 385 :    TXTERMI = 'MOT' '    Thermique';
 386 :    TXPRESS = 'MOT' '    Volumique';
 387 : 'FINSI';
 388 : **************************************************
 389 : ***  QUELQUES MOTS POUR SIMPLIFIER L'ECRITURE  ***
 390 : **************************************************
 391 : E = 'MOT' 'EXCO'; MOTU = 'MOTS' 'UX' 'UY'; C = 'MOT' 'CHAI';
 392 : MOTF = 'MOTS' 'FX' 'FY'; S = 'MOT' 'SCAL';
 393 : MU1 = 'MOT' 'UX'; MU2 = 'MOT' 'UY'; MU3 = 'MOT' 'UZ';
 394 : MF1 = 'MOT' 'FX'; MF2 = 'MOT' 'FY'; MF3 = 'MOT' 'FZ';
 395 : GR1 = 'MOT' 'UX,X'; GR2 = 'MOT' 'UX,Y'; GR3 = 'MOT' 'UX,Z';
 396 : GR4 = 'MOT' 'UY,X'; GR5 = 'MOT' 'UY,Y'; GR6 = 'MOT' 'UY,Z';
 397 : GR7 = 'MOT' 'UZ,X'; GR8 = 'MOT' 'UZ,Y'; GR9 = 'MOT' 'UZ,Z';
 398 : SM1 = 'MOT' 'SMXX'; SM2 = 'MOT' 'SMYY'; SM3 = 'MOT' 'SMZZ';
 399 : SM4 = 'MOT' 'SMXY'; SM5 = 'MOT' 'SMXZ'; SM6 = 'MOT' 'SMYZ';
 400 : EP1 = 'MOT' 'EPXX'; EP2 = 'MOT' 'EPYY'; EP3 = 'MOT' 'EPZZ';
 401 : EP4 = 'MOT' 'GAXY'; EP5 = 'MOT' 'GAXZ'; EP6 = 'MOT' 'GAYZ';
 402 : 'SI' ('EGA' MOTAX &MODE) ;
 403 :    MOTU = 'MOTS' 'UR' 'UZ' ; MOTF = 'MOTS' 'FR' 'FZ' ;
 404 :    MU1 = 'MOT' 'UR'; MU2 = 'MOT' 'UZ'; MU3 = 'MOT' 'UT';
 405 :    MF1 = 'MOT' 'FR'; MF2 = 'MOT' 'FZ';
 406 :    GR1 = 'MOT' 'UR,R'; GR2 = 'MOT' 'UR,Z'; GR3 = 'MOT' 'UR,T';
 407 :    GR4 = 'MOT' 'UZ,R'; GR5 = 'MOT' 'UZ,Z'; GR6 = 'MOT' 'UZ,T';
 408 :    GR7 = 'MOT' 'UT,R'; GR8 = 'MOT' 'UT,Z'; GR9 = 'MOT' 'UT,T';
 409 :    SM1 = 'MOT' 'SMRR'; SM2 = 'MOT' 'SMZZ'; SM3 = 'MOT' 'SMTT';
 410 :    SM4 = 'MOT' 'SMRZ';
 411 :    EP1 = 'MOT' 'EPRR'; EP2 = 'MOT' 'EPZZ'; EP3 = 'MOT' 'EPTT';
 412 :    EP4 = 'MOT' 'GARZ';
 413 : 'FINSI';
 414 : 'SI' (&DIME 'EGA' 3) ;
 415 :    MOTU = 'MOTS' 'UX' 'UY' 'UZ' ; MOTF = 'MOTS' 'FX' 'FY' 'FZ' ;
 416 : 'FINSI';
 417 : ****
 418 : TX2 = 'CHAIN' ' Contribution a la derivee dG/da due au chargement';
 419 : 'SI' ITHER;
 420 : TX1 = 'MOT' 'VARIATION SECONDE D ENERGIE EN THERMO-PLASTICITE';
 421 : 'SINON';
 422 : TX1 = 'MOT' 'VARIATION SECONDE D ENERGIE EN ELASTO-PLASTICITE';
 423 : 'FINSI';
 424 : CHA1 = 'CHAI' 'VARIATION SECONDE dG/da EN FONCTION DU TEMPS';
 425 : MOTTI = 'MOT' 'dG/da';
 426 : MOTCO = 'MOT' '   Derivee dG/da';
 427 : TX3 = 'CHAIN' ' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°';
 428 : ***************************************************
 429 : ********** DEPLACEMENT, GRADIANT INITIAUX *********
 430 : ***************************************************
 431 : FOR000 ='CHAN' 'CHPO' OBJMOD ('ZERO' OBJMOD 'FORCES  ');
 432 : DEP000 ='CHAN' 'CHPO' OBJMOD ('ZERO' OBJMOD 'DEPLACEM');
 433 : GRA000 = 'ZERO' OBJMOD 'GRADIENT';
 434 : ********************************************
 435 : *** ZONE OU LE CHAMP THETA N'EST PAS NUL ***
 436 : ********************************************
 437 : 'SI' (('EGA' &DIME 2) 'OU' ICOQU);
 438 :    TETA = SUPTAB.'CHTHETA'; MENL1 = 'MOT' 'CONT';
 439 : 'FINSI';
 440 : 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU));
 441 :    TETA = SUPTAB.'CHTHETA'.'GLOBAL'; MENL1 = 'MOT' 'ENVE';
 442 : 'FINSI';
 443 : TETA = TETA + DEP000;
 444 : NORM1 = ((E MU1 TETA 'SCAL')**2) + ((E MU2 TETA 'SCAL')**2);
 445 : 'SI' ('EGA' &DIME 3);
 446 :    NORM1 = NORM1 + ((E MU3 TETA 'SCAL')**2);
 447 : 'FINSI';
 448 : NORM1 = 'CHAN' 'CHAM' OBJMOD (NORM1**0.5);
 449 : VA1 = ('MAXI' NORM1) - 1.E-5; VA2 = ('MAXI' NORM1) + 1.E-5;
 450 : ELTETA = NORM1 'ELEM' 'COMPRIS' VA1 VA2;
 451 : ***************************************************
 452 : ***** INDICE DE TEMPERATURE RANGEE DENA LTHER *****
 453 : ***************************************************
 454 : 'SI' ('NON' PASA) ;
 455 :   'SI' (ITHER 'ET' IPAP) ;
 456 :      TEPER*'TABLE'= SUPTAB.'TEMPERATURE';
 457 :      ITET = 'INDE' TEPER ; NBTET = 'DIME' ITET ;
 458 :      IT = 1 ;
 459 :      LTHER = 'PROG' (ITET.IT) ;
 460 :     'REPETER' TEPERATU ;
 461 :        IT = IT + 1 ;
 462 :        'SI' ('EXISTE' ITET IT) ;
 463 :           VALTET = 'PROG' (ITET.IT) ;
 464 :           LTHER = LTHER 'ET' VALTET ;
 465 :        'SINON' ;
 466 :          'QUITTER' TEPERATU ;
 467 :        'FINSI' ;
 468 :     'FIN' TEPERATU ;
 469 :     LTHER = 'ORDONNER' LTHER ;
 470 :   'FINSI' ;
 471 : 'FINSI' ;
 472 : ***************************************************
 473 : ********* TABLES POUR STOCKER LES RESULTATS *******
 474 : ***************************************************
 475 : SUPTAB.'DGDA' = TABLE;
 476 : ***************************************************
 477 : ****************  AFFICHAGE DU TITRE **************
 478 : ***************************************************
 479 : 'SI' IPAP;
 480 :   'SI' (('EGA' &DIME 2) 'OU' ICOQU);
 481 :     'SI' ISECO;
 482 :     'MESS' '         ' TX1;
 483 :     'MESS';
 484 :     'MESS' '         ' TX2; 'MESS' '         ' TX3;
 485 :     'MESS' '   Instant ' TXMECANI TXTERMI TXPRESS MOTCO;
 486 :     'FINSI';
 487 :   'FINSI';
 488 :   'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU));
 489 :     'SI' ISECO;
 490 :     'MESS' '             ' TX1;
 491 :     'MESS';
 492 :     'MESS' '             ' TX2; 'MESS' '             ' TX3;
 493 :     'MESS' ' Noeuds ' '   Instant ' TXMECANI TXTERMI TXPRESS MOTCO;
 494 :     'FINSI';
 495 :   'FINSI';
 496 : 'SINON';
 497 :   'SI' (('EGA' &DIME 2) 'OU' ICOQU);
 498 :     'SI' ISECO;
 499 :     'MESS' '  ' TX2; 'MESS' '  ' TX3;
 500 :     'MESS' ' ' TXMECANI TXTERMI TXPRESS '   Derivee dG/da';
 501 :     'FINSI';
 502 :   'FINSI';
 503 :   'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU));
 504 :     'SI' ISECO;
 505 :     'MESS' '      ' TX2; 'MESS' '      ' TX3;
 506 :     'MESS' ' Noeuds  ' TXMECANI TXTERMI TXPRESS '   Derivee dG/da';
 507 :     'FINSI';
 508 :   'FINSI';
 509 : 'FINSI';
 510 : ****
 511 : 'SI' ('NON' IPAP);
 512 :    SIGF = 'REDU' (SUPTAB.'CONTRAINTE') OBJMOD;
 513 :    DEPINT = 'REDU' (SUPTAB.'DEPLACEMENT') MAPART;
 514 :    NBDEP = 1;
 515 : 'SINON';
 516 :    SIG*'TABLE' = SUPTAB.'CONTRAINTE' ;
 517 :    DEP*'TABLE' = SUPTAB.'DEPLACEMENT' ;
 518 :   'SI' ('EXIST' SUPTAB 'VARINTERNE');
 519 :      VAR*'TABLE' = SUPTAB.'VARINTERNE';
 520 :   'SINON';
 521 :      VAR = TABLE;
 522 :   'FINSI';
 523 :    IDEP = 'INDE' DEP ; NBDEP = 'DIME' IDEP ;
 524 : 'FINSI';
 525 : ***************************************************
 526 : ***************************************************
 527 : *********   BOUCLE SUR LE PAS DE CALCUL   *********
 528 : ***************************************************
 529 : ***************************************************
 530 : IABC = 0 ;
 531 : 'REPETER' BOUCEXT NBDEP  ;
 532 :    IABC = IABC + 1 ;
 533 :    S10 = 0.; S20 = 0.; S30 = 0.; S40 = 0.; S50 = 0.;
 534 :    S60 = 0.; S70 = 0.; S80 = 0.; S90 = 0.; S100 = 0.;
 535 :    S110 = 0.; S120 = 0.; S130 = 0.; S140 = 0.;
 536 : ***************************************************
 537 : ***** DEPLACEMENT,CONTRAINTE A L INSTANT INST *****
 538 : ***************************************************
 539 :   'SI' IPAP;
 540 :      INST = IDEP.IABC ;
 541 :      SIGF = (SIG.INST) 'REDU' OBJMOD ;
 542 :     'SI' ('EXIST' VAR INST);
 543 :        VARF = (VAR.INST) 'REDU' OBJMOD;
 544 :     'SINON';
 545 :        VARF = 'ZERO' OBJMOD 'VARINTER';
 546 :     'FINSI';
 547 :      DEPINT = 'REDU' (DEP.INST) MAPART;
 548 :   'FINSI';
 549 : ***************************************************
 550 : *********** TEMPERATURE A L INSTANT INST **********
 551 : ***************************************************
 552 :   'SI' ITHER ;
 553 :     'SI' IPAP;
 554 :       'SI' PASA ;
 555 :          TEPINT = 'TIRE' (SUPTAB.'TEMPERATURE') INST 'T' ;
 556 :          TEPINT = 'REDU' TEPINT MAPART ;
 557 :          TEPINT = TEPINT - ('REDU' (SUPTAB.'TREFERENCE') MAPART);
 558 :       'SINON';
 559 :          K = 0 ;
 560 :         'REPETER' BLOC1 NBTET ;
 561 :            K = K + 1 ;
 562 :            NBRE = 'EXTR' LTHER K ;
 563 :           'SI' (NBRE '>EG' INST) ; 'QUITTER' BLOC1 ; 'FINSI' ;
 564 :         'FIN' BLOC1 ;
 565 :          K = K - 1 ;
 566 :         'SI' (> ('ABS' ((NBRE-INST)/INST)) 0.001) ;
 567 :            NBRE1 = 'EXTR' LTHER K ;
 568 :            NBRE2 = 'EXTR' LTHER (K+1) ;
 569 :            D1 = INST - NBRE1 ; D2 = NBRE2 - INST ;
 570 :            TEPINT = ((('REDU' TEPER.NBRE1 MAPART)*D2)+
 571 :                      (('REDU' TEPER.NBRE2 MAPART)*D1))*(1/(D1+D2));
 572 :            TEPINT = TEPINT - ('REDU' (SUPTAB.'TREFERENCE') MAPART);
 573 :         'SINON';
 574 :            TEPINT = ('REDU' TEPER.NBRE MAPART)
 575 :                   - ('REDU' (SUPTAB.'TREFERENCE') MAPART) ;
 576 :         'FINSI';
 577 :       'FINSI';
 578 :     'SINON';
 579 :        TEPINT = ('REDU' (SUPTAB.'TEMPERATURE') MAPART)
 580 :               - ('REDU' (SUPTAB.'TREFERENCE') MAPART) ;
 581 :     'FINSI';
 582 :   'FINSI';
 583 : ***************************************************
 584 : ************ MATERIAU A L INSTANT INST ************
 585 : ***************************************************
 586 :   'SI' (MATVARI 'ET' ITHER);
 587 :      TEPABS = TEPINT + ('REDU' (SUPTAB.'TREFERENCE') MAPART);
 588 :      MAT1 = 'VARI' 'NUAG' OBJMOD MATREDU ('EXCO' 'T' TEPABS);
 589 :   'SINON';
 590 :      MAT1 = MATREDU;
 591 :   'FINSI';
 592 : ***************************************************
 593 : ************ GRADIENT A L INSTANT INST ************
 594 : ***************************************************
 595 :    GRADEP = 'GRAD' OBJMOD MAT1 DEPINT ;
 596 :   'SI' ITHER;
 597 :      TEPEGR = 'GRAD' OBJMOD MAT1 ((E 'T' TEPINT MU1) + DEP000);
 598 :     'SI' ISECO;
 599 :        DEPDT = (E GR1 TEPEGR MU1) + (E GR2 TEPEGR MU2);
 600 :       'SI' (&DIME 'EGA' 3);
 601 :          DEPDT = DEPDT + (E GR3 TEPEGR MU3);
 602 :       'FINSI';
 603 :        DEPDTGR = 'GRAD' OBJMOD MAT1 ('CHAN' 'CHPO' OBJMOD DEPDT);
 604 :     'FINSI';
 605 :   'FINSI';
 606 : *******************************************************
 607 : **** ENERGIE DE DEFORMATION ELASTIQUE ET PLASTIQUE ****
 608 : *******************************************************
 609 :    WELAS = 0.5*('ENER' OBJMOD SIGF ('ELAS' OBJMOD SIGF MAT1));
 610 :   'SI' IPAP;
 611 :     'SI' ('EGA' IABC 1);
 612 :        VMI1 = 'CHAN' ('VMIS' OBJMOD SIGF MAT1) 'TYPE' 'SCALAIRE';
 613 :        WPLAS = 0.5*VMI1*(E VARF 'EPSE') ;
 614 :     'SINON' ;
 615 :        SIGMOY = 0.5*(SIG1 + SIGF);
 616 :        VMI1 = 'CHAN' ('VMIS' OBJMOD SIGMOY MAT1) 'TYPE' 'SCALAIRE';
 617 :        WPLAS = WPLAS + (VMI1*(E (VARF - VAR1) 'EPSE'));
 618 :     'FINSI' ;
 619 :      ENERM = WELAS + WPLAS ;
 620 :      SIG1 = SIGF; VAR1 = VARF;
 621 :   'SINON';
 622 :      ENERM = WELAS;
 623 :   'FINSI';
 624 : ****************************************************
 625 : ********** RECUPERATION DU POINT A AVANCER *********
 626 : ****************************************************
 627 :   'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU));
 628 :     'SI' IPAP;
 629 :        SUPTAB.'DGDA'.INST = TABLE;
 630 :     'FINSI';
 631 :      TTETA*'TABLE' = SUPTAB.'CHTHETA';
 632 :     'SI' ISECO; TPI*'TABLE' = SUPTAB.'CHPI'; 'FINSI';
 633 :      INT = 'INDEX' TTETA;
 634 :     'SI' IPARTI;
 635 :       'SI' ('EGA' ('TYPE' (SUPTAB.'AVANCE')) 'MAILLAGE');
 636 :          PMA = 'CHAN' 'POI1' (SUPTAB.'AVANCE');
 637 :          NBOU = ('NBNO' PMA) + 1;
 638 :       'SINON';
 639 :          PMA = SUPTAB.'AVANCE'; NBOU = 2;
 640 :       'FINSI';
 641 :     'SINON';
 642 :        NBOU = 'DIME' TTETA;
 643 :     'FINSI';
 644 :   'FINSI';
 645 :   'SI' (('EGA' &DIME 2) 'OU' ICOQU);
 646 :      NBOU = 1;
 647 :   'FINSI';
 648 : **************************************************
 649 : ********  BOUCLE SUR LES POINTS A AVANCER  *******
 650 : **************************************************
 651 :   'REPETER' BCNOEU NBOU;
 652 :   'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU));
 653 :     'SI' (&BCNOEU 'EGA' NBOU);
 654 :        PM = MOT 'GLOBAL';
 655 :        NUNOE = 'CHAI' ' ' PM ' ';
 656 :     'SINON';
 657 :        PM = INT.&BCNOEU;
 658 :       'SI' IPARTI;
 659 :         'SI' ('EGA' ('TYPE' (SUPTAB.'AVANCE')) 'MAILLAGE');
 660 :            PM = 'POIN' PMA &BCNOEU;
 661 :         'SINON';
 662 :            PM = SUPTAB.'AVANCE';
 663 :         'FINSI';
 664 :       'FINSI';
 665 :        NUNOE = 'NOEU' PM;
 666 :     'FINSI';
 667 :      TETA = TTETA.PM; 'SI' ISECO; PI = TPI.PM; 'FINSI';
 668 :   'FINSI';
 669 :   'SI' (('EGA' &DIME 2) 'OU' ICOQU);
 670 :      TETA = SUPTAB.'CHTHETA';
 671 :     'SI' ISECO; PI = SUPTAB.'CHPI'; 'FINSI';
 672 :   'FINSI';
 673 : **************************************************
 674 : ***** GRADIANT DU CHAMP THETA ET DU CHAMP PI *****
 675 : **************************************************
 676 :    TETA = TETA + DEP000;
 677 :    TETAGR = 'GRAD' OBJMOD MAT1 TETA ;
 678 :    DIVTETA = (E GR1 TETAGR S)+(E GR5 TETAGR S)+(E GR9 TETAGR S);
 679 :    TETX = 'CHAN' 'CHAM' OBJMOD (E MU1 TETA S) 'STRESSES';
 680 :    TETY = 'CHAN' 'CHAM' OBJMOD (E MU2 TETA S) 'STRESSES';
 681 :   'SI' (&DIME 'EGA' 3) ;
 682 :      TETZ = 'CHAN' 'CHAM' OBJMOD (E MU3 TETA S) 'STRESSES';
 683 :   'FINSI';
 684 :   'SI' ISECO;
 685 :      PI = PI + DEP000;
 686 :      PI = PI / ('MAXI' NORM1);
 687 :      PIGR = 'GRAD' OBJMOD MAT1 PI ;
 688 :      DIVPI = (E GR1 PIGR S)+(E GR5 PIGR S)+(E GR9 PIGR S);
 689 :      PITAGR = (OBJMOD PIGR * TETAGR) ;
 690 :      DIVPITA = (E GR1 PITAGR S)+(E GR5 PITAGR S)+(E GR9 PITAGR S);
 691 :      ADJ = (DIVPITA - (DIVPI * DIVTETA)) ;
 692 :      PIX = 'CHAN' 'CHAM' OBJMOD (E MU1 PI S) 'STRESSES';
 693 :      PIY = 'CHAN' 'CHAM' OBJMOD (E MU2 PI S) 'STRESSES';
 694 :     'SI' (&DIME 'EGA' 3) ;
 695 :        PIZ = 'CHAN' 'CHAM' OBJMOD (E MU3 PI S) 'STRESSES';
 696 :     'FINSI';
 697 :   'FINSI';
 698 : *********************************************************
 699 : ***************** TEMU = (Grad T)*THETA *****************
 700 : ****************** TEMU1 = (Grad T)*PI ******************
 701 : *********** TEMU2 = (Grad (Grad T))*PI*THETA ************
 702 : *********************************************************
 703 :   'SI' ITHER;
 704 :      TEMU = ((E GR1 TEPEGR S)*OBJMOD TETX) +
 705 :             ((E GR2 TEPEGR S)*OBJMOD TETY) ;
 706 :     'SI' (&DIME 'EGA' 3) ;
 707 :        TEMU = TEMU + ((E GR3 TEPEGR S)*OBJMOD TETZ);
 708 :     'FINSI' ;
 709 :      TEMU = 'CHAN' 'TYPE' ('EXCO' 'SCAL' TEMU 'T') 'TEMPERATURES';
 710 :      EPSTU = 'ELAS' OBJMOD ('THETA' OBJMOD MAT1 TEMU) MAT1;
 711 :     'SI' ISECO;
 712 :        TEMU1 = ((E GR1 TEPEGR S)*OBJMOD PIX) +
 713 :                ((E GR2 TEPEGR S)*OBJMOD PIY);
 714 :        TXXPIX = (E GR1 DEPDTGR S)*OBJMOD PIX;
 715 :        TYXPIY = (E GR2 DEPDTGR S)*OBJMOD PIY;
 716 :        TXYPIX = (E GR4 DEPDTGR S)*OBJMOD PIX;
 717 :        TYYPIY = (E GR5 DEPDTGR S)*OBJMOD PIY;
 718 :        TEMU2 = (TETX*OBJMOD (TXXPIX + TYXPIY)) +
 719 :                (TETY*OBJMOD (TXYPIX + TYYPIY));
 720 :       'SI' (&DIME 'EGA' 3) ;
 721 :          TEMU1 = TEMU1 + ((E GR3 TEPEGR S)*OBJMOD PIZ);
 722 :          TZXPIZ = (E GR3 DEPDTGR S)*OBJMOD PIZ;
 723 :          TZYPIZ = (E GR6 DEPDTGR S)*OBJMOD PIZ;
 724 :          TXZPIX = (E GR7 DEPDTGR S)*OBJMOD PIX;
 725 :          TYZPIY = (E GR8 DEPDTGR S)*OBJMOD PIY;
 726 :          TZZPIY = (E GR9 DEPDTGR S)*OBJMOD PIZ;
 727 :          TEMU2 = (TETX*OBJMOD (TXXPIX + TYXPIY + TZXPIZ)) +
 728 :                  (TETY*OBJMOD (TXYPIX + TYYPIY + TZYPIZ)) +
 729 :                  (TETZ*OBJMOD (TXZPIX + TYZPIY + TZZPIZ));
 730 :       'FINSI';
 731 :        TEMU1 = 'CHAN' 'TYPE' ('EXCO' 'SCAL' TEMU1 'T') 'TEMPERATURES';
 732 :        EPSTU1 = 'ELAS' OBJMOD ('THETA' OBJMOD MAT1 TEMU1) MAT1;
 733 :        TEMU2 = 'CHAN' 'TYPE' ('EXCO' 'SCAL' TEMU2 'T') 'TEMPERATURES';
 734 :        EPSTU2 = 'ELAS' OBJMOD ('THETA' OBJMOD MAT1 TEMU2) MAT1;
 735 :     'FINSI' ;
 736 :   'FINSI';
 737 : ********************************************************************
 738 : ****** On calcul la variation de contrainte et de déplacement ******
 739 : ********************************************************************
 740 :   'SI' ISECO;
 741 :      GRAD11 = (OBJMOD GRADEP * PIGR) ;
 742 :      EPXX1 = E GR1 GRAD11 S;
 743 :      EPYY1 = E GR5 GRAD11 S;
 744 :      EPZZ1 = E GR9 GRAD11 S;
 745 :      GAXY1 = (E GR2 GRAD11 S) + (E GR4 GRAD11 S) ;
 746 :      GAXZ1 = (E GR3 GRAD11 S) + (E GR7 GRAD11 S) ;
 747 :      GAYZ1 = (E GR6 GRAD11 S) + (E GR8 GRAD11 S) ;
 748 :     'SI' (&DIME 'EGA' 3) ;
 749 :        EPSIA1 = 'MANU' 'CHML' OBJMOD EP1 EPXX1 EP2
 750 :                  EPYY1 EP3 EPZZ1 EP4 GAXY1 EP5 GAXZ1 EP6
 751 :                  GAYZ1 'TYPE' 'DEFORMATIONS' 'STRESSES';
 752 :     'SINON';
 753 :        EPSIA1 = 'MANU' 'CHML' OBJMOD EP1 EPXX1 EP2
 754 :                  EPYY1 EP3 EPZZ1 EP4 GAXY1
 755 :                 'TYPE' 'DEFORMATIONS' 'STRESSES';
 756 :     'FINSI';
 757 :     'SI' ITHER; EPSIA1 = EPSIA1 + EPSTU1; 'FINSI';
 758 :      F11 = ('BSIG' OBJMOD ((('HOOK' OBJMOD MATERI)*OBJMOD EPSIA1)
 759 :          - (OBJMOD SIGF*DIVPI)) + ('FOFI' OBJMOD SIGF PIGR));
 760 :      A_DEPI = 'REDU' ('RESO' (F11 + FOR000) RITOTA) MAPART ;
 761 :      A_SIGF = OBJMOD ('HOOK' OBJMOD MAT1) *
 762 :               (('EPSI' OBJMOD A_DEPI) - EPSIA1);
 763 :   'SINON';
 764 :      A_DEPI = 'REDU' (SUPTAB.'DEPL_AUXI') MAPART;
 765 :      A_SIGF = 'REDU' (SUPTAB.'CONT_AUXI') OBJMOD;
 766 :   'FINSI';
 767 :    A_DEPGR = 'GRAD' OBJMOD A_DEPI ;
 768 : ******************************************************
 769 : ***** S10 = -SIGF*(Grad U)*(Grad PI)*(Grad TETA) *****
 770 : ***** S20 = -SIGF*(Grad U)*(Grad TETA)*(Grad PI) *****
 771 : ***** S30 = SIGF*(Grad U)*(Grad TETA)*(Div PI) *******
 772 : ***** S40 = SIGF*(Grad U)*(Grad PI)*(Div TETA) *******
 773 : ***** S50 = ENEGIE*(ADJ TETA*PI) *********************
 774 : ***** S60 = ALPH*SIGF*(Grad (Grad T))*PI*TETA ********
 775 : ***** S70 = ALPH*SIGF*((Grad T)*PI)*(Div TETA) *******
 776 : ***** S80 = ALPH*SIGF*((Grad T)*TETA)*(Div PI) *******
 777 : ***** S120= ALPH*SIG1*((Grad T)*TETA) ****************
 778 : ***** S90 = SIG1*(Grad U)*(Grad TETA) ****************
 779 : ***** S100= SIGF*(Grad U1)*(Grad TETA) ***************
 780 : ***** S110= -SIGF*(Grad U1)*(Div TETA) ***************
 781 : ***** S130= PRESSION*(grad A_DEPI)*THETA *************
 782 : ***** S140= PRESSION_AUXI*(grad U)*THETA *************
 783 : ******************************************************
 784 :   'SI' ISECO;
 785 :      S10 = 0. - ('INTG' OBJMOD ('WORK' OBJMOD SIGF
 786 :                 (OBJMOD GRADEP * (OBJMOD PIGR * TETAGR))));
 787 :      S20 = 0. - ('INTG' OBJMOD ('WORK' OBJMOD SIGF
 788 :                 (OBJMOD GRADEP * (OBJMOD TETAGR * PIGR))));
 789 :      S30 = 'INTG' OBJMOD (OBJMOD ('WORK' OBJMOD
 790 :             SIGF (OBJMOD GRADEP * TETAGR)) * DIVPI);
 791 :      S40 = 'INTG' OBJMOD (OBJMOD ('WORK' OBJMOD
 792 :             SIGF (OBJMOD GRADEP * PIGR)) * DIVTETA);
 793 :      S50 = 'INTG' OBJMOD (ENERM * ADJ);
 794 :     'SI' ITHER ;
 795 :        S60 = 'INTG' OBJMOD ('ENER' OBJMOD SIGF EPSTU2);
 796 :        S70 = 'INTG' OBJMOD (('ENER' OBJMOD SIGF EPSTU1)*DIVTETA);
 797 :        S80 = 'INTG' OBJMOD (('ENER' OBJMOD SIGF EPSTU)*DIVPI);
 798 :     'FINSI';
 799 :   'FINSI';
 800 :   'SI' ITHER ;
 801 :      S120 = 'INTG' OBJMOD ('ENER' OBJMOD A_SIGF EPSTU);
 802 :   'FINSI';
 803 :   'SI' IPRE_A ;
 804 :      PREI_A = PRES_A 'REDU' MAPART ;
 805 :      GRADCH = 'CHANGER' 'CHPO' OBJMOD GRADEP;
 806 :      DEPLX = ((E GR1 GRADCH S)*(E MU1 TETA S)) +
 807 :              ((E GR2 GRADCH S)*(E MU2 TETA S)) ;
 808 :      DEPLY = ((E GR4 GRADCH S)*(E MU1 TETA S)) +
 809 :              ((E GR5 GRADCH S)*(E MU2 TETA S)) ;
 810 :      DEP0 = DEP000 + ('NOMC' DEPLX MU1) + ('NOMC' DEPLY MU2);
 811 :     'SI' (&DIME 'EGA' 3) ;
 812 :        DEPLX = DEPLX + ((E GR3 GRADCH S)*(E MU3 TETA S));
 813 :        DEPLY = DEPLY + ((E GR6 GRADCH S)*(E MU3 TETA S));
 814 :        DEPLZ = ((E GR7 GRADCH S)*(E MU1 TETA S)) +
 815 :                ((E GR8 GRADCH S)*(E MU2 TETA S)) +
 816 :                ((E GR9 GRADCH S)*(E MU3 TETA S)) ;
 817 :        DEP0 = ('NOMC' DEPLX MU1) + ('NOMC' DEPLY MU2) +
 818 :               ('NOMC' DEPLZ MU3);
 819 :     'FINSI';
 820 :      S140 = (0 - ('XTY' PREI_A DEP0 MOTF MOTU)) ;
 821 :   'FINSI' ;
 822 :   'SI' IPRES ;
 823 :      PREINT = PRESSI 'REDU' MAPART ;
 824 :      GRADCH = 'CHANGER' 'CHPO' OBJMOD A_DEPGR ;
 825 :      DEPLX = ((E GR1 GRADCH S)*(E MU1 TETA S)) +
 826 :              ((E GR2 GRADCH S)*(E MU2 TETA S)) ;
 827 :      DEPLY = ((E GR4 GRADCH S)*(E MU1 TETA S)) +
 828 :              ((E GR5 GRADCH S)*(E MU2 TETA S)) ;
 829 :      DEP0 = DEP000 + ('NOMC' DEPLX MU1) + ('NOMC' DEPLY MU2);
 830 :     'SI' (&DIME 'EGA' 3) ;
 831 :        DEPLX = DEPLX + ((E GR3 GRADCH S)*(E MU3 TETA S));
 832 :        DEPLY = DEPLY + ((E GR6 GRADCH S)*(E MU3 TETA S));
 833 :        DEPLZ = ((E GR7 GRADCH S)*(E MU1 TETA S)) +
 834 :                ((E GR8 GRADCH S)*(E MU2 TETA S)) +
 835 :                ((E GR9 GRADCH S)*(E MU3 TETA S)) ;
 836 :        DEP0 = ('NOMC' DEPLX MU1) + ('NOMC' DEPLY MU2) +
 837 :               ('NOMC' DEPLZ MU3);
 838 :     'FINSI';
 839 :      S130 = (0 - ('XTY' PREINT DEP0 MOTF MOTU)) ;
 840 :   'FINSI';
 841 :    S90 = 'INTG' OBJMOD ('WORK' OBJMOD
 842 :           A_SIGF (OBJMOD GRADEP * TETAGR));
 843 :    S100 = 'INTG' OBJMOD ('WORK' OBJMOD
 844 :           SIGF (OBJMOD A_DEPGR * TETAGR));
 845 :    S110 = 0. - ('INTG' OBJMOD (OBJMOD ('WORK'
 846 :                  OBJMOD SIGF A_DEPGR) * DIVTETA)) ;
 847 : **************************************************
 848 : ******** RASSEMBLAGE DE DIFFERENTS TERMES ********
 849 : **************************************************
 850 :    TMCANI = S10 + S20 + S30 + S40 + S50 + S90 + S100 + S110;
 851 :    TTERMI = S60 + S70 + S80 + S120 ;
 852 :    TPRESS = S130 + S140;
 853 :    TTOTA = TMCANI + TTERMI + TPRESS ;
 854 : ***************************************************
 855 : **** STOCKAGE DES RESULTATS DANS SUPTAB.'DGDA' ****
 856 : ***************************************************
 857 :    C1 = C TMCANI ' '; C2 = C TTERMI ' ';
 858 :    C3 = C TPRESS '  '; C4 = C TTOTA;
 859 :   'SI' IPAP;
 860 :     'SI' (('EGA' &DIME 2) 'OU' ICOQU);
 861 :        SUPTAB.'DGDA'.INST = TTOTA;
 862 :       'MESS' (C INST ' ') C1 C2 C3 C4;
 863 :     'FINSI';
 864 :     'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU));
 865 :        SUPTAB.'DGDA'.INST.PM = TTOTA;
 866 :       'MESS' NUNOE (C INST ' ') C1 C2 C3 C4;
 867 :     'FINSI';
 868 :   'SINON';
 869 :     'SI' (('EGA' &DIME 2) 'OU' ICOQU);
 870 :       'MESS' C1 C2 C3 C4;
 871 :        SUPTAB.'DGDA' = TTOTA;
 872 :     'FINSI';
 873 :     'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU));
 874 :       'MESS' NUNOE C1 C2 C3 C4;
 875 :        SUPTAB.'DGDA'.PM = TTOTA;
 876 :     'FINSI';
 877 :   'FINSI';
 878 :   'MENA';
 879 : 'FIN' BCNOEU;
 880 : 'MENA';
 881 : 'SI' (IPAP 'ET' (NBOU '>' 1));
 882 :   'SAUT' 1 'LIGNE';
 883 : 'FINSI';
 884 : 'SI' (IPAP 'ET' (NBOU 'EGA' 1));
 885 :   'SI' (('ABS' ((&BOUCEXT/10) - (&BOUCEXT/10.))) '<' 1.D-10);
 886 :     'SAUT' 1 'LIGNE';
 887 :   'FINSI';
 888 : 'FINSI';
 889 : 'FIN' BOUCEXT ;
 890 : ****************************************************
 891 : ********* FIN BOUCLE SUR LE PAS DE CALCUL  *********
 892 : ****************************************************
 893 : ****************************************************
 894 : ** STOCKAGE DES RESULTATS DANS SUPTAB.'EVOLDGDA' ***
 895 : ****************************************************
 896 : 'SI' IPAP;
 897 :    SUPTAB.'EVOLDGDA' = TABLE;
 898 :    IND1 = 'INDE' (SUPTAB.'DGDA');
 899 :   'SI' (('EGA' &DIME 2) 'OU' ICOQU);
 900 :     'TITRE' CHA1;
 901 :      PT = PROG; PG = PROG;
 902 :     'REPETER' BB1 ('DIME' IND1);
 903 :        T1 = IND1.&BB1;
 904 :        PT = PT 'ET' (PROG T1);
 905 :        PG = PG 'ET' (PROG SUPTAB.'DGDA'.T1);
 906 :     'FIN' BB1;
 907 :      SUPTAB.'EVOLDGDA'='EVOL' 'MANU' 'TEMPS' PT MOTTI PG;
 908 :   'FINSI';
 909 :   'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU));
 910 :      IND2 = 'INDE' (SUPTAB.'DGDA'.(IND1.1));
 911 :     'REPETER' BB1 ('DIME' IND2);
 912 :        PM = IND2.&BB1; PT = PROG; PG = PROG;
 913 :        CHA2 = 'CHAI' ' (Pt ' NUNOE ')';
 914 :       'TITR' ('CHAI' CHA1 CHA2);
 915 :       'REPETER' BB2 ('DIME' IND1);
 916 :          T1 = IND1.&BB2;
 917 :          PT = PT 'ET' (PROG T1);
 918 :          PG = PG 'ET' (PROG SUPTAB.'DGDA'.T1.PM);
 919 :       'FIN' BB2;
 920 :        SUPTAB.'EVOLDGDA'.PM='EVOL' 'MANU' 'TEMPS' PT MOTTI PG;
 921 :     'FIN' BB1;
 922 :   'FINSI';
 923 : 'FINSI';
 924 : 'FINPROC' SUPTAB ;
 925 : 
 926 :  

© Cast3M 2003 - All rights reserved.
Disclaimer