Télécharger g_theta1.procedur

Retour à la liste

Numérotation des lignes :

  1. * G_THETA1 PROCEDUR CB215821 15/12/02 21:15:09 8719
  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 = PI;
  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 '&lt;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.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales