1 : * G_THETA1 PROCEDUR JC220346 12/09/12 21:15:07 7501 2 : * G_THETA1 PROCEDUR VALETA 96/05/09 21:15:10 2138 3 : 'DEBPROC' G_THETA1 TABMOD*'TABLE' MATERI*'MCHAML' SUPTAB*'TABLE'; 4 : *|=====================================================================| 5 : *| | 6 : *| OBJET : | 7 : *| ======= | 8 : *| | 9 : *| 1) calculer le taux de restitution d'energie G en | 10 : *| elasticite, en elasto-plasticite,en elasto-dynamique ou | 11 : *| l'integrale C* en visco-plasticite en 2D, 3D (massif ou | 12 : *| visco-plasticite en 2D, 3D (massif ou coque mince), ou en | 13 : *| coque mince axisymetrique. Les materiaux utilises peuvent etre | 14 : *| homogenes, non-homogenes, ou composites sous des chargements | 15 : *| de type mecaniques, thermiques, forces volumiques, ou pressions | 16 : *| sur le fond de la fissure. | 17 : *| 2) decouper les modes mixtes (separation de K1, K2 et K3) en | 18 : *| elasticite pour les problems en 2D, 3D (massif uniquement), | 19 : *| ou en axisymetrique. Pour separer les modes, la version | 20 : *| actuelle de la procedure ne fonctione qu'en cas de materiaux | 21 : *| homogenes et isotrope. | 22 : *| | 23 : *| ENTREE : | 24 : *| ======== | 25 : *| | 26 : *| Arguments obligatoires : | 27 : *| ------------------------- | 28 : *| | 29 : *| TABMOD 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 G ou C*. 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 | 34 : *| des modeles dans cette petite zone ou si l'on utilise la | 35 : *| procedure pour decoupler les modes, TABMOD ici doit contenir| 36 : *| les objets MODELS globales du problems utilises dans la | 37 : *| resolution par elements finis. Dans ce cas le support | 38 : *| maillage de l'ensemble de modeles est la structure totale | 39 : *| etudiee. | 40 : *| MATERI Objet MCHAML de sous-type CARACTERISTIQUES donnant les | 41 : *| propriétés matérielles (module Young, coefficient de | 42 : *| Poisson...) + les proprietes geometriques dans le cas | 43 : *| des elements en coque mince (epaisseur, excentrement...). | 44 : *| Les composantes de MATERI peuvent etre des objets de type | 45 : *| FLOTTANT, MCHAML, EVOLUTIO, NUAGE selon le probleme traité. | 46 : *| Il convient de donner ici le materiau total du probleme | 47 : *| englobant toute la structure. | 48 : *| SUPTAB objet de type table. | 49 : *| En entree, SUPTAB sert a definir les options et les | 50 : *| parametres du calcul. Ses indices sont des objets de type | 51 : *| MOTS (a ecrire en toutes lettres) dont voici la liste: | 52 : *| | 53 : *| SUPTAB.CHTHETA = CHPOINT (TABLE en 3D) de deplacement cree | 54 : *| par la procedure CH_THETA. | 55 : *| SUPTAB.DEPLACEMENT = TABLE si le calcul est effectue pas a pas, | 56 : *| CHPOINT si en un seul pas (probleme lineaire). | 57 : *| Dans le premier cas SUPTAB.DEPLACEMENT | 58 : *| contient touts les deplacements en indice | 59 : *| de la definition des valeurs du parametre | 60 : *| d'evolution (ex : table RESUDEPL de NONLIN). | 61 : *| SUPTAB.CONTRAINTE = TABLE si le calcul est effectue pas a pas, | 62 : *| MCHAML si en un seul pas (probleme lineaire). | 63 : *| Dans le premier cas SUPTAB.CONTRAINTE contient | 64 : *| toutes les contraintes en meme indice du | 65 : *| parametre d'evolution que la table | 66 : *| SUPTAB.DEPLACEMENT (ex : table RESUCONT de | 67 : *| NONLIN). | 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 : *| SUPTAB.CHARGEMENT = CHARGEMENT.Pour les calculs non-lineaires | 83 : *| effectues pas a pas ,on doit rappeler ici le | 84 : *| chargement utilise.(exige si on a utilise | 85 : *| la procedure PASAPAS) | 86 : *| SUPTAB.TEMPS = TABLE. Pour les calculs non-lineaires effectues | 87 : *| pas a pas avec la procedure PASAPAS, cette table| 88 : *| contient la variable 'temps' en meme indice | 89 : *| entier d'evolution que les tables | 90 : *| SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE | 91 : *| SUPTAB.GRANDS_DEPLACEMENTS = VRAI pour un calcul en grands | 92 : *| deplacements. Dans ce cas le CH_THETA | 93 : *| est recalcule automatiquement | 94 : *| dans la procedure G_THETA a chaque pas | 95 : *| sur la geometrie deformee . La donnee | 96 : *| de la table utilisee pour le calcul | 97 : *| initial de CH_THETA (sur geometrie non | 98 : *| deformee) est donc obligatoire : | 99 : *| - SUPTAB.'TABLE_CH_THETA' = table utilisee pour le| 100 : *| calcul initial de | 101 : *| CH_THETA . | 102 : *| 2 : En thermo-mecanique | 103 : *| | 104 : *| SUPTAB.TEMPERATURE = TABLE pour les calculs effectues pas a pas, | 105 : *| CHPOINT si en un seul pas (probleme lineaire). | 106 : *| Dans le premier cas SUPTAB.TEMPERATURE | 107 : *| contient toutes les temperatures absolutes | 108 : *| en indice d'evolution du parametre de temps, | 109 : *| qui doit etre plus large ou egale a celle des | 110 : *| tables SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE | 111 : *| (ex : table CHPOTHETA utilisee dans NONLIN). | 112 : *| (inutile si on a utilise PASAPAS) | 113 : *| SUPTAB.TREFERENCE = CHPOINT de temperature de reference (ex : | 114 : *| chpoint TREFERENCE utilisee dans NONLIN). | 115 : *| (inutile si on a utilise PASAPAS) | 116 : *| SUPTAB.TALPHAREFE = FLOTTANT, requis dans le cas de coefficient de | 117 : *| dilatation thermique alpha dépendant de la | 118 : *| température. Il est la valeur de la température| 119 : *| de référence qui sert à definir l'alpha dans | 120 : *| l'expression de la deformation thermique : | 121 : *| EPSTH = ALPHA(T)*(T - TALPHAREFE) - | 122 : *| ALPHA(TREFERENCE)*(TREFERENCE - TALPHAREFE) | 123 : *| | 124 : *| 3 : En presence de pression ou/et force volumique | 125 : *| agissant dans un voisinage du fond de la fissure | 126 : *| | 127 : *| SUPTAB.PRESSION = Objet de type CHPOINT ou CHARGEMENT, requis dans | 128 : *| dans le cas ou il existe une force volumique | 129 : *| ou/et une pression s'exercant dans un voisinage | 130 : *| du fond de la fissure. Si cette force varie avec | 131 : *| le temps on donne un objet de type CHARGEMENT. | 132 : *| SI cette force reste constante, on donne un | 133 : *| un objet de type CHPOINT | 134 : *| (le logique VRAI suffit si on a utilise PASAPAS) | 135 : *| | 136 : *| 4 : En cas de reprise de calcul | 137 : *| | 138 : *| SUPTAB.REPRIS = VRAI | 139 : *| En plasticite ou fluage, cette option permet de reprendre | 140 : *| le calcul de G a partir d'un pas de calcul donne | 141 : *| | 142 : *| 5 : En cas de materiaux composites | 143 : *| | 144 : *| SUPTAB.PARALLELE = VRAI si la fissure est parallele a toutes les | 145 : *| interfaces des matériaux differents, FAUX sinon. | 146 : *| Dans le premier cas on precise encore : | 147 : *| SUPTAB.INTERFACE = TABLE stockant tous les interfaces (de type | 148 : *| MAILLAGE) des materiaux differents. L'indice | 149 : *| de cette table est 1, 2, 3,..., N (N : nombre | 150 : *| d'interfaces des materiaux. En cas des | 151 : *| materiaux composites, il convient de | 152 : *| constuire les table TABMOD et INTERFACE | 153 : *| comme montre ci-dessous | 154 : *| | 155 : *| --------------|------------|-------------|------------| | 156 : *| | | | | | | 157 : *| | TABMOD.1 | TABMOD.2 | TABMOD.3 ...| TABMOD.n | | 158 : *| | | | | | | 159 : *| --------------|------------|-------------|------------| | 160 : *| INTERFACE.1 INTERFACE.2 ... INTERFACE.N | 161 : *| | 162 : *| 6 : Dans le cas de calcul de l'integrale C* en visco-plasticite | 163 : *| | 164 : *| SUPTAB.'LOI' = MOT pour preciser la loi de fluage utilisee | 165 : *| dans le calcul. On rapelle que les lois | 166 : *| acctuellement utilisables sont | 167 : *| NORTON, BLACKBURN, RCCMR_316, RCCMR_304, | 168 : *| LEMAITRE ET POLYNOMIAL. | 169 : *| SUPTAB.'DEFINELA' = TABLE. Pour les calculs en viscoplastique, | 170 : *| elle donne les déformations inélastiques | 171 : *| en meme indice d'evolution que les tables | 172 : *| SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE | 173 : *| (ex : table RESUDEFI de NONLIN). | 174 : *| SUPTAB.'DEFI_INI' = MCHAML pour donner la déformation inélastique | 175 : *| au debut de la periode de fluage. Si elle est | 176 : *| nulle, on la crée avec l'opérateur 'ZERO'. | 177 : *| SUPTAB.'DEPL_INI' = CHPOINT pour donner le champ de deplacements | 178 : *| au debut de la periode de fluage (ex : | 179 : *| solution deplacement elastique). | 180 : *| SUPTAB.'CONT_INI' = MCHAML pour donner le champ de contraintes | 181 : *| au debut de la periode de fluage (ex : | 182 : *| solution contrainte elastique). | 183 : *| SUPTAB.'TEMP_INI' = CHPOINT pour donner le champ de temperature | 184 : *| ABSOLUTE au debut de la periode de fluage. | 185 : *| SUPTAB.'TEMP0' = FLOTTANT (facultatif) pour donner le temps a | 186 : *| partir duquel commence la periode de fluage. | 187 : *| Par defaut c'est le temps zero qui correspond | 188 : *| le debut de la fluage. Il est a noter que | 189 : *| l'integrale C* n'est independant du contour | 190 : *| d'integration que lorsque le fluage est | 191 : *| stationaire, c'est-a-dire quand le champ de | 192 : *| contraintes est redistribue et ne varie plus. | 193 : *| | 194 : *| 7 : Pour un front de fissure tridimensionnel | 195 : *| | 196 : *| SUPTAB.'AVANCE' = MAILLAGE pour donner les points du front pour | 197 : *| lesquels le calcul sera effectue. Si cet | 198 : *| argument est absent, le calcul sera fait pour | 199 : *| tous les noeuds sur le front de la fissure. | 200 : *| | 201 : *| 8 : En cas de decouplage des modes mixtes | 202 : *| | 203 : *| SUPTAB.'MODMIXTE' = Objet LOGIQUE egale VRAI si on veut separer | 204 : *| les modes. Dans ce cas il faut preciser | 205 : *| SUPTAB.'LEVRESUP' = MAILLAGE représentant la lèvre supérieur de | 206 : *| la fissure. | 207 : *| SUPTAB.'LEVREINF' = MAILLAGE représentant la lèvre inférieur de | 208 : *| la fissure | 209 : *| SUPTAB.'FONDFISS' = POINT ou MAILLAGE représentant la pointe de | 210 : *| la fissure | 211 : *| | 212 : *| 9 : En elasto-dynamique | 213 : *| | 214 : *| SUPTAB.'VITESSE = TABLE en elasto-dynamique, | 215 : *| contient les VITESSES | 216 : *| | 217 : *| SUPTAB.'TDYN' = TABLE en elasto-dynamique, contient tous | 218 : *| les INSTANTS de sortie. | 219 : *| | 220 : *| | 221 : *| SORTIE : | 222 : *| ======== | 223 : *| | 224 : *| Dans tous les cas de calcul | 225 : *| --------------------------- | 226 : *| | 227 : *| SUPTAB.G = 1) Pour le taux de restitution d'énergie G ou | 228 : *| l'intégrale C* habituelle, SUPTAB.G est, en 2D, une | 229 : *| table si le calcul est effectue pas a pas, flottant | 230 : *| si en un seul pas. Dans le premier cas, G est en meme | 231 : *| indice d'evolution du parametre de temps que celle | 232 : *| des tables SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE | 233 : *| (ou SUPTAB.VARINTERNE en elasto ou visco-plasticite). | 234 : *| En 3D, si le calcul est realise pas a pas SUPTAB.G | 235 : *| est indicee par deux parametres dont le premier est | 236 : *| le facteur d'evolution de temps et le deuxieme les | 237 : *| points sur le front de la fissure. Pour un calcul | 238 : *| realise en un seul pas SUPTAB.G a une seule indice | 239 : *| representant les points sur le front de la fissure. | 240 : *| Exemple : la valeur de G ou C* est | 241 : *| en 2D pour un calcul realise pas a pas a l'instant | 242 : *| T1, (SUPTAB.'G'.T1) | 243 : *| en 2D pour un calcul en un seul pas, (SUPTAB.'G') | 244 : *| en 3D au point P1 pour un calcul realise pas a pas a | 245 : *| l'instant T1, (SUPTAB.'G'.T1.P1) | 246 : *| en 3D au point P1 pour un calcul realise en un seul | 247 : *| pas, (SUPTAB.'G'.P1) | 248 : *| 2) En cas de decouplage des modes mixtes (separation | 249 : *| des facteurs K1, K2 et K3), SUPTAB.G est, en 2D, une | 250 : *| table indicee par les mots 'I' et 'II' representant | 251 : *| deux flottants associes a K1 et K2, respectivement. | 252 : *| Si le calcul est realise pas a pas, SUPTAB.G.'I' et | 253 : *| SUPTAB.G.'II' sont deux tables, en meme indice | 254 : *| d'evolution du parametre de temps que celle des | 255 : *| tables SUPTAB.DEPLACEMENT ou SUPTAB.CONTRAINTE (ou | 256 : *| SUPTAB.VARINTERNE). En 3D, si le calcul est realise | 257 : *| pas a pas, SUPTAB.G est indicee par trois parametres | 258 : *| dont le premier est le mot 'I', 'II' ou 'III' | 259 : *| representant des valeurs associées a K1, K2 ou K3, | 260 : *| la deuxieme indice est le facteur d'evolution de temps| 261 : *| representant les instants auxquels on a realise le | 262 : *| calcul et la troisieme le point representant les | 263 : *| noeuds sur le front de la fissure. Pour les calcul | 264 : *| realise en un seul pas, SUPTAB.G est indicee par | 265 : *| deux parametres dont le premier est le mot 'I', 'II' | 266 : *| ou 'III' et le deuxieme les noeuds sur le front de la | 267 : *| fissure. | 268 : *| Exemple : le facteur d'intensite de contrainte en | 269 : *| mode MI (MI est un objet de type mot valant 'I', 'II' | 270 : *| ou 'III') est Ki = (Gi/C_MATE)**0.5 avec i = 1, 2, 3, | 271 : *| C_MATE une constante dependant du module d'Young et | 272 : *| du coefficient de Poisson et Gi un flottant egale a : | 273 : *| en 2D pour un calcul realise pas a pas a l'instant | 274 : *| T1, (SUPTAB.'G'.MI.T1) | 275 : *| en 2D pour un calcul en un seul pas, (SUPTAB.MI.'G') | 276 : *| en 3D au point P1 pour un calcul realise pas a pas a | 277 : *| l'instant T1, (SUPTAB.'G'.MI.T1.P1) | 278 : *| en 3D au point P1 pour un calcul realise en un seul | 279 : *| pas, (SUPTAB.'G'.MI.P1) | 280 : *| REMARQUE : La constante materielle C_MATE est sauvee | 281 : *| dans l'objet FLOTTANT SUPTAB.C_MATE. Pour | 282 : *| fissure dans l'interface de bimetallique, | 283 : *| elle est une fonction des modules d'Young | 284 : *| et coefficients de Poisson des materiaux. | 285 : *| Les signes pour les FIC K1 et K2 sont | 286 : *| stockees dans les objets SUPTAB.'SIGNE_K1' | 287 : *| et SUPTAB.'SIGNE_K2', egale à 1 s'ils sont | 288 : *| positifs, -1 s'ils sont negatifs. | 289 : *| | 290 : *| En cas de calcul effectue pas a pas | 291 : *| ----------------------------------- | 292 : *| | 293 : *| SUPTAB.EVOLG = 1) En cas de calcul du taux de restitution d'énergie | 294 : *| G ou de l'intégrale C* habituelle d'un probleme | 295 : *| plan, SUPTAB.EVOLG est un objet de type EVOLUTION | 296 : *| donnant la valeur de G ou C* en fonction du temps | 297 : *| en elasto ou visco-plasticite. Pour un front de | 298 : *| fissure tridimensionnel EVOLG est une table | 299 : *| indicee par les points donnant les evolutions de | 300 : *| G ou C* pour chaque point en fonction du temps. | 301 : *| Exemple : En 2D, on peut tracer l'evolution de | 302 : *| G ou C* par : DESS (SUPTAB.'EVOLG'); | 303 : *| En 3D, on peut tracer l'evolution de G ou C* | 304 : *| au point P1 en fonction du temps par : | 305 : *| DESS (SUPTAB.'EVOLG'.P1); | 306 : *| 2) En cas de decouplage des modes mixtes (separation | 307 : *| des facteurs K1, K2 et K3), SUPTAB.EVOLG est, en | 308 : *| 2D, une table indicee par les mots 'I' et 'II' | 309 : *| representant deux evolutions de la valeur de | 310 : *| Gi (i = 1, 2) en fonction du temps. En 3D | 311 : *| SUPTAB.EVOLG est indicee par deux parametres | 312 : *| dont le premier est le mot 'I', 'II' ou 'III' | 313 : *| representant des valeurs Gi associées a K1, K2 ou | 314 : *| K3, la deuxieme indice est le point representant | 315 : *| les noeuds sur le front de la fissure. | 316 : *| Exemple : En 2D, on peut tracer l'evolution de | 317 : *| mode MI (MI est un objet de type mot valant 'I', | 318 : *| 'II') par : DESS (SUPTAB.'EVOLG'.MI); | 319 : *| En 3D, on peut tracer l'evolution de mode MI | 320 : *| (MI est un objet de type mot valant 'I', 'II', | 321 : *| ou 'III') au point P1 en fonction du temps par : | 322 : *| DESS (SUPTAB.'EVOLG'.MI.P1); | 323 : *| | 324 : *| | 325 : *| SUPTAB.'CRITERE_DECHARGE' = En cas de calcul élasto-plastique | 326 : *| isotrope ou cinématique, éventuellement thermique, on | 327 : *| calcul un critère de décharge des contraintes défini par | 328 : *| ( si, F = courbe de traction ): crit = F(EPSeq)/ SIGeq. | 329 : *| crit = 1. si non-décharge et crit > 1. si décharge. | 330 : *| SUPTAB.'CRITERE_DECHARGE' est une table indicée par les | 331 : *| temps de calcul. | 332 : *| | 333 : *| En cas de calcul elasto-dynamique : | 334 : *| ----------------------------------- | 335 : *| | 336 : *| SUPTAB.'G' = Table contenant les valeurs de G indicée par les | 337 : *| instants de calculs. | 338 : *|=====================================================================| 339 : * 340 : 'SAUT' 1 'LIGNE'; &DIME ='VALE' 'DIME'; &MODE ='VALE' 'MODE'; 341 : &ELEM = 'VALEUR' 'ELEM'; MOTAX = 'MOT' AXIS ; VALPI = 3.14159261626; 342 : **** 343 : * stockage de la configuration initiale 344 : CONFIG0 = FORM; 345 : * 346 : 'SI' ('EXISTE' SUPTAB 'REPRIS'); 347 : IREPRI = SUPTAB.'REPRIS'; 348 : 'SINON'; 349 : IREPRI = FAUX; 350 : 'FINSI'; 351 : **** 352 : IPAP = ('EGA' ('TYPE' SUPTAB.'CONTRAINTE') 'TABLE ') 'ET' 353 : ('EGA' ('TYPE' SUPTAB.'DEPLACEMENT') 'TABLE '); 354 : **** 355 : IFLUA = ('EXIS' SUPTAB 'LOI') 'OU' 356 : ('EXIS' SUPTAB 'DEPL_INI') 'OU' 357 : ('EXIS' SUPTAB 'CONT_INI') 'OU' 358 : ('EXIS' SUPTAB 'DEFI_INI') 'OU' 359 : ('EXIS' SUPTAB 'DEFINELA'); 360 : **** 361 : OBJMOD = TABMOD.1; NBOBJ = 'DIME' ('INDE' TABMOD); I = 1; 362 : 'SI' ('>' NBOBJ 1) ; 363 : 'REPETER' NBJ1 (NBOBJ - 1); 364 : I = I + 1; OBJMOD = OBJMOD 'ET' TABMOD.I; 365 : 'FIN' NBJ1; 366 : 'FINSI' ; 367 : MAPART = 'EXTR' OBJMOD 'MAIL'; 368 : **** 369 : NBNO1 = 'NBNO' ('ELEM' (CHAN 'LIGNE' MAPART) 1); 370 : ILIN = 'EGA' NBNO1 2; IQUA = 'EGA' NBNO1 3; 371 : ICOQU = (&DIME 'EGA' 3) 'ET' ILIN 'ET' (('EGA' &ELEM 'SEG2') 372 : 'OU' ('EGA' &ELEM 'TRI3') 'OU' ('EGA' &ELEM 'QUA4')); 373 : **** 374 : 'SI' ((&DIME 'EGA' 3) 'ET' ('>' NBOBJ 1)); 375 : 'MESS' 'ERREUR : ON NE PEUT PAS ENCORE TRAITER LES PROBLEMES'; 376 : 'MESS' 'DE MULTI-MODELES DE MATERIAUX COMPOSITES EN 3D'; 377 : 'QUITTER' G_THETA; 378 : 'FINSI'; 379 : ************************************************** 380 : ********* TEST DE COMPABILITE DES DONNEES ******** 381 : ************************************************** 382 : 'SI' ('<' ('NBNO' ('EXTR' MATERI 'MAIL')) ('NBNO' MAPART)); 383 : 'MESS' 'ERREUR : LE SUPPORT GEOMETRIQUE DE MATERIAU EST'; 384 : 'MESS' 'PLUS PETIT QUE CELUI DE L ENSEMBLE DE MODELES'; 385 : 'QUITTER' G_THETA; 386 : 'FINSI'; 387 : 'SI' ('<' ('NBEL' ('EXTR' MATERI 'MAIL')) ('NBEL' MAPART)); 388 : 'MESS' 'ERREUR : LE SUPPORT GEOMETRIQUE DE MATERIAU EST'; 389 : 'MESS' 'PLUS PETIT QUE CELUI DE L ENSEMBLE DE MODELES'; 390 : 'QUITTER' G_THETA; 391 : 'FINSI'; 392 : **** 393 : 'SI' ('EXIST' SUPTAB 'MODMIXTE'); 394 : IMIXT = SUPTAB.'MODMIXTE'; 395 : 'SINON'; 396 : IMIXT = FAUX; 397 : 'FINSI'; 398 : 'SI' IMIXT; 399 : 'SI' ICOQU; 400 : 'MESS' 'ERREUR : ON NE PEUT PAS ENCORE DECOUPER'; 401 : 'MESS' 'LES MODES POUR LES ELEMENTS DE COQUE MINCE'; 402 : 'QUITTER' G_THETA; 403 : 'FINSI'; 404 : 'SI' ('NON' ('EXIST' SUPTAB 'LEVRESUP')); 405 : 'ERREUR' 'ON VEUT LA LEVRE SUPERIEURE DE LA FISSURE'; 406 : 'QUITTER' G_THETA; 407 : 'FINSI'; 408 : 'SI' ('NON' ('EXIST' SUPTAB 'LEVREINF')); 409 : 'ERREUR' 'ON VEUT LA LEVRE INFERIEURE DE LA FISSURE'; 410 : 'QUITTER' G_THETA; 411 : 'FINSI'; 412 : 'SI' ('NON' ('EXIST' SUPTAB 'FONDFISS')); 413 : 'ERREUR' 'ON VEUT LE FOND DE LA FISSURE'; 414 : 'QUITTER' G_THETA; 415 : 'FINSI'; 416 : NB1 = 'NBNO' MAPART; 417 : NB2 = 'NBNO' (MAPART 'ET' SUPTAB.'LEVRESUP'); 418 : NB3 = 'NBNO' (MAPART 'ET' SUPTAB.'LEVREINF'); 419 : 'SI' (('NEG' NB1 NB2) 'OU' ('NEG' NB1 NB3)); 420 : 'MESS' 'ERREUR : LES LEVRES DE LA FISSURE N EST PAS'; 421 : 'MESS' 'COHERENTES AVEC LE MAILLAGE DES OBJETS MODELES'; 422 : 'QUITTER' G_THETA; 423 : 'FINSI'; 424 : 'FINSI'; 425 : *** 426 : 'SI' ('NON' ('EXISTE' SUPTAB 'CONTRAINTE')); 427 : 'ERREUR' 'IL FAUT DONNER LE CHAMP DE CONTRAINTE'; 428 : 'QUITTER' G_THETA; 429 : 'FINSI'; 430 : 'SI' ('NON' ('EXISTE' SUPTAB 'DEPLACEMENT')); 431 : 'ERREUR' 'IL FAUT DONNER LE CHAMP DE DEPLACEMENT'; 432 : 'QUITTER' G_THETA; 433 : 'FINSI'; 434 : 'SI' (IPAP 'ET' ('NON' IMIXT)); 435 : 'SI' ('NON' ('EXISTE' SUPTAB 'VARINTERNE')); 436 : 'MESS' ' ATTENTION : EN ABSENCE DES VARIABLES INTERNES'; 437 : 'MESS' ' LE PROBLEME EST CONSIDERE COMME LINEAIRE.'; 438 : 'FINSI'; 439 : 'FINSI'; 440 : 'SI' ('NON' ('EXISTE' SUPTAB 'CHTHETA')); 441 : 'ERREUR' 'IL FAUT DONNER LE CHAMP THETA'; 442 : 'QUITTER' G_THETA; 443 : 'FINSI'; 444 : *** 445 : 'SI' ('EXISTE' SUPTAB 'PARALLELE'); 446 : 'SI' (NBOBJ 'EGA' 1); 447 : 'ERRE' 'IL FAUT UNE TABLE STOCKANT TOUS LES OBJETS MODELES'; 448 : 'QUITTER' G_THETA; 449 : 'FINSI'; 450 : IPARAL = SUPTAB.'PARALLELE'; 451 : 'SINON'; 452 : IPARAL = FAUX; 453 : 'FINSI'; 454 : *** 455 : IDANS = FAUX; MODINF = 0; MODSUP = 0; 456 : 'SI' (IPARAL 'ET' IMIXT); 457 : 'REPETER' NBJ1 (NBOBJ - 1); 458 : EL_1 = 'EXTR' TABMOD.&NBJ1 'MAIL'; 459 : EL_2 = 'EXTR' TABMOD.(&NBJ1 + 1) 'MAIL'; 460 : NB1 = 'NBNO' (EL_1 'ET' SUPTAB.'LEVRESUP'); 461 : NB2 = 'NBNO' (EL_2 'ET' SUPTAB.'LEVREINF'); 462 : 'SI' (('EGA' ('NBNO' EL_1) NB1) 'ET' ('EGA' ('NBNO' EL_2) NB2)); 463 : MODSUP = TABMOD.&NBJ1; MODINF = TABMOD.(&NBJ1 + 1); 464 : LCOM1 = ('CONT' EL_1) 'ELEM' 'APPU' 'STRI' ('CONT' EL_2); 465 : IDANS = VRAI; 'QUITTER' NBJ1; 466 : 'FINSI'; 467 : NB1 = 'NBNO' (EL_1 'ET' SUPTAB.'LEVREINF'); 468 : NB2 = 'NBNO' (EL_2 'ET' SUPTAB.'LEVRESUP'); 469 : 'SI' (('EGA' ('NBNO' EL_1) NB1) 'ET' ('EGA' ('NBNO' EL_2) NB2)); 470 : MODINF = TABMOD.&NBJ1; MODSUP = TABMOD.(&NBJ1 + 1); 471 : LCOM1 = ('CONT' EL_1) 'ELEM' 'APPU' 'STRI' ('CONT' EL_2); 472 : IDANS = VRAI; 'QUITTER' NBJ1; 473 : 'FINSI'; 474 : 'FIN' NBJ1; 475 : 'FINSI'; 476 : *** 477 : 'SI' ('EXISTE' SUPTAB 'GRANDS_DEPLACEMENTS'); 478 : IGDEPL = VRAI; 479 : 'SI' ('EXISTE' SUPTAB 'TABLE_CH_THETA'); 480 : TAB1 = TABLE; 481 : TAB1 = SUPTAB.'TABLE_CH_THETA'; 482 : 'SINON'; 483 : 'MESS' ' IL FAUT DONNER LA TABLE UTILISEE POUR LE CALCUL 484 : DE CH_THETA '; 485 : 'QUITTER' G_THETA; 486 : 'FINSI'; 487 : 'SINON'; 488 : IGDEPL = FAUX; 489 : 'FINSI'; 490 : *** 491 : ITHER = ('EXIST' SUPTAB 'TEMPERATURE') 'OU' 492 : ('EXIST' SUPTAB 'TREFERENCE'); 493 : TESTHER = FAUX ; PASA = FAUX ; 494 : *Adaptation eventuelle des donnees issue de PASAPAS 495 : SUPTABB = TABLE ; 496 : 'SI' IPAP ; 497 : 'SI' ('NON' ('EXISTE' SUPTAB 'VITESSE')); 498 : *Controle de l'indiçage des tables 499 : CONTROP = 'INDEX' (SUPTAB.'CONTRAINTE') ; 500 : VALCONT = CONTROP.1 ; 501 : 'SI' ('EGA' ('TYPE' VALCONT) 'FLOTTANT') ; 502 : PASA = FAUX ; 503 : 'SINON' ; 504 : 'SI' ('EGA' ('TYPE' VALCONT) 'ENTIER ') ; 505 : PASA = VRAI ; 506 : 'SINON' ; 507 : 'ERREUR' 'INDICE DE TABLE INCOMPATIBLE' ; 508 : 'FINSI' ; 509 : 'FINSI' ; 510 : 'SI' PASA ; 511 : *lecture du chargement 512 : 'SI' ('EXISTE' SUPTAB 'CHARGEMENT') ; 513 : CHAR1 = SUPTAB.'CHARGEMENT' ; 514 : TESTHER = 'EXIS' CHAR1 'T ' ; 515 : 'SINON' ; 516 : 'ERREUR' 'ON VEUT LE CHARGEMENT' ; 517 : 'FINSI' ; 518 : *lecture des variable de temps 519 : 'SI' ('EXISTE' SUPTAB 'TEMPS') ; 520 : N = (DIME (SUPTAB.'TEMPS')) - 1 ; 521 : 'SINON' ; 522 : 'ERREUR' 'ON VEUT LA TABLE DES TEMPS SAUVES' ; 523 : 'FINSI' ; 524 : TSIG = TABLE ;TDEPL = TABLE ;TVARI = TABLE ;TDEFI = TABLE ;I = 0 ; 525 : SUPTEM = SUPTAB.'TEMPS' ; 526 : SUPCON = SUPTAB.'CONTRAINTE' ; 527 : SUPDEP = SUPTAB.'DEPLACEMENT' ; 528 : 'SI' ('EXISTE' SUPTAB 'VARINTERNE') ; 529 : 'SI' ('EGA' ('TYPE' SUPTAB.'VARINTERNE') 'TABLE ') ; 530 : SUPVAR = SUPTAB.'VARINTERNE' ; 531 : 'FINSI' ; 532 : 'FINSI' ; 533 : 'SI' IFLUA ; SUPDFI = SUPTAB.'DEFINELA' ; 'FINSI' ; 534 : 'REPETER' BINST N ; 535 : I = I + 1 ; 536 : TI = SUPTEM.I; TSIG.TI = SUPCON.I; TDEPL.TI = SUPDEP.I; 537 : 'SI' ('EXISTE' SUPTAB 'VARINTERNE') ; 538 : 'SI' ('EGA' ('TYPE' SUPTAB.'VARINTERNE') 'TABLE ') ; 539 : TVARI.TI = SUPVAR.I ; 540 : 'FINSI' ; 541 : 'FINSI' ; 542 : 'SI' IFLUA; TDEFI.TI = SUPDFI.I ; 'FINSI' ; 543 : 'FIN' BINST ; 544 : SUPTABB.'DEPLACEMENT' = TDEPL ; 545 : SUPTABB.'CONTRAINTE' = TSIG ; 546 : 'SI' ('EXISTE' SUPTAB 'VARINTERNE') ; 547 : 'SI' ('EGA' ('TYPE' SUPTAB.'VARINTERNE') 'TABLE ') ; 548 : SUPTABB.'VARINTERNE' = TVARI ; 549 : 'FINSI' ; 550 : 'FINSI' ; 551 : 'SI' IFLUA; SUPTABB.'DEFINELA' = TDEFI ; 'FINSI' ; 552 : 'FINSI'; 553 : 'SINON' ; 554 : SUPTABB.'DEPLACEMENT' = SUPTAB.'DEPLACEMENT' ; 555 : SUPTABB.'CONTRAINTE' = SUPTAB.'CONTRAINTE' ; 556 : 'SI' ('EXISTE' SUPTAB 'VARINTERNE') ; 557 : 'SI' ('EGA' ('TYPE' SUPTAB.'VARINTERNE') 'TABLE ') ; 558 : SUPTABB.'VARINTERNE' = SUPTAB.'VARINTERNE' ; 559 : 'FINSI' ; 560 : 'FINSI' ; 561 : 'FINSI'; 562 : 'SINON' ; 563 : SUPTABB.'DEPLACEMENT' = SUPTAB.'DEPLACEMENT' ; 564 : SUPTABB.'CONTRAINTE' = SUPTAB.'CONTRAINTE' ; 565 : 'SI' ('EXISTE' SUPTAB 'VARINTERNE') ; 566 : 'SI' ('EGA' ('TYPE' SUPTAB.'VARINTERNE') 'TABLE ') ; 567 : SUPTABB.'VARINTERNE' = SUPTAB.'VARINTERNE' ; 568 : 'FINSI' ; 569 : 'FINSI' ; 570 : 'FINSI' ; 571 : * 572 : 'SI' ITHER; 573 : 'SI' ('NON' ('EXIST' SUPTAB 'TEMPERATURE')) ; 574 : 'SI' ('NON' PASA) ; 575 : 'ERREUR' 'ON VEUT LA CARTE DE TEMPERATURE'; 576 : 'QUITTER' G_THETA; 577 : 'FINSI' ; 578 : 'FINSI' ; 579 : 'SI' ('NON' ('EXIST' SUPTAB 'TREFERENCE')) ; 580 : 'ERREUR' 'ON VEUT LA TEMPERATURE DE REFERENCE'; 581 : 'QUITTER' G_THETA; 582 : 'FINSI'; 583 : 'SI' ('EXISTE' SUPTAB 'TALPHAREFE'); 584 : TALPH1 = SUPTAB.'TALPHAREFE'; 585 : 'SINON'; 586 : TALPH1 = 0.; 587 : 'FINSI'; 588 : 'SINON' ; 589 : 'SI' TESTHER ; 590 : 'ERREUR' 'EXISTENCE DE TEMPERATURES: TEMPERATURE DE REFERENCE ?'; 591 : 'QUITTER' G_THETA; 592 : 'FINSI' ; 593 : 'FINSI'; 594 : * 595 : *** MODPLA : table indicée par entier pour stocker les modèles 596 : *** mécaniques de chaque objet MMODEL. Elle est vide 597 : *** si le modèle est élastique ou élastoplastique 598 : *** avec une courbe de traction independante de la 599 : *** température. Dans le cas contraire la table vaut 600 : *** 1 si le modèle est plastique isotrope. Alors une 601 : *** nouvelle courbe de traction EPSE-SIGMA est faite. 602 : *** 2 si le modèle est plastique cinématique 603 : *** 3 si le modèle est plastique parfaite 604 : YOUVARI = FAUX; NUVARI = FAUX; ALFVARI = FAUX; MODPLA = TABLE; 605 : TABTRA = TABLE; 606 : 'REPETER' BCMOD1 NBOBJ; 607 : MODI = TABMOD.&BCMOD1; 608 : MATI = 'REDU' MATERI MODI; 609 : YO1 = 'EXCO' MATI 'YOUN'; 610 : TYPYO = 'TYPE' ('EXTR' YO1 'YOUN' 1 1 1); 611 : 'SI' ('EGA' TYPYO 'EVOLUTIO'); 612 : YOUVARI = VRAI; 613 : 'SINON'; 614 : TEST1 = (('MAXI' YO1) - ('MINI' YO1))/('MINI' YO1); 615 : 'SI' ((TEST1 '>' 1.E-10) 'ET' ('NON' IPARAL)); 616 : YOUVARI = VRAI; 617 : 'FINSI'; 618 : 'FINSI'; 619 : * 620 : NU1 = 'EXCO' MATI 'NU'; 621 : TYPNU = 'TYPE' ('EXTR' NU1 'NU' 1 1 1); 622 : 'SI' ('EGA' TYPNU 'EVOLUTIO'); 623 : NUVARI = VRAI; 624 : 'SINON'; 625 : TEST1 = (('MAXI' NU1) - ('MINI' NU1))/('MINI' NU1); 626 : 'SI' ((TEST1 '>' 1.E-10) 'ET' ('NON' IPARAL)); 627 : NUVARI = VRAI; 628 : 'FINSI'; 629 : 'FINSI'; 630 : * 631 : 'SI' ITHER; 632 : AL1 = 'EXCO' MATI 'ALPH'; 633 : TYPAL = 'TYPE' ('EXTR' AL1 'ALPH' 1 1 1); 634 : 'SI' ('EGA' TYPAL 'EVOLUTIO'); 635 : ALFVARI = VRAI; 636 : 'SINON'; 637 : TEST1 = (('MAXI' AL1) - ('MINI' AL1))/('MINI' AL1); 638 : 'SI' ((TEST1 '>' 1.E-10) 'ET' ('NON' IPARAL)); 639 : ALFVARI = VRAI; 640 : 'FINSI'; 641 : 'FINSI'; 642 : 'FINSI'; 643 : * 644 : 'SI' ('EXIST' MATI 'TRAC'); 645 : TR1 = 'EXCO' MATI 'TRAC'; 646 : TYPTR = 'TYPE' ('EXTR' TR1 'TRAC' 1 1 1); 647 : 'SI' ('EGA' TYPTR 'NUAGE '); 648 : MODPLA.&BCMOD1 = 1; 649 : TRA1 = 'EXTR' TR1 'TRAC' 1 1 1; COM1 = 'EXTR' TRA1 'COMP'; 650 : NOMEVO1 = 'MOT' 'TRAC'; NOMFLO1 = 'MOT' 'T'; 651 : 'REPETER' BNUA1 ('DIME' TRA1 'UPLE'); 652 : 'SI' ('EGA' &BNUA1 1); 653 : NUA1 = 'EXTR' TRA1 'MINI' NOMFLO1; 654 : 'SINON'; 655 : NUA1 = 'EXTR' TRA1 'SUPE' NOMFLO1 (T1 + 1.E-10); 656 : 'FINSI'; 657 : T1 = 'EXTR' NUA1 NOMFLO1; 658 : EV1 = 'EXTR' NUA1 NOMEVO1; 659 : PSIG1 = 'EXTR' EV1 'ORDO'; PEPS1 = 'EXTR' EV1 'ABSC'; 660 : VYOU1 = ('EXTR' 2 PSIG1) / ('EXTR' 2 PEPS1); 661 : PEPS2 = PROG; 662 : 'REPETER' BSIG1 (('DIME' PSIG1) - 1); 663 : VA1 = ('EXTR' (&BSIG1 + 1) PEPS1) - 664 : (('EXTR' (&BSIG1 + 1) PSIG1) / VYOU1); 665 : PEPS2 = PEPS2 'ET' ('PROG' VA1); 666 : 'FIN' BSIG1; 667 : EV1 = 'EVOL' 'MANU' 'EPSE' PEPS2 'SIGM' ('ENLE' PSIG1 1); 668 : 'SI' (&BNUA1 'EGA' 1); 669 : TRA2 = 'NUAG' 'COMP' NOMFLO1 T1 'COMP' NOMEVO1 EV1; 670 : 'SINON'; 671 : TRA2 = TRA2 'ET' ('NUAG' 'COMP' NOMFLO1 672 : T1 'COMP' NOMEVO1 EV1); 673 : 'FINSI'; 674 : 'FIN' BNUA1; 675 : TABTRA.&BCMOD1 = TRA2; 676 : *** On enlève la courbe de traction si elle depend de 677 : *** la temperature (operation trop couteuse pour VARI) 678 : MAT0 = MATI; LCOMP1 = 'EXTR' MAT0 'COMP'; 679 : 'REPETER' BCOM1 ('DIME' LCOMP1); 680 : C1 = 'EXTR' LCOMP1 &BCOM1; 681 : 'SI' ('NEG' C1 'TRAC'); 682 : 'SI' ('EGA' &BCOM1 1); 683 : MATI = 'MATE' MODI C1 ('EXCO' C1 MAT0); 684 : 'SINON'; 685 : MATI = MATI 'ET' ('MATE' MODI C1 ('EXCO' C1 MAT0)); 686 : 'FINSI'; 687 : 'FINSI'; 688 : 'FIN' BCOM1; 689 : 'FINSI'; 690 : 'SINON'; 691 : 'SI' ('EXIST' MATI 'SIGY'); 692 : SI1 = 'EXCO' MATI 'SIGY'; 693 : TYPSI = 'TYPE' ('EXTR' SI1 'SIGY' 1 1 1); 694 : 'SI' ('EXIST' MATI 'H'); 695 : H1 = 'EXCO' MATI 'H'; 696 : TYPH = 'TYPE' ('EXTR' H1 'H' 1 1 1); 697 : 'SI' (('EGA' TYPH 'EVOLUTIO') 'OU' 698 : ('EGA' TYPSI 'EVOLUTIO')); 699 : MODPLA.&BCMOD1 = 2; 700 : 'FINSI'; 701 : 'SINON'; 702 : 'SI' ('EGA' TYPSI 'EVOLUTIO'); 703 : MODPLA.&BCMOD1 = 3; 704 : 'FINSI'; 705 : 'FINSI'; 706 : 'FINSI'; 707 : 'FINSI'; 708 : 'SI' ('EGA' &BCMOD1 1); 709 : MATREDU = MATI; 710 : 'SINON'; 711 : MATREDU = MATREDU 'ET' MATI; 712 : 'FINSI'; 713 : 'FIN' BCMOD1; 714 : MATVARI = YOUVARI 'OU' NUVARI 'OU' ALFVARI 715 : 'OU' (('DIME' MODPLA) '>' 0); 716 : *** 717 : 'SI' (IMIXT 'ET' MATVARI); 718 : 'MESS' 'ERREUR : ON NE PEUT PAS ENCORE DECOUPER LES'; 719 : 'MESS' 'MODES POUR UN MATERIAU NON CONSTANT PAR MORCEAUX'; 720 : 'QUITTER' G_THETA; 721 : 'FINSI'; 722 : *** 723 : IPARTI = 'EXIST' SUPTAB 'AVANCE'; 724 : *** 725 : IINTER = FAUX; 726 : 'SI' ('NON' IPARAL); 727 : 'SI' ('>' NBOBJ 1); 728 : IINTER = VRAI; 729 : 'SI' ('NON' ('EXIST' SUPTAB 'INTERFACE')) ; 730 : 'ERREUR' 'ON VEUT LA TABLE STOCKANT LES INTERFACES'; 731 : 'QUITTER' G_THETA; 732 : 'SINON'; 733 : LINTER = SUPTAB.'INTERFACE' ; 734 : 'SI' ((('DIME' LINTER) + 1) 'NEG' NBOBJ); 735 : 'MESS' 'ERREUR : IL CONVIENT DE REMPLIR LES TABLES MODELE'; 736 : 'MESS' 'ET INTERFACE COMME DECRITES DANS LA NOTICE.'; 737 : 'QUITTER' G_THETA; 738 : 'FINSI'; 739 : 'REPETER' BIN1 ('DIME' LINTER); 740 : MI1 = LINTER.&BIN1; 741 : MO1 = 'EXTR' (TABMOD.&BIN1) 'MAIL'; 742 : MO2 = 'EXTR' (TABMOD.(&BIN1 + 1)) 'MAIL'; 743 : NB1 = 'NBNO' MO1; NB2 = 'NBNO' (MO1 ET MI1); 744 : NB3 = 'NBNO' MO2; NB4 = 'NBNO' (MO2 ET MI1); 745 : 'SI' ('NON' (('EGA' NB1 NB2) 'ET' ('EGA' NB3 NB4))); 746 : 'MESS' 'ERREUR : L INTERFACE No' &BIN1 'N EST'; 747 : 'MESS' 'PAS COHERENTE AVEC LES OBJETS MODELES.'; 748 : 'QUITTER' G_THETA; 749 : 'FINSI'; 750 : 'FIN' BIN1; 751 : 'FINSI'; 752 : 'FINSI'; 753 : 'SI' (('EGA' NBOBJ 1) 'ET' ('EXIST' SUPTAB 'INTERFACE')); 754 : 'MESS' 'ERREUR : UN SEUL OBJET MODELE NE PERMET'; 755 : 'MESS' 'PAS DE PRENDRE EN COMPTE DES INTERFACES.'; 756 : 'QUITTER' G_THETA; 757 : 'FINSI'; 758 : 'FINSI'; 759 : *** 760 : 'SI' IFLUA; 761 : 'SI' ('NON' ('EXIST' SUPTAB 'LOI')); 762 : 'ERREUR' 'IL FAUT PRECISER LA LOI DE FLUAGE UTILISEE'; 763 : 'QUITTER' G_THETA; 764 : 'FINSI'; 765 : 'SI' ('NON' ('EXIST' SUPTAB 'CONT_INI')); 766 : 'ERREUR' 'ON VEUT LA CONTRAINTE AU DEBUT DU FLUAGE'; 767 : 'QUITTER' G_THETA; 768 : 'FINSI'; 769 : 'SI' ('NON' ('EXIST' SUPTAB 'DEPL_INI')); 770 : 'ERREUR' 'ON VEUT LE DEPLACEMENT AU DEBUT DU FLUAGE'; 771 : 'QUITTER' G_THETA; 772 : 'FINSI'; 773 : 'SI' ('NON' ('EXIST' SUPTAB 'DEFI_INI')); 774 : 'ERREUR' 'ON VEUT LA DEFORMATION INELASTIQUE AU DEBUT DU FLUAGE'; 775 : 'QUITTER' G_THETA; 776 : 'FINSI'; 777 : 'SI' ('NON' ('EXIST' SUPTAB 'DEFINELA')); 778 : 'ERREUR' 'ON VEUT LA TABLE DE DEFORMATIONS INELASTIQUES'; 779 : 'QUITTER' G_THETA; 780 : 'FINSI'; 781 : 'FINSI'; 782 : *** 783 : 'SI' (IFLUA 'ET' ITHER); 784 : 'SI' ('NON' ('EXIST' SUPTAB 'TEMP_INI')); 785 : 'ERREUR' 'ON VEUT LA TEMPERATURE AU DEBUT DU FLUAGE'; 786 : 'QUITTER' G_THETA; 787 : 'FINSI'; 788 : 'FINSI'; 789 : *** 790 : 'SI' ICOQU; 791 : 'SI' ('NON' ('EXIST' MATREDU 'EPAI')); 792 : 'MESS' 'ERREUR : DANS LE MATERIAU ON N A PAS TROUVE LA'; 793 : 'MESS' ' COMPOSANTE DONNANT L EPAISSEUR DE LA COQUE'; 794 : 'QUITTER' G_THETA; 795 : 'SINON'; 796 : EPAICH = 'CHAN' ('EXCO' MATREDU 'EPAI' 'SCAL') 797 : 'STRESSES' OBJMOD; 798 : 'FINSI'; 799 : 'FINSI'; 800 : *** 801 : IPRES = FAUX; 802 : 'SI' PASA ; 803 : 'SI' ('EXIST' SUPTAB 'PRESSION') ; 804 : 'SI' ('NEG' SUPTAB.'PRESSION' FAUX) ; 805 : IPRES = VRAI ; 806 : 'FINSI' ; 807 : 'FINSI' ; 808 : 'SINON' ; 809 : 'SI' ('EXIST' SUPTAB 'PRESSION') ; 810 : PRESSI = SUPTAB.'PRESSION'; IPRES = VRAI ; 811 : 'FINSI' ; 812 : 'FINSI' ; 813 : *** 814 : ENEDEF = TABLE; ENEVON = TABLE; 815 : 'SI' ('EXIST' SUPTAB 'ENEDEF'); 816 : ENEDEF*'TABLE' = SUPTAB.'ENEDEF'; 817 : 'FINSI'; 818 : 'SI' ('EXIST' SUPTAB 'ENEVON'); 819 : ENEVON*'TABLE' = SUPTAB.'ENEVON'; 820 : 'FINSI'; 821 : *** 822 : 'SI' IPAP; 823 : ***Affichage en cas de calcul dynamique**** 824 : 'SI' ('EXIST' SUPTAB 'VITESSE') ; 825 : TXMECANI= 'MOT' ' '; 826 : TXTERMI = 'MOT' ' '; 827 : TXPRESS = 'MOT' ' '; 828 : 'SINON'; 829 : TXMECANI= 'MOT' ' Mecanique'; 830 : TXTERMI = 'MOT' ' Thermique'; 831 : TXPRESS = 'MOT' ' Volumique'; 832 : 'FINSI'; 833 : 'SINON'; 834 : TXMECANI= 'MOT' ' Mecanique'; 835 : TXTERMI = 'MOT' ' Thermique'; 836 : TXPRESS = 'MOT' ' Volumique'; 837 : 'FINSI'; 838 : ************************************************** 839 : *** QUELQUES MOTS POUR SIMPLIFIER L'ECRITURE *** 840 : ************************************************** 841 : E = 'MOT' 'EXCO'; MOTU = 'MOTS' 'UX' 'UY'; C = 'MOT' 'CHAI'; 842 : MOTF = 'MOTS' 'FX' 'FY'; S = 'MOT' 'SCAL'; MTS1 = 'MOTS' 'SCAL'; 843 : U1 = 'MOT' 'UX'; U2 = 'MOT' 'UY'; U3 = 'MOT' 'UZ'; 844 : F1 = 'MOT' 'FX'; F2 = 'MOT' 'FY'; F3 = 'MOT' 'FZ'; 845 : GR1 = 'MOT' 'UX,X'; GR2 = 'MOT' 'UX,Y'; GR3 = 'MOT' 'UX,Z'; 846 : GR4 = 'MOT' 'UY,X'; GR5 = 'MOT' 'UY,Y'; GR6 = 'MOT' 'UY,Z'; 847 : GR7 = 'MOT' 'UZ,X'; GR8 = 'MOT' 'UZ,Y'; GR9 = 'MOT' 'UZ,Z'; 848 : SM1 = 'MOT' 'SMXX'; SM2 = 'MOT' 'SMYY'; SM3 = 'MOT' 'SMZZ'; 849 : SM4 = 'MOT' 'SMXY'; SM5 = 'MOT' 'SMXZ'; SM6 = 'MOT' 'SMYZ'; 850 : 'SI' ('EGA' MOTAX &MODE) ; 851 : MOTU = 'MOTS' 'UR' 'UZ' ; MOTF = 'MOTS' 'FR' 'FZ' ; 852 : U1 = 'MOT' 'UR'; U2 = 'MOT' 'UZ'; U3 = 'MOT' 'UT'; 853 : F1 = 'MOT' 'FR'; F2 = 'MOT' 'FZ'; 854 : GR1 = 'MOT' 'UR,R'; GR2 = 'MOT' 'UR,Z'; GR3 = 'MOT' 'UR,T'; 855 : GR4 = 'MOT' 'UZ,R'; GR5 = 'MOT' 'UZ,Z'; GR6 = 'MOT' 'UZ,T'; 856 : GR7 = 'MOT' 'UT,R'; GR8 = 'MOT' 'UT,Z'; GR9 = 'MOT' 'UT,T'; 857 : SM1 = 'MOT' 'SMRR'; SM2 = 'MOT' 'SMZZ'; SM3 = 'MOT' 'SMTT'; 858 : SM4 = 'MOT' 'SMRZ'; 859 : 'FINSI'; 860 : 'SI' (&DIME 'EGA' 3) ; 861 : MOTU = 'MOTS' 'UX' 'UY' 'UZ' ; MOTF = 'MOTS' 'FX' 'FY' 'FZ' ; 862 : 'FINSI'; 863 : **** 864 : TX4 = 'MOT' 'TAUX DE RESTITUTION D ENERGIE EN ELASTO-DYNAMIQUE'; 865 : 'SI' IFLUA; 866 : 'SI' ITHER; 867 : TX1 = 'MOT' 'VALEUR DE L INTEGRALE C* EN VISCO-THERMO-PLASTIQUE'; 868 : 'SINON'; 869 : TX1 = 'MOT' ' VALEUR DE L INTEGRALE C* EN VISCO-PLASTICITE'; 870 : 'FINSI'; 871 : CHA1 = 'CHAI' 'INTEGRALE C* EN FONCTION DU TEMPS'; 872 : MOTTI = 'MOT' 'C*'; 873 : MOTCO = 'MOT' ' Valeur C*'; 874 : 'SINON'; 875 : 'SI' ITHER; 876 : 'SI' IMIXT; 877 : TX1 = 'MOT' ' DECOUPLAGE DES MODES MIXTES EN THERMO-PLASTICITE '; 878 : 'SINON'; 879 : TX1 = 'MOT' 'TAUX DE RESTITUTION D ENERGIE EN THERMO-PLASTICITE'; 880 : 'FINSI'; 881 : 'SINON'; 882 : 'SI' IMIXT; 883 : TX1 = 'MOT' ' DECOUPLAGE DES MODES MIXTES EN ELASTO-PLASTICITE '; 884 : 'SINON'; 885 : TX1 = 'MOT' 'TAUX DE RESTITUTION D ENERGIE EN ELASTO-PLASTICITE'; 886 : 'FINSI'; 887 : 'FINSI'; 888 : CHA1 = 'CHAI' 'TAUX DE RESTITUTION G EN FONCTION DU TEMPS'; 889 : MOTTI = 'MOT' 'G'; 890 : 'SI' IMIXT; 891 : CHA1='CHAI' 'TAUX DE RESTITUTION Gi EN FONCTION DU TEMPS'; 892 : MOTTI = 'MOT' 'Gi'; 893 : 'FINSI'; 894 : 'FINSI'; 895 : MOTCO = 'MOT' ' Le Taux G'; 896 : TX2 = 'CHAIN' ' Contribution due au chargement '; 897 : TX3 = 'CHAIN' ' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°° '; 898 : 'SI' IMIXT; 899 : MOTCO = 'MOT' ' Valeurs '; 900 : TX2 = 'CHAIN' ' M et J* dus aux chargements F1* et F2* '; 901 : TX3 = 'CHAIN' ' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° '; 902 : 'FINSI'; 903 : ********************************************************* 904 : ************ NOM DES COMPOSANTES DE MATERIAUX *********** 905 : ********************************************************* 906 : *** 907 : *** ITYPEF = 99 SI EN ELASTO OU THERMO-ELASTO-PLASTICITE 908 : *** ITYPEF = 1 VISCO-PLASTICITE. LOI DE FLUAGE NORTON 909 : *** ITYPEF = 2 VISCO-PLASTICITE. LOI DE FLUAGE BLACKBURN 910 : *** ITYPEF = 3 VISCO-PLASTICITE. LOI DE FLUAGE RCCMR_316 911 : *** ITYPEF = 4 VISCO-PLASTICITE. LOI DE FLUAGE RCCMR_304 912 : *** ITYPEF = 5 VISCO-PLASTICITE. LOI DE FLUAGE LEMAITRE 913 : *** ITYPEF = 6 VISCO-PLASTICITE. LOI DE FLUAGE POLYNOMIAL 914 : *** POUR ITYPEF = 1 ET 6 ON A UNE EXPRESSION EXPLICITE 915 : *** DE L'INTEGRATION DE LA VITESSE DU FLUAGE SUR LE TEMPS 916 : *** 917 : ITYPEF = 99; 918 : 'SI' IFLUA; TEMP0 = 0.; 919 : 'SI' ('EXIS' SUPTAB 'TEMP0'); TEMP0 = SUPTAB.'TEMP0'; 'FINSI'; 920 : 'SI' ('EGA' SUPTAB.'LOI' 'NORTON'); ITYPEF = 1; 'FINSI'; 921 : 'SI' ('EGA' SUPTAB.'LOI' 'BLACKBURN'); ITYPEF=2; 'FINS'; 922 : 'SI' ('EGA' SUPTAB.'LOI' 'RCCMR_316'); ITYPEF=3; 'FINS'; 923 : 'SI' ('EGA' SUPTAB.'LOI' 'RCCMR_304'); ITYPEF=4; 'FINS'; 924 : 'SI' ('EGA' SUPTAB.'LOI' 'LEMAITRE'); ITYPEF=5; 'FINSI'; 925 : 'SI' ('EGA' SUPTAB.'LOI' 'POLYNOMIAL'); ITYPEF=6;'FINS'; 926 : 'SI' ('EGA' ITYPEF 99); 927 : 'ERREUR' 'LA LOI DE FLUAGE DONNEE EST INCONNUE'; 928 : 'QUITTER' G_THETA; 929 : 'FINSI'; 930 : 'FINSI'; 931 : *************************************************** 932 : ********** DEPLACEMENT, GRADIANT INITIAUX ********* 933 : *************************************************** 934 : DEP000 ='CHAN' 'CHPO' OBJMOD ('ZERO' OBJMOD 'DEPLACEM'); 935 : GRA000 = 'ZERO' OBJMOD 'GRADIENT'; 936 : *************************************************** 937 : ***** INDICE DE TEMPERATURE RANGEE DENA LTHER ***** 938 : *************************************************** 939 : 'SI' ('NON' PASA) ; 940 : 'SI' (ITHER 'ET' IPAP) ; 941 : TEPER*'TABLE'= SUPTAB.'TEMPERATURE'; 942 : ITET = 'INDE' TEPER ; NBTET = 'DIME' ITET ; 943 : IT = 1 ; 944 : LTHER = 'PROG' (ITET.IT) ; 945 : 'REPETER' TEPERATU ; 946 : IT = IT + 1 ; 947 : 'SI' ('EXISTE' ITET IT) ; 948 : VALTET = 'PROG' (ITET.IT) ; 949 : LTHER = LTHER 'ET' VALTET ; 950 : 'SINON' ; 951 : 'QUITTER' TEPERATU ; 952 : 'FINSI' ; 953 : 'FIN' TEPERATU ; 954 : LTHER = 'ORDONNER' LTHER ; 955 : 'FINSI' ; 956 : 'FINSI' ; 957 : *************************************************** 958 : ********* TABLES POUR STOCKER LES RESULTATS ******* 959 : *************************************************** 960 : SUPTAB.'G' = TABLE; 961 : 962 : 'SI' ('NON' ('EXIST' SUPTAB 'CRITERE_DECHARGE')) ; 963 : SUPTAB.'CRITERE_DECHARGE' = TABLE ; 964 : 'FINSI'; 965 : *************************************************** 966 : *************** SI REPRISE DE CALCUL ************** 967 : *************************************************** 968 : 'SI' (IREPRI 'ET' IPAP); 969 : NBG = 'DIME' ('INDE' (SUPTAB.'G')); 970 : NBDEP = NBDEP - NBG ; 971 : 'SI' (NBDEP '<EG' 0); 972 : 'MESS' 'CALCULS DEJA EFFECTUES. PAS DE REPRISE'; 973 : 'QUITTER' G_THETA; 974 : 'FINSI'; 975 : SIG1 = SUPTAB.'SIG1'; 976 : PROTEMP = EXTR (SUPTAB.'EVOLG') 'ABSC'; 977 : PROVALG = EXTR (SUPTAB.'EVOLG') 'ORDO'; 978 : VAR1 = SUPTAB.'VAR1'; 979 : VDI1 = SUPTAB.'VDI1'; 980 : MAT1 = SUPTAB.'MAT1'; 981 : WELAS = 0.5*('ENER' OBJMOD SIG1 ('ELAS' OBJMOD SIG1 MAT1)); 982 : IDD1 = 'INDE' ENEDEF; 983 : WPLAS = ENEDEF.(IDD1.('DIME' IDD1)) - WELAS; 984 : 'SI' ((('DIME' MODPLA) '>' 0) 'ET' ITHER); 985 : WVMIS = ENEVON.(IDD1.('DIME' IDD1)); 986 : 'FINSI'; 987 : 'SI' ICOQU; 988 : MOTU = MOTU 'ET' ('MOTS' RX RY RZ) ; 989 : MOTF = MOTF 'ET' ('MOTS' MX MY MZ) ; 990 : 'FINSI'; 991 : 'SINON'; 992 : NBG = 0;PROVALG = PROG; PROTEMP = PROG; 993 : 'FINSI'; 994 : *************************************************** 995 : **************** AFFICHAGE DU TITRE ************** 996 : *************************************************** 997 : 'SI' IPAP; 998 : *Affichage du titre dans le cas d'un calcul en dynamique 999 : 'SI' ('EXIST' SUPTAB 'VITESSE') ; 1000 : 'MESS' ' ' TX4; 1001 : 'MESS' ' Instant ' ' Taux G '; 1002 : 'SINON'; 1003 : 'SI' (('EGA' &DIME 2) 'OU' ICOQU); 1004 : 'MESS' ' ' TX1; 1005 : 'MESS'; 1006 : 'MESS' ' ' TX2; 'MESS' ' ' TX3; 1007 : 'MESS' ' Instant ' TXMECANI TXTERMI TXPRESS MOTCO; 1008 : 'FINSI'; 1009 : 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 1010 : 'MESS' ' ' TX1; 1011 : 'MESS'; 1012 : 'MESS' ' ' TX2; 'MESS' ' ' TX3; 1013 : 'MESS' ' Noeuds ' ' Instant ' TXMECANI TXTERMI TXPRESS MOTCO; 1014 : 'FINSI'; 1015 : 'FINSI'; 1016 : 'SAUT' 1 'LIGNE'; 1017 : 'SINON'; 1018 : 'SI' (('EGA' &DIME 2) 'OU' ICOQU); 1019 : 'MESS' ' ' TX2; 'MESS' ' ' TX3; 1020 : 'MESS' ' ' TXMECANI TXTERMI TXPRESS MOTCO; 1021 : 'FINSI'; 1022 : 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 1023 : 'MESS' ' ' TX2; 'MESS' ' ' TX3; 1024 : 'MESS' ' Noeuds ' TXMECANI TXTERMI TXPRESS MOTCO; 1025 : 'FINSI'; 1026 : 'FINSI'; 1027 : ******************************************** 1028 : *** ZONE OU LE CHAMP THETA N'EST PAS NUL *** 1029 : ******************************************** 1030 : 'SI' (('EGA' &DIME 2) 'OU' ICOQU); 1031 : TETA = SUPTAB.'CHTHETA'; MENL1 = 'MOT' 'CONT'; 1032 : 'FINSI'; 1033 : 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 1034 : TETA = SUPTAB.'CHTHETA'.'GLOBAL'; MENL1 = 'MOT' 'ENVE'; 1035 : 'FINSI'; 1036 : TETA = TETA + DEP000; 1037 : NORM1 = ((E U1 TETA S)**2) + ((E U2 TETA S)**2); 1038 : 'SI' ('EGA' &DIME 3); 1039 : NORM1 = NORM1 + ((E U3 TETA S)**2); 1040 : 'FINSI'; 1041 : NORM1 = 'CHAN' 'CHAM' OBJMOD (NORM1**0.5); 1042 : VA1 = ('MAXI' NORM1) - 1.E-5; VA2 = ('MAXI' NORM1) + 1.E-5; 1043 : ELTETA = NORM1 'ELEM' 'COMPRIS' VA1 VA2; 1044 : 'SI' IDANS; 1045 : LCOM1 = 'CHAN' (LCOM1 'ELEM' 'APPU' 'STRI' ELTETA) 'POI1'; 1046 : 'FINSI'; 1047 : ******************************************************* 1048 : * CONDITIONS AUX LIMITES POUR LE DECOUPLAGE DES MODES * 1049 : * OU LES CONTRAINTES/DEPLACEMENTS POUR LE CALCUL DE G * 1050 : ******************************************************* 1051 : 'SI' IMIXT; 1052 : PM = SUPTAB.'FONDFISS'; 1053 : 'SI' ('EGA' &DIME 2); 1054 : X1 Y1 = 'COOR' MAPART; X0 Y0 = 'COOR' PM; 1055 : DIS1 = (((X1 - X0)**2) + ((Y1 - Y0)**2))**0.5; 1056 : 'SINON'; 1057 : X1 Y1 Z1 = 'COOR' MAPART; 1058 : 'SI' ('NON' ICOQU); PM = 'POIN' PM 'INIT'; 'FINSI'; 1059 : X0 Y0 Z0 = 'COOR' PM; 1060 : DIS1 = (((X1 - X0)**2) + ((Y1 - Y0)**2) + ((Z1 - Z0)**2))**0.5; 1061 : 'FINSI'; 1062 : PLOIN1 = 'POIN' 1 ('POIN' 'MAXI' DIS1); 1063 : 'SI' ('EGA' &DIME 2); 1064 : X1 Y1 = 'COOR' (MAPART 'DIFF' 1065 : (SUPTAB.'LEVREINF' 'ET' SUPTAB.'LEVRESUP')); 1066 : X0 Y0 = 'COOR' PLOIN1; 1067 : DIS1 = (((X1 - X0)**2) + ((Y1 - Y0)**2))**0.5; 1068 : 'SINON'; 1069 : X1 Y1 Z1 = 'COOR' (MAPART 'DIFF' 1070 : (SUPTAB.'LEVREINF' 'ET' SUPTAB.'LEVRESUP')); 1071 : X0 Y0 Z0 = 'COOR' PLOIN1; 1072 : DIS1 = (((X1 - X0)**2) + ((Y1 - Y0)**2) + ((Z1 - Z0)**2))**0.5; 1073 : 'FINSI'; 1074 : PLOIN2 = 'POIN' 1 ('POIN' 'MAXI' DIS1); 1075 : BLOQ1 = ('BLOQ' 'DEPL' 'ROTA' PLOIN2) 'ET' ('BLOQ' U2 PLOIN1); 1076 : 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 1077 : BLOQ1 = BLOQ1 'ET' ('BLOQ' UZ MAPART); 1078 : 'FINSI'; 1079 : 'FINSI'; 1080 : ****************************************** 1081 : * FISSURE DANS LE REPERE GLOBAL ET LOCAL * 1082 : ****************************************** 1083 : 'SI' (IMIXT 'ET' ('EGA' &DIME 2)); 1084 : * Inclinaison de la fissure par rapport à l'axe globale 1085 : XG0 YG0 = 'COOR' PM; 1086 : SEG1 = SUPTAB.'LEVRESUP' 'ELEM' 'APPU' 'LARG' PM; 1087 : SEG1 = 'ORDO' SEG1; P_SUP = 'POIN' SEG1 'INIT'; 1088 : 'SI' ('EGA' P_SUP PM); 1089 : P_SUP = 'POIN' SEG1 'FINA'; 1090 : 'FINSI'; 1091 : SEG1 = SUPTAB.'LEVREINF' 'ELEM' 'APPU' 'LARG' PM; 1092 : SEG1 = 'ORDO' SEG1; P_INF = 'POIN' SEG1 'INIT'; 1093 : 'SI' ('EGA' P_INF PM); 1094 : P_INF = 'POIN' SEG1 'FINA'; 1095 : 'FINSI'; 1096 : XP1 = 'COOR' 1 P_SUP; XP2 = 'COOR' 1 P_INF; 1097 : YP1 = 'COOR' 2 P_SUP; YP2 = 'COOR' 2 P_INF; 1098 : PHI1 = 'ATG' (YG0 - ((YP1 + YP2)/2.)) (XG0 - ((XP1 + XP2)/2.)); 1099 : * Coordonnées dans le repère général et local 1100 : XG1 YG1 = 'COOR' ELTETA; 1101 : XL1 = ((XG1 - XG0)*('COS' PHI1)) + ((YG1 - YG0)*('SIN' PHI1)); 1102 : YL1 = ((YG1 - YG0)*('COS' PHI1)) - ((XG1 - XG0)*('SIN' PHI1)); 1103 : TETA1 = 'ATG' YL1 (XL1 + 1.E-30); 1104 : R1 = (((XL1*XL1) + (YL1*YL1))**0.5) + 1.E-20; 1105 : EL_1 = ELTETA 'ELEM' 'APPU' 'LARG' P_SUP; 1106 : EL_2 = ELTETA 'ELEM' 'APPU' 'LARG' P_INF; 1107 : VA1 = 'XTY' ('MANU' 'CHPO' EL_1 1 'SCAL' 1.) 1108 : ('REDU' YL1 EL_1) MTS1 MTS1; 1109 : VA2 = 'XTY' ('MANU' 'CHPO' EL_2 1 'SCAL' 1.) 1110 : ('REDU' YL1 EL_2) MTS1 MTS1; 1111 : 'SI' (('<' VA1 0.) 'ET' ('>' VA2 0.)); 1112 : PPPP = P_SUP; P_SUP = P_INF; P_INF = PPPP; 1113 : MMDD = MODSUP; MODSUP = MODINF; MODINF = MMDD; 1114 : 'FINSI'; 1115 : 'SI' (('EGA' XP1 XP2 1.E-30) 'ET' ('EGA' YP1 YP2 1.E-30)); 1116 : TETA_S = 'REDU' TETA1 SUPTAB.'LEVRESUP'; 1117 : TETA_F = 'REDU' TETA1 SUPTAB.'LEVREINF'; 1118 : TETA1 = TETA1 - TETA_S - TETA_F; 1119 : 'SI' (('>' VA1 0.) 'ET' ('<' VA2 0.)); 1120 : TETA1 = TETA1 + ((TETA_S*0.) + 180.) + ((TETA_F*0.) - 180.); 1121 : 'SINON'; 1122 : TETA1 = TETA1 + ((TETA_F*0.) + 180.) + ((TETA_S*0.) - 180.); 1123 : 'FINSI'; 1124 : 'FINSI'; 1125 : TETAR1 = TETA1*VALPI/180.; 1126 : 'SI' IDANS; 1127 : EL_1 = ('EXTR' MODSUP 'MAIL') 'ELEM' 'APPU' 'STRI' ELTETA; 1128 : EL_2 = ('EXTR' MODINF 'MAIL') 'ELEM' 'APPU' 'STRI' ELTETA; 1129 : PEL_1 = ('CHAN' EL_1 'POI1') 'DIFF' LCOM1; 1130 : PEL_2 = ('CHAN' EL_2 'POI1') 'DIFF' LCOM1; 1131 : 'FINSI'; 1132 : 'FINSI'; 1133 : ************************************************** 1134 : * SOLUTION DE CONTRAINTE/DEPLACEMENT DU PROBLEME * 1135 : ************************************************** 1136 : 'SI' ('NON' IPAP); 1137 : SIGF = 'REDU' (SUPTABB.'CONTRAINTE') OBJMOD; 1138 : DEPINT = 'REDU' (SUPTABB.'DEPLACEMENT') MAPART; 1139 : NBDEP = 1; 1140 : 'SINON'; 1141 : SIG*'TABLE' = (SUPTABB.'CONTRAINTE') ; 1142 : DEP*'TABLE' = SUPTABB.'DEPLACEMENT' ; 1143 : 'SI' ('EXIST' SUPTAB 'VITESSE') ; 1144 : VIT*'TABLE' = SUPTAB.'VITESSE' ; 1145 : 'FINSI' ; 1146 : 'SI' IFLUA; DFI*'TABLE' = SUPTABB.'DEFINELA'; 'FINSI'; 1147 : 'SI' ('EXIST' SUPTAB 'VARINTERNE'); 1148 : VAR*'TABLE' = SUPTABB.'VARINTERNE'; 1149 : 'SINON'; 1150 : VAR = TABLE; 1151 : 'FINSI'; 1152 : IDEP = 'INDE' DEP ; NBDEP = 'DIME' IDEP ; 1153 : 'FINSI'; 1154 : *********************************************** 1155 : *********************************************** 1156 : ********* BOUCLE SUR LE PAS DE CALCUL ********* 1157 : *********************************************** 1158 : *********************************************** 1159 : TEMPREEL = PROG ; 1160 : IABC = 0 ; 'SI' IMIXT; NBDEP = 1; 'FINSI'; 1161 : 'REPETER' BOUCEXT NBDEP ; 1162 : IABC = IABC + 1 ; 1163 : S10 = 0.; S20 = 0.; S30 = 0.; S40 = 0.; S50 = 0.; 1164 : S60 = 0.; S70 = 0.; S80 = 0.; S90 = 0.; S100 = 0.; 1165 : S110 = 0.; S120 = 0.; S130 = 0.; S140 = 0.;S300 = 0.; 1166 : S500 = 0.; 1167 : *************************************************** 1168 : ***** DEPLACEMENT,CONTRAINTE A L INSTANT INST ***** 1169 : *************************************************** 1170 : 'SI' IPAP; 1171 : IABC = NBG + IABC ; 1172 : INST = IDEP.IABC ; 1173 : PROTEMP = PROTEMP ET (PROG INST) ; 1174 : SIGF = (SIG.INST) 'REDU' OBJMOD; 1175 : *Calcul du temps reel pour le calcul en dynamique 1176 : 'SI' ('EXIST' SUPTAB 'VITESSE') ; 1177 : TDYN = SUPTAB.'TDYN'; 1178 : TEMP1 = TDYN.INST ; 1179 : TEMPREEL = TEMPREEL ET (PROG TEMP1); 1180 : 'FINSI' ; 1181 : ************************************************ 1182 : 'SI' ('EXIST' VAR INST); 1183 : VARF = (VAR.INST) 'REDU' OBJMOD; 1184 : 'SINON'; 1185 : VARF = 'ZERO' OBJMOD 'VARINTER'; 1186 : 'FINSI'; 1187 : 'SI' IFLUA; 1188 : 'SI' ('EGA' IABC 1) ; 1189 : DELTAT = IDEP.IABC - TEMP0; 1190 : DEPINT = (DEP.(IDEP.IABC)) - (SUPTAB.'DEPL_INI'); 1191 : VITDFI = (DFI.(IDEP.IABC)) - (SUPTAB.'DEFI_INI'); 1192 : SIG1 = 'REDU' OBJMOD (SUPTAB.'CONT_INI'); 1193 : 'FINSI'; 1194 : 'SI' (IABC '>' 1); 1195 : DELTAT = (IDEP.IABC) - (IDEP.(IABC - 1)); 1196 : DEPINT = (DEP.(IDEP.IABC)) - (DEP.(IDEP.(IABC - 1))); 1197 : VITDFI = (DFI.(IDEP.IABC)) - (DFI.(IDEP.(IABC - 1))); 1198 : 'FINSI'; 1199 : DEPINT = ('REDU' MAPART DEPINT) / DELTAT; 1200 : VITDFI = ('REDU' MAPART VITDFI) / DELTAT; 1201 : 'SINON'; 1202 : DEPINT = (DEP.INST) 'REDU' MAPART; 1203 : ****************************************** 1204 : *Cas du calcul en dynamique 1205 : 'SI' ('EXIST' SUPTAB 'VITESSE') ; 1206 : VITF = (VIT.INST) 'REDU' MAPART ; 1207 : 'FINSI' ; 1208 : ****************************************** 1209 : 'FINSI'; 1210 : 'FINSI'; 1211 : **************************************************** 1212 : ******* cas de calculs en grands deplacements ****** 1213 : **************************************************** 1214 : 'SI' IGDEPL; 1215 : 'FORM' DEPINT; 1216 : SUPTAB.'CHTHETA' = CH_THETA TAB1; 1217 : 'FORM' CONFIG0; 1218 : 'FINSI'; 1219 : ************************************ 1220 : ****** Signe des FIC K1 et K2 ****** 1221 : ************************************ 1222 : 'SI' (IMIXT 'ET' ('EGA' &DIME 2)); 1223 : DUXG1 = ('EXTR' DEPINT U1 P_SUP) - ('EXTR' DEPINT U1 P_INF); 1224 : DUYG1 = ('EXTR' DEPINT U2 P_SUP) - ('EXTR' DEPINT U2 P_INF); 1225 : DUXL1 = (DUXG1*('COS' PHI1)) + (DUYG1*('SIN' PHI1)); 1226 : DUYL1 = (DUYG1*('COS' PHI1)) - (DUXG1*('SIN' PHI1)); 1227 : SUPTAB.'SIGNE_K1' = 'SIGN' DUYL1; 1228 : SUPTAB.'SIGNE_K2' = 'SIGN' DUXL1; 1229 : 'FINSI'; 1230 : *************************************************** 1231 : *********** TEMPERATURE A L INSTANT INST ********** 1232 : *************************************************** 1233 : 'SI' ITHER ; 1234 : 'SI' IPAP; 1235 : 'SI' PASA ; 1236 : TEPINT = 'TIRE' CHAR1 INST 'T' ; 1237 : TEPINT = 'REDU' TEPINT MAPART ; 1238 : TEPINT = TEPINT - TALPH1 ; 1239 : 'SINON' ; 1240 : K = 0 ; 1241 : 'REPETER' BLOC1 NBTET ; 1242 : K = K + 1 ; 1243 : NBRE = 'EXTR' LTHER K ; 1244 : 'SI' (NBRE '>EG' INST) ; 'QUITTER' BLOC1 ; 'FINSI' ; 1245 : 'FIN' BLOC1 ; 1246 : K = K - 1 ; 1247 : 'SI' (> ('ABS' ((NBRE-INST)/INST)) 0.001) ; 1248 : NBRE1 = 'EXTR' LTHER K ; 1249 : NBRE2 = 'EXTR' LTHER (K+1) ; 1250 : D1 = INST - NBRE1 ; D2 = NBRE2 - INST ; 1251 : TEPINT = ((('REDU' TEPER.NBRE1 MAPART)*D2)+ 1252 : (('REDU' TEPER.NBRE2 MAPART)*D1))*(1/(D1+D2)); 1253 : TEPINT = TEPINT - ('REDU' (SUPTAB.'TREFERENCE') MAPART); 1254 : 'SINON'; 1255 : TEPINT = ('REDU' TEPER.NBRE MAPART) 1256 : - ('REDU' (SUPTAB.'TREFERENCE') MAPART) ; 1257 : 'FINSI'; 1258 : 'FINSI' ; 1259 : 'SI' IFLUA; 1260 : TEP1 = TEPINT; 1261 : 'SI' ('EGA' IABC 1) ; 1262 : DELTAT = IDEP.IABC - TEMP0; 1263 : TEPINT = TEPINT - (SUPTAB.'TEMP_INI') + 1264 : ('REDU' (SUPTAB.'TREFERENCE') MAPART); 1265 : 'FINSI'; 1266 : 'SI' (IABC '>' 1); 1267 : DELTAT = (IDEP.IABC) - (IDEP.(IABC - 1)); 1268 : TEPINT = TEPINT - TEP2; DETR TEP2; 1269 : 'FINSI'; 1270 : TEPINT = TEPINT / DELTAT ; 1271 : TEP2 = TEP1; DETR TEP1; 1272 : 'FINSI'; 1273 : 'SINON'; 1274 : TEPINT = ('REDU' (SUPTAB.'TEMPERATURE') MAPART) 1275 : - ('REDU' (SUPTAB.'TREFERENCE') MAPART) ; 1276 : 'FINSI'; 1277 : 'FINSI'; 1278 : *************************************************** 1279 : ************ MATERIAU A L INSTANT INST ************ 1280 : *************************************************** 1281 : 'SI' (MATVARI 'ET' ITHER); 1282 : TEPABS = TEPINT + TALPH1 ; 1283 : MAT1 = 'VARI' 'NUAG' OBJMOD MATREDU ('EXCO' 'T' TEPABS 'T'); 1284 : 'SINON'; 1285 : MAT1 = MATREDU; 1286 : 'FINSI'; 1287 : **************************************************** 1288 : *** SOLUTIONS AUXILAIRES EN DECOUPLAGE DES MODES *** 1289 : **************************************************** 1290 : NBMIXT = 1; IM = 0; 1291 : 'SI' IMIXT; 1292 : NBMIXT = 2; 1293 : * Constantes physiques de bi-matériaux 1294 : CHAM1 = ('EXCO' 'YOUN' MAT1) 'ET' ('EXCO' 'NU ' MAT1); 1295 : 'SI' ('NON' IDANS); 1296 : CHPO1 = 'CHAN' 'CHPO' OBJMOD CHAM1; 1297 : VYO_1 = 'EXTR' CHPO1 'YOUN' PM; 1298 : VNU_1 = 'EXTR' CHPO1 'NU ' PM; 1299 : VYO_2 = VYO_1; VNU_2 = VNU_1; 1300 : 'SINON'; 1301 : CHPO1 = 'CHAN' 'CHPO' MODSUP ('REDU' CHAM1 MODSUP); 1302 : VYO_1 = 'EXTR' CHPO1 'YOUN' PM; 1303 : VNU_1 = 'EXTR' CHPO1 'NU ' PM; 1304 : CHPO1 = 'CHAN' 'CHPO' MODINF ('REDU' CHAM1 MODINF); 1305 : VYO_2 = 'EXTR' CHPO1 'YOUN' PM; 1306 : VNU_2 = 'EXTR' CHPO1 'NU ' PM; 1307 : 'FINSI'; 1308 : KSI_1 = (3. - (4. * VNU_1)); 1309 : KSI_2 = (3. - (4. * VNU_2)); 1310 : 'SI' ('EGA' &MODE 'PLANCONT'); 1311 : KSI_1 = (3. - VNU_1) / (1. + VNU_1); 1312 : KSI_2 = (3. - VNU_2) / (1. + VNU_2); 1313 : 'FINSI'; 1314 : MU_1 = VYO_1/(2.*(1. + VNU_1)); 1315 : MU_2 = VYO_2/(2.*(1. + VNU_2)); 1316 : VA1 = (KSI_1/MU_1) + (1./MU_2); 1317 : VA2 = (KSI_2/MU_2) + (1./MU_1); 1318 : EPS1 = (1./(2.*VALPI))*(LOG (VA1/VA2)); 1319 : COSH1 = VALPI*EPS1; 1320 : COSH1 = (('EXP' COSH1) + ('EXP' (COSH1*(-1.))))/2.; 1321 : VA1 = (MU_1 + (KSI_1*MU_2))*(MU_2 + (KSI_2*MU_1)); 1322 : VA2 = MU_1*MU_2*((MU_1*(1. + KSI_2)) + (MU_2*(1. + KSI_1))); 1323 : C_MATE = (COSH1*COSH1*VA1)/(4.*VA2); 1324 : SUPTAB.'C_MATE' = C_MATE; 1325 : 'SI' (('EGA' &DIME 2) 'ET' ('NON' IDANS)); 1326 : EPSLG_R = EPS1*('LOG' R1); 1327 : VA1 = 'COS' (EPSLG_R*180./VALPI); 1328 : VA2 = 'SIN' (EPSLG_R*180./VALPI); 1329 : BTA1 = ((0.5*VA1) + (EPS1*VA2))/(0.25 + (EPS1*EPS1)); 1330 : BTAPM1 = ((0.5*VA2) - (EPS1*VA1))/(0.25 + (EPS1*EPS1)); 1331 : DTA_1 = 'EXP' (0. - ((VALPI - TETAR1)*EPS1)); 1332 : DTA_2 = 'EXP' ((VALPI + TETAR1)*EPS1); 1333 : GAM_1 = (KSI_1*DTA_1) - (DTA_1**(-1.)); 1334 : GAM_2 = (KSI_2*DTA_2) - (DTA_2**(-1.)); 1335 : GAMPM_1 = (KSI_1*DTA_1) + (DTA_1**(-1.)); 1336 : GAMPM_2 = (KSI_2*DTA_2) + (DTA_2**(-1.)); 1337 : GTAR1 = EPSLG_R + (TETAR1*0.5); 1338 : COS2 = 'COS' (TETA1/2.); SIN2 = 'SIN' (TETA1/2.); 1339 : D_1 = (BTA1*GAM_1*COS2) + (BTAPM1*GAMPM_1*SIN2); 1340 : D_2 = (BTA1*GAM_2*COS2) + (BTAPM1*GAMPM_2*SIN2); 1341 : DPM_1 = (BTAPM1*GAM_1*COS2) - (BTA1*GAMPM_1*SIN2); 1342 : DPM_2 = (BTAPM1*GAM_2*COS2) - (BTA1*GAMPM_2*SIN2); 1343 : CVA_1 = ('SIN' TETA1)*('SIN' (GTAR1*180./VALPI)); 1344 : CVA_2 = ('SIN' TETA1)*('COS' (GTAR1*180./VALPI)); 1345 : COE_1 = ((R1/(2.*VALPI))**0.5)/(4.*MU_1); 1346 : COE_2 = ((R1/(2.*VALPI))**0.5)/(4.*MU_2); 1347 : 'FINSI'; 1348 : 'SI' ('EGA' &DIME 3); 1349 : NBMIXT = 2; 1350 : 'FINSI'; 1351 : 'FINSI'; 1352 : 'REPETER' BOUCMIXT NBMIXT; 1353 : IM = IM + 1; 1354 : 'SI' IMIXT; 1355 : 'SI' (('EGA' &DIME 2) 'ET' ('NON' IDANS)); 1356 : 'SI' (IM 'EGA' 1); 1357 : MOTMIX = 'MOT' 'I'; MOJET1 = 'MOT' ' J1* => '; 1358 : UX_1 = COE_1*(D_1 + (2.*DTA_1*CVA_1)); 1359 : UX_2 = COE_2*(D_2 + (2.*DTA_2*CVA_1)); 1360 : UY_1 = (-1.)*COE_1*(DPM_1 + (2.*DTA_1*CVA_2)); 1361 : UY_2 = (-1.)*COE_2*(DPM_2 + (2.*DTA_2*CVA_2)); 1362 : 'FINSI'; 1363 : 'SI' (IM 'EGA' 2); 1364 : MOTMIX = 'MOT' 'II'; 'SAUT' 1 LIGNE; 1365 : MOJET1 = 'MOT' ' J2* => '; 1366 : UX_1 = (-1.)*COE_1*(DPM_1 - (2.*DTA_1*CVA_2)); 1367 : UX_2 = (-1.)*COE_2*(DPM_2 - (2.*DTA_2*CVA_2)); 1368 : UY_1 = (-1.)*COE_1*(D_1 - (2.*DTA_1*CVA_1)); 1369 : UY_2 = (-1.)*COE_2*(D_2 - (2.*DTA_2*CVA_1)); 1370 : 'FINSI'; 1371 : * Champ déplcement dans le repère local et général 1372 : 'SI' ('NON' IDANS); 1373 : UL1 = UX_1 * 1.; UL2 = UY_1 * 1.; 1374 : 'SINON'; 1375 : UL1 = ('REDU' UX_1 PEL_1) + ('REDU' UX_2 PEL_2) + 1376 : ((('REDU' UX_1 LCOM1) + ('REDU' UX_2 LCOM1))/2.); 1377 : UL2 = ('REDU' UY_1 PEL_1) + ('REDU' UY_2 PEL_2) + 1378 : ((('REDU' UY_1 LCOM1) + ('REDU' UY_2 LCOM1))/2.); 1379 : 'FINSI'; 1380 : UG1 = (UL1*('COS' PHI1)) - (UL2*('SIN' PHI1)); 1381 : UG2 = (UL1*('SIN' PHI1)) + (UL2*('COS' PHI1)); 1382 : UG1 = 'CHAN' 'ATTRIBUT' UG1 'NATURE' 'DIFFUS'; 1383 : UG2 = 'CHAN' 'ATTRIBUT' UG2 'NATURE' 'DIFFUS'; 1384 : DEPINT = (('NOMC' UG1 U1) 'ET' ('NOMC' UG2 U2)) + DEP000; 1385 : SIGF = 'SIGM' MAT1 OBJMOD DEPINT; 1386 : IPRES = VRAI; PRESSI = 'BSIG' SIGF OBJMOD; 1387 : 'SINON'; 1388 : IPRES = VRAI; 1389 : LSUP = SUPTAB.'LEVRESUP'; LINF = SUPTAB.'LEVREINF'; 1390 : 'SI' ('EGA' &DIME 3); 1391 : IPRES = FAUX; 1392 : LSUP = LSUP 'DIFF' (LSUP 'ELEM' 'APPU' 'STRI' ELTETA); 1393 : LINF = LINF 'DIFF' (LINF 'ELEM' 'APPU' 'STRI' ELTETA); 1394 : 'FINSI'; 1395 : F11 = 'PRES' 'MASS' OBJMOD LSUP 1.; 1396 : F21 = 'PRES' 'MASS' OBJMOD LINF 1.; 1397 : 'SI' (IM 'EGA' 1); 1398 : MOTMIX = 'MOT' 'I'; MOJET1 = 'MOT' ' J1* => '; 1399 : PRESSI = F11 + F21; 1400 : 'FINSI'; 1401 : 'SI' (IM 'EGA' 2); 1402 : MOTMIX = 'MOT' 'II'; 'SAUT' 1 LIGNE; 1403 : MOJET1 = 'MOT' ' J2* => '; 1404 : PRESSI = (('EXCO' F1 F11 F2)*(-1.)) + ('EXCO' F2 F11 F1) 1405 : + (('EXCO' F1 F21 F2)*(-1.)) + ('EXCO' F2 F21 F1); 1406 : 'FINSI'; 1407 : 'SI' (IM 'EGA' 3); 1408 : MOTMIX = 'MOT' 'III'; 'SAUT' 1 LIGNE; 1409 : MOJET1 = 'MOT' ' J3* => '; 1410 : 'FINSI'; 1411 : DEPINT = 'RESO' (('RIGI' OBJMOD MAT1) 'ET' BLOQ1) PRESSI; 1412 : SIGF = 'SIGM' MAT1 OBJMOD DEPINT; 1413 : 'FINSI'; 1414 : DEPINT = 'REDU' DEPINT MAPART; 1415 : SIGF = 'REDU' SIGF OBJMOD; 1416 : SUPTAB.'G'.MOTMIX = TABLE; 1417 : ITHER = FAUX; 1418 : *************************************************** 1419 : ************* APPEL A LA PROCEDURE T_PITA ********* 1420 : *************************************************** 1421 : TAB = TABLE; 1422 : TAB.'DEPLACEMENT' = SUPTABB.'DEPLACEMENT'; 1423 : TAB.'CONTRAINTE'= SUPTABB.'CONTRAINTE'; 1424 : TAB.'CHTHETA' = SUPTAB.'CHTHETA'; 1425 : TAB.'DEPL_AUXI' = DEPINT; 1426 : TAB.'CONT_AUXI' = SIGF; 1427 : TAB.'PRES_AUXI' = PRESSI; 1428 : 'SI' ('EXIST' SUPTAB 'PARALELLE'); 1429 : TAB.'PARALELLE' = SUPTAB.'PARALELLE'; 1430 : 'FINSI'; 1431 : 'SI' ('EXIST' SUPTAB 'PRESSION'); 1432 : TAB.'PRESSION' = SUPTAB.'PRESSION'; 1433 : 'FINSI'; 1434 : 'SI' IPARTI; 1435 : TAB.'AVANCE' = SUPTAB.'AVANCE'; 1436 : 'FINSI'; 1437 : 'SI' (('EXIST' SUPTAB 'TEMPERATURE') 'OU' TESTHER); 1438 : 'SI' TESTHER; 1439 : TAB.'TEMPERATURE' = SUPTAB.'CHARGEMENT'; 1440 : 'SINON'; 1441 : TAB.'TEMPERATURE' = SUPTAB.'TEMPERATURE'; 1442 : 'FINSI'; 1443 : TAB.'TREFERENCE' = SUPTAB.'TREFERENCE'; 1444 : TAB.'TALPHAREFE' = TALPH1; 1445 : 'FINSI'; 1446 : T_PITETA TABMOD MATERI TAB; 1447 : 'SI' (TAB.'IERR'); 'QUITTER' G_THETA; 'FINSI'; 1448 : TPI = TAB.'DGDA'; 'OUBL' TAB; 1449 : 'FINSI'; 1450 : *************************************************** 1451 : ************ GRADIENT A L INSTANT INST ************ 1452 : *************************************************** 1453 : GRADEP = 'GRAD' OBJMOD MAT1 DEPINT ; 1454 : GRADEF = 'TEXT' ' ' ; 1455 : 'SI' ICOQU; GRADEF = 'GRAF' OBJMOD DEPINT; 'FINSI'; 1456 : 'SI' ITHER; 1457 : TEPEGR = 'GRAD' OBJMOD MAT1 ((E 'T' TEPINT U1) + DEP000); 1458 : 'FINSI'; 1459 : ******************************************************** 1460 : * SI LA COURBE DE TRACTION DEPEND DE LA TEMPERATURE ON * 1461 : * CALCULE LA VARIATION DE CONTRAINTE DE VON-MISES LORS * 1462 : * D'UNE AUGMENTATION (DETATE) DE LA TEMPERATURE A INST * 1463 : ******************************************************** 1464 : 'SI' ((('DIME' MODPLA) '>' 0) 'ET' ITHER 'ET' 1465 : ('NON' ('EXIST' ENEDEF INST))); 1466 : DETATE = 1.; 1467 : TEP1 = TEPABS + ('MANU' 'CHPO' MAPART 1 'T' DETATE); 1468 : EPS1 = 'EXCO' VARF 'EPSE'; 1469 : MSQ1 = 'MASQ' 'SUPERIEUR' EPS1 1.E-20; 1470 : VMI1 = ('CHAN' ('VMIS' OBJMOD SIGF MAT1) 1471 : 'TYPE' 'SCALAIRE')*MSQ1; 1472 : DETAVM = VMI1 * 0.; 1473 : 'REPETER' BCMOD2 NBOBJ; 1474 : MODI = TABMOD.&BCMOD2; 1475 : VM1 = 'REDU' VMI1 MODI; 1476 : 'SI' ('EXIS' MODPLA &BCMOD2); 1477 : 'SI' ('EGA' MODPLA.&BCMOD2 1); 1478 : MA1 = 'VARI' 'NUAG' MODI ('MATE' MODI 1479 : 'TRAC' TABTRA.&BCMOD2) TEP1; 1480 : VM2 = 'VARI' 'NUAG' MODI (E 'TRAC' MA1 'SIGM') 1481 : ('REDU' EPS1 MODI) 'STRESSES' 'SCALAIRE'; 1482 : VM2 = (E VM2 'SIGM' S) * ('REDU' MSQ1 MODI); 1483 : 'FINSI'; 1484 : 'SI' (('EGA' MODPLA.&BCMOD2 2) 'OU' 1485 : ('EGA' MODPLA.&BCMOD2 3)); 1486 : MA1 = 'VARI' 'NUAG' MODI ('REDU' MATERI MODI) TEP1; 1487 : EPS2 = 'REDU' EPS1 MODI; 1488 : VM2 = 'CHAN' 'STRESSES' MODI (E MA1 'SIGY' S); 1489 : 'SI' ('EGA' MODPLA.&BCMOD2 2); 1490 : HSCAL1 = 'EXCO' MA1 'H' 'SCAL'; 1491 : VM2 = VM2 + (('CHAN' 'STRESSES' MODI HSCAL1)*EPS2); 1492 : 'FINSI'; 1493 : VM2 = VM2 * ('REDU' MSQ1 MODI); 1494 : 'FINSI'; 1495 : DETAVM = DETAVM + ((VM2 - VM1) / DETATE); 1496 : 'FINSI'; 1497 : 'FIN' BCMOD2; 1498 : 'FINSI'; 1499 : **************************************************** 1500 : ******* EN CAS DE CALCUL EN VISCO_PLASTICITE ******* 1501 : **************************************************** 1502 : 'SI' IFLUA; 1503 : 'SI' ('EGA' ITYPEF 1); 1504 : CHAF1 = 'CHAN' 'STRESSES' OBJMOD (E 'AF1' MAT1 S); 1505 : CHAF2 = 'CHAN' 'STRESSES' OBJMOD (E 'AF2' MAT1 S); 1506 : CHAF3 = 'CHAN' 'STRESSES' OBJMOD (E 'AF3' MAT1 S); 1507 : 'FINSI'; 1508 : 'SI' ('EGA' ITYPEF 6); 1509 : CHAF0 = 'CHAN' 'STRESSES' OBJMOD (E 'AF0' MAT1 S); 1510 : CHAF1 = 'CHAN' 'STRESSES' OBJMOD (E 'AF1' MAT1 S); 1511 : CHAF2 = 'CHAN' 'STRESSES' OBJMOD (E 'AF2' MAT1 S); 1512 : CHAF3 = 'CHAN' 'STRESSES' OBJMOD (E 'AF3' MAT1 S); 1513 : 'FINSI'; 1514 : 'FINSI'; 1515 : 1516 : ******************************************************* 1517 : **** CRITERE DE DECHARGE DES CONTRAINTES **** 1518 : ******************************************************* 1519 : *** 1520 : *** EVALUATION EN ELASTO-PLASTICITE OU THERMO-ELASTO-PLASTICITE 1521 : *** PAR COMPARAISON AVEC UN CALCUL EN ELASTICITE NON-LINEAIRE 1522 : *** EN PRENANT POUR REFERENCE LES CONTRAINTES DE VON-MISES DU 1523 : *** CALCUL RENDU PAR PASAPAS ET LES CONTRAINTES EQUIVALENTES LUES 1524 : *** SUR LES COURBES DE TRACTION 1525 : *** 1526 : 'SI' ('NON' ('EXIST' (SUPTAB.'CRITERE_DECHARGE') INST)) ; 1527 : 1528 : 'SI' (('NON' ('EXIST' ENEDEF INST)) 'ET' ('EGA' ITYPEF 99) 'ET' IPAP); 1529 : 1530 : EXISCRIT = FAUX ; 1531 : VMITOT1 = 0. ; 1532 : VMITOT2 = 0. ; 1533 : 1534 : 'REPETER' BCMOD0 NBOBJ; 1535 : 1536 : MODI = TABMOD.&BCMOD0 ; 1537 : MATI = 'REDU' MAT1 MODI ; 1538 : EPSE1 = 'EXCO' VARF 'EPSE' ; 1539 : EPSET = 'REDU' EPSE1 MODI ; 1540 : MSQ = 'MASQ' 'SUPERIEUR' EPSET 1.E-6 ; 1541 : 1542 : ************ 1543 : 'SI' ('EXIS' MODPLA &BCMOD0) ; 1544 : *** MODPLA : table indicée par entier pour stocker les modèles 1545 : *** 1 si le modèle est plastique isotrope. Alors une 1546 : *** nouvelle courbe de traction EPSE-SIGMA est faite. 1547 : *** 2 si le modèle est plastique cinématique 1548 : 1549 : EXISCRIT = VRAI ; 1550 : TEPABS = TEPINT + TALPH1 ; 1551 : 1552 : YOU = 'CHAN' 'STRESSES' MODI ('EXCO' MATI 'YOUN') ; 1553 : 1554 : 'SI' ('EGA' MODPLA.&BCMOD0 1); 1555 : * *modèle est plastique isotrope. on utilise la courbe de traction TABT 1556 : MATA = 'VARI' 'NUAG' MODI ('MATE' MODI 1557 : 'TRAC' TABTRA.&BCMOD0) TEPABS ; 1558 : * *VMIS1 = contraintes de Von-Mises en elastoplastique 1559 : VMIS1 = 'CHAN' ('VMIS' MODI SIGF MATA) 'TYPE' 'SCALAIRE'; 1560 : EPELAST = 'EXCO' (VMIS1*(YOU**(-1))) 'SCAL' 'EPSE' ; 1561 : EPSTOT = EPELAST + EPSET ; 1562 : * *VMIS2 = contraintes déduites des déformations équivalentes par la co 1563 : VMIS2 = 'VARI' 'NUAG' MODI (E 'TRAC' MATA 'SIGM') 1564 : EPSTOT 'STRESSES' 'SCALAIRE'; 1565 : 'FINSI'; 1566 : 1567 : 'SI' ('EGA' MODPLA.&BCMOD0 2) ; 1568 : * *modèle est plastique cinematique, cas ou SIGY et H sont des évolution 1569 : VMIS1 = 'CHAN' ('VMIS' MODI SIGF MATI) 'TYPE' 'SCALAIRE'; 1570 : VMIS22 = 'CHAN' 'STRESSES' MODI (E MATI 'SIGY' S) ; 1571 : HSCAL = 'EXCO' MATI 'H' 'SCAL'; 1572 : VMIS2 = VMIS22 + (('CHAN' 'STRESSES' MODI HSCAL) * EPSET); 1573 : 'FINSI'; 1574 : 1575 : 'SI' (('EGA' MODPLA.&BCMOD0 1) 'OU' ('EGA' MODPLA.&BCMOD0 2)); 1576 : VMIS1P = VMIS1 * MSQ ; 1577 : VMIS1S = 'INTG' MODI VMIS1P ; 1578 : VMIS2P = VMIS2 * MSQ ; 1579 : VMIS2S = 'INTG' MODI VMIS2P ; 1580 : 'SI' ('EGA' &BCMOD0 1) ; 1581 : VMITOT1 = VMIS1S ; 1582 : VMITOT2 = VMIS2S ; 1583 : 'SINON' ; 1584 : VMITOT1 = VMITOT1 + VMIS1S ; 1585 : VMITOT2 = VMITOT2 + VMIS2S ; 1586 : 'FINSI' ; 1587 : 'FINSI'; 1588 : 1589 : 'SINON'; 1590 : *** modèle élastoplastique et modèle plastique cinématique 1591 : *** avec caractéristiques independantes de la température 1592 : 1593 : CRIT = FAUX ; 1594 : 1595 : 'SI' ('EXIST' MATI 'TRAC') ; 1596 : * *extraction de la courbe de traction du modele MODI 1597 : TRACTI = 'EXTR' MATI 'TRAC' 1 1 1 ; 1598 : PEPSO = 'EXTR' TRACTI 'ABSC' ; 1599 : PSIGM = 'EXTR' TRACTI 'ORDO' ; 1600 : TRACTI = 'EVOL' 'MANU' 'EPSE' PEPSO 'SIGM' PSIGM ; 1601 : * *VMIS1 = contraintes de Von-Mises en elastoplastique 1602 : VMIS1 = 'CHAN' ('VMIS' MODI ('REDU' SIGF MODI) MATI) 1603 : 'TYPE' 'SCALAIRE'; 1604 : YOU = 'CHAN' 'STRESSES' MODI ('EXCO' MATI 'YOUN') ; 1605 : EPELAST = 'EXCO' (VMIS1*(YOU**(-1))) 'SCAL' 'EPSE' ; 1606 : EPSTOT = EPELAST + EPSET ; 1607 : * *VMIS2 = contraintes déduites des déformations équivalentes par la courb 1608 : VMIS2 = 'VARI' MODI EPSTOT TRACTI 'STRESSES' 'SCALAIRE'; 1609 : CRIT = VRAI ; 1610 : 1611 : 'SINON'; 1612 : 'SI' (('EXIST' MATI 'SIGY') 'ET' ('EXIST' MATI 'H')) ; 1613 : * *modèle est plastique cinematique traité ici séparément du cas ou SIGY e 1614 : * *c'est inutile car MAT1 est déja instantié en température mais il faudra 1615 : * *MODPLA dans son ensemble avec ZONE et une identification de automatique 1616 : VMIS1 = 'CHAN' ('VMIS' MODI SIGF MATI) 'TYPE' 'SCALAIRE'; 1617 : VMIS22 = 'CHAN' 'STRESSES' MODI (E MATI 'SIGY' S) ; 1618 : HSCAL = 'EXCO' MATI 'H' 'SCAL'; 1619 : VMIS2 = VMIS22 + (('CHAN' 'STRESSES' MODI HSCAL) * EPSET); 1620 : CRIT = VRAI ; 1621 : 'FINSI'; 1622 : 1623 : 'FINSI'; 1624 : 1625 : 'SI' CRIT ; 1626 : EXISCRIT = VRAI ; 1627 : 1628 : VMIS1P = VMIS1* MSQ ; 1629 : VMIS1S = 'INTG' MODI VMIS1P ; 1630 : VMIS2P = VMIS2 * MSQ ; 1631 : VMIS2S = 'INTG' MODI VMIS2P ; 1632 : 1633 : VMITOT1 = VMITOT1 + VMIS1S ; 1634 : VMITOT2 = VMITOT2 + VMIS2S ; 1635 : 1636 : 'FINSI' ; 1637 : 1638 : 1639 : 'FINSI'; 1640 : 'FIN' BCMOD0; 1641 : 1642 : 'SI' EXISCRIT; 1643 : 'SI' ('EGA' VMITOT1 0.) ; 1644 : MESS 'Pas de déformations plastiques supérieures à 1.E-6' ; 1645 : SUPTAB.'CRITERE_DECHARGE'.INST = 1.0000 ; 1646 : 'SINON' ; 1647 : * MESS 'VMITOT1 = ' VMITOT1 ; 1648 : * MESS 'VMITOT2 = ' VMITOT2 ; 1649 : MESS 'Critère de décharge :' (VMITOT2/VMITOT1) ; 1650 : SUPTAB.'CRITERE_DECHARGE'.INST = (VMITOT2/VMITOT1) ; 1651 : 'FINSI'; 1652 : 'FINSI'; 1653 : 1654 : 'FINSI'; 1655 : 'FINSI'; 1656 : 1657 : ******************************************************* 1658 : **** ENERGIE DE DEFORMATION ELASTIQUE ET PLASTIQUE **** 1659 : ******************************************************* 1660 : *** 1661 : *** DENSITE D'ENERGIE EN ELASTO OU THERMO-ELASTO-PLASTICITE ET 1662 : *** DENSITE D'ENERGIE LIEE A LA VARIATION DE COURBE DE TRACTION 1663 : *** 1664 : 'SI' (('NON' ('EXIST' ENEDEF INST)) 'OU' IMIXT); 1665 : IAVAN = VRAI; 1666 : 'SI' ('EGA' ITYPEF 99); 1667 : WELAS = 0.5*('ENER' OBJMOD SIGF ('ELAS' OBJMOD SIGF MAT1)); 1668 : 'SI' (IPAP 'ET' ('NON' IMIXT)); 1669 : 'SI' (('EGA' IABC 1) 'ET' ('NON' IREPRI)) ; 1670 : VMI1 = 'CHAN' ('VMIS' OBJMOD SIGF MAT1) 'TYPE' 'SCALAIRE'; 1671 : 'SI' ICOQU; VMI1 = VMI1*OBJMOD EPAICH; 'FINSI'; 1672 : WPLAS = 0.5*VMI1*(E VARF 'EPSE'); 1673 : 'SI' ((('DIME' MODPLA) '>' 0) 'ET' ITHER); 1674 : WVMIS = 0.5*DETAVM*(E VARF 'EPSE') ; 1675 : 'FINSI'; 1676 : 'SINON' ; 1677 : VMI1 = 'CHAN' (0.5*(('VMIS' OBJMOD SIG1 MAT1) + 1678 : ('VMIS' OBJMOD SIGF MAT1))) 'TYPE' 'SCALAIRE'; 1679 : 'SI' ICOQU; VMI1 = VMI1*OBJMOD EPAICH; 'FINSI'; 1680 : WPLAS = WPLAS + (VMI1*(E (VARF - VAR1) 'EPSE')); 1681 : 'SI' ((('DIME' MODPLA) '>' 0) 'ET' ITHER); 1682 : WVMIS = WVMIS + ((0.5*(DETAV1 + DETAVM))* 1683 : (E (VARF - VAR1) 'EPSE')); 1684 : 'FINSI'; 1685 : 'FINSI' ; 1686 : ENERM = WELAS + WPLAS; 1687 : SIG1 = SIGF; VAR1 = VARF; 1688 : 'SI' ((('DIME' MODPLA) '>' 0) 'ET' ITHER); DETAV1 = DETAVM; 1689 : 'FINSI'; 1690 : 'SINON'; 1691 : ENERM = WELAS; IAVAN = FAUX; 1692 : 'FINSI'; 1693 : 'FINSI'; 1694 : *** 1695 : *** DENSITE D'ENERGIE POUR LES FLUAGES DONT ON A UNE 1696 : *** EXPRESSION EXPLICITE DE L'INTEGRATION SUR LE TEMPS 1697 : *** 1698 : 'SI' ('EGA' ITYPEF 1); 1699 : UN1 = CHAF1 * (CHAF1 ** (-1.)); 1700 : COE1 = ((MINI (CHAF2 + UN1)) + (MAXI (CHAF2 + UN1)))/2.; 1701 : COE2 = ((MINI CHAF3) + (MAXI CHAF3))/2.; 1702 : VMI1 = E S ('VMIS' OBJMOD SIGF MAT1); 1703 : ENERM = (CHAF2*((CHAF2 + UN1)**(-1.)))*CHAF1* 1704 : (VMI1**COE1)*CHAF3*(INST**(COE2 - 1)); 1705 : 'SI' ICOQU; ENERM = ENERM*OBJMOD EPAICH; 'FINSI'; 1706 : 'FINSI'; 1707 : 'SI' ('EGA' ITYPEF 6); 1708 : VMI1 = E S ('VMIS' OBJMOD SIGF MAT1); 1709 : ENERM1 = (1./2.)*CHAF1*(VMI1**2.); 1710 : ENERM2 = (2./3.)*CHAF2*(VMI1**3.); 1711 : ENERM3 = (3./4.)*CHAF3*(VMI1**4.); 1712 : ENERM = ENERM1 + ENERM2 + ENERM3; 1713 : 'SI' ICOQU; ENERM = ENERM*OBJMOD EPAICH; 'FINSI'; 1714 : 'FINSI'; 1715 : *** 1716 : *** ON N'A PAS UNE EXPRESSION EXPLICITE DE 1717 : *** L'INTEGRATION DU FLUAGE SUR LE TEMPS 1718 : *** 1719 : 'SI' (('>' ITYPEF 1) 'ET' ('<' ITYPEF 6)); 1720 : SIGMOY = 0.5*(SIG1 + SIGF); 1721 : 'SI' (('EGA' IABC 1) 'ET' ('NON' IREPRI)); 1722 : ENERM = 'ENER' OBJMOD VITDFI SIGMOY; 1723 : 'SINON' ; 1724 : ENERM = ENERM + ('ENER' OBJMOD (VITDFI - VDI1) SIGMOY); 1725 : 'FINSI' ; 1726 : SIG1 = SIGF; VDI1 = VITDFI; 1727 : 'FINSI'; 1728 : *** 1729 : *** ON STOCKE L'ENEGIE DANS UNE TABLE 1730 : *** 1731 : 'SI' IPAP; 1732 : ENEDEF.INST = ENERM; 1733 : 'SI' ((('DIME' MODPLA) '>' 0) 'ET' ITHER); 1734 : ENEVON.INST = WVMIS; 1735 : 'FINSI'; 1736 : 'FINSI'; 1737 : *** 1738 : *** SI L'ENEGIE EST DEJA CALCULEE ON LE RESTITUE 1739 : *** 1740 : 'SINON'; 1741 : IAVAN = FAUX; ENERM = ENEDEF.INST; 1742 : 'SI' ((('DIME' MODPLA) '>' 0) 'ET' ITHER); 1743 : WVMIS = ENEVON.INST; 1744 : 'FINSI'; 1745 : 'FINSI'; 1746 : **************************************************** 1747 : ********** RECUPERATION DU POINT A AVANCER ********* 1748 : **************************************************** 1749 : 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 1750 : 'SI' (IPAP 'ET' ('NON' IMIXT)); 1751 : SUPTAB.'G'.INST = TABLE; 1752 : 'FINSI'; 1753 : TTETA*'TABLE' = SUPTAB.'CHTHETA'; 1754 : INT = 'INDEX' TTETA; 1755 : 'SI' IPARTI; 1756 : 'SI' ('EGA' ('TYPE' (SUPTAB.'AVANCE')) 'MAILLAGE'); 1757 : PMA = 'CHAN' 'POI1' (SUPTAB.'AVANCE'); 1758 : NBOU = ('NBNO' PMA) + 1; 1759 : 'SINON'; 1760 : PMA = SUPTAB.'AVANCE'; NBOU = 2; 1761 : 'FINSI'; 1762 : 'SINON'; 1763 : NBOU = 'DIME' TTETA; 1764 : 'FINSI'; 1765 : 'FINSI'; 1766 : 'SI' (('EGA' &DIME 2) 'OU' ICOQU); 1767 : NBOU = 1; 1768 : 'FINSI'; 1769 : ************************************************** 1770 : ******** BOUCLE SUR LES POINTS A AVANCER ******* 1771 : ************************************************** 1772 : 'REPETER' BCNOEU NBOU; 1773 : 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 1774 : 'SI' (&BCNOEU 'EGA' NBOU); 1775 : PM = MOT 'GLOBAL'; 1776 : NUNOE = 'CHAI' ' ' PM ' '; 1777 : 'SINON'; 1778 : PM = INT.&BCNOEU; 1779 : 'SI' IPARTI; 1780 : 'SI' ('EGA' ('TYPE' (SUPTAB.'AVANCE')) 'MAILLAGE'); 1781 : PM = 'POIN' PMA &BCNOEU; 1782 : 'SINON'; 1783 : PM = SUPTAB.'AVANCE'; 1784 : 'FINSI'; 1785 : 'FINSI'; 1786 : NUNOE = 'NOEU' PM; 1787 : 'FINSI'; 1788 : TETA = TTETA.PM; 1789 : 'FINSI'; 1790 : 'SI' (('EGA' &DIME 2) 'OU' ICOQU); 1791 : TETA = SUPTAB.'CHTHETA'; 1792 : 'FINSI'; 1793 : ************************************************** 1794 : ************* GRADIANT DU CHAMP THETA ************ 1795 : ************************************************** 1796 : TETA = TETA + DEP000; 1797 : TETAGR = 'GRAD' OBJMOD MAT1 TETA ; 1798 : DIVTETA = (E GR1 TETAGR S)+(E GR5 TETAGR S)+(E GR9 TETAGR S); 1799 : ************************************************** 1800 : **** LES COMPOSANTES DU CHAMP THETA EN MCHAML **** 1801 : ************************************************** 1802 : TETX = 'CHAN' 'CHAM' OBJMOD (E U1 TETA S) 'STRESSES'; 1803 : TETY = 'CHAN' 'CHAM' OBJMOD (E U2 TETA S) 'STRESSES'; 1804 : 'SI' (&DIME 'EGA' 3) ; 1805 : TETZ = 'CHAN' 'CHAM' OBJMOD (E U3 TETA S) 'STRESSES'; 1806 : 'FINSI'; 1807 : ******************************************************** 1808 : *********** SI LE MATERIAU N'EST PAS CONSTANT ********** 1809 : *** S60 = 0.5*(grad D)*THETA*(EPSI elas)*(EPSI elas) *** 1810 : ********* S70 = Tr(sigma)*T*(Grad Alpha)*THETA ********* 1811 : ******************************************************** 1812 : ***Détermination de rho en cas de calcul en dynamique*** 1813 : 'SI' ('EXIST' SUPTAB 'VITESSE') ; 1814 : RHO1 = 'REDU' (E MAT1 'RHO' S) OBJMOD; 1815 : RHO11= 'CHAN' 'CHPO' OBJMOD RHO1 ; 1816 : 'FINSI'; 1817 : *********************************************** 1818 : 'SI' MATVARI; 1819 : *** Le coefficient de Poisson est constant *** 1820 : NU1 = 'REDU' (E MAT1 'NU' S) OBJMOD; 1821 : NU1 = E NU1 S 'NU'; 1822 : ****** Gradient de Module d'young ****** 1823 : 'SI' YOUVARI; 1824 : YOU1 = 'REDU' (E MAT1 'YOUN' S) OBJMOD; 1825 : YOUGR = GRA000; 1826 : I = 0; 1827 : 'REPETER' NBJ2 NBOBJ; 1828 : I = I + 1; 1829 : YO1 = 'CHAN' 'CHPO' TABMOD.I 1830 : ('REDU' (E MAT1 'YOUN' S) TABMOD.I); 1831 : YOUGR = YOUGR + ('GRAD' TABMOD.I MAT1 (('NOMC' U1 YO1) 1832 : + ('REDU' DEP000 ('EXTR' YO1 'MAIL')))); 1833 : 'FIN' NBJ2; 1834 : YOU1 = ((E GR1 YOUGR S)*OBJMOD TETX) + 1835 : ((E GR2 YOUGR S)*OBJMOD TETY); 1836 : 'SI' (&DIME 'EGA' 3); 1837 : YOU1 = YOU1 + ((E GR3 YOUGR S)*OBJMOD TETZ); 1838 : 'FINSI'; 1839 : YOU1 = E YOU1 S 'YOUN'; 1840 : DMAT = 'MATE' OBJMOD 'YOUN' YOU1 'NU' NU1; 1841 : SIGPRIM = ('HOOK' OBJMOD DMAT)*OBJMOD 1842 : ('ELAS' OBJMOD SIGF MAT1); 1843 : S60 = 'INTG' OBJMOD (0.5*('ENER' OBJMOD 1844 : SIGPRIM ('ELAS' OBJMOD SIGF MAT1))); 1845 : 'FINSI'; 1846 : ****** Gradient de Coefficient de Dilatation ****** 1847 : 'SI' (ITHER 'ET' ALFVARI); 1848 : ALF1 = 'REDU' (E MAT1 'ALPH' S) OBJMOD; 1849 : ALFGR = GRA000; I = 0; 1850 : 'REPETER' NBJ3 NBOBJ; 1851 : I = I + 1; 1852 : AL1 = 'CHAN' 'CHPO' TABMOD.I 1853 : ('REDU' (E MAT1 'ALPH' S) TABMOD.I); 1854 : ALFGR = ALFGR + ('GRAD' TABMOD.I MAT1 (('NOMC' U1 AL1) 1855 : + ('REDU' DEP000 ('EXTR' AL1 'MAIL')))); 1856 : 'FIN' NBJ3; 1857 : ALF1 = ((E GR1 ALFGR S)*OBJMOD TETX) + 1858 : ((E GR2 ALFGR S)*OBJMOD TETY); 1859 : 'SI' (&DIME 'EGA' 3) ; 1860 : ALF1 = ALF1 + ((E GR3 ALFGR S)*OBJMOD TETZ); 1861 : 'FINSI' ; 1862 : ALF1 = E ALF1 S 'ALPH'; 1863 : DMAT = 'MATE' OBJMOD 'YOUN' 1. 'NU' NU1 'ALPH' ALF1; 1864 : S70 = 'INTG' OBJMOD ('ENER' OBJMOD SIGF ('ELASTI' 1865 : OBJMOD ('THETA' OBJMOD TEPINT DMAT) DMAT)); 1866 : 'FINSI'; 1867 : 'FINSI'; 1868 : *********************************************** 1869 : ******** S40 = Tr(sigma)*(Grad T)*THETA ******* 1870 : *********************************************** 1871 : 'SI' ITHER; 1872 : TEMU = ((E GR1 TEPEGR S)*OBJMOD TETX) + 1873 : ((E GR2 TEPEGR S)*OBJMOD TETY) ; 1874 : 'SI' (&DIME 'EGA' 3) ; 1875 : TEMU = TEMU + ((E GR3 TEPEGR S)*OBJMOD TETZ); 1876 : 'FINSI' ; 1877 : TEMU = 'CHAN' 'TYPE' ('EXCO' 'SCAL' TEMU 'T') 'TEMPERATURES'; 1878 : EPSTU = 'ELAS' OBJMOD ('THETA' OBJMOD MAT1 TEMU) MAT1; 1879 : S40 = 'INTG' OBJMOD ('ENER' OBJMOD SIGF EPSTU); 1880 : 'FINSI'; 1881 : **************************************************** 1882 : ********* S120 = wvmis*(Grad T)*THETA avec ********* 1883 : * wvmis = SOME d(Von_mises)/d(Temperature) d(EPSE) * 1884 : **************************************************** 1885 : 'SI' ((('DIME' MODPLA) '>' 0) 'ET' ITHER); 1886 : TEMU = 'CHAN' 'TYPE' ('EXCO' 'T' TEMU 'SCAL') 'SCALAIRE'; 1887 : S120 = 'INTG' OBJMOD (WVMIS * TEMU); 1888 : 'FINSI'; 1889 : ********************************************************* 1890 : *** Contribution due a la force au fond de la fissure *** 1891 : ***************** S50 = F*(grad U)*THETA **************** 1892 : ********************************************************* 1893 : 'SI' IPRES ; 1894 : 'SI' ('NON' IMIXT); 1895 : 'SI' PASA ; 1896 : PREINT = ('TIRE' CHAR1 INST 'MECA') 'REDU' MAPART ; 1897 : 'SINON' ; 1898 : MOC1 = 'CHAIN' 'C' ('TYPE' PRESSI); 1899 : 'SI' ('EGA' MOC1 'CCHARGEME'); 1900 : PREINT = ('TIRE' PRESSI INST) 'REDU' MAPART ; 1901 : 'SINON'; 1902 : PREINT = PRESSI 'REDU' MAPART ; 1903 : 'FINSI'; 1904 : 'FINSI' ; 1905 : 'SINON' ; 1906 : PREINT = PRESSI 'REDU' MAPART ; 1907 : 'FINSI' ; 1908 : GRADCH = 'CHANGER' 'CHPO' OBJMOD GRADEP ; 1909 : DEPLX = ((E GR1 GRADCH S)*(E U1 TETA S)) + 1910 : ((E GR2 GRADCH S)*(E U2 TETA S)) ; 1911 : DEPLY = ((E GR4 GRADCH S)*(E U1 TETA S)) + 1912 : ((E GR5 GRADCH S)*(E U2 TETA S)) ; 1913 : DEP0 = DEP000 + ('NOMC' DEPLX U1) + ('NOMC' DEPLY U2); 1914 : 'SI' (&DIME 'EGA' 3) ; 1915 : DEPLX = DEPLX + ((E GR3 GRADCH S)*(E U3 TETA S)); 1916 : DEPLY = DEPLY + ((E GR6 GRADCH S)*(E U3 TETA S)); 1917 : DEPLZ = ((E GR7 GRADCH S)*(E U1 TETA S)) + 1918 : ((E GR8 GRADCH S)*(E U2 TETA S)) + 1919 : ((E GR9 GRADCH S)*(E U3 TETA S)) ; 1920 : DEP0 = ('NOMC' DEPLX U1) + ('NOMC' DEPLY U2) + 1921 : ('NOMC' DEPLZ U3); 1922 : 'FINSI' ; 1923 : 'SI' ICOQU ; 1924 : GRAFCH = 'CHANGER' 'CHPO' OBJMOD GRADEF ; 1925 : BXX = E 'BX,X' GRAFCH S; 1926 : BXY = E 'BX,Y' GRAFCH S; 1927 : BYX = E 'BY,X' GRAFCH S; 1928 : BYY = E 'BY,Y' GRAFCH S; 1929 : DEPFX = 'NOMC' 'RX' ( (BXX*(E 'UX' TETA S))+ 1930 : (BXY*(E 'UY' TETA S)) ); 1931 : DEPFY = 'NOMC' 'RY' ( (BYX*(E 'UX' TETA S))+ 1932 : (BYY*(E 'UY' TETA S)) ); 1933 : DEP0 = DEP000 + DEPFX + DEPFY; 1934 : 'FINSI' ; 1935 : S50 = 'XTY' PREINT DEP0 MOTF MOTU ; 1936 : 'FINSI'; 1937 : ************************************************** 1938 : **** Contribution due a l'energie mecanique ****** 1939 : ************** S10 = w*(div THETA) *************** 1940 : ******* S20 = sigma*(grad U)*(grad THETA) ******** 1941 : ************************************************** 1942 : S10 = 'INTG' OBJMOD (ENERM*OBJMOD DIVTETA) ; 1943 : 'SI' ICOQU; 1944 : S20 = 'INTG' OBJMOD ('WORK' OBJMOD SIGF 1945 : (GRADEP*OBJMOD TETAGR) (GRADEF*OBJMOD TETAGR)) ; 1946 : 'SINON'; 1947 : S20 = 'INTG' OBJMOD ('WORK' OBJMOD SIGF 1948 : (GRADEP*OBJMOD TETAGR)) ; 1949 : 'FINSI'; 1950 : **************************************************** 1951 : ** Calcul des termes supplementaires en dynamique ** 1952 : **************************************************** 1953 : 'SI' ('EXIST' SUPTAB 'VITESSE') ; 1954 : RH1 = 'CHAN' 'CHAM' RHO11 OBJMOD STRESSES ; 1955 : VITF = 'CHAN' 'CHAM' OBJMOD VITF 'STRESSES'; 1956 : ATT5 = ((E U1 VITF)**2) + ((E U2 VITF)**2) ; 1957 : S300 = 'INTG' OBJMOD (0.5*(RH1 * ATT5 * DIVTETA)) ; 1958 : ATT61 = ((E GR1 GRADEP 'SCAL')*TETX) + ((E GR2 GRADEP 'SCAL')*TETY) ; 1959 : ATT62 = ((E GR4 GRADEP 'SCAL')*TETX) + ((E GR5 GRADEP 'SCAL')*TETY) ; 1960 : ATT6 = ((E U1 VITF 'SCAL')*ATT61) + ((E U2 VITF 'SCAL')*ATT62) ; 1961 : S400 = 'INTG' OBJMOD(RH1 * ATT6 ); 1962 : 'SI' ('EGA' IABC 1); 1963 : TEMP22 = TEMP1; 1964 : S401 = S400; 1965 : S500 = S400; 1966 : 'SINON' ; 1967 : 'SI' ('EGA' IABC 2); 1968 : * 1969 : ** calcul du pas de temps DT en dynamique 1970 : * 1971 : DT1 = TEMP1 - TEMP22; 1972 : 'FINSI'; 1973 : S500 = (S400 - S401) / DT1 ; 1974 : S401 = S400; 1975 : 'FINSI' ; 1976 : 'FINSI'; 1977 : ******************************************************* 1978 : ** Terme supplementaire en cas de materiaux composite * 1979 : ********* integrale sur la ligne d'interface ********** 1980 : ************ S100 = (W(b) - W(a))*TETA(x) ************* 1981 : ** S110 = SIGF*n*[ (dU/dX)(b) - (dU/dX)(a) ]*TETA(x) ** 1982 : ****** SIGF*n = Force agissant sur l'interface ******** 1983 : ******************************************************* 1984 : 'SI' IINTER ; 1985 : I = 0; 1986 : 'REPETER' NBJ4 (NBOBJ - 1); 1987 : I = I + 1; 1988 : OBJINT = 'MODE' LINTER.I 'MECANIQUE' 'ELASTIQUE'; 1989 : TETXL = 'REDU' LINTER.I (E U1 TETA S); 1990 : TETXLC = 'CHAN' 'CHAM' OBJINT TETXL 'STRESSES'; 1991 : *** 1992 : ENEMA = 'REDU' LINTER.I ('CHAN' 'CHPO' TABMOD.I 1993 : ('REDU' TABMOD.I ENERM)); 1994 : ENEMB = 'REDU' LINTER.I ('CHAN' 'CHPO' TABMOD.(I + 1) 1995 : ('REDU' TABMOD.(I + 1) ENERM)); 1996 : ENRMAL = 'CHAN' 'CHAM' OBJINT ENEMA 'STRESSES'; 1997 : ENRMBL = 'CHAN' 'CHAM' OBJINT ENEMB 'STRESSES'; 1998 : S100 = S100 + ('INTG' OBJINT 1999 : ((ENRMBL - ENRMAL) * OBJINT TETXLC)); 2000 : *** 2001 : GRADA = 'REDU' LINTER.I ('CHAN' 'CHPO' TABMOD.I 2002 : ('REDU' TABMOD.I GRADEP)); 2003 : GRADB = 'REDU' LINTER.I ('CHAN' 'CHPO' TABMOD.(I + 1) 2004 : ('REDU' TABMOD.(I + 1) GRADEP)); 2005 : UXXAL = 'CHAN' 'CHAM' OBJINT (E GR1 GRADA S) 'STRESSES'; 2006 : UXXBL = 'CHAN' 'CHAM' OBJINT (E GR1 GRADB S) 'STRESSES'; 2007 : UYXAL = 'CHAN' 'CHAM' OBJINT (E GR4 GRADA S) 'STRESSES'; 2008 : UYXBL = 'CHAN' 'CHAM' OBJINT (E GR4 GRADB S) 'STRESSES'; 2009 : SIGML = 'REDU' LINTER.I ('CHAN' 'CHPO' OBJMOD SIGF); 2010 : SIXXL = 'CHAN' 'CHAM' OBJINT (E SM1 SIGML S) 'STRESSES'; 2011 : SIXYL = 'CHAN' 'CHAM' OBJINT (E SM4 SIGML S) 'STRESSES'; 2012 : AAAA1 = (SIXXL * OBJINT (UXXBL - UXXAL)) + 2013 : (SIXYL * OBJINT (UYXBL - UYXAL)); 2014 : S110 = S110 + ('INTG' OBJINT (AAAA1*OBJINT TETXLC)); 2015 : 'FIN' NBJ4; 2016 : 'FINSI'; 2017 : 2018 : ************************************************** 2019 : ******** RASSEMBLAGE DE DIFFERENTS TERMES ******** 2020 : ************************************************** 2021 : GMCANI = S20 - S10 - S60 - S100 + S110 ; 2022 : GTERMI = S40 + S70 - S120 ; 2023 : GPRESS = 0. - S50 ; 2024 : *Regroupement des termes en cas de calcul en dynamique* 2025 : 'SI' ('EXIST' SUPTAB 'VITESSE'); 2026 : GDYN = S300 + S500 ; 2027 : GTOTA = GMCANI + GTERMI + GPRESS + GDYN ; 2028 : 'SINON'; 2029 : GTOTA = GMCANI + GTERMI + GPRESS ; 2030 : 'FINSI'; 2031 : *************************************************** 2032 : ****** STOCKAGE DES RESULTATS DANS SUPTAB.'G' ***** 2033 : *************************************************** 2034 : C1 = C GMCANI ' '; C2 = C GTERMI ' '; 2035 : C3 = C GPRESS ' '; C4 = C GTOTA; 2036 : 'SI' IPAP; 2037 : **Affichage de G dans le cas d'un calcul en dynamique** 2038 : 'SI' ('EXIST' SUPTAB 'VITESSE') ; 2039 : 'SI' (('EGA' &DIME 2 )'OU'('EGA' &DIME 3)) ; 2040 : 'MESS' INST' 'GTOTA; 2041 : PROVALG = PROVALG ET (PROG GTOTA); 2042 : SUPTAB.'G'.INST = GTOTA; 2043 : 'FINSI'; 2044 : ******************************************************* 2045 : 'SINON'; 2046 : 'SI' (('EGA' &DIME 2) 'OU' ICOQU); 2047 : 'SI' ('EGA' &DIME 2); 2048 : PROVALG = PROVALG ET (PROG GTOTA); 2049 : 'FINSI'; 2050 : 'SI' IMIXT; 2051 : 'MESS' MOJET1 C1 C2 C3 C4; 2052 : INN = 'INDE' TPI; 2053 : 'REPETER' BB1 ('DIME' TPI); 2054 : VA1 = ((TPI.(INN.&BB1))**2) / (4.* GTOTA); 2055 : SUPTAB.'G'.MOTMIX.(INN.&BB1) = VA1; 2056 : 'FIN' BB1; 2057 : 'SINON'; 2058 : 'MESS' (C INST ' ') C1 C2 C3 C4; 2059 : SUPTAB.'G'.INST = GTOTA; 2060 : 'FINSI'; 2061 : 'FINSI'; 2062 : 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 2063 : 'SI' IMIXT; 2064 : 'MESS' NUNOE MOJET1 C1 C2 C3 C4; 2065 : IND1 = 'INDE' TPI; 2066 : IND2 = 'INDE' (TPI.(IND1.1)); 2067 : 'REPETER' BB1 ('DIME' IND2); 2068 : PM = IND2.&BB1; 2069 : 'REPETER' BB2 ('DIME' IND1); 2070 : T1 = IND1.&BB2; 2071 : 'SI' ('NON' ('EXIST' (SUPTAB.'G'.MOTMIX) T1)); 2072 : SUPTAB.'G'.MOTMIX.T1 = TABLE; 2073 : 'FINSI'; 2074 : VA1 = ((TPI.T1.PM)**2) / (4.* GTOTA); 2075 : SUPTAB.'G'.MOTMIX.T1.PM = VA1; 2076 : 'FIN' BB2; 2077 : 'FIN' BB1; 2078 : 'SINON'; 2079 : 'MESS' NUNOE (C INST ' ') C1 C2 C3 C4; 2080 : SUPTAB.'G'.INST.PM = GTOTA; 2081 : 'FINSI'; 2082 : 'FINSI'; 2083 : 'FINSI'; 2084 : 'SINON'; 2085 : 'SI' (('EGA' &DIME 2) 'OU' ICOQU); 2086 : 'MESS' C1 C2 C3 C4; 2087 : 'SI' IMIXT; 2088 : SUPTAB.'G'.MOTMIX = (TPI**2) / (4.* GTOTA); 2089 : 'SINON'; 2090 : SUPTAB.'G' = GTOTA; 2091 : 'FINSI'; 2092 : 'FINSI'; 2093 : 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 2094 : 'MESS' NUNOE C1 C2 C3 C4; 2095 : 'SI' IMIXT; 2096 : INN = 'INDE' TPI; 2097 : 'REPETER' BB1 ('DIME' TPI); 2098 : VA1 = ((TPI.(INN.&BB1))**2) / (4.* GTOTA); 2099 : SUPTAB.'G'.MOTMIX.(INN.&BB1) = VA1; 2100 : 'FIN' BB1; 2101 : 'SINON'; 2102 : SUPTAB.'G'.PM = GTOTA; 2103 : 'FINSI'; 2104 : 'FINSI'; 2105 : 'FINSI'; 2106 : 'MENA'; 2107 : 2108 : 'FIN' BCNOEU; 2109 : 'MENA'; 2110 : 'SI' (IPAP 'ET' (NBOU '>' 1)); 2111 : 'SAUT' 1 'LIGNE'; 2112 : 'FINSI'; 2113 : 'SI' (IPAP 'ET' (NBOU 'EGA' 1)); 2114 : 'SI' (('ABS' ((&BOUCEXT/10) - (&BOUCEXT/10.))) '<' 1.D-10); 2115 : 'SAUT' 1 'LIGNE'; 2116 : 'FINSI'; 2117 : 'FINSI'; 2118 : 'FIN' BOUCMIXT; 2119 : 'FIN' BOUCEXT ; 2120 : **************************************************** 2121 : ********* FIN BOUCLE SUR LE PAS DE CALCUL ********* 2122 : **************************************************** 2123 : **************************************************** 2124 : **** STOCKAGE DES RESULTATS DANS SUPTAB.'EVOLG' **** 2125 : **************************************************** 2126 : 'SI' IPAP; 2127 : ***Affichage de G pour le calul en dynamique**** 2128 : 'SI' ('EXIST' SUPTAB 'VITESSE') ; 2129 : 'SI' (('EGA' &DIME 2) 'OU' ('EGA' &DIME 3)); 2130 : SUPTAB.'EVOLG' = 'EVOL' 'MANU' 'TEMPS' TEMPREEL 'G(t)' PROVALG; 2131 : 'FINSI'; 2132 : ************************************************* 2133 : 'SINON'; 2134 : SUPTAB.'EVOLG' = TABLE; 2135 : IND1 = 'INDE' (SUPTAB.'G'); 2136 : 'SI' (('EGA' &DIME 2) 'OU' ICOQU); 2137 : 'TITRE' CHA1; 2138 : 'SI' IMIXT; 2139 : 'REPETER' BB1 ('DIME' IND1); 2140 : MOT1 = IND1.&BB1; PT = PROG; PG = PROG; 2141 : IND2 = 'INDE' (SUPTAB.'G'.MOT1); 2142 : 'REPETER' BB2 ('DIME' IND2); 2143 : T1 = IND2.&BB2; 2144 : PT = PT 'ET' (PROG T1); 2145 : PG = PG 'ET' (PROG SUPTAB.'G'.MOT1.T1); 2146 : 'FIN' BB2; 2147 : SUPTAB.'EVOLG'.MOT1='EVOL' 'MANU' 'TEMPS' PT MOTTI PG; 2148 : 'FIN' BB1; 2149 : 'SINON'; 2150 : PT = PROG; PG = PROG; 2151 : 'REPETER' BB1 ('DIME' IND1); 2152 : T1 = IND1.&BB1; 2153 : PT = PT 'ET' (PROG T1); 2154 : PG = PG 'ET' (PROG SUPTAB.'G'.T1); 2155 : 'FIN' BB1; 2156 : SUPTAB.'EVOLG'='EVOL' 'MANU' 'TEMPS' PT MOTTI PG; 2157 : 'FINSI'; 2158 : 'FINSI'; 2159 : 'SI' (('EGA' &DIME 3) 'ET' ('NON' ICOQU)); 2160 : 'SI' IMIXT; 2161 : 'REPETER' BB1 ('DIME' IND1); 2162 : MOT1 = IND1.&BB1; SUPTAB.'EVOLG'.MOT1 = TABLE; 2163 : IND2 = 'INDE' (SUPTAB.'G'.MOT1); 2164 : IND3 = 'INDE' (SUPTAB.'G'.MOT1.(IND2.1)); 2165 : 'REPETER' BB2 ('DIME' IND3); 2166 : PM = IND3.&BB2; PT = PROG; PG = PROG; 2167 : 'SI' ('EGA' &BB2 ('DIME' IND3)); 2168 : CHA2 = 'CHAI' ' (Global)'; 2169 : 'SINON'; 2170 : CHA2 = 'CHAI' ' (Pt ' ('NOEUD' PM) ')'; 2171 : 'FINSI'; 2172 : 'TITR' ('CHAI' CHA1 CHA2); 2173 : 'REPETER' BB3 ('DIME' IND2); 2174 : T1 = IND2.&BB3; 2175 : PT = PT 'ET' (PROG T1); 2176 : PG = PG 'ET' (PROG SUPTAB.'G'.MOT1.T1.PM); 2177 : 'FIN' BB3; 2178 : SUPTAB.'EVOLG'.MOT1.PM='EVOL' 'MANU' 'TEMPS' PT MOTTI PG; 2179 : 'FIN' BB2; 2180 : 'FIN' BB1; 2181 : 'SINON'; 2182 : IND2 = 'INDE' (SUPTAB.'G'.(IND1.1)); 2183 : 'REPETER' BB1 ('DIME' IND2); 2184 : PM = IND2.&BB1; PT = PROG; PG = PROG; 2185 : 'SI' ('EGA' &BB1 ('DIME' IND2)); 2186 : CHA2 = 'CHAI' ' (Global)'; 2187 : 'SINON'; 2188 : CHA2 = 'CHAI' ' (Pt ' ('NOEUD' PM) ')'; 2189 : 'FINSI'; 2190 : 'TITR' ('CHAI' CHA1 CHA2); 2191 : 'REPETER' BB2 ('DIME' IND1); 2192 : T1 = IND1.&BB2; 2193 : PT = PT 'ET' (PROG T1); 2194 : PG = PG 'ET' (PROG SUPTAB.'G'.T1.PM); 2195 : 'FIN' BB2; 2196 : SUPTAB.'EVOLG'.PM='EVOL' 'MANU' 'TEMPS' PT MOTTI PG; 2197 : 'FIN' BB1; 2198 : 'FINSI'; 2199 : 'FINSI'; 2200 : 'FINSI'; 2201 : 'FINSI'; 2202 : ******************************************************** 2203 : **** STOCKAGE POUR UNE EVENTUELLE REPRISE DE CALCUL **** 2204 : ******************************************************** 2205 : 'SI' (IPAP 'ET' IAVAN); 2206 : SUPTAB.'ENEDEF' = ENEDEF; 2207 : 'SI' ((('DIME' MODPLA) '>' 0) 'ET' ITHER); 2208 : SUPTAB.'ENEVON' = ENEVON; 2209 : 'FINSI'; 2210 : SUPTAB.'SIG1' = SIG1 ; 2211 : SUPTAB.'VAR1' = VAR1 ; 2212 : SUPTAB.'VDI1' = VDI1 ; 2213 : SUPTAB.'MAT1' = MAT1 ; 2214 : 'FINSI'; 2215 : 'FINPROC' SUPTAB; 2216 : 2217 : 2218 : 2219 :
© Cast3M 2003 - All rights reserved.
Disclaimer