Télécharger g_theta.procedur

Retour à la liste

Numérotation des lignes :

  1. * G_THETA PROCEDUR JB251061 20/11/04 21:17:46 10763
  2. DEBPROC G_THETA SUPTAB*'TABLE' ;
  3. *|=====================================================================|
  4. *| |
  5. *| OBJECTIF : |
  6. *| ========== |
  7. *| |
  8. *| 1) calculer l'integrale caracteristique de mecanique de la rupture |
  9. *| a) J en elasto-plasticite ou en elasto-dynamique pour un |
  10. *| materiau isotrope. |
  11. *| b) dJ/da en elasto-plasticite, utilisable uniquement dans le cas |
  12. *| de materiau isotrope et homogene pour les elements massifs. |
  13. *| c) C* dans le cas de fluage secondaire stationnaire pour un |
  14. *| materiau isotrope. |
  15. *| d) C*H dans le cas de fluage primaire sous un chargement radial |
  16. *| pour un materiau isotrope. |
  17. *| |
  18. *| 2) separer les modes K1, K2 et K3 en elasticite, utilisable |
  19. *| uniquement dans le cas de materiau homogene et isotrope |
  20. *| pour les elements massifs. |
  21. *| |
  22. *| |
  23. *| ENTREE : |
  24. *| ======== |
  25. *| |
  26. *| SUPTAB objet de type TABLE. En entree, SUPTAB sert a definir les |
  27. *| options et les parametres du calcul. Ses indices sont des |
  28. *| objets de type MOTS (a ecrire en toutes lettres) dont voici |
  29. *| la liste : |
  30. *| |
  31. *| |
  32. *| Arguments obligatoires dans tous les cas |
  33. *| ---------------------------------------- |
  34. *| |
  35. *| SUPTAB.'OBJECTIF' = MOT pour preciser le but du calcul, vaut |
  36. *| 1) 'J' pour calculer l'integrale J (ou G), |
  37. *| caracteristique en elasto-plastique. |
  38. *| 2) 'J_DYNA' pour calculer l'integrale J (ou G), |
  39. *| caracteristique en elasto-dynamique. |
  40. *| 3) 'C*' pour calculer l'integrale C*, |
  41. *| caracteristique en fluage secondaire |
  42. *| stationnaire. |
  43. *| 4) 'C*H' pour calculer l'integrale C*(h), |
  44. *| caracteristique en fluage primaire ou |
  45. *| tertiaire. |
  46. *| 5) 'DJ/DA' pour calculer l'integrale de la |
  47. *| derivation dJ/da, caracteristique pour |
  48. *| analyser la stabilite de propagation d'une |
  49. *| fissure ou des fissures interagissantes. |
  50. *| 6) 'DECOUPLAGE' pour decouper les modes mixtes, |
  51. *| c'est a dire la separation des facteurs K1, |
  52. *| K2 (et K3 et 3D). |
  53. *| |
  54. *| SUPTAB.'COUCHE' = ENTIER representant le nombre de couches |
  55. *| d'elements autour du front de la fissure |
  56. *| qui se deplacent pour simuler la propagtion |
  57. *| de la fissure. Il vaut 0 si seul la pointe de |
  58. *| la fissure se deplace, 1 si c'est la premiere |
  59. *| couche d'elements entourant la fissure, 2 si |
  60. *| c'est l'ensemble des premiere et deuxieme couches |
  61. *| d'elements etc. Il convient veiller a ce que |
  62. *| l'ensemble des elements a deplacer n'atteint pas |
  63. *| le bord de la structure fissuree. |
  64. *| Si COUCHE et CHAMP_THETA sont tous deux donnés, |
  65. *| CHAMP_THETA est écrasé (cf.8.) |
  66. *| |
  67. *| SUPTAB.'FRONT_FISSURE' = POINT en 2D ou MAILLAGE en 3D massif |
  68. *| representant le front de la fissure. |
  69. *| |
  70. *| |
  71. *| Arguments obligatoires avec des elements standards |
  72. *| -------------------------------------------------- |
  73. *| |
  74. *| SUPTAB.'LEVRE_SUPERIEURE' = Selon la convention de definition, cet |
  75. *| objet (type MAILLAGE) representant la |
  76. *| levre superieure de la fissure. |
  77. *| |
  78. *| SUPTAB.'LEVRE_INFERIEURE' = Selon la convention de definition, cet |
  79. *| objet (type MAILLAGE) representant la |
  80. *| la levre inferieure de la fissure. Si |
  81. *| une seule levre est modelisee, un des |
  82. *| des deux mots ici (LEVRE_SUPERIEURE ou |
  83. *| LEVRE_INFERIEURE) sera suffisant pour |
  84. *| decrire la fissure. |
  85. *| |
  86. *| |
  87. *| Arguments obligatoires avec des elements enrichis (XFEM) |
  88. *| -------------------------------------------------------- |
  89. *| |
  90. *| SUPTAB.'PSI' = 1ere level set (CHPOINT) decrivant la fissure dans |
  91. *| le cas ou l'on utilise des elements XFEM . |
  92. *| SUPTAB.'PHI' = 2eme level set. |
  93. *| |
  94. *| |
  95. *| |
  96. *| Solution obligatoire issus de la procedure PASAPAS |
  97. *| -------------------------------------------------- |
  98. *| |
  99. *| SUPTAB.'SOLUTION_PASAPAS' = TABLE sortant de la procedure PASAPAS. |
  100. *| |
  101. *| |
  102. *| Solution obligatoire issus de l'operateur RESO |
  103. *| ---------------------------------------------- |
  104. *| |
  105. *| SUPTAB.'SOLUTION_RESO' = CHPOINT de deplacement issus de RESO. |
  106. *| SUPTAB.'CARACTERISTIQUES' = Champ de caractristiques matrielles |
  107. *| et eventuellement geometriques |
  108. *| si necessaire. |
  109. *| SUPTAB.'MODELE' = Objet modele (type MMODEL) englobant toute la |
  110. *| structure. |
  111. *| SUPTAB.'TEMPERATURES' = CHPOINT de temperature creant une contrainte|
  112. *| thermique non nulle si elle existe. |
  113. *| SUPTAB.'CHARGEMENTS_MECANIQUES' = CHPOINT representant l'ensemble |
  114. *| des forces exterieures |
  115. *| (surfaciques, volumiques ou |
  116. *| ponctuelles ....) appliquees sur |
  117. *| le systeme si elles existent, SAUF|
  118. *| la pression sur les levres de la |
  119. *| fissure |
  120. *| SUPTAB.'BLOCAGES_MECANIQUES' = RIGIDITE representant le blocages |
  121. *| mecanique du probleme, a fournir |
  122. *| uniquement dans le cas de calcul |
  123. *| de la derivation dJ/da. |
  124. *| |
  125. *| |
  126. *| Arguments optionnels |
  127. *| -------------------- |
  128. *| |
  129. *| |
  130. *| 1 : Materiaux composites (2D massif ou 3D coque seulement) |
  131. *| |
  132. *| SUPTAB.'MODELES_COMPOSITES' = TABLE indicee par des entiers (1 2... |
  133. *| M, M = nombre de Materiaux composites)|
  134. *| pour donner les modeles des materiaux |
  135. *| ayant des discontinutes de proprietes |
  136. *| materielles. |
  137. *| |
  138. *| 2 : Pour un front de fissure tridimensionnel massif |
  139. *| |
  140. *| SUPTAB.'NOEUDS_AVANCES' = MAILLAGE de type POI1 pour donner les |
  141. *| points du front pour lesquels le calcul |
  142. *| sera effectue. Si cet argument est |
  143. *| obsent, le calcul sera fait pour tous |
  144. *| les noeuds sur le front de la fissure. |
  145. *| |
  146. *| 3 : Calcul des termes croises de la matrice dJi/daj |
  147. *| (i non egal a j) dans le cas des fisures interagissantes. |
  148. *| |
  149. *| SUPTAB.'FISSURE_2' = Objet de type MAILLAGE representant une autre |
  150. *| fissure (levres superieure + inferieure si |
  151. *| toutes les deux levres sont presentes). |
  152. *| SUPTAB.'FRONT_FISSURE_2' = POINT ou MAILLAGE reprsentant le front |
  153. *| de la fissure 2 decrite ci-dessus. |
  154. *| |
  155. *| |
  156. *| 4 : Cas d'une fissure circulaire dans une geometrie plane |
  157. *| |
  158. *| SUPTAB.'POINT_CENTRE' = centre de la fissure circulaire |
  159. *| |
  160. *| 5 : Cas ou l'extension de la fissure correspond a une simple |
  161. *| translation dans un tuyauterie droite (3D). Dans ce cas |
  162. *| on effectue dans la procedure CH_THETA une transformation |
  163. *| de tuyau en plaque en passant au systeme de coordonnees |
  164. *| cylindriques. Il est alors necessaire de fournir : |
  165. *| |
  166. *| SUPTAB.'POINT_1' = centre du systeme de coordonnees |
  167. *| SUPTAB.'POINT_2' = POINT tel que l'axe defini par POINT_1 |
  168. *| vers POINT_2 soit l'axe Z poisitif |
  169. *| SUPTAB.'POINT_3' = POINT tel que le plan defini par les 3 points |
  170. *| POINT_1 POINT_2 POINT_3 donne l'angle theta nul |
  171. *| |
  172. *| 6 : Cas ou l'extension de la fissure ne correspond |
  173. *| pas a une simple translation (3D) |
  174. *| |
  175. *| 6.1 Fissure dans un tuyauterie droite (3D, Rotation) |
  176. *| |
  177. *| SUPTAB.'POINT_1' = Objet de type POINT |
  178. *| SUPTAB.'POINT_2' = Objet de type POINT qui, avec le point POINT_1, |
  179. *| constitue l'axe perpendiculaire a la section |
  180. *| fissuree. |
  181. *| |
  182. *| 6.2 Fissure dans un coude (3D, rotation + transformation) |
  183. *| Outre les deux points SUPTAB.'POINT_1' et SUPTAB.'POINT_2' |
  184. *| definis en haut on donne encore : |
  185. *| |
  186. *| SUPTAB.'CHPOINT_TRANSFORMATION' = Objet de type CHPOINT utilise |
  187. *| pour transformer une coude en un |
  188. *| tuyauterie droite. |
  189. *| SUPTAB.'OPERATEUR' = Objet de type MOT valant 'PLUS' ou 'MOIN' pour |
  190. *| indiquer l'operateur PLUS ou MOIN a utiliser |
  191. *| si l'on veut transformer la coude en un |
  192. *| tuyauterie droite. |
  193. *| |
  194. *| 7 : Rotation rigidifiante imposee dans le calcul par PASAPAS |
  195. *| |
  196. *| SUPTAB.'ROTATION_RIGIDIFIANTE' = table indicee par entiers 0,1,2... |
  197. *| donnant les champs de deplacements |
  198. *| due a une rotation rigidifiante de |
  199. *| la piece autour d'un point. Cette |
  200. *| rotation rigidifiante est imposee |
  201. *| dans le calcul par PASAPAS en tant |
  202. *| d'un calcul en grand deplacement. |
  203. *| |
  204. *| 8 : Cas ou on souhaite donner soi-meme le champ THETA |
  205. *| |
  206. *| SUPTAB.'CHAMP_THETA' = Objet de type CHPOINT caracterisant la |
  207. *| propagation de la fissure. Dans ce cas, |
  208. *| ne pas fournir l'indice 'COUCHE' de SUPTAB, |
  209. *| mais fournir 'CHAMP_THETA' a chaque appel. |
  210. *| |
  211. *| 9 : Cas ou on souhaite calculer une integrale dans l epaisseur |
  212. *| d une structure en coque (rapport DMT/96-317) |
  213. *| |
  214. *| On utilise pour cela la technique de multicouche, qui |
  215. *| consiste, avant d'appeler la proceduer G_THETA, a : |
  216. *| 1) Etablir un modele multicouches (cf MODE CONS) sur un ou |
  217. *| des element(s) proche(s) de la fissure sachant qu'il faut |
  218. *| au moins une couche en peau inferieure, une couche en |
  219. *| peau superieure, une couche en ligne moyenne {ces couches |
  220. *| doivent avoir une epaisseur inferieure a 1e-4*(epaisseur |
  221. *| totale de la coque) et donc 2 couches intermediaires. |
  222. *| 2) Penser a donner un excentrement et un nom constituant |
  223. *| different a ces couches. |
  224. *| 3) Assembler le modele multicouches avec le modele du reste |
  225. *| de la structure. |
  226. *| 4) Effectuer le calcul des contraintes et des deplacements |
  227. *| avec le modele total et le materiau qui en decoule. |
  228. *| Le calcul de l'integrale avec la procedure G_THETA sera |
  229. *| realise sur un seul element en multicouche et pour toutes les|
  230. *| couches dans cet element qui ont une epaisseur inferieure a |
  231. *| 1e-4*(epaisseur totale de la coque). Un tel element doit |
  232. *| etre designe par l'argument suivant : |
  233. *| |
  234. *| SUPTAB.'ELEMENT_MULTICOUCHE' = Objet MAILLAGE comportant UN SEUL |
  235. *| element modelise en multicouche. Il |
  236. *| doit etre a l'interieur de la zone |
  237. *| THETA, c'est a dire dans la zone |
  238. *| definie par le nombre SUPTAB.'COUCHE'.
  239. *| Il ne doit pas etre trop loin, ni |
  240. *| trop proche de la pointe de la |
  241. *| fissure. Theoriquement, l'integrale |
  242. *| a calculer est independant du choix |
  243. *| de l'element pres de la fissure, ce |
  244. *| qui est numeriquement verifiable en |
  245. *| la determinant sur des elemens en |
  246. *| multicouche differents. NOTA : Cette |
  247. *| technique necessite un maillage tres |
  248. *| fin dans la zone de la pointe de la |
  249. *| fissure. |
  250. *| |
  251. *| |
  252. *| SORTIE : |
  253. *| ======== |
  254. *| |
  255. *| Les resultats du calcul correspondant a un champ THETA specifie par |
  256. *| l'objet SUPTAB.'COUCHE' (ou SUPTAB.'CHAMP_THETA' dans le cas ou on |
  257. *| souhaite donner soi-meme un champ de type Theta) sont sauves de la |
  258. *| maniere suivante : |
  259. *| |
  260. *| |
  261. *| Dans tous les cas de calcul |
  262. *| --------------------------- |
  263. *| |
  264. *| SUPTAB.'RESULTATS' = Objet contenant la valeur numerique du calcul. |
  265. *| Son type est variable selon qu'on est en 2D ou |
  266. *| 3D et selon la solution du probleme traite : |
  267. *| |
  268. *| 1) valeur de l'integrale de contour dans le cas|
  269. *| d'une solution provenant de l'operateur RESO|
  270. *| 2D => FLOTTANT |
  271. *| 3D massif => TABLE indicee par |
  272. *| .(points au front de fissure) |
  273. *| .'GLOBAL' pour une estimation globale |
  274. *| 3D coque => TABLE indicee par mots |
  275. *| .'SUPERI' en peau superieure |
  276. *| .'INFERI' en peau inferieure |
  277. *| .'MEDIAN' au plan median et |
  278. *| .'GLOBAL' pour une estimation globale |
  279. *| |
  280. *| 2) valeur de l'integrale de contour a un |
  281. *| certain pas du calcul dans le cas d'une |
  282. *| solution provenant de la procedure PASAPAS |
  283. *| 2D => TABLE indicee par |
  284. *| .(numero du pas de calcul) |
  285. *| 3D massif => TABLE indicees par |
  286. *| .(numero du pas de calcul).(points au |
  287. *| front de fissure) |
  288. *| 3D coque => TABLE indicees |
  289. *| .(numero du pas de calcul).'SUPERI' |
  290. *| .(numero du pas de calcul).'INFERI' |
  291. *| .(numero du pas de calcul).'MEDIAN' et |
  292. *| .(numero du pas de calcul).'GLOBAL' |
  293. *| |
  294. *| 3) valeur des F.I.C. (facteurs d'intensite des |
  295. *| contraintes) dans le cas de decouplage des |
  296. *| modes avec une solution provenant de |
  297. *| l'operateur RESO |
  298. *| 2D => TABLE indicee par mots |
  299. *| .'I' pour KI |
  300. *| .'II' pour KII |
  301. *| 3D massif => TABLE indicees par |
  302. *| .'I' .(points au front de fissure) |
  303. *| pour KI |
  304. *| .'II' .(points au front de fissure) |
  305. *| pour KII |
  306. *| .'III'.(points au front de fissure) |
  307. *| pour KIII et |
  308. *| .'GLOBAL'.(points au front de fissure) |
  309. *| |
  310. *| 4) valeur des F.I.C. (facteurs d'intensite des |
  311. *| contraintes) a un certain pas du calcul |
  312. *| dans le cas de decouplage des modes avec |
  313. *| une solution provenant de la procedure |
  314. *| PASAPAS |
  315. *| 2D => TABLE indicees |
  316. *| .'I' .(numero du pas de calcul) pour KI |
  317. *| .'II'.(numero du pas de calcul) pour KII |
  318. *| 3D massif => TABLE indicees par |
  319. *| .'I' .(numero du pas de calcul).(point |
  320. *| au front de fissure) pour KI |
  321. *| .'II' .(numero du pas de calcul).(points |
  322. *| au front de fissure) pour KII |
  323. *| .'III'.(numero du pas de calcul).(points |
  324. *| au front de fissure) pour KIII |
  325. *| |
  326. *| |
  327. *| Dans le cas de calcul effectue pas a pas |
  328. *| ---------------------------------------- |
  329. *| |
  330. *| SUPTAB.'EVOLUTION_RESULTATS' = Objet contenant l'evolution des |
  331. *| resultats en fonction du temps. |
  332. *| Son type est variable selon la |
  333. *| configuration du probleme traite : |
  334. *| |
  335. *| 1) Evolution de l'integrale de contour |
  336. *| 2D => EVOLUTION |
  337. *| 3D massif => TABLE indicee par |
  338. *| .(points au front de fissure) |
  339. *| .'GLOBAL' evolution pour une |
  340. *| estimation globale |
  341. *| 3D coque => TABLE indicee par MOTS |
  342. *| .'SUPERI' en peau superieure |
  343. *| .'INFERI' en peau inferieure |
  344. *| .'MEDIAN' au plan median et |
  345. *| .'GLOBAL' evolution pour une |
  346. *| estimation globale |
  347. *| |
  348. *| 2) Evolution des F.I.C. (facteurs |
  349. *| d'intensite de contrainte) |
  350. *| 2D => TABLE indicee par |
  351. *| .'I' pour KI |
  352. *| .'II' pour KII |
  353. *| 3D massif => TABLE indicee par |
  354. *| .'I'. (points au front de fissure)
  355. *| .'II'. (points au front de fissure)
  356. *| .'III'.(points au front de fissure)
  357. *| .'GLOBAL' evolution pour une |
  358. *| estimation globale |
  359. *| |
  360. *| |
  361. *| Dans le cas des elements de coque |
  362. *| --------------------------------- |
  363. *| |
  364. *| SUPTAB.'EPAISSEUR_RESULTATS' = representant l'evolution de la valeur|
  365. *| des integrales dans l'epaisseur de la|
  366. *| coque. Son type est variable selon la|
  367. *| solution du probleme traite : |
  368. *| 1) EVOLUTION dans le cas d'une solution |
  369. *| provenant de l'operateur RESO |
  370. *| 2) TABLE indicee par .(numero du pas de |
  371. *| calcul) dans le cas d'une solution |
  372. *| provenant de la procedure PASAPAS |
  373. *| |
  374. *| |
  375. *| Dans le cas de calcul elasto-plastique |
  376. *| -------------------------------------- |
  377. *| |
  378. *| SUPTAB.'CRITERE_DECHARGE' = En cas de calcul elasto-plastique |
  379. *| isotrope ou cinematique, eventuellement thermique, on |
  380. *| calcul un critere de decharge des contraintes defini par |
  381. *| (si, F = courbe de traction ): crit = F(EPSeq)/ SIGeq. |
  382. *| crit = 1. si non-decharge et crit > 1. si decharge. |
  383. *| SUPTAB.'CRITERE_DECHARGE' est une table indicee par les |
  384. *| temps de calcul. |
  385. *| |
  386. *| |
  387. *| Dans le cas du contact frottement sur les levres |
  388. *| -------------------------------------- |
  389. *| |
  390. *| A ce jour, cela est traite pour le cas xfem (these de B.Trolle). |
  391. *| |
  392. *|=====================================================================|
  393.  
  394. * INTRODUCTION DE VARIABLES UTILES
  395. * --------------------------------
  396.  
  397. * CREATION DE LA TABLE DE BOOLEENS
  398. * ********************************
  399.  
  400. BOOL = TABL ;
  401. BOOL.'TRAC' = FAUX ;
  402. BOOL.'MESS' = VRAI ;
  403. SI BOOL.'MESS' ;
  404. SAUT 'LIGNE' ;
  405. MESS '------------------' 'DEBUT DE LA PROCEDURE G_THETA'
  406. '--------------------' ;
  407. FINSI ;
  408. SAUT 'LIGNE' ;
  409.  
  410. * CONFIGURATION INITIALE
  411. * **********************
  412.  
  413. CONFIG0 = FORM ;
  414.  
  415.  
  416. * =============================================================================
  417.  
  418. * DETERMINATION DU CAS DEMANDE ET VERIFICATION DES DONNEES OBLIGATOIRES
  419. * ---------------------------------------------------------------------
  420.  
  421. * APPEL A G_CAS
  422. * *************
  423.  
  424. OBJUTI = G_CAS SUPTAB BOOL ;
  425. SI (EGA (TYPE OBJUTI) (MOT 'ANNULE')) ;
  426. MESS 'ERREUR : IL Y A EU UN PROBLEME INATTENDU PENDANT LA LECTURE DES' ;
  427. MESS ' DONNEES' ;
  428. QUIT G_THETA ;
  429. FINSI ;
  430.  
  431.  
  432. * LECTURE DES DONNEES FOURNIES
  433. * ****************************
  434.  
  435. GDIME = OBJUTI.'DIMENSION' ;
  436. GMODE = OBJUTI.'MODE' ;
  437. MOD_TOT = OBJUTI.'MOD_TOT' ;
  438. MOD_MEC = OBJUTI.'MOD_MEC' ;
  439. MAT_MEC = OBJUTI.'MAT_MEC' ;
  440. SI BOOL.'PASAPAS' ;
  441. WTAB = OBJUTI.'WTAB' ;
  442. FINSI ;
  443. MAILLAGE = OBJUTI.'MAILLAGE' ;
  444. M_FRONT = OBJUTI.'FRONT' ;
  445.  
  446.  
  447. * QUELQUES DONNEES NON ISSUES DE G_CAS
  448. * ************************************
  449.  
  450. * TYPE D'ELEMENTS DU MAILLAGE
  451. LELEM1 = MAILLAGE ELEM 'TYPE' ;
  452.  
  453. SI BOOL.'MODE_PRES' ;
  454. MODCHA = EXTR MOD_TOT 'FORM' 'CHARGEMENT' ;
  455. MODPRE = EXTR MODCHA 'COMP' 'PRESSION' ;
  456. SI (NON BOOL.'PASAPAS') ;
  457. MATPRE = REDU (SUPTAB.'PRESSION') MODPRE ;
  458. FINSI ;
  459. MAILPTOT = EXTR MODPRE 'MAIL' ;
  460. MAILPF = INTE MAILPTOT (SUPTAB.'FISSURE') ;
  461. FINSI ;
  462. * VERIFICATIONS DANS LE CAS DE PERSO1
  463. SI BOOL.'PERSO1' ;
  464. SI BOOL.'MESS' ;
  465. MESS 'utilisation de PERSO1 en cours de dvlpt' ;
  466. FINSI ;
  467. SI (EXIS SUPTAB.'SOLUTION_PASAPAS' 'ESTIMATION') ;
  468. ESTIM = SUPTAB.'SOLUTION_PASAPAS'.'ESTIMATION' ;
  469. SINON ;
  470. MESS 'ERREUR : il faut une ESTIMATION dans la SOLUTION_PASAPAS' ;
  471. ERRE 21 ; QUIT G_THETA ;
  472. FINSI ;
  473. SI (NON (EXIS SUPTAB 'MAILLAGE_REDUIT')) ;
  474. MESS 'Attention! utilisation de PERSO1 sans MAILLAGE_REDUIT' ;
  475. MESS 'uniquement valable dans le cas de fissure stationnaire' ;
  476. FINSI ;
  477. FINSI ;
  478.  
  479.  
  480. * MOTS DE COMPOSANTES UTILES
  481. * **************************
  482.  
  483. * LISTMOT SCAL :
  484. MTS1 = MOTS 'SCAL' ;
  485. * LISTMOTS POUR LE DEPLACEMENT ET POUR LA FORCE :
  486. * ON EXTRAIT LES GDIME PREMIERS MOTS CAR ON NE VEUT PAS DES ROTATIONS
  487. * DANS LE CAS DES COQUES
  488. MUI = EXTR (EXTR MOD_MEC 'DEPL') (LECT 1 PAS 1 GDIME) ;
  489. MFI = EXTR (EXTR MOD_MEC 'FORC') (LECT 1 PAS 1 GDIME) ;
  490. MU1 = EXTR MUI 1 ; MU2 = EXTR MUI 2 ;
  491. MF1 = EXTR MFI 1 ; MF2 = EXTR MFI 2 ;
  492. SI (EGA GDIME 3) ;
  493. MF3 = EXTR MFI 3 ;
  494. FINSI ;
  495.  
  496.  
  497. * CREATION DE CHAR1 SI PASAPAS
  498. * ****************************
  499.  
  500. SI BOOL.'PASAPAS' ;
  501. CHAR1 = SUPTAB.'SOLUTION_PASAPAS'.'CHARGEMENT' ;
  502. FINSI ;
  503.  
  504.  
  505. * DONNEES EN CAS DE CONTACT
  506. * *************************
  507.  
  508. SI ((NON BOOL.'PASAPAS') ET BOOL.'FROT') ;
  509. OBJCON = SUPTAB.'MODELE_FISSURE' ;
  510. MAICON = EXTR OBJCON 'MAILLAGE' ;
  511. FINSI ;
  512.  
  513.  
  514. * =============================================================================
  515.  
  516. * EXTRACTION DU MAILLAGE, DU CHAMP THETA ET DE LA DIRECTION DE PROPAGATION
  517. * ------------------------------------------------------------------------
  518.  
  519. * MODELE MULTICOUCHES DANS LE CAS DE COQUE
  520. * ****************************************
  521.  
  522. SI BOOL.'COQ' ;
  523. M_DETA = EXTR MOD_MEC 'ZONE' ;
  524. SI (EXIS SUPTAB 'ELEMENT_MULTICOUCHE') ;
  525. ELMULT = SUPTAB.'ELEMENT_MULTICOUCHE' ;
  526. SI (NEG (TYPE ELMULT) 'MAILLAGE') ;
  527. MESS 'ERREUR : L ELEMENT EN MULTICOUCHE DOIT' ;
  528. MESS ' ETRE UN OBJET DE TYPE MAILLAGE' ;
  529. ERRE 21 ; QUIT G_THETA ;
  530. FINSI ;
  531. SI (NEG (NBEL ELMULT) 1) ;
  532. MESS 'ERREUR : ON VEUT UN SEUL ELEMENT EN MULTICOUCHE' ;
  533. ERRE 21 ; QUIT G_THETA ;
  534. FINSI ;
  535. SINON ;
  536. MESS 'ERREUR : IL FAUT DESIGNER UN ELEMENT EN MULTICOUCHE' ;
  537. ERRE 21 ; QUIT G_THETA ;
  538. FINSI ;
  539. M_ELMU = EXTR (REDU MOD_MEC ELMULT) 'ZONE' ;
  540. SI ((DIME M_ELMU) '<' 10) ;
  541. MESS 'ERREUR : IL FAUT AU MOINS 3 COUCHES (peau inf, peau' ;
  542. MESS ' sup, ligne moyenne) D EPAISSEUR INFERIEURE' ;
  543. MESS ' A 1E-4*(EPAISSEUR TOTALE) + 2 COUCHES' ;
  544. MESS ' INTERMEDIAIRES POUR L ELEMENT DESIGNE EN' ;
  545. MESS ' MULTICOUCHE PROCHE DE LA FISSURE.' ;
  546. ERRE 21 ; QUIT G_THETA ;
  547. FINSI ;
  548. PEX1 = PROG ; LMO1 = LECT ; MODCOU = TABLE ; EPAITO = 0. ;
  549. REPE NBJ5 ((DIME M_ELMU)/2) ;
  550. I1 = (2 * &NBJ5) - 1 ;
  551. MODCOU.&NBJ5 = M_ELMU.I1 ;
  552. EX1 = EXTR (REDU MODCOU.&NBJ5 MAT_MEC) 'EXCE' 1 1 1 ;
  553. EP1 = EXTR (REDU MODCOU.&NBJ5 MAT_MEC) 'EPAI' 1 1 1 ;
  554. EPAITO = EPAITO + EP1 ;
  555. PEX1 = PEX1 ET (PROG EX1) ;
  556. LMO1 = LMO1 ET (LECT &NBJ5) ;
  557. FIN NBJ5 ;
  558. NSUPE = 0 ; NMOYE = 0 ; NINFE = 0 ;
  559. REPE NBJ6 (DIME MODCOU) ;
  560. EX1 = EXTR PEX1 &NBJ6 ;
  561. LM1 = EXTR LMO1 &NBJ6 ;
  562. SI (EGA EX1 (EPAITO/2.) 1.E-4) ;
  563. NSUPE = LM1 ;
  564. FINSI ;
  565. SI (EGA EX1 0. 1.E-10) ;
  566. NMOYE = LM1 ;
  567. FINSI ;
  568. SI (EGA EX1 (EPAITO/(-2.)) 1.E-4) ;
  569. NINFE = LM1 ;
  570. FINSI ;
  571. FIN NBJ6 ;
  572. SI (EGA NSUPE 0) ;
  573. MESS 'ERREUR : IL FAUT UNE COUCHE EN PEAU SUPERIEURE' ;
  574. MESS ' D EPAISSEUR INFERIEURE A' ;
  575. MESS ' 1E-4*(EPAISSEUR TOTALE) ' ;
  576. ERRE 21 ; QUIT G_THETA ;
  577. FINSI ;
  578. SI (EGA NMOYE 0) ;
  579. MESS 'ERREUR : IL FAUT UNE COUCHE AU PLAN MEDIAN' ;
  580. MESS ' AYANT UN EXCENTREMENT NUL' ;
  581. ERRE 21 ; QUIT G_THETA ;
  582. FINSI ;
  583. SI (EGA NINFE 0) ;
  584. MESS 'ERREUR : IL FAUT UNE COUCHE EN PEAU INFERIEURE' ;
  585. MESS ' D EPAISSEUR INFERIEURE A' ;
  586. MESS ' 1E-4*(EPAISSEUR TOTALE) ' ;
  587. ERRE 21 ; QUIT G_THETA ;
  588. FINSI ;
  589. SUPTAB.'EPAISSEUR' = EPAITO ;
  590. M_SUPE = MODCOU.NSUPE ;
  591. M_MOYE = MODCOU.NMOYE ;
  592. M_INFE = MODCOU.NINFE ;
  593. FINSI ;
  594.  
  595.  
  596. * MAILLAGE UTILISE DANS LA RESOLUTION PAR E.F.
  597. * ********************************************
  598.  
  599. SI BOOL.'COQ' ;
  600. TMULT = TABL ;
  601. REPE NBJ8 ((DIME M_DETA)/2) ;
  602. M1 = M_DETA.(2*&NBJ8) ;
  603. SI (EXIS TMULT M1) ;
  604. ITER NBJ8 ;
  605. FINSI ;
  606. M2 = EXTR (REDU MOD_MEC M1) 'ZONE' ;
  607. SI (> (DIME M2) 2) ;
  608. TMULT.M1 = VRAI ;
  609. REPE NBJ9 (((DIME M2)/2) - 1) ;
  610. MAILLAGE = DIFF MAILLAGE M1 ;
  611. FIN NBJ9 ;
  612. FINSI ;
  613. FIN NBJ8 ;
  614. FINSI ;
  615. SUPTAB.'MAILLAGE' = MAILLAGE ;
  616.  
  617.  
  618. * DETERMINATION DES CHAMPS THETA ET PI ET DE LA ZONE DE TRAVAIL ELTETA
  619. * ********************************************************************
  620.  
  621. SI BOOL.'MESS' ;
  622. MESS 'DETERMINATION DES CHAMPS THETA' ;
  623. FINSI ;
  624. SI ((EXIS SUPTAB 'COUCHE') ET (EXIS SUPTAB 'CHAMP_THETA')) ;
  625. * COUCHE ET CHAMP_THETA TOUS LES DEUX DONNES
  626. MESS 'NOMBRE DE COUCHES DONNE => LE CHAMP_THETA FOURNI SERA ECRASE' ;
  627. FINSI ;
  628. * DETERMINATION DE CHAMP_THETA
  629. SI (EXIS SUPTAB 'COUCHE') ;
  630. * NOMBRE DE COUCHE DONNE => ON APPELLE CH_TETX OU CH_TETA POUR CALCULER
  631. * CHAMP_THETA
  632. * SI CHAMP_THETA EST EGALEMENT FOURNI, IL EST ECRASE
  633. SI BOOL.'XFEM' ;
  634. SUPTAB.'CHAMP_THETA' SUPTAB.'UTILTET1' = CH_THETX SUPTAB ;
  635. SINON ;
  636. SUPTAB.'CHAMP_THETA' SUPTAB.'UTILTET1' = CH_THETA SUPTAB ;
  637. SI BOOL.'DJ/DA' ;
  638. SI (NON (EXIS SUPTAB 'FRONT_FISSURE_2')) ;
  639. SUPTAB.'COUCHE' = (SUPTAB.'COUCHE') - 1 ;
  640. SUPTAB.'CHAMP_PI' UTILPI = CH_THETA SUPTAB ;
  641. SUPTAB.'COUCHE' = (SUPTAB.'COUCHE') + 1 ;
  642. SINON ;
  643. P1 = SUPTAB.'FRONT_FISSURE' ;
  644. SUPTAB.'FRONT_FISSURE' = SUPTAB.'FRONT_FISSURE_2' ;
  645. SUPTAB.'FISSURE' = SUPTAB.'FISSURE_2' ;
  646. SUPTAB.'CHAMP_PI' UTILPI = CH_THETA SUPTAB ;
  647. SUPTAB.'FRONT_FISSURE' = P1 ;
  648. FINSI ;
  649. FINSI ;
  650. FINSI ;
  651. SINON ;
  652. MESS 'CHAMP_THETA FOURNI PAR L UTILISATEUR' ;
  653. FINSI ;
  654. CHTHETA = SUPTAB.'CHAMP_THETA' ;
  655. SI (NEG (TYPE CHTHETA) 'CHPOINT') ;
  656. CHTHETA = CHTHETA.'GLOBAL' ;
  657. FINSI ;
  658. * DETERMINATION DE ELTETA
  659. * ELTETA1 = MAILLAGE OU TETA N EST PAS NUL + 1 COUCHE
  660. UU = EXTR CHTHETA 'MAILLAGE' ;
  661. ELTETA1 = ELEM MAILLAGE 'APPU' 'LARG' UU ;
  662. SI (EXIS SUPTAB 'MAILLAGE_REDUIT') ;
  663. * ELTETA = MAILLAGE FOURNI PAR L UTILISATEUR
  664. ELTETA = SUPTAB.'MAILLAGE_REDUIT' ;
  665. * VERIFICATION DE LA COMPATIBILITE AVEC CHTHETA
  666. SI ((NBEL (DIFF ELTETA ELTETA1)) NEG 0) ;
  667. MESS 'ATTENTION : LE MAILLAGE_REDUIT DONNE EST INCOMPATIBLE AVEC LE' ;
  668. MESS ' CHAMP THETA, IL SERA DONC IGNORE.' ;
  669. ELTETA = ELTETA1 ;
  670. FINSI ;
  671. SINON ;
  672. ELTETA = ELTETA1 ;
  673. FINSI ;
  674. * DETERMINATION DE LA DIRECTION DE PROPAGATION ET DES NORMALES
  675. SI BOOL.'XFEM' ;
  676. * ON EST DANS LE CAS XFEM
  677. MOD7 = MODE ELTETA 'THERMIQUE' ;
  678. GPSI = GRAD MOD7 (NOMC 'T' SUPTAB.'PSI' 'NATU' 'DIFFUS') ;
  679. GPSI = CHAN 'NOEUD' MOD7 GPSI 'SCALAIRE' ;
  680. GPHI = GRAD MOD7 (NOMC 'T' SUPTAB.'PHI' 'NATU' 'DIFFUS') ;
  681. GPHI = CHAN 'NOEUD' MOD7 GPHI 'SCALAIRE' ;
  682. NCOMP = EXTR GPSI 'COMP' ;
  683. SI (EGA GDIME 2) ;
  684. * LA DIRECTION DE PROPAGATION EST PERPENDICULAIRE A GRAD PHI ET DANS LE
  685. * MEME SENS QUE GRAD PSI => ON UTILISE UN PRODUIT VECTORIEL
  686. * ETAPE 1 : PROJECTION SUR LE FRONT DE FISSURE ET PASSAGE EN CHPO
  687. PGPSI = PROI M_FRONT GPSI ;
  688. PGPHI = PROI M_FRONT GPHI ;
  689. * ETAPE 2 : PRODUIT VECTORIEL AVEC LA NORMALE AU PLAN
  690. * NB : ON FAIT ATTENTION AU SENS DE TETA GRACE A SIGN
  691. TETA = PVEC PGPHI NCOMP MUI ;
  692. SIGN1 = SIGN (PSCA TETA PGPSI MUI NCOMP) ;
  693. TETA = SIGN1 * TETA ;
  694. * ETAPE 3 : NORMALISATION ET CALCUL DE DIR2
  695. NTETA = (PSCA TETA TETA MUI MUI)**0.5 ;
  696. DIR1 = TETA / NTETA ;
  697. DIR2 = PVEC DIR1 MUI MUI ;
  698. SINON ;
  699. * PASSAGE DES DIRECTIONS EN CHPO ET PRODUITS VECTORIELS
  700. DIR1 = CHAN 'CHPO' MOD7 GPSI 'MOYE' ;
  701. DIR2 = CHAN 'CHPO' MOD7 GPHI 'MOYE' ;
  702. DIR3 = PVEC DIR1 NCOMP DIR2 NCOMP MUI ;
  703. DIR1 = PVEC DIR2 NCOMP DIR3 MUI MUI ;
  704. * NORMALISATION, INTERPOLATION PUIS RENORMALISATION :
  705. * POUR DIR1 ON FAIT ATTENTION CAR ON PEUT AVOIR UN POINT SINGULIER
  706. NDIR1 = (PSCA DIR1 DIR1 MUI MUI)**0.5 ;
  707. MASQ1 = MASQ NDIR1 'SUPERIEUR' 1.E-2 ;
  708. BORN1 = BORN NDIR1 'SCAL' 'MINIMUM' 1.E-2 ;
  709. DIR1 = CHAN 'ATTRIBUT' (DIR1 / BORN1 * MASQ1) 'NATURE' 'DIFFUS' ;
  710. V1 = DIR1 ;
  711. DIR1 = INT_COMP ELTETA DIR1 M_FRONT ;
  712. DIR1 = DIR1 / ((PSCA DIR1 DIR1 MUI MUI)**0.5) ;
  713. * POUR DIR2 PAS DE PROBLEME
  714. DIR2 = NOMC NCOMP MUI DIR2 ;
  715. NDIR2 = (PSCA DIR2 DIR2 MUI MUI)**0.5 ;
  716. DIR2 = CHAN 'ATTRIBUT' (DIR2 / NDIR2) 'NATURE' 'DIFFUS' ;
  717. V2 = DIR2 ;
  718. DIR2 = INT_COMP ELTETA DIR2 M_FRONT ;
  719. DIR2 = DIR2 / ((PSCA DIR2 DIR2 MUI MUI)**0.5) ;
  720. * POUR DIR3 ON FAIT ATTENTION CAR ON PEUT AVOIR UN POINT SINGULIER
  721. NDIR3 = (PSCA DIR3 DIR3 MUI MUI)**0.5 ;
  722. MASQ3 = MASQ NDIR3 'SUPERIEUR' 1.E-2 ;
  723. BORN3 = BORN NDIR3 'SCAL' 'MINIMUM' 1.E-2 ;
  724. DIR3 = CHAN 'ATTRIBUT' (DIR3 / BORN3 * MASQ3) 'NATURE' 'DIFFUS' ;
  725. V3 = DIR3 ;
  726. DIR3 = INT_COMP ELTETA DIR3 M_FRONT ;
  727. DIR3 = DIR3 / ((PSCA DIR3 DIR3 MUI MUI)**0.5) ;
  728. FINSI ;
  729. SINON ;
  730. * ON EST DANS LE CAS STD
  731. DIR1 = REDU CHTHETA (SUPTAB.'FRONT_FISSURE') ;
  732. NDIR1 = (PSCA DIR1 DIR1 MUI MUI)**0.5 ;
  733. DIR1 = DIR1 / NDIR1 ;
  734. SI (NON BOOL.'COQ') ;
  735. SI (EXIS SUPTAB 'LEVRE_SUPERIEURE') ;
  736. F1 = PRES 'MASS' MOD_MEC SUPTAB.'LEVRE_SUPERIEURE' 1. ;
  737. SINON ;
  738. F1 = PRES 'MASS' MOD_MEC SUPTAB.'LEVRE_INFERIEURE' -1. ;
  739. FINSI ;
  740. DIR2 = REDU F1 (SUPTAB.'FRONT_FISSURE') ;
  741. DIR2 = EXCO DIR2 MFI MUI 'NOID' ;
  742. NDIR2 = (PSCA DIR2 DIR2 MUI MUI)**0.5 ;
  743. DIR2 = DIR2 / NDIR2 ;
  744. SI (EGA GDIME 3) ;
  745. DIR3 = PVEC DIR1 DIR2 MUI MUI MUI ;
  746. FINSI ;
  747. FINSI ;
  748. FINSI ;
  749. SI BOOL.'TRAC' ;
  750. VCHTHETA = VECT CHTHETA 'DEPL' 'BLEU' ;
  751. TRAC VCHTHETA (MAILLAGE ET M_FRONT) 'TITR' 'CHAMP_THETA' ;
  752. FINSI ;
  753.  
  754.  
  755. * DETERMINATION DU REPERE LOCAL
  756. * *****************************
  757.  
  758. * ON STOCKE LES DIRECTIONS DANS UTILTETA
  759. * DIRECTION DE PROPAGATION : DIR1
  760. * DIRECTION TANGENTE AU FRONT : DIR2
  761. * DIRECTION DE CISAILLEMENT SI SEPARATION DE MODES : DIR3
  762. UTILTETA = TABL ;
  763. UTILTETA.'DIRECTION1' = DIR1 ;
  764. SI (NON BOOL.'COQ') ;
  765. UTILTETA.'DIRECTION2' = DIR2 ;
  766. SI (EGA GDIME 3) ;
  767. UTILTETA.'DIRECTION3' = DIR3 ;
  768. FINSI ;
  769. FINSI ;
  770.  
  771.  
  772. * ON COMPLETE ELTETA
  773. * ******************
  774.  
  775. * AJOUT EVENTUEL DE ELPI A ELTETA
  776. SI ((EXIS SUPTAB 'FRONT_FISSURE_2') ET BOOL.'DJ/DA') ;
  777. ELPI = SUPTAB.'FRONT_FISSURE_2' ;
  778. REPE MAIL2 ((SUPTAB.'COUCHE') + 1) ;
  779. ELPI = MAILLAGE ELEM 'APPU' 'LARG' ELPI ;
  780. FIN MAIL2 ;
  781. ELTETA = ELTETA ET ELPI ;
  782. FINSI ;
  783.  
  784. * AJOUT DU NOEUD SUPPORT EN DEF.PL.GENERALISEES
  785. SI (EGA GMODE 'PLANGENE') ;
  786. ELTETA = ELTETA ET (VALE 'MODE' 'PLANGENE') ;
  787. FINSI ;
  788. ELPOI1 = CHAN ELTETA 'POI1' ;
  789.  
  790. * L'ELEMENT SUPPORTANT LE MODELE MULTICOUCHE
  791. * DOIT ETRE DANS LA ZONE THETA
  792. SI BOOL.'COQ' ;
  793. N1 = NBNO ELTETA ;
  794. N2 = NBNO (ELTETA ET (EXTR M_MOYE 'MAIL')) ;
  795. SI (NEG N1 N2) ;
  796. MESS 'ERREUR : L ELEMENT EN MULTICOUCHE DESIGNE POUR CALCULER' ;
  797. MESS ' L INTEGRALE SE TROUVE EN DEHORS DE LA ZONE' ;
  798. MESS ' DEFINIE PAR LE NOMBRE DE COUCHES DONNE.' ;
  799. ERRE 21 ; QUIT G_THETA ;
  800. FINSI ;
  801. FINSI ;
  802.  
  803.  
  804. * TESTS DE COMPATIBILITE
  805. * **********************
  806.  
  807. * BOOL.'REPRI' = VRAI SI REPRISE DE CALCUL, FAUX SINON
  808. BOOL.'REPRI' = FAUX ;
  809. SI (BOOL.'PASAPAS' ET (NON BOOL.'PERSO1')) ;
  810. N1 = DIME (SUPTAB.'SOLUTION_PASAPAS'.'TEMPS') ;
  811. SI ((EXIS SUPTAB 'IABC') ET
  812. (EXIS SUPTAB 'ELTET1') ET
  813. (EXIS SUPTAB 'RESULTATS') ET
  814. (EXIS SUPTAB 'EVOLUTION_RESULTATS')) ;
  815. BOOL.'REPRI' = (N1 - 1) > SUPTAB.'IABC' ;
  816. MESS 'on tente une reprise...' ;
  817. FINSI ;
  818. FINSI ;
  819.  
  820. * TESTS DE COMPATIBILITE SI REPRISE DE CALCUL
  821. SI BOOL.'REPRI' ;
  822. * ON VERIFIE QUE L OBJECTIF RESTE LE MEME
  823. SI (NEG SUPTAB.'OBJ1' SUPTAB.'OBJECTIF') ;
  824. MESS 'ERREUR : REPRISE IMPOSSIBLE CAR L OBJECTIF DU' ;
  825. MESS ' CALCUL ACTUEL N EST PAS LE MEME QUE' ;
  826. MESS ' CELUI DU CALCUL PRECEDENT' ;
  827. ERRE 21 ; QUIT G_THETA ;
  828. FINSI ;
  829. * ON DOIT AVOIR LE MEME NOMBRE DE COUCHE (ON SUPPOSE LA FISSURE FIXE)
  830. SI ((EXIS SUPTAB 'COUCHE') ET (EXIS SUPTAB 'COU1')) ;
  831. SI (NEG SUPTAB.'COU1' SUPTAB.'COUCHE') ;
  832. MESS 'ERREUR : REPRISE IMPOSSIBLE CAR LE NOMBRE DE' ;
  833. MESS ' COUCHE ACTUEL N EST PAS LE MEME QUE' ;
  834. MESS ' CELUI UTILISE POUR LE CALCUL PRECEDENT' ;
  835. ERRE 21 ; QUIT G_THETA ;
  836. FINSI ;
  837. FINSI ;
  838. * RESTE A VERIFIER LA COMPATIBILITE DES SUPPORT DE CHAMP TETA VIA ELTETA
  839. * ELTETA DOIT ETRE INCLUS DANS ELTET1
  840. ELTET1 = SUPTAB.'ELTET1' ;
  841. SI(NEG (NBNO ELTETA) (NBNO (ELTET1 INTE ELTETA))) ;
  842. MESS 'ERREUR : REPRISE IMPOSSIBLE CAR LE SUPPORT DU ' ;
  843. MESS ' CHAMP_THETA FOURNI N EST PAS INCLUS DANS' ;
  844. MESS ' CELUI UTILISE POUR LE CALCUL PRECEDENT' ;
  845. ERRE 21 ; QUIT G_THETA ;
  846. FINSI ;
  847. MESS 'REPRISE DU CALCUL AUTORISE !' ;
  848. FINSI ;
  849.  
  850. * TESTS DE COMPATIBILITE SI UTILISATION DE PERSO1
  851. SI (BOOL.'PERSO1' ET (EXIS SUPTAB 'ELTET1')) ;
  852. ELTET1 = SUPTAB.'ELTET1' ;
  853. SI(NEG (NBNO ELTETA) (NBNO (ELTET1 INTE ELTETA))) ;
  854. MESS 'ERREUR : REPRISE IMPOSSIBLE CAR LE SUPPORT DU ' ;
  855. MESS ' CHAMP_THETA FOURNI N EST PAS INCLUS DANS' ;
  856. MESS ' CELUI UTILISE POUR LE CALCUL PRECEDENT' ;
  857. ERRE 21 ; QUIT G_THETA ;
  858. FINSI ;
  859. SI BOOL.'MESS' ;
  860. MESS 'POURSUITE DU CALCUL VIA PERSO1 AUTORISE !' ;
  861. FINSI ;
  862. FINSI ;
  863.  
  864.  
  865. * =============================================================================
  866.  
  867. * MODELES ET MATERIAUX DANS LA ZONE DE TRAVAIL
  868. * --------------------------------------------
  869.  
  870. * VERIFICATION DES DONNEES D ENTREE POUR MODELES_COMPOSITES
  871. SI (EXIS SUPTAB 'MODELES_COMPOSITES') ;
  872. N1 = DIME SUPTAB.'MODELES_COMPOSITES' ;
  873. M1 = EXTR MOD_MEC 'MAIL' ;
  874. M2 = VIDE 'MAILLAGE' ;
  875. REPE BIN4 N1 ;
  876. T1 = TYPE SUPTAB.'MODELES_COMPOSITES'.&BIN4 ;
  877. SI (NEG T1 'MMODEL ') ;
  878. MESS 'ERREUR : LE TYPE DE L OBJET No' &BIN4 'DANS LA' ;
  879. MESS ' TABLE MODELES_COMPOSITES EST INCORRECTE' ;
  880. ERRE 21 ; QUIT G_THETA ;
  881. FINSI ;
  882. M2 = M2 ET (EXTR SUPTAB.'MODELES_COMPOSITES'.&BIN4 'MAIL') ;
  883. FIN BIN4 ;
  884. SI (NEG (NBNO M1) (NBNO M2)) ;
  885. MESS 'ERREUR : TOUS LES MODELES DE MATERIAUX' ;
  886. MESS ' COMPOSITES NE SONT PAS DONNES' ;
  887. ERRE 21 ; QUIT G_THETA ;
  888. FINSI ;
  889. FINSI ;
  890.  
  891. * CREATION DE MOD_MEC ET TABMOD
  892. TABMOD = TABL ;
  893. SI (EXIS SUPTAB 'MODELES_COMPOSITES') ;
  894. * CAS DE MODELES COMPOSITES (AVEC DISCONTINUITE) : ON A DU TRAVAIL
  895. MOD_MEC_R = VIDE 'MMODEL' ;
  896. REPE BIN1 (DIME SUPTAB.'MODELES_COMPOSITES') ;
  897. M1 = SUPTAB.'MODELES_COMPOSITES'.&BIN1 ;
  898. M2 = EXTR M1 'MAIL' ;
  899. N1 = NBNO M2 ;
  900. N2 = NBNO ELTETA ;
  901. N3 = NBNO (ELTETA ET M2) ;
  902. * SI ON A DES NOEUDS EN COMMUN, ...
  903. SI (NEG (N1 + N2) N3) ;
  904. M2 = CHAN M2 'POI1' ;
  905. * ... ON LES RECUPERE
  906. E1 = (DIFF ELPOI1 M2) DIFF (ELPOI1 ET M2) ;
  907. N1 = NBNO (CONT ELTETA) ;
  908. N2 = NBNO (E1 ET (CONT ELTETA)) ;
  909. * SI TOUS LES NOEUDS EN COMMUN SONT SUR LE CONTOUR
  910. * => PAS D ELEMENTS A RECUPERER => ON PASSE AU MODELE SUIVANT
  911. SI (EGA N1 N2) ;
  912. ITER BIN1 ;
  913. FINSI ;
  914. * SINON, ON RECUPERE LES ELEMENTS CONCERNES ET LE MODELE REDUIT
  915. E1 = MAILLAGE ELEM 'APPU' 'STRI' E1 ;
  916. N1 = (DIME TABMOD) + 1 ;
  917. TABMOD.N1 = REDU M1 E1 ;
  918. MOD_MEC_R = MOD_MEC_R ET TABMOD.N1 ;
  919. FINSI ;
  920. FIN BIN1 ;
  921. SINON ;
  922. * CAS DE MODELES SANS DISCONTINUITE : ON A MOINS DE TRAVAIL
  923. MOD_MEC_R = REDU MOD_MEC ELTETA ;
  924. TABMOD.1 = MOD_MEC_R ;
  925. FINSI ;
  926. NBOBJ = DIME TABMOD ;
  927. MAT_MEC = REDU MAT_MEC MOD_MEC_R ;
  928.  
  929. * CHAMP EPAISSEUR DANS LA ZONE DE TRAVAIL
  930. SI BOOL.'COQ' ;
  931. EPAICH = (CHAN (EXCO MAT_MEC 'EPAI' 'SCAL')
  932. 'STRESSES' MOD_MEC_R) CHAN 'TYPE' 'SCALAIRE' ;
  933. FINSI ;
  934.  
  935.  
  936. * CALCUL DE C* PAR DEUX TYPES DE MODELE FLUAGE
  937. * ********************************************
  938. *** ITYPEF = 1 MODELE FLUAGE POUR LEQUEL ON A UNE EXPRESSION
  939. *** EXPLICITE DE L'INTEGRATION DE LA VITESSE DE
  940. *** DEFORMATION DE FLUAGE SUR LE TEMPS
  941. *** ITYPEF = 2 MODELE FLUAGE POUR LEQUEL ON N'OBTIENT PAS
  942. *** FACILEMENT CETTE EXPRESSION EXPLICITE
  943. *** ITYPEF = 99 SI EN ELASTO OU THERMO-ELASTO-PLASTICITE
  944.  
  945. * DETERMINATION DE ITYPEF
  946. ITYPEF = 99 ;
  947. SI (BOOL.'C*' OU BOOL.'C*H') ;
  948. SI ((EXIS MOD_MEC_R 'MATE' 'FLUAGE' 'NORTON') OU
  949. (EXIS MOD_MEC_R 'MATE' 'FLUAGE' 'POLYNOMIAL')) ;
  950. ITYPEF = 1 ;
  951. FINSI ;
  952. SI ((EXIS MOD_MEC_R 'MATE' 'FLUAGE' 'BLACKBURN') OU
  953. (EXIS MOD_MEC_R 'MATE' 'FLUAGE' 'RCCMR_316') OU
  954. (EXIS MOD_MEC_R 'MATE' 'FLUAGE' 'RCCMR_304') OU
  955. (EXIS MOD_MEC_R 'MATE' 'FLUAGE' 'LEMAITRE')) ;
  956. ITYPEF = 2 ;
  957. FINSI ;
  958. FINSI ;
  959.  
  960.  
  961. * INTERFACES DANS LA ZONE DE TRAVAIL
  962. * **********************************
  963.  
  964. * CREATION DES INTERFACES INTER-MODELE
  965. BOOL.'PARAL' = VRAI ; LINTER = TABL ;
  966. SI ((EXIS SUPTAB 'MODELES_COMPOSITES') ET ((DIME TABMOD) > 1)) ;
  967. * ON BOUCLE SUR LES MODELES QUI APPARTIENNENT A ELTETA
  968. REPE BIN2 ((DIME TABMOD) - 1) ;
  969. M1 = EXTR (TABMOD.&BIN2) 'MAIL' ;
  970. IIN3 = &BIN2 ;
  971. NIN3 = (DIME TABMOD) - &BIN2 ;
  972. REPE BIN3 NIN3 ;
  973. IIN3 = IIN3 + 1 ;
  974. LE1 = LECT &BIN2 IIN3 ;
  975. M2 = EXTR (TABMOD . IIN3) 'MAIL' ;
  976. * ON ITERE SI (M1 INCLUT DANS M2) OU (M2 INCLUT DANS M1)
  977. SI (EGA (NBNO (M1 DIFF M2)) 0) ;
  978. ITER BIN3 ;
  979. FINSI ;
  980. * ON ITERE SI M1 ET M2 N ONT PAS DE NOEUDS COMMUNS
  981. SI (EGA ((NBNO M1) + (NBNO M2)) (NBNO (M1 ET M2))) ;
  982. ITER BIN3 ;
  983. FINSI ;
  984. * ON RECUPERE L INTERFACE M1-M2
  985. L1 = (CONT M1) ELEM 'APPU' (CONT M2) ;
  986. N1 = NBNO M1 ; N2 = NBNO M2 ;
  987. * LO1=VRAI <=> IL EXISTE DES NOEUDS COMMUNS A M1 ET M2
  988. LO1 = NEG (N1 + N2) (NBNO (M1 ET M2)) ;
  989. * LO2=VRAI <=> IL N'Y A PAS 1 NOEUD COMMUN A M1 ET M2
  990. LO2 = NEG ('ABS' ((N1 + N2) - (NBNO (M1 ET M2)))) 1 ;
  991. * LO4 = M1 ET M2 FORMENT BIEN UNE INTERFACE ET NE SE CHEVAUCHENT PAS
  992. LO4 = NEG (NBEL L1) 0 ;
  993. SI (LO1 ET LO2 ET LO4) ;
  994. * ON AJOUTE L INTERFACE CAR ON A >1 NOEUDS EN COMMUN A M1 ET M2
  995. LINTER.LE1 = L1 ;
  996. * BOOL.'PARAL'=VRAI <=> TOUTES LES INTERFACES SONT // A LA FISSURE
  997. * SI BOOL.'PARAL'=FAUX IL FAUT AJOUTER DES TERMES D INTERFACES AU C
  998. P1 = (POIN L1 1) MOIN (POIN L1 2) ;
  999. P1 = P1 / (NORM P1) ;
  1000. * PETITE MODIF CAR DIR1 DOIT ETRE UN CHPOINT DESORMAIS
  1001. * -> A VERIFIER ?
  1002. PDIR1 = RESU DIR1 ;
  1003. PRESU = (EXTR PDIR1 'MAIL') POIN 1 ;
  1004. XDIR1 = EXTR PDIR1 PRESU 'UX' ;
  1005. YDIR1 = EXTR PDIR1 PRESU 'UY' ;
  1006. SI (GDIME EGA 2) ;
  1007. PDIR1 = XDIR1 YDIR1 ;
  1008. SINON ;
  1009. ZDIR1 = EXTR PDIR1 PRESU 'UZ' ;
  1010. PDIR1 = XDIR1 YDIR1 ZDIR1 ;
  1011. FINSI ;
  1012. PDIR1 = PDIR1 / (NORM PDIR1) ;
  1013. LO1 = ((EGA P1 PDIR1 1.E-6) OU
  1014. (EGA P1 (-1.*PDIR1) 1.E-6)) ;
  1015. BOOL.'PARAL' = BOOL.'PARAL' ET LO1 ;
  1016. FINSI ;
  1017. FIN BIN3 ;
  1018. FIN BIN2 ;
  1019. FINSI ;
  1020.  
  1021. * DANS LE CAS DECOUPLAGE SEULEMENT :
  1022. * TEST SI FRONT_FISSURE EST DANS UNE INTERFACE
  1023. BOOL.'DANS' = FAUX ;
  1024. SI ((NEG (DIME LINTER) 0) ET BOOL.'DECOUPLAGE') ;
  1025. IND1 = INDE LINTER ;
  1026. REPE BIN4 (DIME IND1) ;
  1027. LE1 = IND1.&BIN4 ;
  1028. M1 = CHAN LINTER.LE1 'POI1' ;
  1029. N1 = NBNO M1 ;
  1030. N2 = NBNO (M1 ET SUPTAB.'FRONT_FISSURE') ;
  1031. SI (EGA N1 N2) ;
  1032. BOOL.'DANS' = VRAI ;
  1033. QUIT BIN4 ;
  1034. SINON ;
  1035. ITER BIN4 ;
  1036. FINSI ;
  1037. FIN BIN4 ;
  1038. FINSI ;
  1039. * SI OUI (BOOL.'DANS'),ON DETERMINE LES MODELES SUP ET INF
  1040. MODINF = 0 ; MODSUP = 0 ;
  1041. SI BOOL.'DANS' ;
  1042. * ON REDEFINIT : BOOL.'PARAL'=VRAI <=> L'INTERFACE A LAQUELLE APPARTIENT LA FISSURE E
  1043. BOOL.'PARAL' = FAUX ;
  1044. M1 = EXTR TABMOD.(EXTR LE1 1) 'MAIL' ;
  1045. M2 = EXTR TABMOD.(EXTR LE1 2) 'MAIL' ;
  1046. LSUP = SUPTAB.'LEVRE_SUPERIEURE' ;
  1047. LINF = SUPTAB.'LEVRE_INFERIEURE' ;
  1048. N1 = NBNO M1 ;
  1049. N2 = NBNO M2 ;
  1050. NLSUP = NBNO LSUP ;
  1051. NLINF = NBNO LINF ;
  1052. N1SUP = NBNO (M1 ET LSUP) ;
  1053. N2INF = NBNO (M2 ET LINF) ;
  1054. SI ( ((N1 + NLSUP - N1SUP) > 1) ET ((N2 + NLINF - N2INF) > 1)) ;
  1055. * LSUP ET MOD1 ONT PLUS D'1 POINT COMMUN ET IDEM POUR LINF ET MOD2
  1056. MODSUP = TABMOD.(EXTR LE1 1) ;
  1057. MODINF = TABMOD.(EXTR LE1 2) ;
  1058. SINON ;
  1059. N1INF = NBNO (M1 ET LINF) ;
  1060. N2SUP = NBNO (M2 ET LSUP) ;
  1061. SI ( ((N1 + NLINF - N1INF) > 1) ET ((N2 + NLSUP - N2SUP) > 1)) ;
  1062. MODSUP = TABMOD.(EXTR LE1 2) ;
  1063. MODINF = TABMOD.(EXTR LE1 1) ;
  1064. SINON ;
  1065. MESS 'ERREUR : INCOMPATIBILITE ENTRE LE MODELES_COMPOSITES' ;
  1066. MESS ' ET LES LEVRE_SUPERIEURE ET _INFERIEURE' ;
  1067. ERRE 21 ; QUIT G_THETA ;
  1068. FINSI ;
  1069. FINSI ;
  1070. * LA FISSURE EST BIEN DANS LE PROLONGEMENT DE L' INTERFACE
  1071. BOOL.'PARAL' = VRAI ;
  1072. FINSI ;
  1073. * REM: il faudrait egalement verifier que MODSUP et MODINF suffisent a decrire E
  1074.  
  1075.  
  1076. * MODPLA : table indicee par entier pour stocker les modeles
  1077. * mecaniques de chaque objet MMODEL.
  1078. **************************************************
  1079. *** Elle est vide si le modele est elastique ou elastoplastique
  1080. *** avec une courbe de traction independante de la temperature.
  1081. *** Dans le cas contraire la table vaut :
  1082. *** 1 si le modele est plastique isotrope. Alors une
  1083. *** nouvelle courbe de traction EPSE-SIGMA est faite.
  1084. *** 2 si le modele est plastique cinematique
  1085. *** 3 si le modele est plastique parfaite
  1086.  
  1087. BOOL.'GRADYOUN' = FAUX ; BOOL.'GRADNU' = FAUX ;
  1088. BOOL.'GRADALPH' = FAUX ; MODPLA = TABLE ; TABTRA = TABLE ;
  1089.  
  1090. REPE BCMOD1 NBOBJ ;
  1091. MODEI = TABMOD.&BCMOD1 ;
  1092. MATEI = REDU MAT_MEC MODEI ;
  1093.  
  1094. * BOOL.'GRADYOUN'
  1095. YO1 = EXCO MATEI 'YOUN' ;
  1096. TYPYO = TYPE (EXTR YO1 'YOUN' 1 1 1) ;
  1097. SI (EGA TYPYO 'EVOLUTIO') ;
  1098. BOOL.'GRADYOUN' = VRAI ;
  1099. SINON ;
  1100. TEST1 = ((MAXI YO1) - (MINI YO1))/(MINI YO1) ;
  1101. SI (TEST1 '>' 1.E-10) ;
  1102. BOOL.'GRADYOUN' = VRAI ;
  1103. FINSI ;
  1104. FINSI ;
  1105.  
  1106. * BOOL.'GRADNU'
  1107. NU1 = EXCO MATEI 'NU' ;
  1108. TYPNU = TYPE (EXTR NU1 'NU' 1 1 1) ;
  1109. SI (EGA TYPNU 'EVOLUTIO') ;
  1110. BOOL.'GRADNU' = VRAI ;
  1111. SINON ;
  1112. TEST1 = ((MAXI NU1) - (MINI NU1))/(MINI NU1) ;
  1113. SI (TEST1 '>' 1.E-10) ;
  1114. BOOL.'GRADNU' = VRAI ;
  1115. FINSI ;
  1116. FINSI ;
  1117.  
  1118. * BOOL.'GRADALPH'
  1119. SI BOOL.'THER' ;
  1120. AL1 = EXCO MATEI 'ALPH' ;
  1121. TYPAL = TYPE (EXTR AL1 'ALPH' 1 1 1) ;
  1122. SI (EGA TYPAL 'EVOLUTIO') ;
  1123. BOOL.'GRADALPH' = VRAI ;
  1124. SINON ;
  1125. TEST1 = ((MAXI AL1) - (MINI AL1))/(MINI AL1) ;
  1126. SI (TEST1 '>' 1.E-10) ;
  1127. BOOL.'GRADALPH' = VRAI ;
  1128. FINSI ;
  1129. FINSI ;
  1130. FINSI ;
  1131.  
  1132. * COURBE DE TRACTION
  1133. SI (EXIS MATEI 'ECRO') ;
  1134. TR1 = EXCO MATEI 'ECRO' ;
  1135. TYPTR = TYPE (EXTR TR1 'ECRO' 1 1 1) ;
  1136. SI (EGA TYPTR 'NUAGE ') ;
  1137. MODPLA.&BCMOD1 = 1 ;
  1138. TRA1 = EXTR TR1 'ECRO' 1 1 1 ; COM1 = EXTR TRA1 'COMP' ;
  1139. NOMEVO1 = MOT 'ECRO' ; NOMFLO1 = MOT 'T' ;
  1140. REPE BNUA1 (DIME TRA1 'UPLE') ;
  1141. SI (EGA &BNUA1 1) ;
  1142. NUA1 = EXTR TRA1 'MINI' NOMFLO1 ;
  1143. SINON ;
  1144. NUA1 = EXTR TRA1 'SUPE' NOMFLO1 (T1 + 1.E-10) ;
  1145. FINSI ;
  1146. T1 = EXTR NUA1 NOMFLO1 ;
  1147. EV1 = EXTR NUA1 NOMEVO1 ;
  1148. PSIG1 = EXTR EV1 ORDO ; PEPS1 = EXTR EV1 'ABSC' ;
  1149. VYOU1 = (EXTR 2 PSIG1) / (EXTR 2 PEPS1) ;
  1150. PEPS2 = PROG ;
  1151. REPE BSIG1 ((DIME PSIG1) - 1) ;
  1152. VA1 = (EXTR (&BSIG1 + 1) PEPS1) -
  1153. ((EXTR (&BSIG1 + 1) PSIG1) / VYOU1) ;
  1154. PEPS2 = PEPS2 ET (PROG VA1) ;
  1155. FIN BSIG1 ;
  1156. EV1 = EVOL 'MANU' 'EPSE' PEPS2 SIGM ('ENLE' PSIG1 1) ;
  1157. SI (&BNUA1 EGA 1) ;
  1158. TRA2 = 'NUAG' 'COMP' NOMFLO1 T1 'COMP' NOMEVO1 EV1 ;
  1159. SINON ;
  1160. TRA2 = TRA2 ET ('NUAG' 'COMP' NOMFLO1
  1161. T1 'COMP' NOMEVO1 EV1) ;
  1162. FINSI ;
  1163. FIN BNUA1 ;
  1164. TABTRA.&BCMOD1 = TRA2 ;
  1165. * ON ENLEVE LA COURBE DE TRACTION SI ELLE DEPEND DE
  1166. * LA TEMPERATURE (OPERATION TROP COUTEUSE POUR VARI)
  1167. MAT0 = MATEI ; LCOMP1 = EXTR MAT0 'COMP' ;
  1168. REPE BCOM1 (DIME LCOMP1) ;
  1169. C1 = EXTR LCOMP1 &BCOM1 ;
  1170. SI (NEG C1 'ECRO') ;
  1171. SI (EGA &BCOM1 1) ;
  1172. MATEI = 'MATE' MODEI C1 (EXCO C1 MAT0) ;
  1173. SINON ;
  1174. MATEI = MATEI ET ('MATE' MODEI C1 (EXCO C1 MAT0)) ;
  1175. FINSI ;
  1176. FINSI ;
  1177. FIN BCOM1 ;
  1178. FINSI ;
  1179. * SIGY (et pas TRAC)
  1180. SINON ;
  1181. SI (EXIS MATEI 'SIGY') ;
  1182. SI1 = EXCO MATEI 'SIGY' ;
  1183. TYPSI = TYPE (EXTR SI1 'SIGY' 1 1 1) ;
  1184. SI (EXIS MATEI 'H') ;
  1185. H1 = EXCO MATEI 'H' ;
  1186. TYPH = TYPE (EXTR H1 'H' 1 1 1) ;
  1187. SI ((EGA TYPH 'EVOLUTIO') OU
  1188. (EGA TYPSI 'EVOLUTIO')) ;
  1189. MODPLA.&BCMOD1 = 2 ;
  1190. FINSI ;
  1191. SINON ;
  1192. SI (EGA TYPSI 'EVOLUTIO') ;
  1193. MODPLA.&BCMOD1 = 3 ;
  1194. FINSI ;
  1195. FINSI ;
  1196. FINSI ;
  1197. FINSI ;
  1198. FIN BCMOD1 ;
  1199. BOOL.'GRADPROP' = BOOL.'GRADYOUN' OU BOOL.'GRADNU' OU BOOL.'GRADALPH' OU ((DIME MODPLA) '>' 0) ;
  1200.  
  1201.  
  1202. * CAS IMPOSSIBLE A TRAITER
  1203. * ************************
  1204.  
  1205. SI (EXIS SUPTAB 'MODELES_COMPOSITES') ;
  1206. SI (BOOL.'DECOUPLAGE' ET (BOOL.'DANS' ET (NON BOOL.'PARAL'))) ;
  1207. MESS 'ERREUR : ON NE PEUT ENCORE DECOUPLER LES MODES' ;
  1208. MESS ' DANS LE CAS DES MATERIAUX COMPOSITES' ;
  1209. MESS ' SI LA FISSURE N APPARTIENT PAS A L INTERFACE' ;
  1210. ERRE 21 ; QUIT G_THETA ;
  1211. FINSI ;
  1212. FINSI ;
  1213.  
  1214.  
  1215. * =============================================================================
  1216.  
  1217. * PREREQUIS POUR EFFECTUER LES CALCULS
  1218. * ------------------------------------
  1219.  
  1220. * TITRES A AFFICHER SELON LE PROBLEME TRAITER
  1221. * *******************************************
  1222.  
  1223. SI BOOL.'PASAPAS' ;
  1224. TXMECANI= MOT ' Mecanique' ;
  1225. TXTERMI = MOT ' Thermique' ;
  1226. TXPRESS = MOT ' Volumique' ;
  1227. SINON ;
  1228. TXMECANI= MOT ' Mecanique' ;
  1229. TXTERMI = MOT ' Thermique' ;
  1230. TXPRESS = MOT ' Volumique' ;
  1231. FINSI ;
  1232. MC1 = MOT ' EN VISCO-THERMO-PLASTIQUE' ;
  1233. MC2 = MOT ' EN VISCO-PLASTICITE' ;
  1234. MC3 = MOT ' EN THERMO-PLASTICITE' ;
  1235. MC4 = MOT ' EN ELASTO-PLASTICITE' ;
  1236. SI (EXIS SUPTAB 'COUCHE') ;
  1237. MC10 = CHAI ' (Theta ' SUPTAB.'COUCHE' ')' ;
  1238. SINON ;
  1239. MC10 = CHAI ' (Theta utilisateur)' ;
  1240. FINSI ;
  1241. SI BOOL.'J' ;
  1242. CHA1 = CHAI 'INTEGRALE J EN FONCTION DU TEMPS' ;
  1243. MOTTI = MOT 'J' ;
  1244. MOTCO = MOT ' J' ;
  1245. SI BOOL.'THER' ;
  1246. TX1 = CHAI ' INTEGRALE J' MC3 ;
  1247. SINON ;
  1248. TX1 = CHAI ' INTEGRALE J' MC4 ;
  1249. FINSI ;
  1250. FINSI ;
  1251. SI BOOL.'C*' ;
  1252. CHA1 = CHAI 'INTEGRALE C* EN FONCTION DU TEMPS' ;
  1253. MOTTI = MOT 'C*' ;
  1254. MOTCO = MOT ' C*' ;
  1255. SI BOOL.'THER' ;
  1256. TX1 = CHAI ' INTEGRALE C*' MC1 ;
  1257. SINON ;
  1258. TX1 = CHAI ' INTEGRALE C*' MC2 ;
  1259. FINSI ;
  1260. FINSI ;
  1261. SI BOOL.'C*H' ;
  1262. CHA1 = CHAI 'INTEGRALE C*H EN FONCTION DU TEMPS' ;
  1263. MOTTI = MOT 'C*H' ;
  1264. MOTCO = MOT ' C*(H)' ;
  1265. SI BOOL.'THER' ;
  1266. TX1 = CHAI ' INTEGRALE C*H' MC1 ;
  1267. SINON ;
  1268. TX1 = CHAI ' INTEGRALE C*H' MC2 ;
  1269. FINSI ;
  1270. FINSI ;
  1271. SI BOOL.'DJ/DA' ;
  1272. SI (EXIS SUPTAB 'FISSURE_2') ;
  1273. CHA1 = CHAI 'INTEGRALE CROISEE DJi/DAj EN FONCTION DU TEMPS' ;
  1274. MOTTI = MOT 'DJi/DAj' ;
  1275. MOTCO = MOT ' dJi/dAj' ;
  1276. SI BOOL.'THER' ;
  1277. TX1 = CHAI ' INTEGRALE CROISEE DJi/DAj' MC3 ;
  1278. SINON ;
  1279. TX1 = CHAI ' INTEGRALE CROISEE DJi/DAj' MC4 ;
  1280. FINSI ;
  1281. SINON ;
  1282. CHA1 = CHAI 'INTEGRALE DJ/DA EN FONCTION DU TEMPS' ;
  1283. MOTTI = MOT 'DJ/DA' ;
  1284. MOTCO = MOT ' dJ/dA' ;
  1285. SI BOOL.'THER' ;
  1286. TX1 = CHAI ' INTEGRALE DJ/DA' MC3 ;
  1287. SINON ;
  1288. TX1 = CHAI ' INTEGRALE DJ/DA' MC4 ;
  1289. FINSI ;
  1290. FINSI ;
  1291. FINSI ;
  1292. SI BOOL.'J_DYNA' ;
  1293. CHA1 = CHAI 'INTEGRALE J DYNAMIQUE EN FONCTION DU TEMPS' ;
  1294. MOTTI = MOT 'J_DYNA' ;
  1295. MOTCO = MOT ' J_DYNA' ;
  1296. SI BOOL.'THER' ;
  1297. TX1 = CHAI ' INTEGRALE J EN THERMO-ELASTO-DYNAMIQUE' ;
  1298. SINON ;
  1299. TX1 = CHAI ' INTEGRALE J EN ELASTO-DYNAMIQUE' ;
  1300. FINSI ;
  1301. FINSI ;
  1302. SI BOOL.'DECOUPLAGE' ;
  1303. CHA1=CHAI 'F.I.C. Ki EN FONCTION DU TEMPS' ;
  1304. MOTTI = MOT 'Ki' ;
  1305. MOTCO = MOT ' K' ;
  1306. SI BOOL.'THER' ;
  1307. TX1 = CHAI ' SEPARATION DES F.I.C.' MC3 ;
  1308. SINON ;
  1309. TX1 = CHAI ' SEPARATION DES F.I.C.' MC4 ;
  1310. FINSI ;
  1311. FINSI ;
  1312. TX2 = CHAI ' Contribution due au chargement' MC10 ;
  1313. TX3 = CHAI ' ________________________________________' ;
  1314. SI (EXIS SUPTAB 'COUCHE') ;
  1315. SI (SUPTAB.'COUCHE' > 9) ;
  1316. TX3 = CHAI ' _________________________________________' ;
  1317. FINSI ;
  1318. SI (SUPTAB.'COUCHE' > 99) ;
  1319. TX3 = CHAI ' __________________________________________' ;
  1320. FINSI ;
  1321. SINON ;
  1322. TX3 = CHAI ' _____________________________________________' ;
  1323. FINSI ;
  1324.  
  1325. * AFFICHAGE DU TITRE
  1326. * ******************
  1327.  
  1328. SI BOOL.'PASAPAS' ;
  1329. SI (EGA GDIME 2) ;
  1330. SI BOOL.'DECOUPLAGE' ;
  1331. MESS ' ' TX1 ;
  1332. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1333. MESS 'Mode No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1334. SINON ;
  1335. MESS ' ' TX1 ;
  1336. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1337. MESS ' No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1338. FINSI ;
  1339. FINSI ;
  1340. SI ((EGA GDIME 3) ET (NON BOOL.'COQ')) ;
  1341. SI BOOL.'DECOUPLAGE' ;
  1342. MESS ' ' TX1 ;
  1343. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1344. MESS 'Mode Noeud No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1345. SINON ;
  1346. MESS ' ' TX1 ;
  1347. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1348. MESS ' Noeud No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1349. FINSI ;
  1350. FINSI ;
  1351. SI BOOL.'COQ' ;
  1352. MESS ' ' TX1 ;
  1353. MESS ;
  1354. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1355. MESS ' Plan No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1356. FINSI ;
  1357. SINON ;
  1358. SI (EGA GDIME 2) ;
  1359. SI BOOL.'DECOUPLAGE' ;
  1360. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1361. MESS 'Mode ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1362. SINON ;
  1363. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1364. MESS ' ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1365. FINSI ;
  1366. FINSI ;
  1367. SI ((EGA GDIME 3) ET (NON BOOL.'COQ')) ;
  1368. SI BOOL.'DECOUPLAGE' ;
  1369. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1370. MESS ' Mode Noeud ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1371. SINON ;
  1372. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1373. MESS ' Noeud ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1374. FINSI ;
  1375. FINSI ;
  1376. SI BOOL.'COQ' ;
  1377. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1378. MESS ' Plan ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1379. FINSI ;
  1380. FINSI ;
  1381.  
  1382. * FORCE, DEPLACEMENT ET GRADIENT NULS
  1383. * ***********************************
  1384.  
  1385. FOR000 = CHAN 'CHPO' MOD_MEC_R (ZERO MOD_MEC_R 'FORCES ') ;
  1386. DEP000 = CHAN 'CHPO' MOD_MEC_R (ZERO MOD_MEC_R 'DEPLACEM') ;
  1387. SI (EGA GMODE 'PLANGENE') ;
  1388. FOR000 = MANU 'CHPO' (EXTR MOD_MEC_R 'MAIL') 2 'FX' 0.
  1389. 'FY' 0. 'TITR' 'FORCES ' 'NATURE' 'DIFFUS' ;
  1390. FOR000 = FOR000 ET (MANU 'CHPO' (VALE 'MODE' 'PLANGENE')
  1391. 3 'FZ' 0. 'MX' 0. 'MY' 0.
  1392. 'TITR' 'FORCES ' 'NATURE' 'DIFFUS') ;
  1393. DEP000 = MANU 'CHPO' (EXTR MOD_MEC_R 'MAIL') 2 'UX' 0.
  1394. 'UY' 0. 'TITR' 'DEPLACEM' 'NATURE' 'DIFFUS' ;
  1395. DEP000 = DEP000 ET (MANU 'CHPO' (VALE 'MODE' 'PLANGENE')
  1396. 3 'UZ' 0. 'RX' 0. 'RY' 0.
  1397. 'TITR' 'DEPLACEM' 'NATURE' 'DIFFUS') ;
  1398. FINSI ;
  1399. CMD001 = CHAN 'STRESSES' MOD_MEC_R (ZERO MOD_MEC_R 'DEPLACEM') ;
  1400. GRA000 = ZERO MOD_MEC_R 'GRADIENT' ;
  1401. VAR000 = ZERO MOD_MEC_R 'VARINTER' ;
  1402.  
  1403.  
  1404. * NOMBRE DE BOUCLE POUR LE CALCUL DES INTEGRALES
  1405. * **********************************************
  1406.  
  1407. SI BOOL.'PASAPAS' ;
  1408. NBG = -1 ;
  1409. NBDEP = DIME (SUPTAB.'SOLUTION_PASAPAS'.'TEMPS') ;
  1410. SI BOOL.'REPRI' ;
  1411. NBG = SUPTAB.'IABC' ;
  1412. NBDEP = NBDEP - 1 - NBG ;
  1413. FINSI ;
  1414. SI BOOL.'PERSO1' ;
  1415. NBG = (WTAB . 'PAS') - 1 ;
  1416. NBDEP = 1 ;
  1417. FINSI ;
  1418. SINON ;
  1419. NBG = -1 ;
  1420. NBDEP = 1 ;
  1421. FINSI ;
  1422.  
  1423.  
  1424. * SOLUTION DU PAS PRECEDENT SI REPRISE DE CALCUL OU SI PERSO1
  1425. * ***********************************************************
  1426.  
  1427. SI (BOOL.'REPRI' OU (BOOL.'PERSO1' ET (NBG >EG 0))) ;
  1428. SIG1 = (SUPTAB.'SOLUTION_PASAPAS'.'CONTRAINTES'.NBG) REDU MOD_MEC_R ;
  1429. SI (EXIS (SUPTAB.'SOLUTION_PASAPAS') 'VARIABLES_INTERNES') ;
  1430. VAR1 = (SUPTAB.'SOLUTION_PASAPAS'.'VARIABLES_INTERNES'.NBG)
  1431. REDU MOD_MEC_R ;
  1432. SINON ;
  1433. VAR1 = VAR000 ;
  1434. FINSI ;
  1435. MAT_INST = SUPTAB.'MAT_INST' ;
  1436. WELAS = 0.5*('ENER' MOD_MEC_R SIG1 ('ELAS' MOD_MEC_R SIG1 MAT_INST)) ;
  1437. WPLAS = (REDU MOD_MEC_R SUPTAB.'END1') - WELAS ;
  1438. SI (EGA ITYPEF 2) ;
  1439. VDI1 = SUPTAB.'VDI1' ;
  1440. FINSI ;
  1441. SI (((DIME MODPLA) > 0) ET BOOL.'THER') ;
  1442. WVMIS = SUPTAB.'ENV1' ;
  1443. FINSI ;
  1444. SI BOOL.'MESS' ;
  1445. MESS 'RECUP DU PAS PRECEDENT OK' ;
  1446. FINSI ;
  1447. FINSI ;
  1448.  
  1449. * CALCUL DE LA DEFORMATION THERMIQUE A TREF
  1450. SI (BOOL.'THER' ET (NON BOOL.'COQ')) ;
  1451. SI (EXIS MAT_MEC 'TREF') ;
  1452. TREF = REDU (EXCO 'TREF' MAT_MEC 'T') ELTETA ;
  1453. TREF = CHAN 'TYPE' TREF 'TEMPERATURES' ;
  1454. SINON ;
  1455. TREF = MANU 'CHML' MOD_MEC_R 'T' 0. 'TYPE' 'TEMPERATURES' ;
  1456. FINSI ;
  1457. MATREF = VARI 'NUAG' MOD_MEC_R MAT_MEC TREF ;
  1458. EPTREF = EPTH MOD_MEC_R MATREF TREF ;
  1459. EPTREF VAR2 VAR3 = INVA MOD_MEC_R EPTREF ;
  1460. EPTREF = CHAN 'CHAM' (EPTREF/3.) MOD_MEC_R 'NOEUD' ;
  1461. OBJUTI.'EPTREF' = EPTREF ;
  1462. FINSI ;
  1463.  
  1464.  
  1465. * REMPLISSAGE DE OBJUTI
  1466. * *********************
  1467.  
  1468. OBJUTI.'MOD_MEC_R' = MOD_MEC_R ;
  1469. OBJUTI.'MOTTI' = MOTTI ;
  1470. OBJUTI.'MODCOU' = MODCOU ;
  1471. OBJUTI.'TABMOD' = TABMOD ;
  1472. OBJUTI.'LINTER' = LINTER ;
  1473. OBJUTI.'ELTETA' = ELTETA ;
  1474. OBJUTI.'MODPLA' = MODPLA ;
  1475. OBJUTI.'FOR000' = FOR000 ;
  1476. OBJUTI.'DEP000' = DEP000 ;
  1477. OBJUTI.'CMD001' = CMD001 ;
  1478. OBJUTI.'GRA000' = GRA000 ;
  1479. OBJUTI.'ITYPEF' = ITYPEF ;
  1480. OBJUTI.'DIRECTION1' = DIR1 ;
  1481. OBJUTI.'DIRECTION2' = DIR2 ;
  1482. OBJUTI.'DIRECTION3' = DIR3 ;
  1483. OBJUTI.'ELTETA' = ELTETA ;
  1484. * DECOUPLAGE
  1485. OBJUTI.'MODSUP' = MODSUP ;
  1486. OBJUTI.'MODINF' = MODINF ;
  1487. * AJOUT BP BT POUR LE CONTACT FROTTANT
  1488. SI BOOL.'FROT' ;
  1489. OBJUTI.'OBJCON' = OBJCON ;
  1490. OBJUTI.'MAILCON' = MAILCON ;
  1491. FINSI ;
  1492. * FIN AJOUT BP BT
  1493. SI BOOL.'PERSO1' ;
  1494. OBJUTI.'ESTIMATION' = ESTIM ;
  1495. FINSI ;
  1496.  
  1497. ***************************************************
  1498. ** DECLARATION DES TABLES STOCKANT LES RESULTATS **
  1499. ***************************************************
  1500. SI BOOL.'PERSO1' ;
  1501. FLCREA = NBG EGA -1 ;
  1502. SINON ;
  1503. FLCREA = NON BOOL.'REPRI' ;
  1504. FINSI ;
  1505. SI FLCREA ;
  1506. SI BOOL.'MESS' ;
  1507. MESS 'ON VA CREER SUPTAB.RESULTATS' ;
  1508. FINSI ;
  1509. SI ((EGA GDIME 3) OU BOOL.'PASAPAS' OU BOOL.'DECOUPLAGE') ;
  1510. SUPTAB.'RESULTATS' = TABL ;
  1511. FINSI ;
  1512. SI BOOL.'PASAPAS' ;
  1513. SI ((EGA GDIME 3) OU BOOL.'DECOUPLAGE') ;
  1514. SUPTAB.'EVOLUTION_RESULTATS' = TABL ;
  1515. FINSI ;
  1516. SI (EGA ITYPEF 99) ;
  1517. SUPTAB.'CRIT_DECHA_GLOBAL1' = TABLE ;
  1518. SUPTAB.'CRIT_DECHA_LOCAL1' = TABLE ;
  1519. SUPTAB.'CRIT_DECHA_GLOBAL2' = TABLE ;
  1520. SUPTAB.'CRIT_DECHA_GLOBAL2_L' = TABLE ;
  1521. SUPTAB.'CRIT_DECHA_LOCAL2' = TABLE ;
  1522. FINSI ;
  1523. FINSI ;
  1524. SI (BOOL.'COQ' ET (BOOL.'PASAPAS' OU BOOL.'DECOUPLAGE')) ;
  1525. SUPTAB.'EPAISSEUR_RESULTATS' = TABL ;
  1526. FINSI ;
  1527. SI BOOL.'DECOUPLAGE' ;
  1528. REPE IRUPT GDIME ;
  1529. MODE_RUPT = (EXTR 'III' 1 &IRUPT) ;
  1530. SI ((EGA GDIME 3) OU BOOL.'PASAPAS') ;
  1531. SUPTAB.'RESULTATS'.MODE_RUPT = TABL ;
  1532. FINSI ;
  1533. SI ((EGA GDIME 3) ET BOOL.'PASAPAS') ;
  1534. SUPTAB.'EVOLUTION_RESULTATS'.MODE_RUPT = TABL ;
  1535. FINSI ;
  1536. SI (BOOL.'COQ' ET BOOL.'PASAPAS') ;
  1537. SUPTAB.'EPAISSEUR_RESULTATS'.MODE_RUPT = TABL ;
  1538. FINSI ;
  1539. FIN IRUPT ;
  1540. FINSI ;
  1541. FINSI ;
  1542.  
  1543.  
  1544. ***********************************************
  1545. ***********************************************
  1546. ********* BOUCLE SUR LE PAS DE CALCUL *********
  1547. ***********************************************
  1548. ***********************************************
  1549.  
  1550. REPE BOUCEXT NBDEP ;
  1551. IABC = NBG + &BOUCEXT ;
  1552.  
  1553. * DECLARATION DES TABLES STOCKANT LES RESULTATS POUR LE PAS DE TEMPS IABC
  1554. SI (BOOL.'PASAPAS' ET (EGA GDIME 3)) ;
  1555. SI BOOL.'DECOUPLAGE' ;
  1556. REPE IRUPT GDIME ;
  1557. SUPTAB.'RESULTATS'.(EXTR 'III' 1 &IRUPT).IABC = TABL ;
  1558. FIN IRUPT ;
  1559. SINON ;
  1560. SUPTAB.'RESULTATS'.IABC = TABL ;
  1561. FINSI ;
  1562. FINSI ;
  1563.  
  1564.  
  1565. ***************************************************
  1566. ** DEPLACEMENTS,CONTRAINTES ... A L INSTANT INST **
  1567. ***************************************************
  1568.  
  1569. SI BOOL.'PASAPAS' ;
  1570. * SOLUTION_PASAPAS
  1571. SI BOOL.'PERSO1' ;
  1572. * CAS PERSO1
  1573. INST = ESTIM . 'TEMPS' ;
  1574. DEPINT = (ESTIM . 'DEPLACEMENTS') REDU ELTETA ;
  1575. SIGF = (ESTIM . 'CONTRAINTES' ) REDU MOD_MEC_R ;
  1576. SI (BOOL.'GRANDS_DEP' ET (NON BOOL.'ROT_RIG')) ;
  1577. SIGF = 'CAPI' SIGF DEPINT MOD_MEC_R ;
  1578. FINSI ;
  1579. SI BOOL.'ROT_RIG' ;
  1580. SI (NON (EXIS (SUPTAB.'ROTATION_RIGIDIFIANTE') IABC)) ;
  1581. MESS 'ERREUR : Le deplacement du a une rotation' ;
  1582. MESS ' rigidifiante au pas ' IABC ' n est pas'
  1583. MESS ' donne' ;
  1584. ERRE 21 ; QUIT G_THETA ;
  1585. FINSI ;
  1586. DEPINT = DEPINT -
  1587. (REDU SUPTAB.'ROTATION_RIGIDIFIANTE'.IABC ELTETA) ;
  1588. FINSI ;
  1589. SI (EXIS ESTIM 'VARIABLES_INTERNES') ;
  1590. VARF = (ESTIM . 'VARIABLES_INTERNES') REDU MOD_MEC_R ;
  1591. SINON ;
  1592. VARF = VAR000 ;
  1593. FINSI ;
  1594. SI BOOL.'C*' ;
  1595. SI (EGA IABC 0) ;
  1596. DELTAT = INST + 1.E+30 ;
  1597. DEPINT = ESTIM . 'DEPLACEMENTS' ;
  1598. VITDFI = ESTIM . 'DEFORMATIONS_INELASTIQUES' ;
  1599. SIG1 = SIGF * 1. ;
  1600. FINSI ;
  1601. SI (IABC '>' 0) ;
  1602. DELTAT= INST - (ESTIM . 'TEMPS') ;
  1603. DEPINT= (ESTIM.'DEPLACEMENTS') - (ESTIM.'DEPLACEMENTS') ;
  1604. VITDFI= (ESTIM.'DEFORMATIONS_INELASTIQUES')
  1605. - (ESTIM.'DEFORMATIONS_INELASTIQUES') ;
  1606. FINSI ;
  1607. DEPINT = (REDU ELTETA DEPINT) / DELTAT ;
  1608. VITDFI = (REDU ELTETA VITDFI) / DELTAT ;
  1609. FINSI ;
  1610. SI BOOL.'J_DYNA' ;
  1611. VITF = (ESTIM .'VITESSES') REDU ELTETA ;
  1612. ACCF = (ESTIM .'ACCELERATIONS') REDU ELTETA ;
  1613. FINSI ;
  1614. SINON ;
  1615. * CAS OU ON APPELLE G_THETA APRES PASAPAS
  1616. INST = SUPTAB.'SOLUTION_PASAPAS'.'TEMPS'.IABC ;
  1617. DEPINT = (SUPTAB.'SOLUTION_PASAPAS'.'DEPLACEMENTS'.IABC)
  1618. REDU ELTETA ;
  1619. SIGF = (SUPTAB.'SOLUTION_PASAPAS'.'CONTRAINTES'.IABC)
  1620. REDU MOD_MEC_R ;
  1621. SI (BOOL.'GRANDS_DEP' ET (NON BOOL.'ROT_RIG')) ;
  1622. SIGF = 'CAPI' SIGF DEPINT MOD_MEC_R ;
  1623. FINSI ;
  1624. SI BOOL.'ROT_RIG' ;
  1625. SI (NON (EXIS (SUPTAB.'ROTATION_RIGIDIFIANTE') IABC)) ;
  1626. MESS 'ERREUR : Le deplacement du a une rotation' ;
  1627. MESS ' rigidifiante au pas ' IABC ' n est pas'
  1628. MESS ' donne' ;
  1629. ERRE 21 ; QUIT G_THETA ;
  1630. FINSI ;
  1631. DEPINT = DEPINT -
  1632. (REDU SUPTAB.'ROTATION_RIGIDIFIANTE'.IABC ELTETA) ;
  1633. FINSI ;
  1634. SI (EXIS (SUPTAB.'SOLUTION_PASAPAS') 'VARIABLES_INTERNES') ;
  1635. VARF = (SUPTAB.'SOLUTION_PASAPAS'.'VARIABLES_INTERNES'.IABC)
  1636. REDU MOD_MEC_R ;
  1637. SINON ;
  1638. VARF = VAR000 ;
  1639. FINSI ;
  1640. SI BOOL.'C*' ;
  1641. SI (EGA IABC 0) ;
  1642. DELTAT = INST + 1.E+30 ;
  1643. DEPINT = SUPTAB.'SOLUTION_PASAPAS'.'DEPLACEMENTS'.IABC ;
  1644. VITDFI = SUPTAB.'SOLUTION_PASAPAS'.
  1645. 'DEFORMATIONS_INELASTIQUES'.IABC ;
  1646. SIG1 = SIGF * 1. ;
  1647. FINSI ;
  1648. SI (IABC > 0) ;
  1649. DELTAT = INST - (SUPTAB.'SOLUTION_PASAPAS'.'TEMPS'.
  1650. (IABC - 1)) ;
  1651. DEPINT = (SUPTAB.'SOLUTION_PASAPAS'.'DEPLACEMENTS'.IABC) -
  1652. (SUPTAB.'SOLUTION_PASAPAS'.'DEPLACEMENTS'.(IABC - 1)) ;
  1653. VITDFI = (SUPTAB.'SOLUTION_PASAPAS'.
  1654. 'DEFORMATIONS_INELASTIQUES'.IABC) -
  1655. (SUPTAB.'SOLUTION_PASAPAS'.
  1656. 'DEFORMATIONS_INELASTIQUES'.(IABC - 1)) ;
  1657. FINSI ;
  1658. DEPINT = (REDU ELTETA DEPINT) / DELTAT ;
  1659. VITDFI = (REDU ELTETA VITDFI) / DELTAT ;
  1660. FINSI ;
  1661. SI BOOL.'J_DYNA' ;
  1662. VITF = (SUPTAB.'SOLUTION_PASAPAS'.'VITESSES'.IABC)
  1663. REDU ELTETA ;
  1664. ACCF = (SUPTAB.'SOLUTION_PASAPAS'.'ACCELERATIONS'.IABC)
  1665. REDU ELTETA ;
  1666. FINSI ;
  1667. FINSI ;
  1668. SINON ;
  1669. * SOLUTION_RESO
  1670. DEPINT = REDU (SUPTAB.'SOLUTION_RESO') ELTETA ;
  1671. SIGF = SIGM 'LINE' DEPINT MOD_MEC_R MAT_MEC ;
  1672. FINSI ;
  1673.  
  1674. * ON CHANGE LE DEPLACEMENT DEPINT EN MCHAML AU NOEUD
  1675. DEPINT = CHAN 'CHAM' DEPINT MOD_MEC_R 'NOEUD' 'DEPLACEMENTS' ;
  1676.  
  1677.  
  1678. ****************************************************
  1679. * MODIFICATION DES CHAMPS THETA ET PI SI GRANDE ROT
  1680. ****************************************************
  1681.  
  1682. SI (BOOL.'PASAPAS' ET BOOL.'ROT_RIG') ;
  1683. FORM SUPTAB.'ROTATION_RIGIDIFIANTE'.IABC ;
  1684. SUPTAB.'CHAMP_THETA' UTILTETA = CH_THETA SUPTAB ;
  1685. SI BOOL.'DJ/DA' ;
  1686. SI (NON (EXIS SUPTAB 'FRONT_FISSURE_2')) ;
  1687. SUPTAB.'COUCHE' = (SUPTAB.'COUCHE') - 1 ;
  1688. SUPTAB.'PI' UTILPI = CH_THETA SUPTAB ;
  1689. SUPTAB.'COUCHE' = (SUPTAB.'COUCHE') + 1 ;
  1690. SINON ;
  1691. P1 = SUPTAB.'FRONT_FISSURE' ;
  1692. SUPTAB.'FRONT_FISSURE' = SUPTAB.'FRONT_FISSURE_2' ;
  1693. SUPTAB.'FISSURE' = SUPTAB.'FISSURE_2' ;
  1694. SUPTAB.'PI' UTILPI = CH_THETA SUPTAB ;
  1695. SUPTAB.'FRONT_FISSURE' = P1 ;
  1696. FINSI ;
  1697. FINSI ;
  1698. FINSI ;
  1699.  
  1700.  
  1701. ***************************************************
  1702. ********** TEMPERATURES A L INSTANT INST **********
  1703. ***************************************************
  1704.  
  1705. SI BOOL.'THER' ;
  1706. SI BOOL.'PASAPAS' ;
  1707. SI BOOL.'THER_DECO' ;
  1708. TEPINT = 'TIRE' CHAR1 INST 'T' ;
  1709. SINON ;
  1710. * bp, 2014-11-13 : ajout distinction cas BOOL.'THER' et BOOL.'THER_DECO'
  1711. TEPINT = REDU ELTETA SUPTAB.'SOLUTION_PASAPAS'.'TEMPERATURES'.
  1712. IABC ;
  1713. FINSI ;
  1714. SINON ;
  1715. TEPINT = SUPTAB.'TEMPERATURES' ;
  1716. FINSI ;
  1717. FINSI ;
  1718.  
  1719.  
  1720. ***************************************************
  1721. ********** DEF IMPOSEE A L INSTANT INST **********
  1722. ***************************************************
  1723.  
  1724. SI BOOL.'DEF_IMP' ;
  1725. SI BOOL.'PASAPAS' ;
  1726. DEFI = 'TIRE' CHAR1 INST 'DEFI' ;
  1727. SINON ;
  1728. DEFI = SUPTAB.'DEFORMATIONS_IMPOSEES' ;
  1729. FINSI ;
  1730. FINSI ;
  1731.  
  1732.  
  1733. ***************************************************
  1734. ********** CONTACT FROTTANT **********
  1735. ***************************************************
  1736.  
  1737. SI BOOL.'FROT' ;
  1738. SI BOOL.'PASAPAS' ;
  1739. * ...TODO
  1740. SINON ;
  1741. * A PRIORI DEPLACEMENT_FISSURE PAS TRES UTILE ...
  1742. SI (EXIS SUPTAB 'DEPLACEMENT_FISSURE') ;
  1743. WDEP = SUPTAB . 'DEPLACEMENT_FISSURE' ;
  1744. SINON ;
  1745. WDEP = REDU (SUPTAB.'SOLUTION_RESO') MAICON ;
  1746. FINSI ;
  1747. TOTO = EXTR WDEP 'MAIL' ;
  1748. SI (EGA (NBEL TOTO) 0) ;
  1749. MESS 'ERREUR : IL FAUT DEPLACEMENT_FISSURE SI MODELE_FISSURE' ;
  1750. ERRE 21 ; QUIT G_THETA ;
  1751. FINSI ;
  1752. SI (EXIS SUPTAB 'PRESSION_FISSURE') ;
  1753. SIGCON = SUPTAB . 'PRESSION_FISSURE' ;
  1754. SINON ;
  1755. SIGCON = REDU SIGF OBJCON ;
  1756. FINSI ;
  1757. * PEUT ETRE FAIRE UN TEST SUR SIGCON ...
  1758. FINSI ;
  1759. FINSI ;
  1760.  
  1761.  
  1762. *****************************************************
  1763. * CONTRAINTE RECALCULEE SI BOOL.'THER' = VRAI et NON BOOL.'PASAPAS' *
  1764. *****************************************************
  1765.  
  1766. SI (BOOL.'THER' ET (NON BOOL.'PASAPAS')) ;
  1767. SIGF = SIGF - (THET MOD_MEC_R MAT_MEC TEPINT) ;
  1768. FINSI ;
  1769.  
  1770.  
  1771. ***************************************************
  1772. ************ MATERIAU A L INSTANT INST ************
  1773. ***************************************************
  1774.  
  1775. SI (BOOL.'GRADPROP' ET BOOL.'THER' ET BOOL.'PASAPAS') ;
  1776. MAT_INST = VARI 'NUAG' MOD_MEC_R MAT_MEC (EXCO 'T' TEPINT 'T') ;
  1777. SINON ;
  1778. MAT_INST = MAT_MEC ;
  1779. * bp: ne devrait on pas ecrire ci dessous..? inutile?
  1780. * MAT_INST = REDU MOD_MEC_R MAT_MEC
  1781. FINSI ;
  1782. OBJUTI.'MAT_INST' = MAT_INST ;
  1783.  
  1784.  
  1785. ***************************************************
  1786. ********* RIGIDITE TOTALE A L INSTANT INST ********
  1787. ***************************************************
  1788.  
  1789. * bp: utilite?
  1790. SI ( BOOL.'DJ/DA' OU (BOOL.'DECOUPLAGE'
  1791. ET (NON BOOL.'XFEM') ET (EGA GDIME 3) ET (NON BOOL.'DANS')) ) ;
  1792. SI BOOL.'PASAPAS' ;
  1793. SI (BOOL.'GRADPROP' ET BOOL.'THER') ;
  1794. M1 = VARI 'NUAG' MOD_MEC_R (EXCO 'T' TEPINT 'T')
  1795. (SUPTAB.'SOLUTION_PASAPAS'.'CARACTERISTIQUES') ;
  1796. SINON ;
  1797. M1 = SUPTAB.'SOLUTION_PASAPAS'.'CARACTERISTIQUES' ;
  1798. FINSI ;
  1799. RIGTOT = RIGI M1 (SUPTAB.'SOLUTION_PASAPAS'.'MODELE') ;
  1800. SINON ;
  1801. RIGTOT = RIGI (SUPTAB.'CARACTERISTIQUES') (SUPTAB.'MODELE') ;
  1802. FINSI ;
  1803. FINSI ;
  1804. OBJUTI.'RIGTOT' = RIGTOT ;
  1805.  
  1806.  
  1807. ********************************************************************
  1808. ****** CHARGEMENT MECANIQUE (FORCES NODALES) A L INSTANT INST ******
  1809. ********************************************************************
  1810.  
  1811. PREINT = FOR000 ;
  1812. SI BOOL.'PASAPAS' ;
  1813. *** SOLUTION_PASAPAS ******************************
  1814. SI (EXIS CHAR1 'MECA') ;
  1815. PREINT = PREINT + ((TIRE CHAR1 INST 'MECA') REDU ELTETA) ;
  1816. FINSI ;
  1817. SI BOOL.'MODE_PRES' ;
  1818. * Dans le cas ou il y a un modele de pression
  1819. MATPRE = TIRE CHAR1 'PRES' INST ;
  1820. * --> on isole la partie du MMODEL de pression qui est appliquee
  1821. * sur la fissure
  1822. SI BOOL.'PRES_FISS' ;
  1823. MODPF = REDU MODPRE MAILPF ;
  1824. MATPF = REDU MATPRE MODPF ;
  1825. FINSI ;
  1826. * --> on calcule les forces nodales equivalentes aux pressions
  1827. * appliquees hors de la fissure
  1828. MAILPEXT = DIFF MAILPTOT MAILPF ;
  1829. SI ((NBEL MAILPEXT) > 0) ;
  1830. MODPEXT = REDU MODPRE MAILPEXT ;
  1831. MATPEXT = REDU MATPRE MODPEXT ;
  1832. PREINT = PREINT + (BSIG MODPEXT MATPEXT) ;
  1833. FINSI ;
  1834. FINSI ;
  1835. SINON ;
  1836. *** SOLUTION_RESO **********************************
  1837. SI (EXIS SUPTAB 'CHARGEMENTS_MECANIQUES') ;
  1838. PREINT = PREINT + (SUPTAB.'CHARGEMENTS_MECANIQUES' REDU ELTETA) ;
  1839. FINSI ;
  1840. SI BOOL.'MODE_PRES' ;
  1841. * Dans le cas ou il y a un modele de pression
  1842. * --> on isole la partie du MMODEL de pression qui est appliquee sur
  1843. * la fissure
  1844. SI BOOL.'PRES_FISS' ;
  1845. MODPF = REDU MODPRE MAILPF ;
  1846. MATPF = REDU MATPRE MODPF ;
  1847. FINSI ;
  1848. * --> on calcule les forces nodales equivalentes aux pressions
  1849. * appliquees hors de la fissure
  1850. MAILPEXT = DIFF MAILPTOT MAILPF ;
  1851. SI ((NBEL MAILPEXT) > 0) ;
  1852. MODPEXT = REDU MODPRE MAILPEXT ;
  1853. MATPEXT = REDU MATPRE MODPEXT ;
  1854. PREINT = PREINT + (BSIG MODPEXT MATPEXT) ;
  1855. FINSI ;
  1856. FINSI ;
  1857. FINSI ;
  1858.  
  1859.  
  1860. **********************************************************************
  1861. ******** POUR LES PRESSIONS APPLIQUEES SUR LA FISSURE
  1862. * on calcule le MCHAML vectoriel de [pression * normale]
  1863. **********************************************************************
  1864.  
  1865. SI BOOL.'PRES_FISS' ;
  1866. * champ de normale unitaire au maillage de la fissure
  1867. MAT_INSTF = PRES MODPF 'PRES' 1. ;
  1868. NF1 = BSIG MODPF MAT_INSTF ;
  1869. LCOMP = EXTR NF1 'COMP' ;
  1870. NF2 = CHAN 'CHAM' NF1 MODPF 'STRESSES' ;
  1871. XX = PSCA NF2 NF2 LCOMP LCOMP ;
  1872. NF = NF2 / (XX**0.5) ;
  1873. * champ de pression normale au maillage de la fissure
  1874. PF = CHAN 'STRESSES' MODPF MATPF ;
  1875. PF = CHAN 'TYPE' PF 'FORCES' ;
  1876. NCOMP = DIME LCOMP ;
  1877. LCP = MOTS NCOMP*'PRES' ;
  1878. PNF = PF * NF LCP LCOMP LCOMP ;
  1879. FINSI ;
  1880.  
  1881.  
  1882. ****************************************************
  1883. ***** APPEL A G_AUX POUR LES CHAMPS AUXILIAIRES ****
  1884. ****************************************************
  1885.  
  1886. * TEST DE G_AUX
  1887. SI BOOL.'DECOUPLAGE' ;
  1888. CH_AUX = G_AUX SUPTAB OBJUTI BOOL ;
  1889. SI (EGA (TYPE CH_AUX) (MOT 'ANNULE')) ;
  1890. MESS 'ERREUR : G_AUX A RENCONTRE UN PROBLEME' ;
  1891. QUIT G_THETA ;
  1892. FINSI ;
  1893. FINSI ;
  1894.  
  1895. * BOUCLE SUR LES INTEGRALES A CALCULER ==============================*
  1896. * NBMIXT = nbre d integrale a calculer (=1 si J, =2 si K1 K2, =3
  1897. * si K1 K2 K3)
  1898. NBMIXT = 1 ;
  1899. IM = 0 ;
  1900. SI BOOL.'DECOUPLAGE' ;
  1901. NBMIXT = 2 ;
  1902. SI (EGA GDIME 3) ;
  1903. NBMIXT = 3 ;
  1904. FINSI ;
  1905. FINSI ;
  1906. REPE BOUCMIX NBMIXT ;
  1907. IM = IM + 1 ;
  1908.  
  1909. ****************************************************
  1910. **************** EN CAS DE DECOUPLAGE **************
  1911. ****************************************************
  1912.  
  1913. SI BOOL.'DECOUPLAGE' ;
  1914. MOTMIX = CH_AUX.IM.'MOTMIX' ;
  1915. MOTMIA = CH_AUX.IM.'MOTMIA' ;
  1916. A_PREI = CH_AUX.IM.'A_PREI' ;
  1917. A_DEPI = CH_AUX.IM.'A_DEPI' ;
  1918. A_SIGF = CH_AUX.IM.'A_SIGF' ;
  1919. A_DEPGR = CH_AUX.IM.'A_DEPGR' ;
  1920. C_MATE = OBJUTI.'C_MATE' ;
  1921. FINSI ;
  1922.  
  1923.  
  1924. ****************************************************
  1925. ******* EN CAS DE CALCUL EN VISCO_PLASTICITE *******
  1926. ****************************************************
  1927.  
  1928. * INITIALISATION DE FACT1
  1929. FACT1 = 1. ;
  1930. SI (BOOL.'C*' OU BOOL.'C*H') ;
  1931. SI (EGA ITYPEF 1) ;
  1932. CHAF1 = (CHAN 'STRESSES' MOD_MEC_R (EXCO 'AF1 ' MAT_INST 'SCAL'))
  1933. CHAN 'TYPE' 'SCALAIRE' ;
  1934. CHAF2 = (CHAN 'STRESSES' MOD_MEC_R (EXCO 'AF2 ' MAT_INST 'SCAL'))
  1935. CHAN 'TYPE' 'SCALAIRE' ;
  1936. CHAF3 = (CHAN 'STRESSES' MOD_MEC_R (EXCO 'AF3 ' MAT_INST 'SCAL'))
  1937. CHAN 'TYPE' 'SCALAIRE' ;
  1938. SI (EXIS MAT_INST 'AF0 ') ;
  1939. CHAF4 =( CHAN 'STRESSES' MOD_MEC_R (EXCO 'AF4 ' MAT_INST 'SCAL'))
  1940. CHAN 'TYPE' 'SCALAIRE' ;
  1941. CHAF5 =( CHAN 'STRESSES' MOD_MEC_R (EXCO 'AF5 ' MAT_INST 'SCAL'))
  1942. CHAN 'TYPE' 'SCALAIRE' ;
  1943. CHAF6 = (CHAN 'STRESSES' MOD_MEC_R (EXCO 'AF6 ' MAT_INST 'SCAL'))
  1944. CHAN 'TYPE' 'SCALAIRE' ;
  1945. FINSI ;
  1946. FINSI ;
  1947. SI BOOL.'C*' ;
  1948. SI (EGA ITYPEF 1) ;
  1949. * DENSITE D'ENERGIE POUR LES FLUAGES DONT ON A UNE
  1950. * EXPRESSION EXPLICITE DE L'INTEGRATION SUR LE TEMPS
  1951. SI (EXIS MAT_INST 'AF0 ') ;
  1952. COE1 = ((MINI (CHAF2 + 1.)) + (MAXI (CHAF2 + 1.)))/2. ;
  1953. COE2 = ((MINI (CHAF4 + 1.)) + (MAXI (CHAF4 + 1.)))/2. ;
  1954. COE3 = ((MINI (CHAF6 + 1.)) + (MAXI (CHAF6 + 1.)))/2. ;
  1955. VMI1 = (EXCO ('VMIS' MOD_MEC_R SIGF MAT_INST) 'SCAL')
  1956. CHAN 'TYPE' 'SCALAIRE' ;
  1957. ENERM1 = (CHAF2*((CHAF2 + 1.)**(-1.)))*CHAF1*(VMI1**COE1) ;
  1958. ENERM2 = (CHAF4*((CHAF4 + 1.)**(-1.)))*CHAF3*(VMI1**COE2) ;
  1959. ENERM3 = (CHAF6*((CHAF6 + 1.)**(-1.)))*CHAF5*(VMI1**COE3) ;
  1960. ENERM = ENERM1 + ENERM2 + ENERM3 ;
  1961. SINON ;
  1962. COE1 = ((MINI (CHAF2 + 1.)) + (MAXI (CHAF2 + 1.)))/2. ;
  1963. COE2 = ((MINI CHAF3) + (MAXI CHAF3))/2. ;
  1964. VMI1 = (EXCO ('VMIS' MOD_MEC_R SIGF MAT_INST) 'SCAL')
  1965. CHAN 'TYPE' 'SCALAIRE' ;
  1966. SI ((EGA INST 0. 1.E-10) ET ('<'(COE2 - 1) 0.)) ;
  1967. V1 = 0. ;
  1968. SINON ;
  1969. V1 = INST**(COE2 - 1) ;
  1970. FINSI ;
  1971. ENERM = (CHAF2*((CHAF2 + 1.)**(-1.)))*
  1972. CHAF1*(VMI1**COE1)*CHAF3*V1 ;
  1973. FINSI ;
  1974. SI (BOOL.'COQ' ET BOOL.'EL_LIN') ; ENERM = ENERM*MOD_MEC_R EPAICH ; FINSI ;
  1975. FINSI ;
  1976. SI (EGA ITYPEF 2) ;
  1977. * ON N'A PAS UNE EXPRESSION EXPLICITE DE
  1978. * L'INTEGRATION DU FLUAGE SUR LE TEMPS
  1979. SIGMOY = 0.5*(SIG1 + SIGF) ;
  1980. SI ((EGA IABC 0) ET (NON BOOL.'REPRI')) ;
  1981. ENERM = 'ENER' MOD_MEC_R VITDFI SIGMOY ;
  1982. SINON ;
  1983. ENERM = ENERM + ('ENER' MOD_MEC_R (VITDFI - VDI1) SIGMOY) ;
  1984. FINSI ;
  1985. SIG11 = SIG1 ; SIG1 = SIGF ; VDI1 = VITDFI ;
  1986. FINSI ;
  1987. FINSI ;
  1988. * FACTEUR AFFECTE A J SI ON CALCULE C*(H)
  1989. SI BOOL.'C*H' ;
  1990. CHAR2 = EXTR CHAR1 'MECA' ;
  1991. COE1 = ((MINI CHAF1) + (MAXI CHAF1)) / 2. ;
  1992. COE2 = ((MINI CHAF2) + (MAXI CHAF2)) / 2. ;
  1993. COE3 = ((MINI CHAF3) + (MAXI CHAF3)) / 2. ;
  1994. N1 = COE2 / COE3 ;
  1995. SI (EGA INST 0. 1.E-10) ; INST = 1.E-10 ; FINSI ;
  1996. P1 = PROG 0. 'PAS' (INST / 100.) INST ;
  1997. P2 = PROG ;
  1998. REPE BF1 (DIME P1) ;
  1999. T1 = EXTR P1 &BF1 ;
  2000. V1 = 0. ;
  2001. REPE BF2 (DIME CHAR2) ;
  2002. E1 = EXTR CHAR2 'EVOL' &BF2 ;
  2003. V1 = V1 + ('IPOL' T1 (EXTR E1 'ABSC') (EXTR E1 ORDO)) ;
  2004. FIN BF2 ;
  2005. P2 = P2 ET (PROG V1) ;
  2006. FIN BF1 ;
  2007. E1 = EVOL 'MANU' 'TEMPS' P1 'FORCE' (P2 ** N1) ;
  2008. FACT1 = EXTR (INTG E1) 1 ;
  2009. SI (EGA FACT1 0. 1.E-10) ; FACT1 = 1.E+30 ; FINSI ;
  2010. FACT1 = ((V1 ** N1) / FACT1) ** COE3 ;
  2011. FINSI ;
  2012. FINSI ;
  2013.  
  2014. ********************************************************
  2015. * SI LA COURBE DE TRACTION DEPEND DE LA TEMPERATURE ON *
  2016. * CALCULE LA VARIATION DE CONTRAINTES DE VON-MISES LORS*
  2017. * D'UNE AUGMENTATION (DETATE) DE LA TEMPERATURE A INST *
  2018. ********************************************************
  2019. *bp 11/08/2011 : on calcule plutot la variation de la limite d elasticite
  2020. * ce qui est moins faux si presence de decharge...
  2021. * => on construit VM1 comm VM2 !
  2022. SI (((DIME MODPLA) '>' 0) ET BOOL.'THER') ;
  2023. DETATE = 1. ;
  2024. TEP1 = TEPINT + (MANU 'CHPO' ELTETA 1 'T' DETATE) ;
  2025. EPS1 = (EXCO VARF 'EPSE') CHAN 'TYPE' 'SCALAIRE' ;
  2026. MSQ1 = 'MASQ' 'SUPERIEUR' EPS1 1.E-10 ;
  2027. EPS1 = MSQ1 * EPS1 ;
  2028. *rem : on pourrait utiliser BORN dans le futur
  2029. * VMI1 = (CHAN ('VMIS' MOD_MEC_R SIGF MAT_INST)
  2030. * 'TYPE' 'SCALAIRE')*MSQ1 ;
  2031. * DETAVM = VMI1 * 0. ;
  2032. DETAVM = 0. ;
  2033. REPETER BCMOD2 NBOBJ ;
  2034. MODI = TABMOD.&BCMOD2 ;
  2035. * VM1 = REDU VMI1 MODI ;
  2036. EPS2 = redu EPS1 MODI ;
  2037. SI (EXIS MODPLA &BCMOD2) ;
  2038. SI (EGA MODPLA.&BCMOD2 1) ;
  2039. MA1 = VARI 'NUAG' MODI (MATE MODI
  2040. 'ECRO' TABTRA.&BCMOD2) TEPINT ;
  2041. VM1 = VARI 'NUAG' MODI (EXCO 'ECRO' MA1 'SIGM')
  2042. EPS2 'STRESSES' 'SCALAIRE' ;
  2043. VM1 = (EXCO VM1 'SIGM' 'SCAL') CHAN 'TYPE' 'SCALAIRE' ;
  2044. MA2 = 'VARI' 'NUAG' MODI (MATE MODI
  2045. 'ECRO' TABTRA.&BCMOD2) TEP1 ;
  2046. * VM2 = 'VARI' 'NUAG' MODI (EXCO 'ECRO' MA2 SIGM)
  2047. * (REDU EPS1 MODI) 'STRESSES' 'SCALAIRE' ;
  2048. * VM2 = ((EXCO VM2 SIGM 'SCAL')CHAN 'TYPE' 'SCALAIRE')
  2049. * * (REDU MSQ1 MODI) ;
  2050. VM2 = VARI 'NUAG' MODI (EXCO 'ECRO' MA2 'SIGM')
  2051. EPS2 'STRESSES' 'SCALAIRE' ;
  2052. VM2 = (EXCO VM2 SIGM 'SCAL') CHAN 'TYPE' 'SCALAIRE' ;
  2053. FINSI ;
  2054. SI ((EGA MODPLA.&BCMOD2 2) OU
  2055. (EGA MODPLA.&BCMOD2 3)) ;
  2056. MA1 = VARI 'NUAG' MODI (REDU MAT_MEC MODI) TEPINT ;
  2057. VM1 = CHAN 'STRESSES' MODI (EXCO MA1 'SIGY' 'SCAL') ;
  2058. MA2 = VARI 'NUAG' MODI (REDU MAT_MEC MODI) TEP1 ;
  2059. * EPS2 = REDU EPS1 MODI ;
  2060. VM2 = CHAN 'STRESSES' MODI (EXCO MA2 'SIGY' 'SCAL') ;
  2061. SI (EGA MODPLA.&BCMOD2 2) ;
  2062. HSCAL1 = (EXCO MA1 'H' 'SCAL') CHAN 'TYPE' 'SCALAIRE' ;
  2063. VM1 = VM1 + ((CHAN 'STRESSES' MODI HSCAL1)*EPS2) ;
  2064. HSCAL2 = (EXCO MA2 'H' 'SCAL') CHAN 'TYPE' 'SCALAIRE' ;
  2065. VM2 = VM2 + ((CHAN 'STRESSES' MODI HSCAL2)*EPS2) ;
  2066. FINSI ;
  2067. * VM2 = VM2 * (REDU MSQ1 MODI) ;
  2068. FINSI ;
  2069. SI (EGA (TYPE DETAVM) 'FLOTTANT') ;
  2070. DETAVM = ((VM2 - VM1) / DETATE) ;
  2071. SINON ;
  2072. DETAVM = DETAVM + ((VM2 - VM1) / DETATE) ;
  2073. FINSI ;
  2074. FINSI ;
  2075. FIN BCMOD2 ;
  2076. FINSI ;
  2077.  
  2078.  
  2079. *******************************************************
  2080. **** ENERGIE DE DEFORMATION ELASTIQUE ET PLASTIQUE ****
  2081. *******************************************************
  2082. ***
  2083. *** DENSITE D'ENERGIE EN ELASTO OU THERMO-ELASTO-PLASTICITE ET
  2084. *** DENSITE D'ENERGIE LIEE A LA VARIATION DE COURBE DE TRACTION
  2085. ***
  2086. SI (NON BOOL.'C*') ;
  2087. WELAS = 0.5*('ENER' MOD_MEC_R SIGF ('ELAS' MOD_MEC_R SIGF MAT_INST)) ;
  2088. * SI (BOOL.'PASAPAS' ET (NON BOOL.'DECOUPLAGE')) ;
  2089. SI (BOOL.'PASAPAS') ;
  2090. SI (EGA IABC 0) ;
  2091. VMI1 = CHAN ('VMIS' MOD_MEC_R SIGF MAT_INST) 'TYPE' 'SCALAIRE' ;
  2092. SI (BOOL.'COQ' ET BOOL.'EL_LIN') ; VMI1 = VMI1*MOD_MEC_R EPAICH ; FINSI ;
  2093. WPLAS=0.5*VMI1*((EXCO VARF 'EPSE')CHAN 'TYPE' 'SCALAIRE') ;
  2094. SI (((DIME MODPLA) '>' 0) ET BOOL.'THER') ;
  2095. WVMIS = 0.5*DETAVM*((EXCO VARF 'EPSE')
  2096. CHAN 'TYPE' 'SCALAIRE') ;
  2097. FINSI ;
  2098. SINON ;
  2099. VMI1 = CHAN (0.5*(('VMIS' MOD_MEC_R SIG1 MAT_INST) +
  2100. ('VMIS' MOD_MEC_R SIGF MAT_INST))) 'TYPE' 'SCALAIRE' ;
  2101. SI (BOOL.'COQ' ET BOOL.'EL_LIN') ; VMI1 = VMI1*MOD_MEC_R EPAICH ; FINSI ;
  2102. WPLAS = WPLAS + (VMI1*((EXCO (VARF - VAR1) 'EPSE')
  2103. CHAN 'TYPE' 'SCALAIRE')) ;
  2104. SI (((DIME MODPLA) '>' 0) ET BOOL.'THER') ;
  2105. WVMIS = WVMIS + ((0.5*(DETAV1 + DETAVM))*
  2106. ((EXCO (VARF - VAR1) 'EPSE')
  2107. CHAN 'TYPE' 'SCALAIRE') ) ;
  2108. FINSI ;
  2109. FINSI ;
  2110. ENERM = WELAS + WPLAS ;
  2111. SIG11 = SIG1 ; SIG1 = SIGF*1. ; VAR11 = VAR1 ; VAR1 = VARF*1. ;
  2112. SI (((DIME MODPLA) '>' 0) ET BOOL.'THER') ;
  2113. DETAV1 = DETAVM ;
  2114. FINSI ;
  2115. SINON ;
  2116. ENERM = WELAS ;
  2117. FINSI ;
  2118. FINSI ;
  2119.  
  2120.  
  2121.  
  2122. ***************************************************
  2123. *********** APPEL A LA PROCEDURE G_CALCUL *********
  2124. ***************************************************
  2125.  
  2126. * REMPLISSAGE DE OBJUTI
  2127. OBJUTI.'&BOUCMIX' = &BOUCMIX ;
  2128. OBJUTI.'IABC' = IABC ;
  2129. OBJUTI.'&BOUCEXT' = &BOUCEXT ;
  2130. OBJUTI.'INST' = INST ;
  2131. OBJUTI.'C_MATE' = C_MATE ;
  2132. OBJUTI.'FACT1' = FACT1 ;
  2133. OBJUTI.'MAT_INST' = MAT_INST ;
  2134. OBJUTI.'RIGTOT' = RIGTOT ;
  2135. OBJUTI.'ENERM' = ENERM ;
  2136. OBJUTI.'WVMIS' = WVMIS ;
  2137. OBJUTI.'TEPINT' = TEPINT ;
  2138. OBJUTI.'PREINT' = PREINT ;
  2139. OBJUTI.'DEFI' = DEFI ;
  2140. * PRESSION SUR LES LEVRES
  2141. SI BOOL.'PRES_FISS' ;
  2142. OBJUTI.'MODE_PRESSION_FISSURE'= MODPF ;
  2143. OBJUTI.'PRESSION_FISSURE' = PNF ;
  2144. FINSI ;
  2145. OBJUTI.'DEPINT' = DEPINT ;
  2146. OBJUTI.'SIGF' = SIGF ;
  2147. OBJUTI.'SIG1' = SIG11 ;
  2148. OBJUTI.'VARF' = VARF ;
  2149. * DYNAMIQUE
  2150. OBJUTI.'VITF' = VITF ;
  2151. OBJUTI.'ACCF' = ACCF ;
  2152. * DECOUPLAGE
  2153. OBJUTI.'MOTMIX' = MOTMIX ;
  2154. OBJUTI.'MOTMIA' = MOTMIA ;
  2155. OBJUTI.'A_PREI' = A_PREI ;
  2156. OBJUTI.'A_DEPI' = A_DEPI ;
  2157. OBJUTI.'A_SIGF' = A_SIGF ;
  2158. OBJUTI.'A_DEPGR'= A_DEPGR ;
  2159. * FROTTEMENT
  2160. SI BOOL.'FROT' ;
  2161. OBJUTI . 'WDEP' = WDEP ;
  2162. OBJUTI . 'SIGCON' = SIGCON ;
  2163. FINSI ;
  2164.  
  2165. * APPEL A G_CALCUL
  2166. G_CALCUL SUPTAB OBJUTI BOOL ;
  2167.  
  2168. FIN BOUCMIX ;
  2169. * FIN DE BOUCLE SUR LES INTEGRALES A CALCULER ========================*
  2170.  
  2171.  
  2172. ****************************************************
  2173. ****** ON RECUPERE LA CONFIGURATION INITIALE *******
  2174. ****************************************************
  2175.  
  2176. SI (BOOL.'PASAPAS' ET BOOL.'ROT_RIG') ;
  2177. FORM CONFIG0 ;
  2178. FINSI ;
  2179.  
  2180.  
  2181. ****************************************************
  2182. ******* FIN DE BOUCLE SUR LES PAS DE CALCUL ********
  2183. ****************************************************
  2184. FIN BOUCEXT ;
  2185.  
  2186.  
  2187. ****************************************************
  2188. ** STOCKAGE DES RESULTATS DANS L OBJET EVOLUTIONS **
  2189. ****************************************************
  2190. * en plus de ce qui existe dans SUPTAB.'RESULTATS'
  2191. * et dans CHPO_RESULTATS (fait dans G_calcul)
  2192. SI (BOOL.'PASAPAS' ET (NON BOOL.'PERSO1')) ;
  2193. IND1 = INDE (SUPTAB.'RESULTATS') ;
  2194.  
  2195. * Cas 2D *******************************************
  2196. SI (EGA GDIME 2) ;
  2197. TITR CHA1 ;
  2198. SI BOOL.'DECOUPLAGE' ;
  2199. REPE BB1 (DIME IND1) ;
  2200. MOT1 = IND1.&BB1 ; PT = PROG ; PG = PROG ;
  2201. IND2 = INDE (SUPTAB.'RESULTATS'.MOT1) ;
  2202. REPE BB2 (DIME IND2) ;
  2203. P1 = &BB2 - 1 ;
  2204. PT = PT ET (PROG SUPTAB.'SOLUTION_PASAPAS'.'TEMPS'.P1) ;
  2205. PG = PG ET (PROG SUPTAB.'RESULTATS'.MOT1.P1) ;
  2206. FIN BB2 ;
  2207. E1 = EVOL 'MANU' 'TEMPS' PT MOTTI PG ;
  2208. SUPTAB.'EVOLUTION_RESULTATS'.MOT1 = E1 ;
  2209. FIN BB1 ;
  2210. SINON ;
  2211. PT = PROG ; PG = PROG ;
  2212. REPE BB1 (DIME IND1) ;
  2213. P1 = &BB1 - 1 ;
  2214. PT = PT ET (PROG SUPTAB.'SOLUTION_PASAPAS'.'TEMPS'.P1) ;
  2215. PG = PG ET (PROG SUPTAB.'RESULTATS'.P1) ;
  2216. FIN BB1 ;
  2217. E1 = EVOL 'MANU' 'TEMPS' PT MOTTI PG ;
  2218. SUPTAB.'EVOLUTION_RESULTATS' = E1 ;
  2219. FINSI ;
  2220. FINSI ;
  2221.  
  2222. * Cas 3D *******************************************
  2223. * Rem BP :
  2224. * !!! Attention passer ici lorsque la fissure propage doit conduire
  2225. * a des erreurs, puisque les points du front changent ...!!!
  2226. * Il faudrait a terme supprimer cette mise en forme des resultats
  2227. * ainsi que celle utilisant la table RESULTATS (cf g_calcul).
  2228. * Seul CHPO_RESULTATS semblent perenne pour la porpagation.
  2229. SI ((EGA GDIME 3) ET (NON BOOL.'COQ')) ;
  2230. SI BOOL.'DECOUPLAGE' ;
  2231. REPE BB1 (DIME IND1) ;
  2232. MOT1 = IND1.&BB1 ;
  2233. IND2 = INDE (SUPTAB.'RESULTATS'.MOT1) ;
  2234. IND3 = INDE (SUPTAB.'RESULTATS'.MOT1.(IND2.1)) ;
  2235. REPE BB2 (DIME IND3) ;
  2236. PM = IND3.&BB2 ; PT = PROG ; PG = PROG ;
  2237. SI (EGA &BB2 (DIME IND3)) ;
  2238. CHA2 = CHAI ' (Global)' ;
  2239. SINON ;
  2240. * CHA2 = CHAI ' (Pt ' ('NOEUD' PM) ')' ;
  2241. CHA2 = CHAI ' (Pt ' (&BB2) ')' ;
  2242. FINSI ;
  2243. TITR (CHAI CHA1 CHA2) ;
  2244. REPE BB3 (DIME IND2) ;
  2245. P1 = &BB3 - 1 ;
  2246. PT = PT ET (PROG SUPTAB.'SOLUTION_PASAPAS'.'TEMPS'.P1) ;
  2247. PG = PG ET (PROG SUPTAB.'RESULTATS'.MOT1.P1.PM) ;
  2248. FIN BB3 ;
  2249. E1 = EVOL 'MANU' 'TEMPS' PT MOTTI PG ;
  2250. SUPTAB.'EVOLUTION_RESULTATS'.MOT1.PM = E1 ;
  2251. FIN BB2 ;
  2252. FIN BB1 ;
  2253. SINON ;
  2254. IND2 = INDE (SUPTAB.'RESULTATS'.(IND1.1)) ;
  2255. REPE BB1 (DIME IND2) ;
  2256. PM = IND2.&BB1 ; PT = PROG ; PG = PROG ;
  2257. SI (EGA &BB1 (DIME IND2)) ;
  2258. CHA2 = CHAI ' (Global)' ;
  2259. SINON ;
  2260. * CHA2 = CHAI ' (Pt ' ('NOEUD' PM) ')' ;
  2261. CHA2 = CHAI ' (Pt ' (&BB1) ')' ;
  2262. FINSI ;
  2263. TITR (CHAI CHA1 CHA2) ;
  2264. REPE BB2 (DIME IND1) ;
  2265. P1 = &BB2 - 1 ;
  2266. PT = PT ET (PROG SUPTAB.'SOLUTION_PASAPAS'.'TEMPS'.P1) ;
  2267. PG = PG ET (PROG SUPTAB.'RESULTATS'.P1.PM) ;
  2268. FIN BB2 ;
  2269. E1 = EVOL 'MANU' 'TEMPS' PT MOTTI PG ;
  2270. SUPTAB.'EVOLUTION_RESULTATS'.PM = E1 ;
  2271. FIN BB1 ;
  2272. FINSI ;
  2273. FINSI ;
  2274.  
  2275. * Cas coque *******************************************
  2276. SI BOOL.'COQ' ;
  2277. IND2 = INDE (SUPTAB.'RESULTATS'.(IND1.1)) ;
  2278. REPE BB1 (DIME IND2) ;
  2279. PM = MOT IND2.&BB1 ; PT = PROG ; PG = PROG ;
  2280. * CHA2 = CHAI ' (' PM ')' ;
  2281. CHA2 = CHAI ' (Pt ' (&BB1) ')' ;
  2282. TITR (CHAI CHA1 CHA2) ;
  2283. REPE BB2 (DIME IND1) ;
  2284. P1 = &BB2 - 1 ;
  2285. PT = PT ET (PROG SUPTAB.'SOLUTION_PASAPAS'.'TEMPS'.P1) ;
  2286. PG = PG ET (PROG SUPTAB.'RESULTATS'.P1.PM) ;
  2287. FIN BB2 ;
  2288. E1 = EVOL 'MANU' 'TEMPS' PT MOTTI PG ;
  2289. SUPTAB.'EVOLUTION_RESULTATS'.PM = E1 ;
  2290. FIN BB1 ;
  2291. FINSI ;
  2292.  
  2293. FINSI ;
  2294.  
  2295.  
  2296. ********************************************************
  2297. **** STOCKAGE POUR UNE EVENTUELLE REPRISE DE CALCUL ****
  2298. ********************************************************
  2299. SI BOOL.'PASAPAS' ;
  2300. SUPTAB.'OBJ1' = MOT SUPTAB.'OBJECTIF' ;
  2301. SUPTAB.'IABC' = IABC ;
  2302. SUPTAB.'MAT_INST' = MAT_INST ;
  2303. SUPTAB.'END1' = ENERM ;
  2304. SI (((DIME MODPLA) '>' 0) ET BOOL.'THER') ;
  2305. SUPTAB.'ENV1' = WVMIS ;
  2306. FINSI ;
  2307. SI (EGA ITYPEF 2) ;
  2308. SUPTAB.'VDI1' = VDI1 ;
  2309. FINSI ;
  2310. FINSI ;
  2311.  
  2312. ********************************************************
  2313. ************ ENLEVEMENT DES OBJETS INUTILES ************
  2314. ********************************************************
  2315. SI (EXIS SUPTAB 'COUCHE') ;
  2316. SUPTAB.'COU1' = SUPTAB.'COUCHE' ;
  2317. FINSI ;
  2318.  
  2319. *bp: soyons coherent... CHAMP_THETA est deja renseigne
  2320. SUPTAB.'CHAMP_THET1' = SUPTAB.'CHAMP_THETA' ;
  2321. OTER SUPTAB 'CHAMP_THETA' ;
  2322. * UTILTETA sera pratique pour la propagation xfem
  2323. SUPTAB.'UTILTET1' = UTILTETA ;
  2324. * ELTETA sera pratique pour les tests de reprise
  2325. SUPTAB.'ELTET1' = ELTETA ;
  2326.  
  2327. FINPROC ;
  2328.  
  2329.  

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