Télécharger g_theta1.procedur

Retour à la liste

Numérotation des lignes :

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

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