Télécharger g_theta.procedur

Retour à la liste

Numérotation des lignes :

  1. * G_THETA PROCEDUR JB251061 20/10/15 21:15:09 10754
  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. * BOOLEENS POUR TRACES
  398. * ********************
  399.  
  400. FLTRAC = FAUX ;
  401. FLMESS = VRAI ;
  402. TRA_PRES = FAUX ;
  403. SI FLMESS ;
  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. * LECTURE DES DONNEES FOURNIES A SUPTAB
  422. * *************************************
  423.  
  424. * OBJECTIF
  425. SI (NON (EXIS SUPTAB 'OBJECTIF')) ;
  426. MESS 'ERREUR : IL FAUT SPECIFIER L INTEGRALE' ;
  427. MESS ' A CALCULER PAR UN MOT' ;
  428. ERRE 21 ; QUIT G_THETA ;
  429. SINON ;
  430. * ON STOCKE LA VALEUR DE SUPTAB.'OBJECTIF' POUR SAVOIR CE QUE L'ON FAIT
  431. * (UTILISATION DE MOT CAR SINON LA VALEUR 'DECOUPLAGE' POSE PROBLEME)
  432. GT_OBJ = MOT SUPTAB.'OBJECTIF' ;
  433. OBJPOSS = MOTS 'J' 'C*' 'C*H' 'DJ/DA' 'J_DYNA' 'DECOUPLAGE' ;
  434. SI (NON (EXIS OBJPOSS GT_OBJ)) ;
  435. MESS 'ERREUR : ON NE CONNAIT PAS L INTEGRALE SPECIFIEE' ;
  436. MESS ' A CALCULER' ;
  437. ERRE 21 ; QUIT G_THETA ;
  438. FINSI ;
  439. FINSI ;
  440.  
  441. * DIMENSION ET MODE DE CALCUL
  442. GDIME = VALE 'DIME' ;
  443. GMODE = VALE 'MODE' ;
  444.  
  445. * TYPE DE SOLUTION DONNEE
  446. SI (NON ((EXIS SUPTAB 'SOLUTION_RESO') OU (EXIS SUPTAB 'SOLUTION_PASAPAS'))) ;
  447. MESS 'ERREUR : IL FAUT UNE SOLUTION PROVENANT DE PASAPAS' ;
  448. MESS ' OU DE RESO POUR DETERMINER L INTEGRALE' ;
  449. ERRE 21 ; QUIT G_THETA ;
  450. SINON ;
  451. SI (EXIS SUPTAB 'SOLUTION_RESO') ;
  452. SOLULIN = VRAI ;
  453. SINON ;
  454. SOLULIN = FAUX ;
  455. FINSI ;
  456. FINSI ;
  457.  
  458. * MODELE MECANIQUE ET MATERIAU
  459. SI SOLULIN ;
  460. SI (NON (EXIS SUPTAB 'MODELE')) ;
  461. MESS 'ERREUR : UNE SOLUTION ISSUE DE RESO NECESSITE UN MODELE' ;
  462. ERRE 21 ; QUIT G_THETA ;
  463. SINON ;
  464. OBJMOD = EXTR (SUPTAB.'MODELE') 'FORM' 'MECANIQUE' ;
  465. OBJMAT = REDU (SUPTAB.'CARACTERISTIQUES') OBJMOD ;
  466. FINSI ;
  467. SINON ;
  468. SI (EXIS SUPTAB.'SOLUTION_PASAPAS' 'WTABLE') ;
  469. WTAB = SUPTAB.'SOLUTION_PASAPAS'.'WTABLE' ;
  470. OBJMOD = WTAB.'MOD_MEC' ;
  471. OBJMAT = WTAB.'MAT_MEC' ;
  472. SINON ;
  473. MESS 'Absence de WTABLE ! l execution continue ...' ;
  474. WTAB = SUPTAB.'SOLUTION_PASAPAS' ;
  475. OBJMOD = EXTR (WTAB.'MODELE') 'FORM' 'MECANIQUE' ;
  476. OBJMAT = REDU (WTAB.'CARACTERISTIQUES') OBJMOD ;
  477. FINSI ;
  478. FINSI ;
  479.  
  480. * MAILLAGE ET TYPE D'ELEMENTS
  481. MAILLAGE = EXTR OBJMOD 'MAIL' ;
  482. LELEM1 = MAILLAGE ELEM 'TYPE' ;
  483. * ELEMENTS LINEAIRES OU NONLINEAIRES
  484. ELLIN = MOTS 'SEG2' 'TRI3' 'QUA4' 'RAC2' 'CUB8' 'PRI6' 'PYR5' 'TET4' ;
  485. ILIN = EXIS ELLIN LELEM1 'OU' ;
  486. * ELEMENTS XFEM OU STANDARD
  487. IXFEM = EXIS OBJMOD 'ELEM' 'XQ4R' 'XC8R' ;
  488.  
  489.  
  490. * =============================================================================
  491.  
  492. * LECTURE DES DONNEES DE SUPTAB DANS LES DIFFERENTS CAS
  493. * -----------------------------------------------------
  494.  
  495. **************************************************
  496. ***** DONNEES OBLIGATOIRES DANS TOUS LES CAS *****
  497. **************************************************
  498.  
  499. SI (NON (EXIS SUPTAB 'OBJECTIF')) ;
  500. MESS 'ERREUR : IL FAUT SPECIFIER L INTEGRALE' ;
  501. MESS ' A CALCULER PAR UN MOT' ;
  502. ERRE 21 ; QUIT G_THETA ;
  503. FINSI ;
  504. INTEPOSS = MOTS 'J' 'C*' 'C*H' 'DJ/DA' 'J_DYNA' 'DECOUPLAGE' ;
  505. SI (NON (EXIS INTEPOSS (MOT SUPTAB.'OBJECTIF'))) ;
  506. MESS 'ERREUR : ON NE CONNAIT PAS L INTEGRALE SPECIFIEE' ;
  507. MESS ' A CALCULER' ;
  508. ERRE 21 ; QUIT G_THETA ;
  509. FINSI ;
  510.  
  511. * ON STOCKE LA VALEUR DE SUPTAB.'OBJECTIF' POUR SAVOIR CE QUE L'ON FAIT
  512. * ON UTILISE LA PROCEDURE MOT CAR SINON LA VALEUR 'DECOUPLAGE' POSE PROBLEME
  513. GT_OBJ = MOT SUPTAB.'OBJECTIF' ;
  514.  
  515. SI (NON (EXIS SUPTAB 'FRONT_FISSURE')) ;
  516. MESS 'ERREUR : ON VEUT LE FRONT DE LA FISSURE' ;
  517. ERRE 21 ; QUIT G_THETA ;
  518. FINSI ;
  519. MESHFR1 = SUPTAB.'FRONT_FISSURE' ;
  520. SI (EGA (TYPE MESHFR1) 'POINT') ;
  521. MESHFR1 = MANU 'POI1' MESHFR1 ;
  522. FINSI ;
  523. MESHFR1 = MESHFR1 COUL 'OLIV' ;
  524.  
  525. **************************************************
  526. ****** TERMES CROISES DE LA MATRICE DJI/DAJ ******
  527. **************************************************
  528.  
  529. SI (EGA GT_OBJ 'DJ/DA') ;
  530. SI ((EXIS SUPTAB 'FISSURE_2') OU (EXIS SUPTAB 'FRONT_FISSURE_2')) ;
  531. SI (NON (EXIS SUPTAB 'FISSURE_2')) ;
  532. MESS 'ERREUR : ON VEUT AUSSI LA FISSURE 2 POUR CALCULER' ;
  533. MESS ' LES TERMES CROISES DE LA MATRICE' ;
  534. ERRE 21 ; QUIT G_THETA ;
  535. FINSI ;
  536. SI (NON (EXIS SUPTAB 'FRONT_FISSURE_2')) ;
  537. MESS 'ERREUR : ON VEUT AUSSI LE FROND DE LA FISSURE 2 POUR' ;
  538. MESS ' CALCULER LES TERMES CROISES DE LA MATRICE' ;
  539. ERRE 21 ; QUIT G_THETA ;
  540. FINSI ;
  541. SINON ;
  542. SI (EGA SUPTAB.'COUCHE' 0) ;
  543. MESS 'ERREUR : LE NOMBRE DE COUCHES DOIT ETRE SUPERIEUR A' ;
  544. MESS ' 0 POUR LE CALCUL DU TERME PRINCIPAL DJi/DAi' ;
  545. ERRE 21 ; QUIT G_THETA ;
  546. FINSI ;
  547. FINSI ;
  548. FINSI ;
  549.  
  550. **************************************************
  551. ****** DONNEES EN CAS DE CALCUL NONLINEAIRE ******
  552. **************************************************
  553.  
  554. * INITIALISATION DES VALEURS PAR DEFAUT
  555. IPAP = MOT 'NONDEFINI' ;
  556. IGDEP = FAUX ;
  557. IGDER = FAUX ;
  558. IPERSO1 = FAUX ;
  559. IMOPRES = FAUX ;
  560. IPFISS = FAUX ;
  561.  
  562. SI (EXIS SUPTAB 'SOLUTION_PASAPAS') ;
  563. IPAP = VRAI ;
  564. * RECUP DU MODELE MECANIQUE ET DU MATERIAU ASSOCIE DEPUIS WTABLE ****
  565. SI (EXIS SUPTAB.'SOLUTION_PASAPAS' 'WTABLE') ;
  566. WTAB = SUPTAB.'SOLUTION_PASAPAS'.'WTABLE' ;
  567. OBJMOD = WTAB.'MOD_MEC' ;
  568. OBJMAT = WTAB.'MAT_MEC' ;
  569. SINON ;
  570. MESS 'Absence de WTABLE ! l execution continue ...' ;
  571. WTAB = SUPTAB.'SOLUTION_PASAPAS' ;
  572. OBJMOD = EXTR (WTAB.'MODELE') 'FORM' 'MECANIQUE' ;
  573. OBJMAT = REDU (WTAB.'CARACTERISTIQUES') OBJMOD ;
  574. FINSI ;
  575. SI ((EGA GT_OBJ 'J_DYNA') ET (NON WTAB.'DYNAMIQUE')) ;
  576. MESS 'ERREUR : IL FAUT UNE SOLUTION ELASTO-DYNAMIQUE' ;
  577. MESS ' POUR CALCULER LE J DYNAMIQUE.' ;
  578. ERRE 21 ; QUIT G_THETA ;
  579. FINSI ;
  580. SUPTAB.'MODELE' = OBJMOD ;
  581. * RECUPERATION DES MODELES DE PRESSION
  582. SI (EXIS (SUPTAB.'SOLUTION_PASAPAS'.'MODELE') 'FORM' 'CHARGEMENT') ;
  583. MODCHA = EXTR (SUPTAB.'SOLUTION_PASAPAS'.'MODELE')
  584. 'FORM' 'CHARGEMENT' ;
  585. SI (EXIS MODCHA 'MATE' 'PRESSION') ;
  586. IMOPRES = VRAI ;
  587. MODPRE = EXTR MODCHA 'COMP' 'PRESSION' ;
  588. FINSI ;
  589. FINSI ;
  590. SI WTAB.'GRANDS_DEPLACEMENTS' ;
  591. IGDEP = VRAI ;
  592. FINSI ;
  593. SI (EXIS SUPTAB 'ROTATION_RIGIDIFIANTE') ;
  594. IGDER = VRAI ;
  595. FINSI ;
  596. * CAS PARTICULIER DE PERSO1 OU L ON NE CALCULE QUE ****
  597. * LE DERNIER PAS DE TEMPS (CONTENU DANS LA TABLE ESTIM)
  598. SI (EXIS SUPTAB 'PERSO1') ;
  599. IPERSO1 = SUPTAB.'PERSO1' ;
  600. SI FLMESS ;
  601. MESS 'utilisation de PERSO1 en cours de dvlpt' ;
  602. FINSI ;
  603. SI (EXIS SUPTAB.'SOLUTION_PASAPAS' 'ESTIMATION') ;
  604. ESTIM = SUPTAB.'SOLUTION_PASAPAS'.'ESTIMATION' ;
  605. SINON ;
  606. MESS 'ERREUR : il faut une ESTIMATION dans la SOLUTION_PASAPAS' ;
  607. ERRE 21 ; QUIT G_THETA ;
  608. FINSI ;
  609. SI (NON (EXIS SUPTAB 'MAILLAGE_REDUIT')) ;
  610. MESS 'Attention! utilisation de PERSO1 sans MAILLAGE_REDUIT' ;
  611. MESS 'uniquement valable dans le cas de fissure stationnaire' ;
  612. FINSI ;
  613. FINSI ;
  614. FINSI ;
  615.  
  616. **************************************************
  617. ******** DONNEES EN CAS DE CALCUL LINEAIRE *******
  618. **************************************************
  619.  
  620. SI (EXIS SUPTAB 'SOLUTION_RESO') ;
  621. SI (EGA (TYPE SUPTAB.'SOLUTION_RESO') 'CHPOINT') ;
  622. IPAP = FAUX ;
  623. SI ((EGA GT_OBJ 'C*') OU (EGA GT_OBJ 'C*H')) ;
  624. MESS 'ERREUR : C* OU C*H EST UNE INTEGRALE' ;
  625. MESS ' CARACTERISTIQUE EN FLUAGE' ;
  626. ERRE 21 ; QUIT G_THETA ;
  627. FINSI ;
  628. SI (EGA GT_OBJ 'J_DYNA') ;
  629. MESS 'ERREUR : IL FAUT UNE SOLUTION DE LA PROCEDURE PASAPAS' ;
  630. MESS ' POUR CALCULER LE J EN ELASTO-DYNAMIQUE.' ;
  631. ERRE 21 ; QUIT G_THETA ;
  632. FINSI ;
  633. SI (NON (EXIS SUPTAB 'CARACTERISTIQUES')) ;
  634. MESS 'ERREUR : IL FAUT DONNER LE CHAMP CARACTERISTIQUE' ;
  635. ERRE 21 ; QUIT G_THETA ;
  636. FINSI ;
  637. SI (NON (EXIS SUPTAB 'MODELE')) ;
  638. MESS 'ERREUR : IL FAUT DONNER LE MODELE DE CALCUL' ;
  639. ERRE 21 ; QUIT G_THETA ;
  640. FINSI ;
  641. OBJMOD = EXTR (SUPTAB.'MODELE') 'FORM' 'MECANIQUE' ;
  642. OBJMAT = REDU (SUPTAB.'CARACTERISTIQUES') OBJMOD ;
  643. SI (EXIS (SUPTAB.'MODELE') 'FORM' 'CHARGEMENT') ;
  644. MODCHA = EXTR (SUPTAB.'MODELE') 'FORM' 'CHARGEMENT' ;
  645. SI (EXIS MODCHA 'MATE' 'PRESSION') ;
  646. IMOPRES = VRAI ;
  647. MODPRE = EXTR MODCHA 'COMP' 'PRESSION' ;
  648. SI (NON (EXIS SUPTAB 'PRESSION')) ;
  649. MESS 'ERREUR : IL MANQUE LA DONNEE DU CHAMP DE PRESSION' ;
  650. ERRE 21 ; QUIT G_THETA ;
  651. SINON ;
  652. MATPRE = REDU (SUPTAB.'PRESSION') MODPRE ;
  653. FINSI ;
  654. FINSI ;
  655. FINSI ;
  656. SI ((NON (EXIS SUPTAB 'TEMPERATURES')) ET
  657. (NON (EXIS SUPTAB 'CHARGEMENTS_MECANIQUES')) ET
  658. (NON IMOPRES)) ;
  659. MESS 'ERREUR : IL FAUT LES CHARGEMENTS APPLIQUES :' ;
  660. MESS ' MECANIQUES, THERMIQUES OU LES DEUX' ;
  661. ERRE 21 ; QUIT G_THETA ;
  662. FINSI ;
  663. SI ((EGA GT_OBJ 'DJ/DA') ET
  664. (NON (EXIS SUPTAB 'BLOCAGES_MECANIQUES'))) ;
  665. MESS 'ERREUR : IL FAUT DONNER LE BLOCAGES MECANIQUES' ;
  666. ERRE 21 ; QUIT G_THETA ;
  667. FINSI ;
  668. FINSI ;
  669. FINSI ;
  670. SI (EGA (TYPE IPAP) 'MOT') ;
  671. MESS 'ERREUR : IL FAUT UNE SOLUTION PROVENANT DE PASAPAS' ;
  672. MESS ' OU DE RESO POUR DETERMINER L INTEGRALE' ;
  673. ERRE 21 ; QUIT G_THETA ;
  674. FINSI ;
  675.  
  676. **************************************************
  677. ***** COMPOSANTES DU DEPLACEMENT/DE LA FORCE *****
  678. **************************************************
  679.  
  680. * LISTMOT SCAL :
  681. MTS1 = MOTS 'SCAL' ;
  682. * LISTMOTS POUR LE DEPLACEMENT ET POUR LA FORCE :
  683. * ON EXTRAIT LES GDIME PREMIERS MOTS CAR ON NE VEUT PAS DES ROTATIONS
  684. * DANS LE CAS DES COQUES
  685. UCOMP = EXTR (EXTR OBJMOD 'DEPL') (LECT 1 PAS 1 GDIME) ;
  686. FCOMP = EXTR (EXTR OBJMOD 'FORC') (LECT 1 PAS 1 GDIME) ;
  687. MU1 = EXTR UCOMP 1 ; MU2 = EXTR UCOMP 2 ;
  688. MF1 = EXTR FCOMP 1 ; MF2 = EXTR FCOMP 2 ;
  689. SI (EGA GDIME 3) ;
  690. MF3 = EXTR FCOMP 3 ;
  691. FINSI ;
  692.  
  693. **************************************************
  694. ***** DONNEES EN CAS DE CHARGEMENT THERMIQUE *****
  695. **************************************************
  696.  
  697. SI IPAP ;
  698. CHAR1 = SUPTAB.'SOLUTION_PASAPAS'.'CHARGEMENT' ;
  699. * ITHER = EXIS CHAR1 'T' ;
  700. * BP, 2014-11-13 : AJOUT DISTINCTION CAS ITHER ET ITHER1
  701. * ITHER=V ITHER1=F <=> PB COUPLES THERMO-MECANIQUES
  702. ITHER1 = (EXIS CHAR1 'T') OU (EXIS CHAR1 'TIMP') ;
  703. ITHER = ITHER1 OU (EXIS CHAR1 'Q') OU (EXIS CHAR1 'TECO')
  704. OU (EXIS CHAR1 'TERA') ;
  705. SINON ;
  706. ITHER = EXIS SUPTAB 'TEMPERATURES' ;
  707. FINSI ;
  708.  
  709. **************************************************************
  710. ***** DONNEES EN CAS DE CHARGEMENT DEFORMATIONS IMPOSEES *****
  711. **************************************************************
  712.  
  713. SI IPAP ;
  714. IDEFI = EXIS CHAR1 'DEFI' ;
  715. SINON ;
  716. IDEFI = EXIS SUPTAB 'DEFORMATIONS_IMPOSEES' ;
  717. FINSI ;
  718.  
  719. **************************************************
  720. ************ DONNEES EN CAS DE CONTACT ***********
  721. **************************************************
  722.  
  723. IFROT = FAUX ;
  724. SI IPAP ;
  725. * TODO : PAS DEVELOPPE POUR L'INSTANT
  726. SINON ;
  727. SI (EXIS SUPTAB 'MODELE_FISSURE') ;
  728. IFROT = VRAI ;
  729. OBJCON = SUPTAB.'MODELE_FISSURE' ;
  730. MAICON = EXTR OBJCON 'MAILLAGE' ;
  731. FINSI ;
  732. FINSI ;
  733.  
  734.  
  735. * =============================================================================
  736.  
  737. * EXTRACTION DU MAILLAGE, DU CHAMP THETA ET DE LA DIRECTION DE PROPAGATION
  738. * ------------------------------------------------------------------------
  739.  
  740. **************************************************
  741. ******* TYPE DES ELEMENTS : COQUE OU MASSIF ******
  742. **************************************************
  743.  
  744. MAILLAGE = EXTR OBJMOD 'MAIL' ;
  745. LELEM1 = MAILLAGE ELEM 'TYPE' ;
  746. EL2D = MOTS 'TRI3' 'TRI6' 'QUA4' 'QUA8' ;
  747. ICOQU = (GDIME EGA 3) ET (EXIS LELEM1 EL2D 'OU') ;
  748.  
  749. **************************************************
  750. **** MODELE MULTICOUCHES DANS LE CAS DE COQUE ****
  751. **************************************************
  752.  
  753. SI ICOQU ;
  754. M_DETA = EXTR OBJMOD 'ZONE' ;
  755. SI (EXIS SUPTAB 'ELEMENT_MULTICOUCHE') ;
  756. ELMULT = SUPTAB.'ELEMENT_MULTICOUCHE' ;
  757. SI (NEG (TYPE ELMULT) 'MAILLAGE') ;
  758. MESS 'ERREUR : L ELEMENT EN MULTICOUCHE DOIT' ;
  759. MESS ' ETRE UN OBJET DE TYPE MAILLAGE' ;
  760. ERRE 21 ; QUIT G_THETA ;
  761. FINSI ;
  762. SI (NEG (NBEL ELMULT) 1) ;
  763. MESS 'ERREUR : ON VEUT UN SEUL ELEMENT EN MULTICOUCHE' ;
  764. ERRE 21 ; QUIT G_THETA ;
  765. FINSI ;
  766. SINON ;
  767. MESS 'ERREUR : IL FAUT DESIGNER UN ELEMENT EN MULTICOUCHE' ;
  768. ERRE 21 ; QUIT G_THETA ;
  769. FINSI ;
  770. M_ELMU = EXTR (REDU OBJMOD ELMULT) 'ZONE' ;
  771. SI ((DIME M_ELMU) '<' 10) ;
  772. MESS 'ERREUR : IL FAUT AU MOINS 3 COUCHES (peau inf, peau' ;
  773. MESS ' sup, ligne moyenne) D EPAISSEUR INFERIEURE' ;
  774. MESS ' A 1E-4*(EPAISSEUR TOTALE) + 2 COUCHES' ;
  775. MESS ' INTERMEDIAIRES POUR L ELEMENT DESIGNE EN' ;
  776. MESS ' MULTICOUCHE PROCHE DE LA FISSURE.' ;
  777. ERRE 21 ; QUIT G_THETA ;
  778. FINSI ;
  779. PEX1 = PROG ; LMO1 = LECT ; MODCOU = TABLE ; EPAITO = 0. ;
  780. REPE NBJ5 ((DIME M_ELMU)/2) ;
  781. I1 = (2 * &NBJ5) - 1 ;
  782. MODCOU.&NBJ5 = M_ELMU.I1 ;
  783. EX1 = EXTR (REDU MODCOU.&NBJ5 OBJMAT) 'EXCE' 1 1 1 ;
  784. EP1 = EXTR (REDU MODCOU.&NBJ5 OBJMAT) 'EPAI' 1 1 1 ;
  785. EPAITO = EPAITO + EP1 ;
  786. PEX1 = PEX1 ET (PROG EX1) ;
  787. LMO1 = LMO1 ET (LECT &NBJ5) ;
  788. FIN NBJ5 ;
  789. NSUPE = 0 ; NMOYE = 0 ; NINFE = 0 ;
  790. REPE NBJ6 (DIME MODCOU) ;
  791. EX1 = EXTR PEX1 &NBJ6 ;
  792. LM1 = EXTR LMO1 &NBJ6 ;
  793. SI (EGA EX1 (EPAITO/2.) 1.E-4) ;
  794. NSUPE = LM1 ;
  795. FINSI ;
  796. SI (EGA EX1 0. 1.E-10) ;
  797. NMOYE = LM1 ;
  798. FINSI ;
  799. SI (EGA EX1 (EPAITO/(-2.)) 1.E-4) ;
  800. NINFE = LM1 ;
  801. FINSI ;
  802. FIN NBJ6 ;
  803. SI (EGA NSUPE 0) ;
  804. MESS 'ERREUR : IL FAUT UNE COUCHE EN PEAU SUPERIEURE' ;
  805. MESS ' D EPAISSEUR INFERIEURE A' ;
  806. MESS ' 1E-4*(EPAISSEUR TOTALE) ' ;
  807. ERRE 21 ; QUIT G_THETA ;
  808. FINSI ;
  809. SI (EGA NMOYE 0) ;
  810. MESS 'ERREUR : IL FAUT UNE COUCHE AU PLAN MEDIAN' ;
  811. MESS ' AYANT UN EXCENTREMENT NUL' ;
  812. ERRE 21 ; QUIT G_THETA ;
  813. FINSI ;
  814. SI (EGA NINFE 0) ;
  815. MESS 'ERREUR : IL FAUT UNE COUCHE EN PEAU INFERIEURE' ;
  816. MESS ' D EPAISSEUR INFERIEURE A' ;
  817. MESS ' 1E-4*(EPAISSEUR TOTALE) ' ;
  818. ERRE 21 ; QUIT G_THETA ;
  819. FINSI ;
  820. SUPTAB.'EPAISSEUR' = EPAITO ;
  821. M_SUPE = MODCOU.NSUPE ;
  822. M_MOYE = MODCOU.NMOYE ;
  823. M_INFE = MODCOU.NINFE ;
  824. FINSI ;
  825.  
  826. **************************************************
  827. ** MAILLAGE UTILISE DANS LA RESOLUTION PAR E.F. **
  828. **************************************************
  829.  
  830. SI ICOQU ;
  831. TMULT = TABL ;
  832. REPE NBJ8 ((DIME M_DETA)/2) ;
  833. M1 = M_DETA.(2*&NBJ8) ;
  834. SI (EXIS TMULT M1) ;
  835. ITER NBJ8 ;
  836. FINSI ;
  837. M2 = EXTR (REDU OBJMOD M1) 'ZONE' ;
  838. SI (> (DIME M2) 2) ;
  839. TMULT.M1 = VRAI ;
  840. REPE NBJ9 (((DIME M2)/2) - 1) ;
  841. MAILLAGE = DIFF MAILLAGE M1 ;
  842. FIN NBJ9 ;
  843. FINSI ;
  844. FIN NBJ8 ;
  845. FINSI ;
  846. SUPTAB.'MAILLAGE' = MAILLAGE ;
  847.  
  848. **************************************************
  849. *************** TYPES D ELEMENTS ****************
  850. **************************************************
  851.  
  852. ******* ELEMENTS LINEAIRES OU NONLINEAIRES *******
  853. NBNO1 = NBNO (ELEM (CHAN 'LIGNE' MAILLAGE) 1) ;
  854. ILIN = EGA NBNO1 2 ; IQUA = EGA NBNO1 3 ;
  855.  
  856. ******* ELEMENTS XFEM OU STANDARD ****************
  857. IXFEM = EXIS OBJMOD 'ELEM' 'XQ4R' 'XC8R' ;
  858.  
  859. **************************************************
  860. ************* DEFINITON DE LA FISSURE ************
  861. **************************************************
  862.  
  863. ******* LEVELSET PSI ET PHI POUR XFEM ************
  864. SI IXFEM ;
  865. SI (NON ((EXIS SUPTAB 'PSI') ET (EXIS SUPTAB 'PHI'))) ;
  866. MESS 'ERREUR : ON VEUT PSI et PHI LEVELSET DE LA FISSURE' ;
  867. ERRE 21 ; QUIT G_THETA ;
  868. FINSI ;
  869. * LEVRE_SUPERIEURE ET INFERIEURE POUR STD
  870. SINON ;
  871. SI ((EXIS SUPTAB 'LEVRE_SUPERIEURE') OU (EXIS SUPTAB 'LEVRE_INFERIEURE')) ;
  872. SI (EGA GT_OBJ 'DECOUPLAGE') ;
  873. SI (NON (EXIS SUPTAB 'LEVRE_SUPERIEURE')) ;
  874. MESS 'ERREUR : ON VEUT LA LEVRE SUPERIEURE DE LA FISSURE' ;
  875. ERRE 21 ; QUIT G_THETA ;
  876. FINSI ;
  877. SI (NON (EXIS SUPTAB 'LEVRE_INFERIEURE')) ;
  878. MESS 'ERREUR : ON VEUT LA LEVRE INFERIEURE DE LA FISSURE' ;
  879. ERRE 21 ; QUIT G_THETA ;
  880. FINSI ;
  881. FINSI ;
  882. SUPTAB.'FISSURE' = VIDE 'MAILLAGE' ;
  883. SI (EXIS SUPTAB 'LEVRE_SUPERIEURE') ;
  884. SUPTAB.'FISSURE' = (SUPTAB.'FISSURE') ET
  885. (SUPTAB.'LEVRE_SUPERIEURE') ;
  886. FINSI ;
  887. SI (EXIS SUPTAB 'LEVRE_INFERIEURE') ;
  888. SUPTAB.'FISSURE' = (SUPTAB.'FISSURE') ET
  889. (SUPTAB.'LEVRE_INFERIEURE') ;
  890. FINSI ;
  891. SINON ;
  892. MESS 'ERREUR : IL FAUT DONNER LA FISSURE' ;
  893. MESS '(LEVRE_SUPERIEURE ou LEVRE_INFERIEURE ou les 2)' ;
  894. ERRE 21 ; QUIT G_THETA ;
  895. FINSI ;
  896. SI IFROT ;
  897. MESS 'ERREUR : CONTACT via MODELE_FISSURE avec XFEM seulement' ;
  898. ERRE 21 ; QUIT G_THETA ;
  899. FINSI ;
  900. FINSI ;
  901.  
  902. ****************************************************
  903. ******* DETERMINATION DES CHAMPS THETA ET PI *******
  904. ******* ET DE LA ZONE DE TRAVAIL ELTETA *******
  905. ****************************************************
  906.  
  907. SI FLMESS ;
  908. MESS 'DETERMINATION DES CHAMPS THETA' ;
  909. FINSI ;
  910. SI (NON ((EXIS SUPTAB 'COUCHE') OU (EXIS SUPTAB 'CHAMP_THETA'))) ;
  911. * NI COUCHE NI CHAMP_THETA DONNE, ERREUR !
  912. MESS 'ERREUR : ON VEUT LE NOMBRE DE COUCHES D ELEMENTS' ;
  913. MESS ' AUTOUR DE LA FISSURE QUI SE DEPLACE' ;
  914. MESS ' OU LE CHAMP_THETA' ;
  915. MESS ' POUR SIMULER LA PROPAGATION DE LA FISSURE' ;
  916. ERRE 21 ; QUIT G_THETA ;
  917. FINSI ;
  918. SI ((EXIS SUPTAB 'COUCHE') ET (EXIS SUPTAB 'CHAMP_THETA')) ;
  919. * COUCHE ET CHAMP_THETA TOUS LES DEUX DONNES
  920. MESS 'NOMBRE DE COUCHES DONNE => LE CHAMP_THETA FOURNI SERA ECRASE' ;
  921. FINSI ;
  922. * DETERMINATION DE CHAMP_THETA
  923. SI (EXIS SUPTAB 'COUCHE') ;
  924. * NOMBRE DE COUCHE DONNE => ON APPELLE CH_TETX OU CH_TETA POUR CALCULER
  925. * CHAMP_THETA
  926. * SI CHAMP_THETA EST EGALEMENT FOURNI, IL EST ECRASE
  927. SI IXFEM ;
  928. SUPTAB.'CHAMP_THETA' SUPTAB.'UTILTET1' = CH_THETX SUPTAB ;
  929. SINON ;
  930. SUPTAB.'CHAMP_THETA' SUPTAB.'UTILTET1' = CH_THETA SUPTAB ;
  931. SI (EGA GT_OBJ 'DJ/DA') ;
  932. SI (NON (EXIS SUPTAB 'FRONT_FISSURE_2')) ;
  933. SUPTAB.'COUCHE' = (SUPTAB.'COUCHE') - 1 ;
  934. SUPTAB.'CHAMP_PI' UTILPI = CH_THETA SUPTAB ;
  935. SUPTAB.'COUCHE' = (SUPTAB.'COUCHE') + 1 ;
  936. SINON ;
  937. P1 = SUPTAB.'FRONT_FISSURE' ;
  938. SUPTAB.'FRONT_FISSURE' = SUPTAB.'FRONT_FISSURE_2' ;
  939. SUPTAB.'FISSURE' = SUPTAB.'FISSURE_2' ;
  940. SUPTAB.'CHAMP_PI' UTILPI = CH_THETA SUPTAB ;
  941. SUPTAB.'FRONT_FISSURE' = P1 ;
  942. FINSI ;
  943. FINSI ;
  944. FINSI ;
  945. SINON ;
  946. MESS 'CHAMP_THETA FOURNI PAR L UTILISATEUR' ;
  947. FINSI ;
  948. CHTHETA = SUPTAB.'CHAMP_THETA' ;
  949. SI (NEG (TYPE CHTHETA) 'CHPOINT') ;
  950. CHTHETA = CHTHETA.'GLOBAL' ;
  951. FINSI ;
  952. * DETERMINATION DE ELTETA
  953. * ELTETA1 = MAILLAGE OU TETA N EST PAS NUL + 1 COUCHE
  954. UU = EXTR CHTHETA 'MAILLAGE' ;
  955. ELTETA1 = ELEM MAILLAGE 'APPU' 'LARG' UU ;
  956. SI (EXIS SUPTAB 'MAILLAGE_REDUIT') ;
  957. * ELTETA = MAILLAGE FOURNI PAR L UTILISATEUR
  958. ELTETA = SUPTAB.'MAILLAGE_REDUIT' ;
  959. * VERIFICATION DE LA COMPATIBILITE AVEC CHTHETA
  960. SI ((NBEL (DIFF ELTETA ELTETA1)) NEG 0) ;
  961. MESS 'ATTENTION : LE MAILLAGE_REDUIT DONNE EST INCOMPATIBLE AVEC LE' ;
  962. MESS ' CHAMP THETA, IL SERA DONC IGNORE.' ;
  963. ELTETA = ELTETA1 ;
  964. FINSI ;
  965. SINON ;
  966. ELTETA = ELTETA1 ;
  967. FINSI ;
  968. * DETERMINATION DE LA DIRECTION DE PROPAGATION ET DES NORMALES
  969. SI IXFEM ;
  970. * ON EST DANS LE CAS XFEM
  971. MOD7 = MODE ELTETA 'THERMIQUE' ;
  972. GPSI = GRAD MOD7 (NOMC 'T' SUPTAB.'PSI' 'NATU' 'DIFFUS') ;
  973. GPSI = CHAN 'NOEUD' MOD7 GPSI 'SCALAIRE' ;
  974. GPHI = GRAD MOD7 (NOMC 'T' SUPTAB.'PHI' 'NATU' 'DIFFUS') ;
  975. GPHI = CHAN 'NOEUD' MOD7 GPHI 'SCALAIRE' ;
  976. NCOMP = EXTR GPSI 'COMP' ;
  977. SI (EGA GDIME 2) ;
  978. * LA DIRECTION DE PROPAGATION EST PERPENDICULAIRE A GRAD PHI ET DANS LE
  979. * MEME SENS QUE GRAD PSI => ON UTILISE UN PRODUIT VECTORIEL
  980. * ETAPE 1 : PROJECTION SUR LE FRONT DE FISSURE ET PASSAGE EN CHPO
  981. PGPSI = PROI MESHFR1 GPSI ;
  982. PGPHI = PROI MESHFR1 GPHI ;
  983. * ETAPE 2 : PRODUIT VECTORIEL AVEC LA NORMALE AU PLAN
  984. * NB : ON FAIT ATTENTION AU SENS DE TETA GRACE A SIGN
  985. TETA = PVEC PGPHI NCOMP UCOMP ;
  986. SIGN1 = SIGN (PSCA TETA PGPSI UCOMP NCOMP) ;
  987. TETA = SIGN1 * TETA ;
  988. * ETAPE 3 : NORMALISATION ET CALCUL DE DIR2
  989. NTETA = (PSCA TETA TETA UCOMP UCOMP)**0.5 ;
  990. DIR1 = TETA / NTETA ;
  991. DIR2 = PVEC DIR1 UCOMP UCOMP ;
  992. SINON ;
  993. * PASSAGE DES DIRECTIONS EN CHPO ET PRODUITS VECTORIELS
  994. DIR1 = CHAN 'CHPO' MOD7 GPSI 'MOYE' ;
  995. DIR2 = CHAN 'CHPO' MOD7 GPHI 'MOYE' ;
  996. DIR3 = PVEC DIR1 NCOMP DIR2 NCOMP UCOMP ;
  997. DIR1 = PVEC DIR2 NCOMP DIR3 UCOMP UCOMP ;
  998. * NORMALISATION, INTERPOLATION PUIS RENORMALISATION :
  999. * POUR DIR1 ON FAIT ATTENTION CAR ON PEUT AVOIR UN POINT SINGULIER
  1000. NDIR1 = (PSCA DIR1 DIR1 UCOMP UCOMP)**0.5 ;
  1001. MASQ1 = MASQ NDIR1 'SUPERIEUR' 1.E-2 ;
  1002. BORN1 = BORN NDIR1 'SCAL' 'MINIMUM' 1.E-2 ;
  1003. DIR1 = CHAN 'ATTRIBUT' (DIR1 / BORN1 * MASQ1) 'NATURE' 'DIFFUS' ;
  1004. V1 = DIR1 ;
  1005. DIR1 = INT_COMP ELTETA DIR1 MESHFR1 ;
  1006. DIR1 = DIR1 / ((PSCA DIR1 DIR1 UCOMP UCOMP)**0.5) ;
  1007. * POUR DIR2 PAS DE PROBLEME
  1008. DIR2 = NOMC NCOMP UCOMP DIR2 ;
  1009. NDIR2 = (PSCA DIR2 DIR2 UCOMP UCOMP)**0.5 ;
  1010. DIR2 = CHAN 'ATTRIBUT' (DIR2 / NDIR2) 'NATURE' 'DIFFUS' ;
  1011. V2 = DIR2 ;
  1012. DIR2 = INT_COMP ELTETA DIR2 MESHFR1 ;
  1013. DIR2 = DIR2 / ((PSCA DIR2 DIR2 UCOMP UCOMP)**0.5) ;
  1014. * POUR DIR3 ON FAIT ATTENTION CAR ON PEUT AVOIR UN POINT SINGULIER
  1015. NDIR3 = (PSCA DIR3 DIR3 UCOMP UCOMP)**0.5 ;
  1016. MASQ3 = MASQ NDIR3 'SUPERIEUR' 1.E-2 ;
  1017. BORN3 = BORN NDIR3 'SCAL' 'MINIMUM' 1.E-2 ;
  1018. DIR3 = CHAN 'ATTRIBUT' (DIR3 / BORN3 * MASQ3) 'NATURE' 'DIFFUS' ;
  1019. V3 = DIR3 ;
  1020. DIR3 = INT_COMP ELTETA DIR3 MESHFR1 ;
  1021. DIR3 = DIR3 / ((PSCA DIR3 DIR3 UCOMP UCOMP)**0.5) ;
  1022. FINSI ;
  1023. SINON ;
  1024. * ON EST DANS LE CAS STD
  1025. DIR1 = REDU CHTHETA (SUPTAB.'FRONT_FISSURE') ;
  1026. NDIR1 = (PSCA DIR1 DIR1 UCOMP UCOMP)**0.5 ;
  1027. DIR1 = DIR1 / NDIR1 ;
  1028. SI (NON ICOQU) ;
  1029. SI (EXIS SUPTAB 'LEVRE_SUPERIEURE') ;
  1030. F1 = PRES 'MASS' OBJMOD SUPTAB.'LEVRE_SUPERIEURE' 1. ;
  1031. SINON ;
  1032. F1 = PRES 'MASS' OBJMOD SUPTAB.'LEVRE_INFERIEURE' -1. ;
  1033. FINSI ;
  1034. DIR2 = REDU F1 (SUPTAB.'FRONT_FISSURE') ;
  1035. DIR2 = EXCO DIR2 FCOMP UCOMP 'NOID' ;
  1036. NDIR2 = (PSCA DIR2 DIR2 UCOMP UCOMP)**0.5 ;
  1037. DIR2 = DIR2 / NDIR2 ;
  1038. SI (EGA GDIME 3) ;
  1039. DIR3 = PVEC DIR1 DIR2 UCOMP UCOMP UCOMP ;
  1040. FINSI ;
  1041. FINSI ;
  1042. FINSI ;
  1043. SI FLTRAC ;
  1044. VCHTHETA = VECT CHTHETA 'DEPL' 'BLEU' ;
  1045. TRAC VCHTHETA (MAILLAGE ET MESHFR1) 'TITR' 'CHAMP_THETA' ;
  1046. FINSI ;
  1047.  
  1048. **************************************************
  1049. ********* DETERMINATION DU REPERE LOCAL **********
  1050. **************************************************
  1051.  
  1052. * ON STOCKE LES DIRECTIONS DANS UTILTETA
  1053. * DIRECTION DE PROPAGATION : DIRTETA
  1054. * DIRECTION TANGENTE AU FRONT : DIRNORM
  1055. * DIRECTION DE CISAILLEMENT SI SEPARATION DE MODES : DIRCISA
  1056. UTILTETA = TABL ;
  1057. DIRTETA = DIR1 ;
  1058. UTILTETA.'DIRECTION1' = DIRTETA ;
  1059. SI (NON ICOQU) ;
  1060. DIRNORM = DIR2 ;
  1061. UTILTETA.'DIRECTION2' = DIRNORM ;
  1062. SI (EGA GDIME 3) ;
  1063. DIRCISA = DIR3 ;
  1064. UTILTETA.'DIRECTION3' = DIRCISA ;
  1065. FINSI ;
  1066. FINSI ;
  1067.  
  1068. **************************************************
  1069. ************** ON COMPLETE ELTETA **************
  1070. **************************************************
  1071.  
  1072. * AJOUT EVENTUEL DE ELPI A ELTETA
  1073. SI ((EXIS SUPTAB 'FRONT_FISSURE_2') ET (EGA GT_OBJ 'DJ/DA')) ;
  1074. ELPI = SUPTAB.'FRONT_FISSURE_2' ;
  1075. REPE MAIL2 ((SUPTAB.'COUCHE') + 1) ;
  1076. ELPI = MAILLAGE ELEM 'APPU' 'LARG' ELPI ;
  1077. FIN MAIL2 ;
  1078. ELTETA = ELTETA ET ELPI ;
  1079. FINSI ;
  1080.  
  1081. * AJOUT DU NOEUD SUPPORT EN DEF.PL.GENERALISEES
  1082. SI (EGA GMODE 'PLANGENE') ;
  1083. ELTETA = ELTETA ET (VALE 'MODE' 'PLANGENE') ;
  1084. FINSI ;
  1085. ELPOI1 = CHAN ELTETA 'POI1' ;
  1086.  
  1087. * L ELEMENT SUPPORTANT LE MODELE MULTICOUCHE
  1088. * DOIT ETRE DANS LA ZONE THETA
  1089. SI ICOQU ;
  1090. N1 = NBNO ELTETA ;
  1091. N2 = NBNO (ELTETA ET (EXTR M_MOYE 'MAIL')) ;
  1092. SI (NEG N1 N2) ;
  1093. MESS 'ERREUR : L ELEMENT EN MULTICOUCHE DESIGNE POUR CALCULER' ;
  1094. MESS ' L INTEGRALE SE TROUVE EN DEHORS DE LA ZONE' ;
  1095. MESS ' DEFINIE PAR LE NOMBRE DE COUCHES DONNE.' ;
  1096. ERRE 21 ; QUIT G_THETA ;
  1097. FINSI ;
  1098. FINSI ;
  1099.  
  1100. **************************************************
  1101. ************* TESTS DE COMPATIBILITE *************
  1102. **************************************************
  1103.  
  1104. * IREPRI = VRAI SI REPRISE DE CALCUL, FAUX SINON
  1105. IREPRI = FAUX ;
  1106. SI (IPAP ET (NON IPERSO1)) ;
  1107. N1 = DIME (SUPTAB.'SOLUTION_PASAPAS'.'TEMPS') ;
  1108. SI ((EXIS SUPTAB 'IABC') ET
  1109. (EXIS SUPTAB 'ELTET1') ET
  1110. (EXIS SUPTAB 'RESULTATS') ET
  1111. (EXIS SUPTAB 'EVOLUTION_RESULTATS')) ;
  1112. IREPRI = (N1 - 1) > SUPTAB.'IABC' ;
  1113. MESS 'on tente une reprise...' ;
  1114. FINSI ;
  1115. FINSI ;
  1116.  
  1117. * TESTS DE COMPATIBILITE SI REPRISE DE CALCUL
  1118. SI IREPRI ;
  1119. * ON VERIFIE QUE L OBJECTIF RESTE LE MEME
  1120. SI (NEG SUPTAB.'OBJ1' SUPTAB.'OBJECTIF') ;
  1121. MESS 'ERREUR : REPRISE IMPOSSIBLE CAR L OBJECTIF DU' ;
  1122. MESS ' CALCUL ACTUEL N EST PAS LE MEME QUE' ;
  1123. MESS ' CELUI DU CALCUL PRECEDENT' ;
  1124. ERRE 21 ; QUIT G_THETA ;
  1125. FINSI ;
  1126. * ON DOIT AVOIR LE MEME NOMBRE DE COUCHE (ON SUPPOSE LA FISSURE FIXE)
  1127. SI ((EXIS SUPTAB 'COUCHE') ET (EXIS SUPTAB 'COU1')) ;
  1128. SI (NEG SUPTAB.'COU1' SUPTAB.'COUCHE') ;
  1129. MESS 'ERREUR : REPRISE IMPOSSIBLE CAR LE NOMBRE DE' ;
  1130. MESS ' COUCHE ACTUEL N EST PAS LE MEME QUE' ;
  1131. MESS ' CELUI UTILISE POUR LE CALCUL PRECEDENT' ;
  1132. ERRE 21 ; QUIT G_THETA ;
  1133. FINSI ;
  1134. FINSI ;
  1135. * RESTE A VERIFIER LA COMPATIBILITE DES SUPPORT DE CHAMP TETA VIA ELTETA
  1136. * ELTETA DOIT ETRE INCLUS DANS ELTET1
  1137. ELTET1 = SUPTAB.'ELTET1' ;
  1138. SI(NEG (NBNO ELTETA) (NBNO (ELTET1 INTE ELTETA))) ;
  1139. MESS 'ERREUR : REPRISE IMPOSSIBLE CAR LE SUPPORT DU ' ;
  1140. MESS ' CHAMP_THETA FOURNI N EST PAS INCLUS DANS' ;
  1141. MESS ' CELUI UTILISE POUR LE CALCUL PRECEDENT' ;
  1142. ERRE 21 ; QUIT G_THETA ;
  1143. FINSI ;
  1144. MESS 'REPRISE DU CALCUL AUTORISE !' ;
  1145. FINSI ;
  1146.  
  1147. * TESTS DE COMPATIBILITE SI UTILISATION DE PERSO1
  1148. SI (IPERSO1 et (EXIS SUPTAB 'ELTET1')) ;
  1149. ELTET1 = SUPTAB.'ELTET1' ;
  1150. SI(NEG (NBNO ELTETA) (NBNO (ELTET1 INTE ELTETA))) ;
  1151. MESS 'ERREUR : REPRISE IMPOSSIBLE CAR LE SUPPORT DU ' ;
  1152. MESS ' CHAMP_THETA FOURNI N EST PAS INCLUS DANS' ;
  1153. MESS ' CELUI UTILISE POUR LE CALCUL PRECEDENT' ;
  1154. ERRE 21 ; QUIT G_THETA ;
  1155. FINSI ;
  1156. SI FLMESS ;
  1157. MESS 'POURSUITE DU CALCUL VIA PERSO1 AUTORISE !' ;
  1158. FINSI ;
  1159. FINSI ;
  1160.  
  1161.  
  1162. * =============================================================================
  1163.  
  1164. * MODELES ET MATERIAUX DANS LA ZONE DE TRAVAIL
  1165. * --------------------------------------------
  1166.  
  1167. * VERIFICATION DES DONNEES D ENTREE POUR MODELES_COMPOSITES
  1168. SI (EXIS SUPTAB 'MODELES_COMPOSITES') ;
  1169. SI ((GDIME EGA 3) ET (NON ICOQU)) ;
  1170. MESS 'ERREUR : ON NE PEUT ENCORE TRAITER LES PROBLEMES' ;
  1171. MESS ' DE MATERIAUX COMPOSITES EN 3D MASSIF' ;
  1172. ERRE 21 ; QUIT G_THETA ;
  1173. FINSI ;
  1174. N1 = DIME SUPTAB.'MODELES_COMPOSITES' ;
  1175. SI (N1 < 2) ;
  1176. MESS 'ERREUR : IL FAUT AU MOINS DEUX MODELES POUR' ;
  1177. MESS ' DETERMINER LA LIGNE COMMUNE D INTERFACE' ;
  1178. ERRE 21 ; QUIT G_THETA ;
  1179. FINSI ;
  1180. M1 = EXTR OBJMOD 'MAIL' ;
  1181. M2 = VIDE 'MAILLAGE' ;
  1182. REPE BIN4 N1 ;
  1183. T1 = TYPE SUPTAB.'MODELES_COMPOSITES'.&BIN4 ;
  1184. SI (NEG T1 'MMODEL ') ;
  1185. MESS 'ERREUR : LE TYPE DE L OBJET No' &BIN4 'DANS LA' ;
  1186. MESS ' TABLE MODELES_COMPOSITES EST INCORRECTE' ;
  1187. ERRE 21 ; QUIT G_THETA ;
  1188. FINSI ;
  1189. M2 = M2 ET (EXTR SUPTAB.'MODELES_COMPOSITES'.&BIN4 'MAIL') ;
  1190. FIN BIN4 ;
  1191. SI (NEG (NBNO M1) (NBNO M2)) ;
  1192. MESS 'ERREUR : TOUS LES MODELES DE MATERIAUX' ;
  1193. MESS ' COMPOSITES NE SONT PAS DONNES' ;
  1194. ERRE 21 ; QUIT G_THETA ;
  1195. FINSI ;
  1196. FINSI ;
  1197.  
  1198. * CREATION DE OBJMOD ET TABMOD
  1199. TABMOD = TABL ;
  1200. SI (EXIS SUPTAB 'MODELES_COMPOSITES') ;
  1201. * CAS DE MODELES COMPOSITES (AVEC DISCONTINUITE) : ON A DU TRAVAIL
  1202. REPE BIN1 (DIME SUPTAB.'MODELES_COMPOSITES') ;
  1203. M1 = SUPTAB.'MODELES_COMPOSITES'.&BIN1 ;
  1204. M2 = EXTR M1 'MAIL' ;
  1205. N1 = NBNO M2 ;
  1206. N2 = NBNO ELTETA ;
  1207. N3 = NBNO (ELTETA ET M2) ;
  1208. * SI ON A DES NOEUDS EN COMMUN, ...
  1209. SI (NEG (N1 + N2) N3) ;
  1210. M2 = CHAN M2 'POI1' ;
  1211. * ... ON LES RECUPERE
  1212. E1 = (DIFF ELPOI1 M2) DIFF (ELPOI1 ET M2) ;
  1213. N1 = NBNO (CONT ELTETA) ;
  1214. N2 = NBNO (E1 ET (CONT ELTETA)) ;
  1215. * SI TOUS LES NOEUDS EN COMMUN SONT SUR LE CONTOUR
  1216. * => PAS D ELEMENTS A RECUPERER => ON PASSE AU MODELE SUIVANT
  1217. SI (EGA N1 N2) ;
  1218. ITER BIN1 ;
  1219. FINSI ;
  1220. * SINON, ON RECUPERE LES ELEMENTS CONCERNES ET LE MODELE REDUIT
  1221. E1 = MAILLAGE ELEM 'APPU' 'STRI' E1 ;
  1222. N1 = (DIME TABMOD) + 1 ;
  1223. TABMOD.N1 = REDU M1 E1 ;
  1224. SI (EGA N1 1) ;
  1225. OBJMOD = TABMOD.N1 ;
  1226. SINON ;
  1227. OBJMOD = OBJMOD ET TABMOD.N1 ;
  1228. FINSI ;
  1229. FINSI ;
  1230. FIN BIN1 ;
  1231. SINON ;
  1232. * CAS DE MODELES SANS DISCONTINUITE : ON A MOINS DE TRAVAIL
  1233. OBJMOD = REDU OBJMOD ELTETA ;
  1234. TABMOD.1 = OBJMOD ;
  1235. FINSI ;
  1236. NBOBJ = DIME TABMOD ;
  1237. OBJMAT = REDU OBJMAT OBJMOD ;
  1238.  
  1239. * CHAMP EPAISSEUR DANS LA ZONE DE TRAVAIL
  1240. SI ICOQU ;
  1241. EPAICH = (CHAN (EXCO OBJMAT 'EPAI' 'SCAL')
  1242. 'STRESSES' OBJMOD) CHAN 'TYPE' 'SCALAIRE' ;
  1243. FINSI ;
  1244.  
  1245. **************************************************
  1246. ** CALCUL DE C* PAR DEUX TYPES DE MODELE FLUAGE **
  1247. **************************************************
  1248. *** ITYPEF = 1 MODELE FLUAGE POUR LEQUEL ON A UNE EXPRESSION
  1249. *** EXPLICITE DE L'INTEGRATION DE LA VITESSE DE
  1250. *** DEFORMATION DE FLUAGE SUR LE TEMPS
  1251. *** ITYPEF = 2 MODELE FLUAGE POUR LEQUEL ON N'OBTIENT PAS
  1252. *** FACILEMENT CETTE EXPRESSION EXPLICITE
  1253. *** ITYPEF = 99 SI EN ELASTO OU THERMO-ELASTO-PLASTICITE
  1254.  
  1255. * VERIF DES DONNEES
  1256. SI ((EGA GT_OBJ 'C*') OU (EGA GT_OBJ 'C*H')) ;
  1257. SI (NON (EXIS OBJMOD 'MATE' 'FLUAGE')) ;
  1258. MESS 'ERREUR : LA FORMULATION DU PROBLEME NE PERMET' ;
  1259. MESS ' PAR DE CALCULER L INTEGRALE SPECIFIEE' ;
  1260. ERRE 21 ; QUIT G_THETA ;
  1261. FINSI ;
  1262. FINSI ;
  1263. SI (EGA GT_OBJ 'C*H') ;
  1264. SI ((EXIS OBJMOD 'MATE' 'FLUAGE' 'BLACKBURN') OU
  1265. (EXIS OBJMOD 'MATE' 'FLUAGE' 'RCCMR_316') OU
  1266. (EXIS OBJMOD 'MATE' 'FLUAGE' 'RCCMR_304') OU
  1267. (EXIS OBJMOD 'MATE' 'FLUAGE' 'POLYNOMIAL') OU
  1268. (EXIS OBJMOD 'MATE' 'FLUAGE' 'LEMAITRE')) ;
  1269. MESS 'ERREUR : IL FAUT UN MODELE DE FLUAGE NORTON' ;
  1270. MESS ' SEUL POUR CALCULER L INTEGRALE C*(H)' ;
  1271. ERRE 21 ; QUIT G_THETA ;
  1272. FINSI ;
  1273. FINSI ;
  1274.  
  1275. * DETERMINATION DE ITYPEF
  1276. ITYPEF = 99 ;
  1277. SI ((EGA GT_OBJ 'C*') OU (EGA GT_OBJ 'C*H')) ;
  1278. SI ((EXIS OBJMOD 'MATE' 'FLUAGE' 'NORTON') OU
  1279. (EXIS OBJMOD 'MATE' 'FLUAGE' 'POLYNOMIAL')) ;
  1280. ITYPEF = 1 ;
  1281. FINSI ;
  1282. SI ((EXIS OBJMOD 'MATE' 'FLUAGE' 'BLACKBURN') OU
  1283. (EXIS OBJMOD 'MATE' 'FLUAGE' 'RCCMR_316') OU
  1284. (EXIS OBJMOD 'MATE' 'FLUAGE' 'RCCMR_304') OU
  1285. (EXIS OBJMOD 'MATE' 'FLUAGE' 'LEMAITRE')) ;
  1286. ITYPEF = 2 ;
  1287. FINSI ;
  1288. FINSI ;
  1289.  
  1290. **************************************************
  1291. ******* INTERFACES DANS LA ZONE DE TRAVAIL *******
  1292. **************************************************
  1293.  
  1294. * CREATION DES INTERFACES INTER-MODELE
  1295. IPARAL = VRAI ; LINTER = TABL ;
  1296. SI ((EXIS SUPTAB 'MODELES_COMPOSITES') ET ((DIME TABMOD) > 1)) ;
  1297. * ON BOUCLE SUR LES MODELES QUI APPARTIENNENT A ELTETA
  1298. REPE BIN2 ((DIME TABMOD) - 1) ;
  1299. M1 = EXTR (TABMOD.&BIN2) 'MAIL' ;
  1300. IIN3 = &BIN2 ;
  1301. NIN3 = (DIME TABMOD) - &BIN2 ;
  1302. REPE BIN3 NIN3 ;
  1303. IIN3 = IIN3 + 1 ;
  1304. LE1 = LECT &BIN2 IIN3 ;
  1305. M2 = EXTR (TABMOD . IIN3) 'MAIL' ;
  1306. * ON ITERE SI (M1 INCLUT DANS M2) OU (M2 INCLUT DANS M1)
  1307. SI (EGA (NBNO (M1 DIFF M2)) 0) ;
  1308. ITER BIN3 ;
  1309. FINSI ;
  1310. * ON ITERE SI M1 ET M2 N ONT PAS DE NOEUDS COMMUNS
  1311. SI (EGA ((NBNO M1) + (NBNO M2)) (NBNO (M1 ET M2))) ;
  1312. ITER BIN3 ;
  1313. FINSI ;
  1314. * ON RECUPERE L INTERFACE M1-M2
  1315. L1 = (CONT M1) ELEM 'APPU' (CONT M2) ;
  1316. N1 = NBNO M1 ; N2 = NBNO M2 ;
  1317. * LO1=VRAI <=> IL EXISTE DES NOEUDS COMMUNS A M1 ET M2
  1318. LO1 = NEG (N1 + N2) (NBNO (M1 ET M2)) ;
  1319. * LO2=VRAI <=> IL N'Y A PAS 1 NOEUD COMMUN A M1 ET M2
  1320. LO2 = NEG ('ABS' ((N1 + N2) - (NBNO (M1 ET M2)))) 1 ;
  1321. * LO4 = M1 ET M2 FORMENT BIEN UNE INTERFACE ET NE SE CHEVAUCHENT PAS
  1322. LO4 = NEG (NBEL L1) 0 ;
  1323. SI (LO1 ET LO2 ET LO4) ;
  1324. * ON AJOUTE L INTERFACE CAR ON A >1 NOEUDS EN COMMUN A M1 ET M2
  1325. LINTER.LE1 = L1 ;
  1326. * IPARAL=VRAI <=> TOUTES LES INTERFACES SONT // A LA FISSURE
  1327. * SI IPARAL=FAUX IL FAUT AJOUTER DES TERMES D INTERFACES AU C
  1328. P1 = (POIN L1 1) MOIN (POIN L1 2) ;
  1329. P1 = P1 / (NORM P1) ;
  1330. * PETITE MODIF CAR DIRTETA DOIT ETRE UN CHPOINT DESORMAIS
  1331. * -> A VERIFIER ?
  1332. PDIRTETA = RESU DIRTETA ;
  1333. PRESU = (EXTR PDIRTETA 'MAIL') POIN 1 ;
  1334. XDIRTETA = EXTR PDIRTETA PRESU 'UX' ;
  1335. YDIRTETA = EXTR PDIRTETA PRESU 'UY' ;
  1336. SI (GDIME EGA 2) ;
  1337. PDIRTETA = XDIRTETA YDIRTETA ;
  1338. SINON ;
  1339. ZDIRTETA = EXTR PDIRTETA PRESU 'UZ' ;
  1340. PDIRTETA = XDIRTETA YDIRTETA ZDIRTETA ;
  1341. FINSI ;
  1342. PDIRTETA = PDIRTETA / (NORM PDIRTETA) ;
  1343. LO1 = ((EGA P1 PDIRTETA 1.E-6) OU
  1344. (EGA P1 (-1.*PDIRTETA) 1.E-6)) ;
  1345. IPARAL = IPARAL ET LO1 ;
  1346. FINSI ;
  1347. FIN BIN3 ;
  1348. FIN BIN2 ;
  1349. FINSI ;
  1350.  
  1351. * DANS LE CAS DECOUPLAGE SEULEMENT :
  1352. * TEST SI FRONT_FISSURE EST DANS UNE INTERFACE
  1353. IDANS = FAUX ;
  1354. SI ((NEG (DIME LINTER) 0) ET (EGA GT_OBJ 'DECOUPLAGE')) ;
  1355. IND1 = INDE LINTER ;
  1356. REPE BIN4 (DIME IND1) ;
  1357. LE1 = IND1.&BIN4 ;
  1358. M1 = CHAN LINTER.LE1 'POI1' ;
  1359. N1 = NBNO M1 ;
  1360. N2 = NBNO (M1 ET SUPTAB.'FRONT_FISSURE') ;
  1361. SI (EGA N1 N2) ;
  1362. IDANS = VRAI ;
  1363. QUIT BIN4 ;
  1364. SINON ;
  1365. ITER BIN4 ;
  1366. FINSI ;
  1367. FIN BIN4 ;
  1368. FINSI ;
  1369. * SI OUI (IDANS),ON DETERMINE LES MODELES SUP ET INF
  1370. MODINF = 0 ; MODSUP = 0 ;
  1371. SI IDANS ;
  1372. * ON REDEFINIT : IPARAL=VRAI <=> L'INTERFACE A LAQUELLE APPARTIENT LA FISSURE E
  1373. IPARAL = FAUX ;
  1374. M1 = EXTR TABMOD.(EXTR LE1 1) 'MAIL' ;
  1375. M2 = EXTR TABMOD.(EXTR LE1 2) 'MAIL' ;
  1376. LSUP = SUPTAB.'LEVRE_SUPERIEURE' ;
  1377. LINF = SUPTAB.'LEVRE_INFERIEURE' ;
  1378. N1 = NBNO M1 ;
  1379. N2 = NBNO M2 ;
  1380. NLSUP = NBNO LSUP ;
  1381. NLINF = NBNO LINF ;
  1382. N1SUP = NBNO (M1 ET LSUP) ;
  1383. N2INF = NBNO (M2 ET LINF) ;
  1384. SI ( ((N1 + NLSUP - N1SUP) > 1) ET ((N2 + NLINF - N2INF) > 1)) ;
  1385. * LSUP ET MOD1 ONT PLUS D'1 POINT COMMUN ET IDEM POUR LINF ET MOD2
  1386. MODSUP = TABMOD.(EXTR LE1 1) ;
  1387. MODINF = TABMOD.(EXTR LE1 2) ;
  1388. SINON ;
  1389. N1INF = NBNO (M1 ET LINF) ;
  1390. N2SUP = NBNO (M2 ET LSUP) ;
  1391. SI ( ((N1 + NLINF - N1INF) > 1) ET ((N2 + NLSUP - N2SUP) > 1)) ;
  1392. MODSUP = TABMOD.(EXTR LE1 2) ;
  1393. MODINF = TABMOD.(EXTR LE1 1) ;
  1394. SINON ;
  1395. MESS 'ERREUR : INCOMPATIBILITE ENTRE LE MODELES_COMPOSITES' ;
  1396. MESS ' ET LES LEVRE_SUPERIEURE ET _INFERIEURE' ;
  1397. ERRE 21 ; QUIT G_THETA ;
  1398. FINSI ;
  1399. FINSI ;
  1400. * LA FISSURE EST BIEN DANS LE PROLONGEMENT DE L' INTERFACE
  1401. IPARAL = VRAI ;
  1402. FINSI ;
  1403. * REM: il faudrait egalement verifier que MODSUP et MODINF suffisent a decrire E
  1404.  
  1405. **************************************************
  1406. *** MODPLA : table indicee par entier pour stocker les modeles
  1407. *** mecaniques de chaque objet MMODEL.
  1408. **************************************************
  1409. *** Elle est vide si le modele est elastique ou elastoplastique
  1410. *** avec une courbe de traction independante de la temperature.
  1411. *** Dans le cas contraire la table vaut :
  1412. *** 1 si le modele est plastique isotrope. Alors une
  1413. *** nouvelle courbe de traction EPSE-SIGMA est faite.
  1414. *** 2 si le modele est plastique cinematique
  1415. *** 3 si le modele est plastique parfaite
  1416.  
  1417. YOUVARI = FAUX ; NUVARI = FAUX ;
  1418. ALFVARI = FAUX ; MODPLA = TABLE ; TABTRA = TABLE ;
  1419.  
  1420. REPE BCMOD1 NBOBJ ;
  1421. MODEI = TABMOD.&BCMOD1 ;
  1422. MATEI = REDU OBJMAT MODEI ;
  1423.  
  1424. * YOUVARI
  1425. YO1 = EXCO MATEI 'YOUN' ;
  1426. TYPYO = TYPE (EXTR YO1 'YOUN' 1 1 1) ;
  1427. SI (EGA TYPYO 'EVOLUTIO') ;
  1428. YOUVARI = VRAI ;
  1429. SINON ;
  1430. TEST1 = ((MAXI YO1) - (MINI YO1))/(MINI YO1) ;
  1431. SI (TEST1 '>' 1.E-10) ;
  1432. YOUVARI = VRAI ;
  1433. FINSI ;
  1434. FINSI ;
  1435.  
  1436. * NUVARI
  1437. NU1 = EXCO MATEI 'NU' ;
  1438. TYPNU = TYPE (EXTR NU1 'NU' 1 1 1) ;
  1439. SI (EGA TYPNU 'EVOLUTIO') ;
  1440. NUVARI = VRAI ;
  1441. SINON ;
  1442. TEST1 = ((MAXI NU1) - (MINI NU1))/(MINI NU1) ;
  1443. SI (TEST1 '>' 1.E-10) ;
  1444. NUVARI = VRAI ;
  1445. FINSI ;
  1446. FINSI ;
  1447.  
  1448. * ALFVARI
  1449. SI ITHER ;
  1450. AL1 = EXCO MATEI 'ALPH' ;
  1451. TYPAL = TYPE (EXTR AL1 'ALPH' 1 1 1) ;
  1452. SI (EGA TYPAL 'EVOLUTIO') ;
  1453. ALFVARI = VRAI ;
  1454. SINON ;
  1455. TEST1 = ((MAXI AL1) - (MINI AL1))/(MINI AL1) ;
  1456. SI (TEST1 '>' 1.E-10) ;
  1457. ALFVARI = VRAI ;
  1458. FINSI ;
  1459. FINSI ;
  1460. FINSI ;
  1461.  
  1462. * COURBE DE TRACTION
  1463. SI (EXIS MATEI 'ECRO') ;
  1464. TR1 = EXCO MATEI 'ECRO' ;
  1465. TYPTR = TYPE (EXTR TR1 'ECRO' 1 1 1) ;
  1466. SI (EGA TYPTR 'NUAGE ') ;
  1467. MODPLA.&BCMOD1 = 1 ;
  1468. TRA1 = EXTR TR1 'ECRO' 1 1 1 ; COM1 = EXTR TRA1 'COMP' ;
  1469. NOMEVO1 = MOT 'ECRO' ; NOMFLO1 = MOT 'T' ;
  1470. REPE BNUA1 (DIME TRA1 'UPLE') ;
  1471. SI (EGA &BNUA1 1) ;
  1472. NUA1 = EXTR TRA1 'MINI' NOMFLO1 ;
  1473. SINON ;
  1474. NUA1 = EXTR TRA1 'SUPE' NOMFLO1 (T1 + 1.E-10) ;
  1475. FINSI ;
  1476. T1 = EXTR NUA1 NOMFLO1 ;
  1477. EV1 = EXTR NUA1 NOMEVO1 ;
  1478. PSIG1 = EXTR EV1 ORDO ; PEPS1 = EXTR EV1 'ABSC' ;
  1479. VYOU1 = (EXTR 2 PSIG1) / (EXTR 2 PEPS1) ;
  1480. PEPS2 = PROG ;
  1481. REPE BSIG1 ((DIME PSIG1) - 1) ;
  1482. VA1 = (EXTR (&BSIG1 + 1) PEPS1) -
  1483. ((EXTR (&BSIG1 + 1) PSIG1) / VYOU1) ;
  1484. PEPS2 = PEPS2 ET (PROG VA1) ;
  1485. FIN BSIG1 ;
  1486. EV1 = EVOL 'MANU' 'EPSE' PEPS2 SIGM ('ENLE' PSIG1 1) ;
  1487. SI (&BNUA1 EGA 1) ;
  1488. TRA2 = 'NUAG' 'COMP' NOMFLO1 T1 'COMP' NOMEVO1 EV1 ;
  1489. SINON ;
  1490. TRA2 = TRA2 ET ('NUAG' 'COMP' NOMFLO1
  1491. T1 'COMP' NOMEVO1 EV1) ;
  1492. FINSI ;
  1493. FIN BNUA1 ;
  1494. TABTRA.&BCMOD1 = TRA2 ;
  1495. * ON ENLEVE LA COURBE DE TRACTION SI ELLE DEPEND DE
  1496. * LA TEMPERATURE (OPERATION TROP COUTEUSE POUR VARI)
  1497. MAT0 = MATEI ; LCOMP1 = EXTR MAT0 'COMP' ;
  1498. REPE BCOM1 (DIME LCOMP1) ;
  1499. C1 = EXTR LCOMP1 &BCOM1 ;
  1500. SI (NEG C1 'ECRO') ;
  1501. SI (EGA &BCOM1 1) ;
  1502. MATEI = 'MATE' MODEI C1 (EXCO C1 MAT0) ;
  1503. SINON ;
  1504. MATEI = MATEI ET ('MATE' MODEI C1 (EXCO C1 MAT0)) ;
  1505. FINSI ;
  1506. FINSI ;
  1507. FIN BCOM1 ;
  1508. FINSI ;
  1509. * SIGY (et pas TRAC)
  1510. SINON ;
  1511. SI (EXIS MATEI 'SIGY') ;
  1512. SI1 = EXCO MATEI 'SIGY' ;
  1513. TYPSI = TYPE (EXTR SI1 'SIGY' 1 1 1) ;
  1514. SI (EXIS MATEI 'H') ;
  1515. H1 = EXCO MATEI 'H' ;
  1516. TYPH = TYPE (EXTR H1 'H' 1 1 1) ;
  1517. SI ((EGA TYPH 'EVOLUTIO') OU
  1518. (EGA TYPSI 'EVOLUTIO')) ;
  1519. MODPLA.&BCMOD1 = 2 ;
  1520. FINSI ;
  1521. SINON ;
  1522. SI (EGA TYPSI 'EVOLUTIO') ;
  1523. MODPLA.&BCMOD1 = 3 ;
  1524. FINSI ;
  1525. FINSI ;
  1526. FINSI ;
  1527. FINSI ;
  1528. FIN BCMOD1 ;
  1529. MATVARI = YOUVARI OU NUVARI OU ALFVARI OU ((DIME MODPLA) '>' 0) ;
  1530.  
  1531. **************************************************
  1532. ************ CAS IMPOSSIBLE A TRAITER ************
  1533. **************************************************
  1534.  
  1535. SI (EXIS SUPTAB 'MODELES_COMPOSITES') ;
  1536. SI ((EGA GT_OBJ 'DECOUPLAGE') ET (IDANS ET (NON IPARAL))) ;
  1537. MESS 'ERREUR : ON NE PEUT ENCORE DECOUPLER LES MODES' ;
  1538. MESS ' DANS LE CAS DES MATERIAUX COMPOSITES' ;
  1539. MESS ' SI LA FISSURE N APPARTIENT PAS A L INTERFACE' ;
  1540. ERRE 21 ; QUIT G_THETA ;
  1541. FINSI ;
  1542. SI ((EGA GT_OBJ 'DJ/DA') ET (NEG (dime LINTER) 0)) ;
  1543. MESS 'ERREUR : ON NE PEUT ENCORE CALCULER DJ/DA' ;
  1544. MESS ' DANS LE CAS DES MATERIAUX COMPOSITES' ;
  1545. ERRE 21 ; QUIT G_THETA ;
  1546. FINSI ;
  1547. SINON ;
  1548. SI ((EGA GT_OBJ 'DECOUPLAGE') ET MATVARI) ;
  1549. MESS 'ERREUR : ON NE PEUT DECOUPLER LES MODES' ;
  1550. MESS ' DANS LE CAS DES CARACTERISTIQUES' ;
  1551. MESS ' MATERIELS VARIABLES DANS L ESPACE' ;
  1552. ERRE 21 ; QUIT G_THETA ;
  1553. FINSI ;
  1554. SI ((EGA GT_OBJ 'DJ/DA') ET MATVARI) ;
  1555. MESS 'ERREUR : ON NE PEUT ENCORE CALCULER DJ/DA DANS' ;
  1556. MESS ' LE CAS DES CARACTERISTIQUES MATERIELS' ;
  1557. MESS ' VARIABLES DANS L ESPACE' ;
  1558. ERRE 21 ; QUIT G_THETA ;
  1559. FINSI ;
  1560. FINSI ;
  1561. SI ((EGA GT_OBJ 'DECOUPLAGE') ET ICOQU) ;
  1562. MESS 'ERREUR : ON NE PEUT ENCORE DECOUPER LES MODES' ;
  1563. MESS ' DANS LE CAS DES ELEMENTS DE COQUE' ;
  1564. ERRE 21 ; QUIT G_THETA ;
  1565. FINSI ;
  1566. SI ((EGA GT_OBJ 'DJ/DA') ET ICOQU) ;
  1567. MESS 'ERREUR : ON NE PEUT ENCORE CALCULER DJ/DA' ;
  1568. MESS ' DANS LE CAS DES ELEMENTS DE COQUE' ;
  1569. ERRE 21 ; QUIT G_THETA ;
  1570. FINSI ;
  1571. SI ((EGA GT_OBJ 'C*H') ET ITHER) ;
  1572. MESS 'ERREUR : ON NE PEUT ENCORE CALCULER L INTEGRALE' ;
  1573. MESS ' C*(H) DANS LE CAS DE CHARGEMENT THERMIQUE' ;
  1574. ERRE 21 ; QUIT G_THETA ;
  1575. FINSI ;
  1576. SI ((EGA GT_OBJ 'C*') ET ITHER) ;
  1577. MESS 'ERREUR : ON NE PEUT ENCORE CALCULER L INTEGRALE' ;
  1578. MESS ' C* DANS LE CAS DE CHARGEMENT THERMIQUE' ;
  1579. ERRE 21 ; QUIT G_THETA ;
  1580. FINSI ;
  1581. SI (IGDEP ET ((NEG GT_OBJ 'J') ET (NEG GT_OBJ 'J_DYNA') ET (NEG GT_OBJ 'DECOUPLAGE'))) ;
  1582. MESS 'ERREUR : ON NE PEUT ENCORE CALCULER L INTEGRALE' ;
  1583. MESS ' SPECIFIEE EN GRANDS-DEPLACEMENTS' ;
  1584. ERRE 21 ; QUIT G_THETA ;
  1585. FINSI ;
  1586.  
  1587.  
  1588. * =============================================================================
  1589.  
  1590. * PREREQUIS POUR EFFECTUER LES CALCULS
  1591. * ------------------------------------
  1592.  
  1593. **************************************************
  1594. *** TITRES A AFFICHER SELON LE PROBLEME TRAITER **
  1595. **************************************************
  1596.  
  1597. SI IPAP ;
  1598. TXMECANI= MOT ' Mecanique' ;
  1599. TXTERMI = MOT ' Thermique' ;
  1600. TXPRESS = MOT ' Volumique' ;
  1601. SINON ;
  1602. TXMECANI= MOT ' Mecanique' ;
  1603. TXTERMI = MOT ' Thermique' ;
  1604. TXPRESS = MOT ' Volumique' ;
  1605. FINSI ;
  1606. MC1 = MOT ' EN VISCO-THERMO-PLASTIQUE' ;
  1607. MC2 = MOT ' EN VISCO-PLASTICITE' ;
  1608. MC3 = MOT ' EN THERMO-PLASTICITE' ;
  1609. MC4 = MOT ' EN ELASTO-PLASTICITE' ;
  1610. SI (EXIS SUPTAB 'COUCHE') ;
  1611. MC10 = CHAI ' (Theta ' SUPTAB.'COUCHE' ')' ;
  1612. SINON ;
  1613. MC10 = CHAI ' (Theta utilisateur)' ;
  1614. FINSI ;
  1615. SI (EGA GT_OBJ 'J') ;
  1616. CHA1 = CHAI 'INTEGRALE J EN FONCTION DU TEMPS' ;
  1617. MOTTI = MOT 'J' ;
  1618. MOTCO = MOT ' J' ;
  1619. SI ITHER ;
  1620. TX1 = CHAI ' INTEGRALE J' MC3 ;
  1621. SINON ;
  1622. TX1 = CHAI ' INTEGRALE J' MC4 ;
  1623. FINSI ;
  1624. FINSI ;
  1625. SI (EGA GT_OBJ 'C*') ;
  1626. CHA1 = CHAI 'INTEGRALE C* EN FONCTION DU TEMPS' ;
  1627. MOTTI = MOT 'C*' ;
  1628. MOTCO = MOT ' C*' ;
  1629. SI ITHER ;
  1630. TX1 = CHAI ' INTEGRALE C*' MC1 ;
  1631. SINON ;
  1632. TX1 = CHAI ' INTEGRALE C*' MC2 ;
  1633. FINSI ;
  1634. FINSI ;
  1635. SI (EGA GT_OBJ 'C*H') ;
  1636. CHA1 = CHAI 'INTEGRALE C*H EN FONCTION DU TEMPS' ;
  1637. MOTTI = MOT 'C*H' ;
  1638. MOTCO = MOT ' C*(H)' ;
  1639. SI ITHER ;
  1640. TX1 = CHAI ' INTEGRALE C*H' MC1 ;
  1641. SINON ;
  1642. TX1 = CHAI ' INTEGRALE C*H' MC2 ;
  1643. FINSI ;
  1644. FINSI ;
  1645. SI (EGA GT_OBJ 'DJ/DA') ;
  1646. SI (EXIS SUPTAB 'FISSURE_2') ;
  1647. CHA1 = CHAI 'INTEGRALE CROISEE DJi/DAj EN FONCTION DU TEMPS' ;
  1648. MOTTI = MOT 'DJi/DAj' ;
  1649. MOTCO = MOT ' dJi/dAj' ;
  1650. SI ITHER ;
  1651. TX1 = CHAI ' INTEGRALE CROISEE DJi/DAj' MC3 ;
  1652. SINON ;
  1653. TX1 = CHAI ' INTEGRALE CROISEE DJi/DAj' MC4 ;
  1654. FINSI ;
  1655. SINON ;
  1656. CHA1 = CHAI 'INTEGRALE DJ/DA EN FONCTION DU TEMPS' ;
  1657. MOTTI = MOT 'DJ/DA' ;
  1658. MOTCO = MOT ' dJ/dA' ;
  1659. SI ITHER ;
  1660. TX1 = CHAI ' INTEGRALE DJ/DA' MC3 ;
  1661. SINON ;
  1662. TX1 = CHAI ' INTEGRALE DJ/DA' MC4 ;
  1663. FINSI ;
  1664. FINSI ;
  1665. FINSI ;
  1666. SI (EGA GT_OBJ 'J_DYNA') ;
  1667. CHA1 = CHAI 'INTEGRALE J DYNAMIQUE EN FONCTION DU TEMPS' ;
  1668. MOTTI = MOT 'J_DYNA' ;
  1669. MOTCO = MOT ' J_DYNA' ;
  1670. SI ITHER ;
  1671. TX1 = CHAI ' INTEGRALE J EN THERMO-ELASTO-DYNAMIQUE' ;
  1672. SINON ;
  1673. TX1 = CHAI ' INTEGRALE J EN ELASTO-DYNAMIQUE' ;
  1674. FINSI ;
  1675. FINSI ;
  1676. SI (EGA GT_OBJ 'DECOUPLAGE') ;
  1677. CHA1=CHAI 'F.I.C. Ki EN FONCTION DU TEMPS' ;
  1678. MOTTI = MOT 'Ki' ;
  1679. MOTCO = MOT ' K' ;
  1680. SI ITHER ;
  1681. TX1 = CHAI ' SEPARATION DES F.I.C.' MC3 ;
  1682. SINON ;
  1683. TX1 = CHAI ' SEPARATION DES F.I.C.' MC4 ;
  1684. FINSI ;
  1685. FINSI ;
  1686. TX2 = CHAI ' Contribution due au chargement' MC10 ;
  1687. TX3 = CHAI ' ________________________________________' ;
  1688. SI (EXIS SUPTAB 'COUCHE') ;
  1689. SI (SUPTAB.'COUCHE' > 9) ;
  1690. TX3 = CHAI ' _________________________________________' ;
  1691. FINSI ;
  1692. SI (SUPTAB.'COUCHE' > 99) ;
  1693. TX3 = CHAI ' __________________________________________' ;
  1694. FINSI ;
  1695. SINON ;
  1696. TX3 = CHAI ' _____________________________________________' ;
  1697. FINSI ;
  1698.  
  1699. ***************************************************
  1700. **************** AFFICHAGE DU TITRE **************
  1701. ***************************************************
  1702.  
  1703. SI IPAP ;
  1704. SI (EGA GDIME 2) ;
  1705. SI (EGA GT_OBJ 'DECOUPLAGE') ;
  1706. MESS ' ' TX1 ;
  1707. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1708. MESS 'Mode No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1709. SINON ;
  1710. MESS ' ' TX1 ;
  1711. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1712. MESS ' No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1713. FINSI ;
  1714. FINSI ;
  1715. SI ((EGA GDIME 3) ET (NON ICOQU)) ;
  1716. SI (EGA GT_OBJ 'DECOUPLAGE') ;
  1717. MESS ' ' TX1 ;
  1718. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1719. MESS 'Mode Noeud No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1720. SINON ;
  1721. MESS ' ' TX1 ;
  1722. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1723. MESS ' Noeud No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1724. FINSI ;
  1725. FINSI ;
  1726. SI ICOQU ;
  1727. MESS ' ' TX1 ;
  1728. MESS ;
  1729. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1730. MESS ' Plan No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1731. FINSI ;
  1732. SINON ;
  1733. SI (EGA GDIME 2) ;
  1734. SI (EGA GT_OBJ 'DECOUPLAGE') ;
  1735. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1736. MESS 'Mode ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1737. SINON ;
  1738. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1739. MESS ' ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1740. FINSI ;
  1741. FINSI ;
  1742. SI ((EGA GDIME 3) ET (NON ICOQU)) ;
  1743. SI (EGA GT_OBJ 'DECOUPLAGE') ;
  1744. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1745. MESS ' Mode Noeud ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1746. SINON ;
  1747. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1748. MESS ' Noeud ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1749. FINSI ;
  1750. FINSI ;
  1751. SI ICOQU ;
  1752. MESS ' ' TX2 ; MESS ' ' TX3 ;
  1753. MESS ' Plan ' TXMECANI TXTERMI TXPRESS MOTCO ;
  1754. FINSI ;
  1755. FINSI ;
  1756.  
  1757. *******************************************************
  1758. * CONDITIONS AUX LIMITES POUR LE DECOUPLAGE DES MODES *
  1759. * UTILE DANS LE CAS DE L UTILISATION D UNE METHODE *
  1760. * MECANIQUE POUR LA CREATION DES CHAMPS AUXILIAIRES *
  1761. *******************************************************
  1762.  
  1763. SI (EGA GT_OBJ 'DECOUPLAGE') ;
  1764. PM = SUPTAB.'FRONT_FISSURE' ;
  1765. SI ((EGA GDIME 3) ET (NON IDANS)) ;
  1766. SI (NON ICOQU) ;
  1767. PM = POIN PM 'INIT' ;
  1768. FINSI ;
  1769. SI (NON ICOQU) ;
  1770. BLOQ1 = BLOQ 'DEPL' MESHFR1 ;
  1771. SINON ;
  1772. BLOQ1 = (BLOQ 'DEPL' MESHFR1) ET (BLOQ 'ROTA' MESHFR1) ;
  1773. FINSI ;
  1774. FINSI ;
  1775. FINSI ;
  1776.  
  1777. ******************************************
  1778. * FISSURE DANS LE REPERE GLOBAL ET LOCAL *
  1779. ******************************************
  1780.  
  1781. * ELEMENT FINI STANDARD
  1782. SI ((EGA GT_OBJ 'DECOUPLAGE') ET (NON IXFEM)) ;
  1783. * CAS 2D
  1784. SI (EGA GDIME 2) ;
  1785. * INCLINAISON DE LA FISSURE PAR RAPPORT A L'AXE GLOBAL
  1786. XG0 YG0 = COOR PM ;
  1787. SEG1 = ORDO (SUPTAB.'LEVRE_SUPERIEURE' ELEM 'APPU' 'LARG' PM) ;
  1788. PINIFIN = (POIN SEG1 'INIT') ET (POIN SEG1 'FINA') ;
  1789. P_SUP = POIN (DIFF PINIFIN ((VIDE 'MAILLAGE') ET PM)) 1 ;
  1790. SEG1 = ORDO (SUPTAB.'LEVRE_INFERIEURE' ELEM 'APPU' 'LARG' PM) ;
  1791. PINIFIN = (POIN SEG1 'INIT') ET (POIN SEG1 'FINA') ;
  1792. P_inf = POIN (DIFF PINIFIN ((VIDE 'MAILLAGE') ET PM)) 1 ;
  1793. XP1 YP1 = COOR P_SUP ;
  1794. XP2 YP2 = COOR P_INF ;
  1795. ALPHA1 = ATG (YG0 - ((YP1 + YP2)/2.)) (XG0 - ((XP1 + XP2)/2.)) ;
  1796. * COORDONNEES DANS LE REPERE GLOBAL ET LOCAL
  1797. XG1 YG1 = COOR ELTETA ;
  1798. XL1 = ((XG1 - XG0)*(COS ALPHA1)) + ((YG1 - YG0)*(SIN ALPHA1)) ;
  1799. YL1 = ((YG1 - YG0)*(COS ALPHA1)) - ((XG1 - XG0)*(SIN ALPHA1)) ;
  1800. SI ((MESU ('DROI' 1 P_SUP P_INF)) < 1.E-10) ;
  1801. L1 = SUPTAB.'LEVRE_SUPERIEURE' ELEM 'APPU' ELTETA ;
  1802. C1 = MANU 'CHPO' L1 1 'SCAL' 1.E-10 ;
  1803. L2 = SUPTAB.'LEVRE_INFERIEURE' ELEM 'APPU' ELTETA ;
  1804. C2 = MANU 'CHPO' L2 1 'SCAL' -1.E-10 ;
  1805. YL1 = YL1 + C1 + C2 ;
  1806. FINSI ;
  1807. * COORDONNEES CYLINDRIQUES RAY1 TETA1 (1.E-30 POUR EVITER ERREUR ATG 0 0)
  1808. TETA1 = ATG YL1 (XL1 + 1.E-30) ;
  1809. RAY1 = (((XL1*XL1) + (YL1*YL1))**0.5) + 1.E-10 ;
  1810. M1 = ELTETA ELEM 'APPU' 'LARG' P_SUP ;
  1811. M2 = ELTETA ELEM 'APPU' 'LARG' P_INF ;
  1812. VA1 = XTY (MANU 'CHPO' M1 1 'SCAL' 1.)
  1813. (REDU YL1 M1) MTS1 MTS1 ;
  1814. VA2 = XTY (MANU 'CHPO' M2 1 'SCAL' 1.)
  1815. (REDU YL1 M2) MTS1 MTS1 ;
  1816. * ON INVERSE AFIN D'AVOIR YL1 > 0 POUR MODSUP ET < 0 POUR MODINF
  1817. SI ((VA1 < 0.) ET (VA2 > 0.)) ;
  1818. PPPP = P_SUP ; P_SUP = P_INF ; P_INF = PPPP ;
  1819. MMDD = MODSUP ; MODSUP = MODINF ; MODINF = MMDD ;
  1820. FINSI ;
  1821. SI ((EGA XP1 XP2 1.E-10) ET (EGA YP1 YP2 1.E-10)) ;
  1822. TETA_S = REDU TETA1 SUPTAB.'LEVRE_SUPERIEURE' ;
  1823. TETA_F = REDU TETA1 SUPTAB.'LEVRE_INFERIEURE' ;
  1824. TETA1 = TETA1 - TETA_S - TETA_F ;
  1825. * ON SE DEBROUILLE POUR AVOIR EXACTEMENT +/-180 SUR LEVRE SUP/INF
  1826. SI ((VA1 > 0.) ET (VA2 < 0.)) ;
  1827. TETA1 = TETA1 + ((TETA_S*0.) + 180.) + ((TETA_F*0.) - 180.) ;
  1828. SINON ;
  1829. TETA1 = TETA1 + ((TETA_F*0.) + 180.) + ((TETA_S*0.) - 180.) ;
  1830. FINSI ;
  1831. FINSI ;
  1832. * VALEUR EN RADIAN
  1833. TETA1RAD = TETA1*PI/180. ;
  1834. SI IDANS ;
  1835. M1 = EXTR MODSUP 'MAIL' ;
  1836. M2 = EXTR MODINF 'MAIL' ;
  1837. L1 = (CONT M1) ELEM 'APPU' (CONT M2) ;
  1838. M1 = M1 ELEM 'APPU' 'STRI' ELTETA ;
  1839. M2 = M2 ELEM 'APPU' 'STRI' ELTETA ;
  1840. PM1 = (CHAN M1 'POI1') DIFF (CHAN L1 'POI1') ;
  1841. PM2 = (CHAN M2 'POI1') DIFF (CHAN L1 'POI1') ;
  1842. FINSI ;
  1843. SI FLTRAC ;
  1844. TRAC RAY1 ELTETA 'TITR' 'RAY1' ;
  1845. TRAC TETA1 ELTETA 'TITR' 'TETA1' (PROG -180. PAS 20. 180.) ;
  1846. FINSi ;
  1847. * CAS 3D
  1848. SINON ;
  1849. MESS 'ON NE FAIT PAS ICI LE PASSAGE LOCAL GLOBAL EN 3D ...?' ;
  1850. MESS 'ET ON NE CALULE PAS RAY1 TETA1 NON PLUS?' ;
  1851. FINSI ;
  1852. FINSI ;
  1853.  
  1854. * XFEM
  1855. SI ((EGA GT_OBJ 'DECOUPLAGE') ET IXFEM) ;
  1856. * CAS 2D
  1857. SI (EGA GDIME 2) ;
  1858. * DIR1 = CHAN 'CHPO' MOD7 GPSI 'MOYE' ;
  1859. * DIR1 = NOMC NCOMP UCOMP GPSI ;
  1860. * NDIR1 = (PSCA DIR1 DIR1 UCOMP UCOMP)**0.5 ;
  1861. * DIR2 = CHAN 'CHPO' MOD7 GPHI 'MOYE' ;
  1862. * DIR2 = PVEC GPHI NCOMP UCOMP ;
  1863. * NDIR2 = (PSCA DIR2 DIR2 UCOMP UCOMP)**0.5 ;
  1864. * SIGN2 = SIGN (PSCA DIR1 DIR2 UCOMP UCOMP) ;
  1865. * DIR1 = DIR1 / NDIR1 ;
  1866. * DIR2 = SIGN2 * DIR2 / NDIR2 ;
  1867. * DIRM = 0.5 * (DIR1 + DIR2) ;
  1868. * E1 = MANU 'CHML' ELTETA UCOMP (PROG 1. 0.) ;
  1869. * E2 = MANU 'CHPO' ELTETA UCOMP (PROG 0. 1.) ;
  1870. * COSALPH = PSCA DIRM E1 UCOMP UCOMP ;
  1871. * SINALPH = PSCA DIRM E2 UCOMP UCOMP ;
  1872. * ALPH1 = (MASQ SINALPH 'EGSUPE' 0.) * (ACOS COSALPH) ;
  1873. * MESS 'ALPH1 :' ;
  1874. * LIST 'RESUME' ALPH1 ;
  1875.  
  1876.  
  1877. * On recupere les level set
  1878. PSI1 = REDU SUPTAB.'PSI' ELTETA ;
  1879. PHI1 = REDU SUPTAB.'PHI' ELTETA ;
  1880. LV7 = (PSI1 NOMC 'UX') ET (PHI1 NOMC 'UY') ;
  1881. GLV7 = CHAN (GRAD LV7 OBJMOD) 'TYPE' 'SCALAIRE' ;
  1882. * ce repere est il direct? (si oui/non, SDIR1=+/-1)
  1883. GLV7po = CHAN 'CHPO' OBJMOD GLV7 'MOYE' ;
  1884. XDIR1 = ((EXCO GLV7po 'UX,X' 'SCAL') * (EXCO GLV7po 'UY,Y'))
  1885. - ((EXCO GLV7po 'UX,Y' 'SCAL') * (EXCO GLV7po 'UY,X')) ;
  1886. XDIR1 = MAXI (RESU XDIR1) ;
  1887. SDIR1 = SIGN XDIR1 ;
  1888. * Angle ALPHA1 de passage local -> global
  1889. NGPSI1 = ( ((EXCO GLV7 'UX,X' 'SCAL')**2)
  1890. + ((EXCO GLV7 'UX,Y' 'SCAL')**2) )**(-0.5) ;
  1891. NGPHI1 = ( ((EXCO GLV7 'UY,X' 'SCAL')**2)
  1892. + ((EXCO GLV7 'UY,Y' 'SCAL')**2) )**(-0.5) ;
  1893. COS1A = 0.5 * ( ( (EXCO GLV7 'UX,X' 'SCAL') * NGPSI1)
  1894. + (SDIR1 * ( (EXCO GLV7 'UY,Y' 'SCAL') * NGPHI1)) ) ;
  1895. SIN1A = 0.5 * ( ( (EXCO GLV7 'UX,Y' 'SCAL') * NGPSI1)
  1896. - (SDIR1 * ( (EXCO GLV7 'UY,X' 'SCAL') * NGPHI1)) ) ;
  1897. ALPHA1 = (MASQ SIN1A 'EGSUPE' 0.) * (ACOS COS1A) ;
  1898. *trac ALPHA1 objmod 'TITR' 'ALPHA1' ;
  1899. COSA2 = COS1A ** 2 ;
  1900. SINA2 = SIN1A ** 2 ;
  1901. SINCOSA = SIN1A * COS1A ;
  1902. * repere local de la fissure
  1903. XL1 = (NOMC PSI1 'SCAL') CHAN 'CHAM' OBJMOD 'STRESSES' ;
  1904. YL1 = (SDIR1 * (NOMC PHI1 'SCAL')) CHAN 'CHAM' OBJMOD 'STRESSES' ;
  1905. * Coordonnees cylindriques RAY1 TETA1
  1906. TETA1 = CHAN (ATG YL1 (XL1 + 1.E-30)) 'TYPE' 'SCALAIRE' ;
  1907. RAY1 = ((XL1**2) + (YL1**2))**0.5 ;
  1908. RAY1 = CHAN RAY1 'TYPE' 'SCALAIRE' ;
  1909.  
  1910. *** CAS 3D *******************************
  1911. SINO ;
  1912. mess 'DECOUPLAGE 3D XFEM en cours de dvpt...' ;
  1913. * On recupere les level set
  1914. PSI1 = REDU SUPTAB.'PSI' ELTETA ;
  1915. PHI1 = REDU SUPTAB.'PHI' ELTETA ;
  1916. LV7 = (PSI1 NOMC 'UX') ET (PHI1 NOMC 'UY')
  1917. et (MANU 'CHPO' ELTETA 1 'UZ ' 0. 'NATURE' 'DIFFUS') ;
  1918. GLV7 = CHAN (GRAD LV7 OBJMOD) 'TYPE' 'SCALAIRE' ;
  1919. SDIR1 = 1. ;
  1920. * creation de la matrice de rotation
  1921. ROT1= (EXCO V1 (MOTS 'UX' 'UY' 'UZ') (MOTS 'UX,X' 'UY,X' 'UZ,X'))
  1922. ET (EXCO V2 (MOTS 'UX' 'UY' 'UZ') (MOTS 'UX,Y' 'UY,Y' 'UZ,Y'))
  1923. ET (EXCO V3 (MOTS 'UX' 'UY' 'UZ') (MOTS 'UX,Z' 'UY,Z' 'UZ,Z')) ;
  1924. ROT1 = EXCO ROT1
  1925. (MOTS UX,X UX,Y UX,Z UY,X UY,Y UY,Z UZ,X UZ,Y UZ,Z) ;
  1926. ROT1 = CHAN 'CHAM' ROT1 OBJMOD 'STRESSES' 'GRADIENT' ;
  1927. * SUPTAB . 'ROT1' = ROT1 ;
  1928. * repere local de la fissure
  1929. XL1 = (NOMC PSI1 'SCAL') CHAN 'CHAM' OBJMOD 'STRESSES' ;
  1930. YL1 = (NOMC PHI1 'SCAL') CHAN 'CHAM' OBJMOD 'STRESSES' ;
  1931. * Coordonnees cylindriques RAY1 TETA1
  1932. TETA1 = CHAN (ATG YL1 (XL1 + 1.D-30)) 'TYPE' 'SCALAIRE' ;
  1933. RAY1 = ((XL1**2) + (YL1**2))**0.5 ;
  1934. RAY1 = CHAN RAY1 'TYPE' 'SCALAIRE' ;
  1935. FINSI ;
  1936.  
  1937. * si(FLTRAC) ;
  1938. * trac ROT1 OBJMOD 'TITR' 'ROT1' ;
  1939. * trac RAY1 objmod 'TITR' 'RAY1' ;
  1940. * trac TETA1 objmod 'TITR' 'TETA1' (prog -180. PAS 20. 180.) ;
  1941. * finsi ;
  1942.  
  1943. FINSI ;
  1944.  
  1945.  
  1946.  
  1947. ***************************************************
  1948. ****** FORCE, DEPLACEMENT ET GRADIENT NULS ******
  1949. ***************************************************
  1950.  
  1951. ZER1 = MANU 'CHML' OBJMOD 'SCAL' 0. 'TYPE' 'SCALAIRE' 'STRESSES' ;
  1952. FOR000 = CHAN 'CHPO' OBJMOD ('ZERO' OBJMOD 'FORCES ') ;
  1953. DEP000 = CHAN 'CHPO' OBJMOD ('ZERO' OBJMOD 'DEPLACEM') ;
  1954. SI (EGA GMODE 'PLANGENE') ;
  1955. FOR000 = MANU 'CHPO' (EXTR OBJMOD 'MAIL') 2 'FX' 0.
  1956. 'FY' 0. 'TITR' 'FORCES ' 'NATURE' 'DIFFUS' ;
  1957. FOR000 = FOR000 ET (MANU 'CHPO' (VALE 'MODE' 'PLANGENE')
  1958. 3 'FZ' 0. 'MX' 0. 'MY' 0.
  1959. 'TITR' 'FORCES ' 'NATURE' 'DIFFUS') ;
  1960. DEP000 = MANU 'CHPO' (EXTR OBJMOD 'MAIL') 2 'UX' 0.
  1961. 'UY' 0. 'TITR' 'DEPLACEM' 'NATURE' 'DIFFUS' ;
  1962. DEP000 = DEP000 ET (MANU 'CHPO' (VALE 'MODE' 'PLANGENE')
  1963. 3 'UZ' 0. 'RX' 0. 'RY' 0.
  1964. 'TITR' 'DEPLACEM' 'NATURE' 'DIFFUS') ;
  1965. FINSI ;
  1966. CMD000 = CHAN 'NOEUD' OBJMOD ('ZERO' OBJMOD 'DEPLACEM') ;
  1967. CMD001 = CHAN 'STRESSES' OBJMOD ('ZERO' OBJMOD 'DEPLACEM') ;
  1968. GRA000 = 'ZERO' OBJMOD 'GRADIENT' ;
  1969. VAR000 = 'ZERO' OBJMOD 'VARINTER' ;
  1970.  
  1971.  
  1972. **************************************************
  1973. * NOMBRE DE BOUCLE POUR LE CALCUL DES INTEGRALES *
  1974. **************************************************
  1975. SI IPAP ;
  1976. NBG = -1 ;
  1977. NBDEP = DIME (SUPTAB.'SOLUTION_PASAPAS'.'TEMPS') ;
  1978. SI IREPRI ;
  1979. NBG = SUPTAB.'IABC' ;
  1980. NBDEP = NBDEP - 1 - NBG ;
  1981. FINSI ;
  1982. SI IPERSO1 ;
  1983. NBG = (WTAB . 'PAS') - 1 ;
  1984. NBDEP = 1 ;
  1985. FINSI ;
  1986. SINON ;
  1987. NBG = -1 ;
  1988. NBDEP = 1 ;
  1989. FINSI ;
  1990.  
  1991.  
  1992. ***************************************************
  1993. ** SOLUTION DU PAS PRECEDENT SI REPRISE DE CALCUL * (ou si perso1)
  1994. ***************************************************
  1995. SI (IREPRI ou (IPERSO1 et (NBG >eg 0))) ;
  1996. SIG1 = (SUPTAB.'SOLUTION_PASAPAS'.'CONTRAINTES'.NBG)
  1997. REDU OBJMOD ;
  1998. SI (EXIS (SUPTAB.'SOLUTION_PASAPAS') 'VARIABLES_INTERNES') ;
  1999. VAR1 = (SUPTAB.'SOLUTION_PASAPAS'.'VARIABLES_INTERNES'.NBG)
  2000. REDU OBJMOD ;
  2001. SINON ;
  2002. VAR1 = VAR000 ;
  2003. FINSI ;
  2004. MAT1 = SUPTAB.'MAT1' ;
  2005. WELAS = 0.5*('ENER' OBJMOD SIG1 ('ELAS' OBJMOD SIG1 MAT1)) ;
  2006. * WPLAS = SUPTAB.'END1' - WELAS ;
  2007. WPLAS = (redu OBJMOD SUPTAB.'END1') - WELAS ;
  2008. SI (EGA ITYPEF 2) ;
  2009. VDI1 = SUPTAB.'VDI1' ;
  2010. FINSI ;
  2011. SI (((DIME MODPLA) '>' 0) ET ITHER) ;
  2012. WVMIS = SUPTAB.'ENV1' ;
  2013. FINSI ;
  2014. si(FLMESS) ; mess 'RECUP DU PAS PRECEDENT OK' ; fins ;
  2015. FINSI ;
  2016.  
  2017.  
  2018. ***************************************************
  2019. ******** TABLE INFORMATION COMPLEMENTAIRE *********
  2020. ***************************************************
  2021. INFTAB = TABL ;
  2022. INFTAB.'MOTTI' = MOTTI ;
  2023. INFTAB.'MODCOU' = MODCOU ;
  2024. INFTAB.'TABMOD' = TABMOD ;
  2025. INFTAB.'LINTER' = LINTER ;
  2026. INFTAB.'ICOQU' = ICOQU ;
  2027. INFTAB.'IGDEP' = IGDEP ;
  2028. INFTAB.'IGDER' = IGDER ;
  2029. INFTAB.'IREPRI' = IREPRI ;
  2030. INFTAB.'IPAP' = IPAP ;
  2031. INFTAB.'ILIN' = ILIN ;
  2032. INFTAB.'ITHER' = ITHER ;
  2033. INFTAB.'ITHER1' = ITHER1 ;
  2034. INFTAB.'IPARAL' = IPARAL ;
  2035. INFTAB.'MATVARI' = MATVARI ;
  2036. INFTAB.'YOUVARI' = YOUVARI ;
  2037. INFTAB.'ALFVARI' = ALFVARI ;
  2038. INFTAB.'IQUA' = IQUA ;
  2039. INFTAB.'ELTETA' = ELTETA ;
  2040. INFTAB.'OBJMOD' = OBJMOD ;
  2041. INFTAB.'MODPLA' = MODPLA ;
  2042. INFTAB.'FOR000' = FOR000 ;
  2043. INFTAB.'DEP000' = DEP000 ;
  2044. INFTAB.'CMD000' = CMD000 ;
  2045. INFTAB.'CMD001' = CMD001 ;
  2046. INFTAB.'GRA000' = GRA000 ;
  2047. INFTAB.'IXFEM' = IXFEM ;
  2048. INFTAB.'ITYPEF' = ITYPEF ;
  2049. INFTAB.'IPERSO1' = IPERSO1 ;
  2050. * ajout sm
  2051. INFTAB.'IDEFI' = IDEFI ;
  2052. *ajout BP BT pour le contact frottant
  2053. INFTAB . 'IFROT' = IFROT ;
  2054. si (IFROT) ;
  2055. INFTAB . 'OBJCON' = OBJCON ;
  2056. fins ;
  2057. *fin ajout BP BT
  2058. si(IPERSO1) ; INFTAB . 'ESTIMATION' = ESTIM ; fins ;
  2059.  
  2060.  
  2061. ***********************************************
  2062. ***********************************************
  2063. ********* BOUCLE SUR LE PAS DE CALCUL *********
  2064. ***********************************************
  2065. ***********************************************
  2066.  
  2067. REPE BOUCEXT NBDEP ;
  2068. IABC = NBG + &BOUCEXT ;
  2069.  
  2070. ***************************************************
  2071. ** DEPLACEMENTS,CONTRAINTES ... A L INSTANT INST **
  2072. ***************************************************
  2073.  
  2074. *** SOLUTION_PASAPAS ******************************
  2075. SI IPAP ;
  2076. *** Cas PERSO1
  2077. SI IPERSO1 ;
  2078. INST = ESTIM . 'TEMPS' ;
  2079. DEPINT = (ESTIM . 'DEPLACEMENTS') REDU ELTETA ;
  2080. SIGF = (ESTIM . 'CONTRAINTES' ) REDU OBJMOD ;
  2081. SI (IGDEP ET (NON IGDER)) ;
  2082. SIGF = 'CAPI' SIGF DEPINT OBJMOD ;
  2083. FINSI ;
  2084. SI IGDER ;
  2085. SI (NON (EXIS (SUPTAB.'ROTATION_RIGIDIFIANTE') IABC)) ;
  2086. MESS 'ERREUR : Le deplacement du a une rotation' ;
  2087. MESS ' rigidifiante au pas ' IABC ' n est pas donne' ;
  2088. ERRE 21 ; QUIT G_THETA ;
  2089. FINSI ;
  2090. DEPINT = DEPINT -
  2091. (REDU SUPTAB.'ROTATION_RIGIDIFIANTE'.IABC ELTETA) ;
  2092. FINSI ;
  2093. SI (EXIS ESTIM 'VARIABLES_INTERNES') ;
  2094. VARF = (ESTIM . 'VARIABLES_INTERNES') REDU OBJMOD ;
  2095. SINON ;
  2096. VARF = VAR000 ;
  2097. FINSI ;
  2098. SI (EGA GT_OBJ 'C*') ;
  2099. SI (EGA IABC 0) ;
  2100. DELTAT = INST + 1.E+30 ;
  2101. DEPINT = ESTIM . 'DEPLACEMENTS' ;
  2102. VITDFI = ESTIM . 'DEFORMATIONS_INELASTIQUES' ;
  2103. SIG1 = SIGF * 1. ;
  2104. FINSI ;
  2105. SI (IABC '>' 0) ;
  2106. DELTAT= INST - (ESTIM . 'TEMPS') ;
  2107. DEPINT= (ESTIM . 'DEPLACEMENTS') - (ESTIM . 'DEPLACEMENTS') ;
  2108. VITDFI= (ESTIM . 'DEFORMATIONS_INELASTIQUES')
  2109. - (ESTIM . 'DEFORMATIONS_INELASTIQUES') ;
  2110. FINSI ;
  2111. DEPINT = (REDU ELTETA DEPINT) / DELTAT ;
  2112. VITDFI = (REDU ELTETA VITDFI) / DELTAT ;
  2113. FINSI ;
  2114. SI (EGA GT_OBJ 'J_DYNA') ;
  2115. VITF = (ESTIM .'VITESSES') REDU ELTETA ;
  2116. ACCF = (ESTIM .'ACCELERATIONS') REDU ELTETA ;
  2117. FINSI ;
  2118. *** Cas ou on appelle g_theta apres pasapas
  2119. SINO ;
  2120. INST = SUPTAB.'SOLUTION_PASAPAS'.'TEMPS'.IABC ;
  2121. DEPINT = (SUPTAB.'SOLUTION_PASAPAS'.'DEPLACEMENTS'.IABC)
  2122. REDU ELTETA ;
  2123. SIGF = (SUPTAB.'SOLUTION_PASAPAS'.'CONTRAINTES'.IABC)
  2124. REDU OBJMOD ;
  2125. SI (IGDEP ET (NON IGDER)) ;
  2126. SIGF = 'CAPI' SIGF DEPINT OBJMOD ;
  2127. FINSI ;
  2128. SI IGDER ;
  2129. SI (NON (EXIS (SUPTAB.'ROTATION_RIGIDIFIANTE') IABC)) ;
  2130. MESS 'ERREUR : Le deplacement du a une rotation' ;
  2131. MESS ' rigidifiante au pas ' IABC ' n est pas donne' ;
  2132. ERRE 21 ; QUIT G_THETA ;
  2133. FINSI ;
  2134. DEPINT = DEPINT -
  2135. (REDU SUPTAB.'ROTATION_RIGIDIFIANTE'.IABC ELTETA) ;
  2136. FINSI ;
  2137. SI (EXIS (SUPTAB.'SOLUTION_PASAPAS') 'VARIABLES_INTERNES') ;
  2138. VARF = (SUPTAB.'SOLUTION_PASAPAS'.'VARIABLES_INTERNES'.IABC)
  2139. REDU OBJMOD ;
  2140. SINON ;
  2141. VARF = VAR000 ;
  2142. FINSI ;
  2143. SI (EGA GT_OBJ 'C*') ;
  2144. SI (EGA IABC 0) ;
  2145. DELTAT = INST + 1.E+30 ;
  2146. DEPINT = SUPTAB.'SOLUTION_PASAPAS'.'DEPLACEMENTS'.IABC ;
  2147. VITDFI = SUPTAB.'SOLUTION_PASAPAS'.
  2148. 'DEFORMATIONS_INELASTIQUES'.IABC ;
  2149. SIG1 = SIGF * 1. ;
  2150. FINSI ;
  2151. SI (IABC '>' 0) ;
  2152. DELTAT= INST - (SUPTAB.'SOLUTION_PASAPAS'.'TEMPS'.(IABC - 1)) ;
  2153. DEPINT= (SUPTAB.'SOLUTION_PASAPAS'.'DEPLACEMENTS'.IABC) -
  2154. (SUPTAB.'SOLUTION_PASAPAS'.'DEPLACEMENTS'.(IABC - 1)) ;
  2155. VITDFI=
  2156. (SUPTAB.'SOLUTION_PASAPAS'.'DEFORMATIONS_INELASTIQUES' .IABC)
  2157. - (SUPTAB.'SOLUTION_PASAPAS'.'DEFORMATIONS_INELASTIQUES'.(IABC - 1)) ;
  2158. FINSI ;
  2159. DEPINT = (REDU ELTETA DEPINT) / DELTAT ;
  2160. VITDFI = (REDU ELTETA VITDFI) / DELTAT ;
  2161. FINSI ;
  2162. SI (EGA GT_OBJ 'J_DYNA') ;
  2163. VITF = (SUPTAB.'SOLUTION_PASAPAS'.'VITESSES'.IABC)
  2164. REDU ELTETA ;
  2165. ACCF = (SUPTAB.'SOLUTION_PASAPAS'.'ACCELERATIONS'.IABC)
  2166. REDU ELTETA ;
  2167. FINSI ;
  2168. FINSI ;
  2169. *** SOLUTION_RESO **********************************
  2170. SINON ;
  2171. DEPINT = REDU (SUPTAB.'SOLUTION_RESO') ELTETA ;
  2172. SIGF = SIGM 'LINE' DEPINT OBJMOD OBJMAT ;
  2173. FINSI ;
  2174.  
  2175. *** ON CHANGE LE DEPLACEMENT DEPINT EN MCHAML AU NOEUD ******
  2176. *bp: utilite?
  2177. DEPINT = CHAN 'CHAM' DEPINT OBJMOD 'NOEUD' 'DEPLACEMENTS' ;
  2178.  
  2179. ****************************************************
  2180. * MODIFICATION DES CHAMPS THETA ET PI SI GRANDE ROT
  2181. ****************************************************
  2182. SI IPAP ;
  2183. SI IGDER ;
  2184. FORM SUPTAB.'ROTATION_RIGIDIFIANTE'.IABC ;
  2185. SUPTAB.'CHAMP_THETA' UTILTETA = CH_THETA SUPTAB ;
  2186. SI (EGA GT_OBJ 'DJ/DA') ;
  2187. SI (NON (EXIS SUPTAB 'FRONT_FISSURE_2')) ;
  2188. SUPTAB.'COUCHE' = (SUPTAB.'COUCHE') - 1 ;
  2189. SUPTAB.'PI' UTILPI = CH_THETA SUPTAB ;
  2190. SUPTAB.'COUCHE' = (SUPTAB.'COUCHE') + 1 ;
  2191. SINON ;
  2192. P1 = SUPTAB.'FRONT_FISSURE' ;
  2193. SUPTAB.'FRONT_FISSURE' = SUPTAB.'FRONT_FISSURE_2' ;
  2194. SUPTAB.'FISSURE' = SUPTAB.'FISSURE_2' ;
  2195. SUPTAB.'PI' UTILPI = CH_THETA SUPTAB ;
  2196. SUPTAB.'FRONT_FISSURE' = P1 ;
  2197. FINSI ;
  2198. FINSI ;
  2199. FINSI ;
  2200. FINSI ;
  2201.  
  2202. ***************************************************
  2203. ********** TEMPERATURES A L INSTANT INST **********
  2204. ***************************************************
  2205. SI ITHER ;
  2206. SI IPAP;
  2207. SI (ITHER1);
  2208. TEPINT = 'TIRE' CHAR1 INST 'T' ;
  2209. SINON;
  2210. * bp, 2014-11-13 : ajout distinction cas ITHER et ITHER1
  2211. TEPINT = REDU ELTETA SUPTAB.'SOLUTION_PASAPAS'.'TEMPERATURES'.IABC ;
  2212.  
  2213. FINSI;
  2214.  
  2215. SINON;
  2216. TEPINT = SUPTAB.'TEMPERATURES';
  2217. FINSI;
  2218. FINSI;
  2219.  
  2220.  
  2221. ***************************************************
  2222. ********** DEF IMPOSEE A L INSTANT INST **********
  2223. ***************************************************
  2224. SI IDEFI;
  2225. SI IPAP;
  2226. DEFINT = 'TIRE' CHAR1 INST 'DEFI' ;
  2227. SINON;
  2228. DEFINT = SUPTAB . 'DEFORMATIONS_IMPOSEES';
  2229. FINSI;
  2230. FINSI;
  2231.  
  2232. ***************************************************
  2233. ********** CONTACT FROTTANT **********
  2234. ***************************************************
  2235. SI IFROT;
  2236. SI IPAP;
  2237. *...todo
  2238. SINON;
  2239. * a priori DEPLACEMENT_FISSURE pas tres utile ...
  2240. SI (EXIS SUPTAB 'DEPLACEMENT_FISSURE');
  2241. WDEP = SUPTAB . 'DEPLACEMENT_FISSURE';
  2242. SINO;
  2243. WDEP = REDU (SUPTAB.'SOLUTION_RESO') MAICON;
  2244. FINS;
  2245. toto = EXTR WDEP 'MAIL';
  2246. SI (EGA (NBEL toto) 0);
  2247. MESS 'ERREUR : IL FAUT DEPLACEMENT_FISSURE si MODELE_FISSURE';
  2248. ERRE 21 ; QUIT G_THETA ;
  2249. FINS;
  2250. SI (EXIS SUPTAB 'PRESSION_FISSURE');
  2251. SIGCON = SUPTAB . 'PRESSION_FISSURE';
  2252. SINO;
  2253. SIGCON = REDU SIGF OBJCON;
  2254. FINS;
  2255. * peut etre faire un test sur SIGCON ...
  2256. FINSI;
  2257. FINS;
  2258.  
  2259. *****************************************************
  2260. * CONTRAINTE RECALCULEE SI ITHER = VRAI et NON IPAP *
  2261. *****************************************************
  2262. SI (ITHER ET (NON IPAP));
  2263. SIGF = SIGF - ('THET' OBJMOD OBJMAT TEPINT);
  2264. FINSI;
  2265.  
  2266. ***************************************************
  2267. ************ MATERIAU A L INSTANT INST ************
  2268. ***************************************************
  2269. SI (MATVARI ET ITHER ET IPAP);
  2270.  
  2271. MAT1 = VARI 'NUAG' OBJMOD OBJMAT (EXCO 'T' TEPINT 'T');
  2272. SINON;
  2273. MAT1 = OBJMAT;
  2274. *bp: ne devrait on pas ecrire ci dessous..? inutile?
  2275. * MAT1 = REDU OBJMOD OBJMAT
  2276. FINSI;
  2277.  
  2278. ***************************************************
  2279. ********* RIGIDITE TOTALE A L INSTANT INST ********
  2280. ***************************************************
  2281. *bp: utilite?
  2282. SI ( (EGA GT_OBJ 'DJ/DA') OU ((EGA GT_OBJ 'DECOUPLAGE')
  2283. et (non IXFEM) et (EGA GDIME 3) ET (NON IDANS)) );
  2284. SI IPAP;
  2285. SI (MATVARI ET ITHER);
  2286. M1 = VARI 'NUAG' OBJMOD (EXCO 'T' TEPINT 'T')
  2287. (SUPTAB.'SOLUTION_PASAPAS'.'CARACTERISTIQUES');
  2288. SINON;
  2289. M1 = SUPTAB.'SOLUTION_PASAPAS'.'CARACTERISTIQUES';
  2290. FINSI;
  2291. RIGTOT = RIGI M1 (SUPTAB.'SOLUTION_PASAPAS'.'MODELE');
  2292. SINON;
  2293. RIGTOT = RIGI (SUPTAB.'CARACTERISTIQUES') (SUPTAB.'MODELE');
  2294. FINSI;
  2295. FINSI;
  2296.  
  2297. ********************************************************************
  2298. ****** CHARGEMENT MECANIQUE (FORCES NODALES) A L INSTANT INST ******
  2299. ********************************************************************
  2300. PREINT = FOR000 ;
  2301. *** SOLUTION_PASAPAS ******************************
  2302. SI IPAP ;
  2303. SI (EXIS CHAR1 'MECA') ;
  2304. PREINT = PREINT + ((TIRE CHAR1 INST 'MECA') REDU ELTETA) ;
  2305. FINSI ;
  2306. SI IMOPRES ;
  2307. * Dans le cas ou il y a un modele de pression
  2308. MAILPTOT = EXTR MODPRE 'MAIL' ;
  2309. MATPRE = TIRE CHAR1 'PRES' INST ;
  2310. * --> on isole la partie du MMODEL de pression qui est appliquee
  2311. * sur la fissure
  2312. MAILPF = INTE MAILPTOT (SUPTAB.'FISSURE') ;
  2313. SI ((NBEL MAILPF) > 0) ;
  2314. IPFISS = VRAI ;
  2315. MODPF = REDU MODPRE MAILPF ;
  2316. MATPF = REDU MATPRE MODPF ;
  2317. FINSI ;
  2318. * --> on calcule les forces nodales equivalentes aux pressions
  2319. * appliquees hors de la fissure
  2320. MAILPEXT = DIFF MAILPTOT MAILPF ;
  2321. SI ((NBEL MAILPEXT) > 0) ;
  2322. MODPEXT = REDU MODPRE MAILPEXT ;
  2323. MATPEXT = REDU MATPRE MODPEXT ;
  2324. PREINT = PREINT + (BSIG MODPEXT MATPEXT) ;
  2325. FINSI ;
  2326. FINSI ;
  2327. *** SOLUTION_RESO **********************************
  2328. SINON ;
  2329. SI (EXIS SUPTAB 'CHARGEMENTS_MECANIQUES') ;
  2330. PREINT = PREINT + (SUPTAB.'CHARGEMENTS_MECANIQUES' REDU ELTETA) ;
  2331. FINSI ;
  2332. SI IMOPRES ;
  2333. * Dans le cas ou il y a un modele de pression
  2334. MAILPTOT = EXTR MODPRE 'MAIL' ;
  2335. * --> on isole la partie du MMODEL de pression qui est appliquee sur
  2336. * la fissure
  2337. MAILPF = INTE MAILPTOT (SUPTAB.'FISSURE') ;
  2338. SI ((NBEL MAILPF) > 0) ;
  2339. IPFISS = VRAI ;
  2340. MODPF = REDU MODPRE MAILPF ;
  2341. MATPF = REDU MATPRE MODPF ;
  2342. FINSI ;
  2343. * --> on calcule les forces nodales equivalentes aux pressions
  2344. * appliquees hors de la fissure
  2345. MAILPEXT = DIFF MAILPTOT MAILPF ;
  2346. SI ((NBEL MAILPEXT) > 0) ;
  2347. MODPEXT = REDU MODPRE MAILPEXT ;
  2348. MATPEXT = REDU MATPRE MODPEXT ;
  2349. PREINT = PREINT + (BSIG MODPEXT MATPEXT) ;
  2350. FINSI ;
  2351. FINSI ;
  2352. FINSI ;
  2353.  
  2354. **********************************************************************
  2355. ******** POUR LES PRESSIONS APPLIQUEES SUR LA FISSURE
  2356. * on calcule le MCHAML vectoriel de [pression * normale]
  2357. **********************************************************************
  2358. SI IPFISS ;
  2359. * champ de normale unitaire au maillage de la fissure
  2360. MAT1F = PRES MODPF 'PRES' 1. ;
  2361. NF1 = BSIG MODPF MAT1F ;
  2362. LCOMP = EXTR NF1 'COMP' ;
  2363. NF2 = CHAN 'CHAM' NF1 MODPF 'STRESSES' ;
  2364. XX = PSCA NF2 NF2 LCOMP LCOMP ;
  2365. NF = NF2 / (XX**0.5) ;
  2366. * champ de pression normale au maillage de la fissure
  2367. PF = CHAN 'STRESSES' MODPF MATPF ;
  2368. PF = CHAN 'TYPE' PF 'FORCES' ;
  2369. NCOMP = DIME LCOMP ;
  2370. LCP = MOTS NCOMP*'PRES' ;
  2371. PNF = PF * NF LCP LCOMP LCOMP ;
  2372. FINSI ;
  2373.  
  2374.  
  2375. ****************************************************
  2376. *** SOLUTIONS AUXILAIRES SI DECOUPLAGE DES MODES ***
  2377. ****************************************************
  2378. * NBMIXT = nbre d integrale a calculer (=1 si J, =2 si K1 K2, =3
  2379. * si K1 K2 K3)
  2380. NBMIXT = 1 ;
  2381. IM = 0 ;
  2382. SI (EGA GT_OBJ 'DECOUPLAGE') ;
  2383. NBMIXT = 2 ;
  2384. SI (EGA GDIME 3) ;
  2385. NBMIXT = 3 ;
  2386. FINSI ;
  2387.  
  2388. **** CONSTANTES MATERIAUX **************************
  2389. CHAM1 = (EXCO 'YOUN' MAT1) ET (EXCO 'NU ' MAT1) ;
  2390. * -CAS D UN MATERIAU HOMOGENE
  2391. SI (NON IDANS) ;
  2392. * on construit les champ auxilaires d'une solution d'un materiau
  2393. * homogene => on prend les valeurs de E et nu en pointe de fissure
  2394. CHPO1 = CHAN 'CHPO' OBJMOD CHAM1 ;
  2395. si(IXFEM) ;
  2396. CHPO1 = INT_COMP ELTETA CHPO1 (MANU 'POI1' PM) ;
  2397. fins ;
  2398. SI (EGA (TYPE PM) 'MAILLAGE') ;
  2399. VYO_1 = (maxi (resu (exco CHPO1 'YOUN'))) / (nbno PM) ;
  2400. VNU_1 = (maxi (resu (exco CHPO1 'NU '))) / (nbno PM) ;
  2401. SINON ;
  2402. VYO_1 = EXTR CHPO1 'YOUN' PM ;
  2403. VNU_1 = EXTR CHPO1 'NU ' PM ;
  2404. FINSI ;
  2405. * Constante de Kolosov
  2406. SI (EGA GMODE 'PLANCONT') ;
  2407. KAP_1 = (3. - VNU_1) / (1. + VNU_1) ;
  2408. SINON ;
  2409. KAP_1 = (3. - (4. * VNU_1)) ;
  2410. FINSI ;
  2411. * Module de cisaillement
  2412. MU_1 = VYO_1 / (2.*(1. + VNU_1)) ;
  2413. * Constante C_MATE (= 1 / E^etoile)
  2414. SI (EGA GMODE 'PLANCONT') ;
  2415. C_MATE = 1. / VYO_1 ;
  2416. SINON ;
  2417. C_MATE = (1. - (VNU_1*VNU_1)) / VYO_1 ;
  2418. FINSI ;
  2419. * -CAS D UN BI-MATERIAU
  2420. SINON ;
  2421. CHPO1 = CHAN 'CHPO' MODSUP (REDU CHAM1 MODSUP) ;
  2422. VYO_1 = EXTR CHPO1 'YOUN' PM ;
  2423. VNU_1 = EXTR CHPO1 'NU ' PM ;
  2424. CHPO1 = CHAN 'CHPO' MODINF (REDU CHAM1 MODINF) ;
  2425. VYO_2 = EXTR CHPO1 'YOUN' PM ;
  2426. VNU_2 = EXTR CHPO1 'NU ' PM ;
  2427. si(FLMESS) ;
  2428. mess ' mat1 mat2' ;
  2429. mess VYO_1 VYO_2 ;
  2430. mess VNU_1 VNU_2 ;
  2431. fins ;
  2432. * Constante de Kolosov
  2433. SI (EGA GMODE 'PLANCONT') ;
  2434. KAP_1 = (3. - VNU_1) / (1. + VNU_1) ;
  2435. KAP_2 = (3. - VNU_2) / (1. + VNU_2) ;
  2436. SINON ;
  2437. KAP_1 = (3. - (4. * VNU_1)) ;
  2438. KAP_2 = (3. - (4. * VNU_2)) ;
  2439. FINSI ;
  2440. * Module de cisaillement
  2441. MU_1 = VYO_1 / (2.*(1. + VNU_1)) ;
  2442. MU_2 = VYO_2 / (2.*(1. + VNU_2)) ;
  2443. * Constante bi-metallique EPS1
  2444. VA1 = (KAP_1/MU_1) + (1./MU_2) ;
  2445. VA2 = (KAP_2/MU_2) + (1./MU_1) ;
  2446. EPS1 = (1./(2.*PI)) * (LOG (VA1/VA2)) ;
  2447. * Constante C_MATE (= 1 / E^etoile)
  2448. COSH1 = PI * EPS1 ;
  2449. COSH1 = ((EXP COSH1) + (EXP (COSH1*(-1.)))) / 2. ;
  2450. VA1 = (MU_1 + (KAP_1*MU_2)) * (MU_2 + (KAP_2*MU_1)) ;
  2451. VA2 = MU_1 * MU_2 * ((MU_1*(1. + KAP_2)) + (MU_2*(1. + KAP_1))) ;
  2452. C_MATE = (COSH1*COSH1*VA1) / (4.*VA2) ;
  2453. mess 'EPS1=' EPS1 ' C_MATE=' C_MATE ;
  2454. FINSI ;
  2455. * rappel: G = C_MATE * (K1^2 + K2^2) + 1/MU * K3^2
  2456. * M = 2*C_MATE * (K1*K1^aux + K2*K2^aux) + 2/MU * K3*K3^aux
  2457.  
  2458. * on evite le cas 3d + EF standard
  2459. SI (NON ((EGA GDIME 3) ET (NON IXFEM))) ;
  2460.  
  2461. **** CHAMPS POUR SIMPLIFIER L ECRITURE ************
  2462. * (CHPOINT pour EF std // CHAMELEM si XFEM)
  2463. * -CAS D UN MATERIAU HOMOGENE
  2464. SI (NON IDANS) ;
  2465. SIN1T = sin TETA1 ; COS1T = cos TETA1 ;
  2466. SIN05T = sin (0.5*TETA1) ; COS05T = cos (0.5*TETA1) ;
  2467. SI IXFEM ;
  2468. RM05 = (2.*PI*RAY1) ** -0.5 ;
  2469. COE_GU = RM05 / (4. * MU_1) ;
  2470. SIN15T = sin (1.5*TETA1) ; COS15T = cos (1.5*TETA1) ;
  2471. * KAP_1 = KAP_1 * UN1 ;
  2472. SINO ;
  2473. COE_1 = ((RAY1/(2.*PI))**0.5) / (2.*MU_1) ;
  2474. FINS ;
  2475. * -CAS D UN BI-MATERIAU
  2476. SINON ;
  2477. EPSLGR = EPS1 * (LOG RAY1) ;
  2478. VA1 = COS (EPSLGR*180./PI) ;
  2479. VA2 = SIN (EPSLGR*180./PI) ;
  2480. BTA1 = ((0.5*VA1) + (EPS1*VA2)) / (0.25 + (EPS1*EPS1)) ;
  2481. BTAPM1 = ((0.5*VA2) - (EPS1*VA1)) / (0.25 + (EPS1*EPS1)) ;
  2482. DTA_1 = EXP (0. - ((PI - TETA1rad)*EPS1)) ;
  2483. DTA_2 = EXP ((PI + TETA1rad)*EPS1) ;
  2484. GAM_1 = (KAP_1*DTA_1) - (DTA_1**(-1.)) ;
  2485. GAM_2 = (KAP_2*DTA_2) - (DTA_2**(-1.)) ;
  2486. GAMPM_1 = (KAP_1*DTA_1) + (DTA_1**(-1.)) ;
  2487. GAMPM_2 = (KAP_2*DTA_2) + (DTA_2**(-1.)) ;
  2488. COS05T = COS (TETA1/2.) ; SIN05T = SIN (TETA1/2.) ;
  2489. D_1 = (BTA1*GAM_1*COS05T) + (BTAPM1*GAMPM_1*SIN05T) ;
  2490. D_2 = (BTA1*GAM_2*COS05T) + (BTAPM1*GAMPM_2*SIN05T) ;
  2491. DPM_1 = (BTAPM1*GAM_1*COS05T) - (BTA1*GAMPM_1*SIN05T) ;
  2492. DPM_2 = (BTAPM1*GAM_2*COS05T) - (BTA1*GAMPM_2*SIN05T) ;
  2493. GTAR1 = EPSLGR + (0.5*TETA1rad) ;
  2494. CVA_1 = (SIN TETA1) * (SIN (GTAR1*180./PI)) ;
  2495. CVA_2 = (SIN TETA1) * (COS (GTAR1*180./PI)) ;
  2496. COE_1 = ((RAY1/(2.*PI))**0.5) / (4.*MU_1) ;
  2497. COE_2 = ((RAY1/(2.*PI))**0.5) / (4.*MU_2) ;
  2498. FINSI ;
  2499.  
  2500. fins ;
  2501.  
  2502. FINSI ;
  2503.  
  2504.  
  2505.  
  2506.  
  2507. * BOUCLE SUR LES INTEGRALES A CALCULER ==============================*
  2508. REPE BOUCMIX NBMIXT ;
  2509. IM = IM + 1 ;
  2510.  
  2511. ****************************************************
  2512. **** CHAMPS AUXILIAIRES SI DECOUPLAGE **************
  2513. * Il existe plusieurs manieres de creer les champs aux :
  2514. * 1. en utilisant l expression analytique de grad(U) et sigma
  2515. * 2. en utilisant l expression analytique de U et en calculant
  2516. * sigma, Fint=Bsigma, grad(U) ...
  2517. * 3. en appliquant une pression/cisaillement sur les faces de la fissure
  2518. * et en resolvant le pb associe
  2519. * On utilise la 1ere lorsqu'on peut, la 2eme sinon
  2520. SI (EGA GT_OBJ 'DECOUPLAGE') ;
  2521.  
  2522.  
  2523. **** MOTMIX et MOTMIA **************************
  2524. SI (IM EGA 1) ; MOTMIX = MOT 'I' ; MOTMIA = MOT ' I' ; FINSI ;
  2525. SI (IM EGA 2) ; MOTMIX = MOT 'II' ; MOTMIA = MOT ' II' ; FINSI ;
  2526. SI (IM EGA 3) ; MOTMIX = MOT 'III' ;MOTMIA = MOT 'III' ; FINSI ;
  2527. MESS 'CHAMPS AUXILIAIRES mode' MOTMIA ;
  2528.  
  2529.  
  2530. **** METHODE ANALYTIQUE PURE *******************
  2531.  
  2532. * -CAS D UN MATERIAU HOMOGENE 2D et 3D --------------------
  2533. * SI (IXFEM et (EGA GDIME 2) ET (NON IDANS)) ;
  2534. SI (IXFEM ET (NON IDANS)) ;
  2535. si(FLMESS) ;
  2536. mess 'MATERIAU HOMOGENE XFEM: METHODE ANALYTIQUE' ;
  2537. fins ;
  2538.  
  2539. * DERIVEES REPERE CYLINDRIQUE / COORDONNEES GLOBALES
  2540. * R,X = DRDX R,Y = DRDY
  2541. * T,X = (1/R)*DTDX T,Y = (1/R)*DTDY
  2542. DRDX = ( COS1T*(EXCO GLV7 'UX,X' 'SCAL'))
  2543. + (SDIR1*SIN1T*(EXCO GLV7 'UY,X' 'SCAL')) ;
  2544. DRDY = ( COS1T*(EXCO GLV7 'UX,Y' 'SCAL'))
  2545. + (SDIR1*SIN1T*(EXCO GLV7 'UY,Y' 'SCAL')) ;
  2546. DTDX = ( -1.*SIN1T*(EXCO GLV7 'UX,X' 'SCAL'))
  2547. + (SDIR1*COS1T*(EXCO GLV7 'UY,X' 'SCAL')) ;
  2548. DTDY = ( -1.*SIN1T*(EXCO GLV7 'UX,Y' 'SCAL'))
  2549. + (SDIR1*COS1T*(EXCO GLV7 'UY,Y' 'SCAL')) ;
  2550. si(EGA GDIME 3) ;
  2551. DRDZ = ( COS1T*(EXCO GLV7 'UX,Z' 'SCAL'))
  2552. + (SDIR1*SIN1T*(EXCO GLV7 'UY,Z' 'SCAL')) ;
  2553. DTDZ = ( -1.*SIN1T*(EXCO GLV7 'UX,Z' 'SCAL'))
  2554. + (SDIR1*COS1T*(EXCO GLV7 'UY,Z' 'SCAL')) ;
  2555. fins ;
  2556.  
  2557. * -debut du cas contact frottant IFROT (btrolle 19/02/2013)
  2558. * ajout des solutions analytiques du saut sur les levres de la fissure
  2559. * projection de psi1 sur la fissure et calcul de psi,x
  2560. 'SI' IFROT ;
  2561.  
  2562. * PSI en CHAML aux PG sur la fissure utilise pour calcul du gradient
  2563. * on selectionne la partie de psi2 non nulle (= dans le champ theta)
  2564. SI (EGA GDIME 2) ;
  2565. * contour du domaine theta
  2566. con1 = 'CONTOUR' ELTETA ;
  2567. * maillage support pour l'integration
  2568. mai1 = 'INCLUSION' MAICON con1 'STRI' ;
  2569. * OBJCON2 = MODE mai1 'MECANIQUE' 'ZCO2' ;
  2570. OBJCON2