Télécharger g_calcul.procedur

Retour à la liste

Numérotation des lignes :

  1. * G_CALCUL PROCEDUR JB251061 21/10/19 21:15:04 11130
  2. DEBP G_CALCUL SUPTAB*'TABLE' OBJUTI*'TABLE' BOOL*'TABLE' ;
  3. * =============================================================================
  4. * PROCEDURE DE CALCUL DES INTEGRALES NECESSAIRES A G_THETA
  5. * --------------------------------------------------------
  6. *
  7. * DESCRIPTION : EFFECTUE LE CALCUL DE L'INTEGRALE SPECIFIEE DANS L'INDICE
  8. * 'OBJECTIF' DE LA TABLE SUPTAB.
  9. * ON BOUCLE SUR LES PAS DE CALCUL, SUR LES INTEGRALES A CALCULER
  10. * ET ENFIN SUR LES NOEUDS DU FRONT DE FISSURE.
  11. * =============================================================================
  12.  
  13. * QUELQUES OBJETS UTILES
  14.  
  15. MOD_MEC_R = OBJUTI.'MOD_MEC_R' ;
  16. MAILMOD = EXTR MOD_MEC_R 'MAILLAGE' ;
  17. * CHAMPS NULS
  18. CMD000 = CHAN 'NOEUD' MOD_MEC_R (ZERO MOD_MEC_R 'DEPLACEM') ;
  19. CMD001 = CHAN 'STRESSES' MOD_MEC_R (ZERO MOD_MEC_R 'DEPLACEM') ;
  20. GRA000 = ZERO MOD_MEC_R 'GRADIENT' ;
  21. FOR000 = CHAN 'CHPO' MOD_MEC_R (ZERO MOD_MEC_R 'FORCES ') ;
  22. DEP000 = CHAN 'CHPO' MOD_MEC_R (ZERO MOD_MEC_R 'DEPLACEM') ;
  23. SI (EGA GMODE 'PLANGENE') ;
  24. FOR000 = MANU 'CHPO' (EXTR MOD_MEC_R 'MAIL') 2 'FX' 0.
  25. 'FY' 0. 'TITR' 'FORCES ' 'NATURE' 'DIFFUS' ;
  26. FOR000 = FOR000 ET (MANU 'CHPO' (VALE 'MODE' 'PLANGENE')
  27. 3 'FZ' 0. 'MX' 0. 'MY' 0.
  28. 'TITR' 'FORCES ' 'NATURE' 'DIFFUS') ;
  29. DEP000 = MANU 'CHPO' (EXTR MOD_MEC_R 'MAIL') 2 'UX' 0.
  30. 'UY' 0. 'TITR' 'DEPLACEM' 'NATURE' 'DIFFUS' ;
  31. DEP000 = DEP000 ET (MANU 'CHPO' (VALE 'MODE' 'PLANGENE')
  32. 3 'UZ' 0. 'RX' 0. 'RY' 0.
  33. 'TITR' 'DEPLACEM' 'NATURE' 'DIFFUS') ;
  34. FINSI ;
  35. OBJUTI.'DEP000' = DEP000 ;
  36. OBJUTI.'FOR000' = FOR000 ;
  37. * EN CAS D'UN MODELE DE PRESSION
  38. SI BOOL.'MODE_PRES' ;
  39. MODCHA = EXTR OBJUTI.'MOD_TOT' 'FORM' 'CHARGEMENT' ;
  40. MODPRE = EXTR MODCHA 'COMP' 'PRESSION' ;
  41. SI (NON BOOL.'PASAPAS') ;
  42. MATPRE = REDU (SUPTAB.'PRESSION') MODPRE ;
  43. FINSI ;
  44. MAILPTOT = EXTR MODPRE 'MAIL' ;
  45. MAILPF = INTE MAILPTOT (SUPTAB.'FISSURE') ;
  46. FINSI ;
  47.  
  48.  
  49. SI (BOOL.'COQ' ET BOOL.'EL_QUA') ;
  50. MAT2 = MAT_INST ;
  51. SINON ;
  52. MAT2 = TEXT ' ' ;
  53. FINSI ;
  54.  
  55. NBG = OBJUTI.'NBG' ;
  56.  
  57. * FRONT DE FISSURE EN POI1
  58. FF = SUPTAB.'FRONT_FISSURE' ;
  59. SI (EGA (TYPE FF) 'POINT') ;
  60. FF1 = MANU 'POI1' FF ;
  61. FINSI ;
  62. SI (EGA (TYPE FF) 'MAILLAGE') ;
  63. FF1 = CHAN 'POI1' FF ;
  64. FINSI ;
  65.  
  66. * QUELQUES MOTS POUR SIMPLIFIER L'ECRITURE
  67.  
  68. NEXTR = GDIME ;
  69. SI BOOL.'COQ' ;
  70. NEXTR = 6 ;
  71. FINSI ;
  72. MUI = EXTR (EXTR MOD_MEC_R 'DEPL') (LECT 1 PAS 1 NEXTR) ;
  73. MFI = EXTR (EXTR MOD_MEC_R 'FORC') (LECT 1 PAS 1 NEXTR) ;
  74. MGI = EXTR MOD_MEC_R 'GRAD' ;
  75. MU1 = EXTR MUI 1 ; MU2 = EXTR MUI 2 ; MU3 = MOT 'UZ' ;
  76. MF1 = EXTR MFI 1 ; MF2 = EXTR MFI 2 ; MF3 = MOT 'FZ' ;
  77. MFA1= MOT 'FAX' ; MFA2 = MOT 'FAY' ; MFA3 = MOT 'FAZ' ;
  78. GR1 GR2 GR3 = (EXTR MGI 1) (EXTR MGI 2) (EXTR MGI 3) ;
  79. GR4 GR5 GR6 = (EXTR MGI 4) (EXTR MGI 5) (EXTR MGI 6) ;
  80. GR7 GR8 GR9 = (EXTR MGI 7) (EXTR MGI 8) (EXTR MGI 9) ;
  81. SM1 = MOT 'SMXX' ; SM2 = MOT 'SMYY' ; SM3 = MOT 'SMZZ' ;
  82. SM4 = MOT 'SMXY' ; SM5 = MOT 'SMXZ' ; SM6 = MOT 'SMYZ' ;
  83. EP1 = MOT 'EPXX' ; EP2 = MOT 'EPYY' ; EP3 = MOT 'EPZZ' ;
  84. EP4 = MOT 'GAXY' ; EP5 = MOT 'GAXZ' ; EP6 = MOT 'GAYZ' ;
  85. SI (EGA GMODE 'AXIS') ;
  86. MU3 = MOT 'UT' ;
  87. SM1 = MOT 'SMRR' ; SM2 = MOT 'SMZZ' ; SM3 = MOT 'SMTT' ;
  88. SM4 = MOT 'SMRZ' ;
  89. EP1 = MOT 'EPRR' ; EP2 = MOT 'EPZZ' ; EP3 = MOT 'EPTT' ;
  90. EP4 = MOT 'GARZ' ;
  91. FINSI ;
  92. *BP: PETIT AJOUT DE NOM DE COMPOSANTE DE CHPOINT
  93. SI (BOOL.'J' OU BOOL.'J_DYNA') ; MOCOMP = 'J' ; FINSI ;
  94. SI (BOOL.'C*' OU BOOL.'C*H') ; MOCOMP = 'C*' ; FINSI ;
  95. SI BOOL.'DJ/DA' ; MOCOMP = 'DJDA' ; FINSI ;
  96.  
  97. * VALEURS INITIALES
  98.  
  99. S10 = 0. ; S20 = 0. ; S30 = 0. ; S40 = 0. ; S41 = 0. ; S50 = 0. ;
  100. S60 = 0. ; S70 = 0. ; S80 = 0. ; S90 = 0. ; S100 = 0. ;
  101. S110 = 0. ; S120 = 0. ; S130 = 0. ; S140 = 0. ; S141 = 0. ;
  102. S150 = 0. ; S160 = 0. ; S170 = 0. ; S180 = 0. ;
  103. S190 = 0. ; S200 = 0. ; S210 = 0. ; S220 = 0. ;
  104.  
  105.  
  106. ***********************************************
  107. ***********************************************
  108. ********* BOUCLE SUR LE PAS DE CALCUL *********
  109. ***********************************************
  110. ***********************************************
  111.  
  112. REPE BOUCEXT NBDEP ;
  113.  
  114. IABC = NBG + &BOUCEXT ;
  115.  
  116. * DECLARATION DES TABLES STOCKANT LES RESULTATS POUR LE PAS DE TEMPS IABC
  117. SI BOOL.'PASAPAS' ;
  118. SI (EGA GDIME 3) ;
  119. SI BOOL.'DECOUPLAGE' ;
  120. REPE IRUPT GDIME ;
  121. SUPTAB.'RESULTATS'.(EXTR 'III' 1 &IRUPT).IABC = TABL ;
  122. FIN IRUPT ;
  123. SINON ;
  124. SUPTAB.'RESULTATS'.IABC = TABL ;
  125. FINSI ;
  126. FINSI ;
  127. SUPTAB.'CHPO_RESULTATS'.IABC = VIDE 'CHPOINT'/'DISCRET' ;
  128. SUPTAB.'CHAM_RESULTATS'.IABC = VIDE 'MCHAML' ;
  129. FINSI ;
  130.  
  131. ***************************************************
  132. ** DEPLACEMENTS,CONTRAINTES ... A L INSTANT INST **
  133. ***************************************************
  134.  
  135. SI BOOL.'PASAPAS' ;
  136. * SOLUTION_PASAPAS
  137. SI BOOL.'PERSO1' ;
  138. * CAS PERSO1
  139. INST = ESTIM . 'TEMPS' ;
  140. DEPINT = (ESTIM . 'DEPLACEMENTS') REDU ELTETA ;
  141. SIGF = (ESTIM . 'CONTRAINTES' ) REDU MOD_MEC_R ;
  142. SI (BOOL.'GRANDS_DEP' ET (NON BOOL.'ROT_RIG')) ;
  143. SIGF = 'CAPI' SIGF DEPINT MOD_MEC_R ;
  144. FINSI ;
  145. SI BOOL.'ROT_RIG' ;
  146. SI (NON (EXIS (SUPTAB.'ROTATION_RIGIDIFIANTE') IABC)) ;
  147. MESS 'ERREUR : Le deplacement du a une rotation' ;
  148. MESS ' rigidifiante au pas ' IABC ' n est pas'
  149. MESS ' donne' ;
  150. ERRE 21 ; QUIT G_THETA ;
  151. FINSI ;
  152. DEPINT = DEPINT -
  153. (REDU SUPTAB.'ROTATION_RIGIDIFIANTE'.IABC ELTETA) ;
  154. FINSI ;
  155. SI (EXIS ESTIM 'VARIABLES_INTERNES') ;
  156. VARF = (ESTIM . 'VARIABLES_INTERNES') REDU MOD_MEC_R ;
  157. SINON ;
  158. VARF = ZERO MOD_MEC_R 'VARINTER' ; ;
  159. FINSI ;
  160. SI BOOL.'C*' ;
  161. SI (EGA IABC 0) ;
  162. DELTAT = INST + 1.E+30 ;
  163. DEPINT = ESTIM . 'DEPLACEMENTS' ;
  164. VITDFI = ESTIM . 'DEFORMATIONS_INELASTIQUES' ;
  165. SIG1 = SIGF * 1. ;
  166. FINSI ;
  167. SI (IABC '>' 0) ;
  168. DELTAT= INST - (ESTIM . 'TEMPS') ;
  169. DEPINT= (ESTIM.'DEPLACEMENTS') - (ESTIM.'DEPLACEMENTS') ;
  170. VITDFI= (ESTIM.'DEFORMATIONS_INELASTIQUES')
  171. - (ESTIM.'DEFORMATIONS_INELASTIQUES') ;
  172. FINSI ;
  173. DEPINT = (REDU ELTETA DEPINT) / DELTAT ;
  174. VITDFI = (REDU ELTETA VITDFI) / DELTAT ;
  175. FINSI ;
  176. SI BOOL.'J_DYNA' ;
  177. VITF = (ESTIM .'VITESSES') REDU ELTETA ;
  178. ACCF = (ESTIM .'ACCELERATIONS') REDU ELTETA ;
  179. FINSI ;
  180. SINON ;
  181. * CAS OU ON APPELLE G_THETA APRES PASAPAS
  182. INST = SUPTAB.'SOLUTION_PASAPAS'.'TEMPS'.IABC ;
  183. DEPINT = (SUPTAB.'SOLUTION_PASAPAS'.'DEPLACEMENTS'.IABC)
  184. REDU ELTETA ;
  185. SIGF = (SUPTAB.'SOLUTION_PASAPAS'.'CONTRAINTES'.IABC)
  186. REDU MOD_MEC_R ;
  187. SI (BOOL.'GRANDS_DEP' ET (NON BOOL.'ROT_RIG')) ;
  188. SIGF = 'CAPI' SIGF DEPINT MOD_MEC_R ;
  189. FINSI ;
  190. SI BOOL.'ROT_RIG' ;
  191. SI (NON (EXIS (SUPTAB.'ROTATION_RIGIDIFIANTE') IABC)) ;
  192. MESS 'ERREUR : Le deplacement du a une rotation' ;
  193. MESS ' rigidifiante au pas ' IABC ' n est pas'
  194. MESS ' donne' ;
  195. ERRE 21 ; QUIT G_THETA ;
  196. FINSI ;
  197. DEPINT = DEPINT -
  198. (REDU SUPTAB.'ROTATION_RIGIDIFIANTE'.IABC ELTETA) ;
  199. FINSI ;
  200. SI (EXIS (SUPTAB.'SOLUTION_PASAPAS') 'VARIABLES_INTERNES') ;
  201. VARF = (SUPTAB.'SOLUTION_PASAPAS'.'VARIABLES_INTERNES'.IABC)
  202. REDU MOD_MEC_R ;
  203. SINON ;
  204. VARF = ZERO MOD_MEC_R 'VARINTER' ; ;
  205. FINSI ;
  206. SI BOOL.'C*' ;
  207. SI (EGA IABC 0) ;
  208. DELTAT = INST + 1.E+30 ;
  209. DEPINT = SUPTAB.'SOLUTION_PASAPAS'.'DEPLACEMENTS'.IABC ;
  210. VITDFI = SUPTAB.'SOLUTION_PASAPAS'.
  211. 'DEFORMATIONS_INELASTIQUES'.IABC ;
  212. SIG1 = SIGF * 1. ;
  213. FINSI ;
  214. SI (IABC > 0) ;
  215. DELTAT = INST - (SUPTAB.'SOLUTION_PASAPAS'.'TEMPS'.
  216. (IABC - 1)) ;
  217. DEPINT = (SUPTAB.'SOLUTION_PASAPAS'.'DEPLACEMENTS'.IABC) -
  218. (SUPTAB.'SOLUTION_PASAPAS'.'DEPLACEMENTS'.(IABC - 1)) ;
  219. VITDFI = (SUPTAB.'SOLUTION_PASAPAS'.
  220. 'DEFORMATIONS_INELASTIQUES'.IABC) -
  221. (SUPTAB.'SOLUTION_PASAPAS'.
  222. 'DEFORMATIONS_INELASTIQUES'.(IABC - 1)) ;
  223. FINSI ;
  224. DEPINT = (REDU ELTETA DEPINT) / DELTAT ;
  225. VITDFI = (REDU ELTETA VITDFI) / DELTAT ;
  226. FINSI ;
  227. SI BOOL.'J_DYNA' ;
  228. VITF = (SUPTAB.'SOLUTION_PASAPAS'.'VITESSES'.IABC)
  229. REDU ELTETA ;
  230. ACCF = (SUPTAB.'SOLUTION_PASAPAS'.'ACCELERATIONS'.IABC)
  231. REDU ELTETA ;
  232. FINSI ;
  233. FINSI ;
  234. SINON ;
  235. * SOLUTION_RESO
  236. DEPINT = REDU (SUPTAB.'SOLUTION_RESO') ELTETA ;
  237. SIGF = SIGM 'LINE' DEPINT MOD_MEC_R MAT_MEC ;
  238. FINSI ;
  239.  
  240. * ON CHANGE LE DEPLACEMENT DEPINT EN MCHAML AU NOEUD
  241. DEPINT = CHAN 'CHAM' DEPINT MOD_MEC_R 'NOEUD' 'DEPLACEMENTS' ;
  242.  
  243. ****************************************************
  244. * MODIFICATION DES CHAMPS THETA ET PI SI GRANDE ROT
  245. ****************************************************
  246.  
  247. SI (BOOL.'PASAPAS' ET BOOL.'ROT_RIG') ;
  248. FORM SUPTAB.'ROTATION_RIGIDIFIANTE'.IABC ;
  249. OTER SUPTAB 'TAB_THETA' ;
  250. SI BOOL.'DJ/DA' ;
  251. OTER SUPTAB 'TAB_PI' ;
  252. FINSI ;
  253. CH_THETA SUPTAB OBJUTI BOOL ;
  254. FINSI ;
  255.  
  256.  
  257. ***************************************************
  258. ********** TEMPERATURES A L INSTANT INST **********
  259. ***************************************************
  260.  
  261. SI BOOL.'THER' ;
  262. SI BOOL.'PASAPAS' ;
  263. SI BOOL.'THER_DECO' ;
  264. TEPINT = 'TIRE' CHAR1 INST 'T' ;
  265. SINON ;
  266. * bp, 2014-11-13 : ajout distinction cas BOOL.'THER' et BOOL.'THER_DECO'
  267. TEPINT = REDU ELTETA SUPTAB.'SOLUTION_PASAPAS'.'TEMPERATURES'.
  268. IABC ;
  269. FINSI ;
  270. SINON ;
  271. TEPINT = SUPTAB.'TEMPERATURES' ;
  272. FINSI ;
  273. FINSI ;
  274.  
  275.  
  276. ***************************************************
  277. ********** DEF IMPOSEE A L INSTANT INST **********
  278. ***************************************************
  279.  
  280. SI BOOL.'DEF_IMP' ;
  281. SI BOOL.'PASAPAS' ;
  282. DEFI = 'TIRE' CHAR1 INST 'DEFI' ;
  283. SINON ;
  284. DEFI = SUPTAB.'DEFORMATIONS_IMPOSEES' ;
  285. FINSI ;
  286. FINSI ;
  287.  
  288. ***************************************************
  289. ********** CONTACT FROTTANT **********
  290. ***************************************************
  291.  
  292. SI BOOL.'FROT' ;
  293. SI BOOL.'PASAPAS' ;
  294. * ...TODO
  295. SINON ;
  296. * A PRIORI DEPLACEMENT_FISSURE PAS TRES UTILE ...
  297. SI (EXIS SUPTAB 'DEPLACEMENT_FISSURE') ;
  298. WDEP = SUPTAB . 'DEPLACEMENT_FISSURE' ;
  299. SINON ;
  300. WDEP = REDU (SUPTAB.'SOLUTION_RESO') MAICON ;
  301. FINSI ;
  302. TOTO = EXTR WDEP 'MAIL' ;
  303. SI (EGA (NBEL TOTO) 0) ;
  304. MESS 'ERREUR : IL FAUT DEPLACEMENT_FISSURE SI MODELE_FISSURE' ;
  305. ERRE 21 ; QUIT G_THETA ;
  306. FINSI ;
  307. SI (EXIS SUPTAB 'PRESSION_FISSURE') ;
  308. SIGCON = SUPTAB . 'PRESSION_FISSURE' ;
  309. SINON ;
  310. SIGCON = REDU SIGF OBJCON ;
  311. FINSI ;
  312. * PEUT ETRE FAIRE UN TEST SUR SIGCON ...
  313. FINSI ;
  314. FINSI ;
  315.  
  316. *****************************************************
  317. * CONTRAINTE RECALCULEE SI BOOL.'THER' = VRAI et NON BOOL.'PASAPAS' *
  318. *****************************************************
  319.  
  320. SI (BOOL.'THER' ET (NON BOOL.'PASAPAS')) ;
  321. SIGF = SIGF - (THET MOD_MEC_R MAT_MEC TEPINT) ;
  322. FINSI ;
  323.  
  324.  
  325. ***************************************************
  326. ************ MATERIAU A L INSTANT INST ************
  327. ***************************************************
  328.  
  329. SI (BOOL.'GRADPROP' ET BOOL.'THER' ET BOOL.'PASAPAS') ;
  330. MAT_INST = VARI 'NUAG' MOD_MEC_R MAT_MEC (EXCO 'T' TEPINT 'T') ;
  331. SINON ;
  332. MAT_INST = MAT_MEC ;
  333. * bp: ne devrait on pas ecrire ci dessous..? inutile?
  334. * MAT_INST = REDU MOD_MEC_R MAT_MEC
  335. FINSI ;
  336. OBJUTI.'MAT_INST' = MAT_INST ;
  337.  
  338.  
  339. ***************************************************
  340. ********* RIGIDITE TOTALE A L INSTANT INST ********
  341. ***************************************************
  342.  
  343. * bp: utilite?
  344. SI ( BOOL.'DJ/DA' OU (BOOL.'DECOUPLAGE'
  345. ET (NON BOOL.'XFEM') ET (EGA GDIME 3) ET (NON BOOL.'DANS')) ) ;
  346. SI BOOL.'PASAPAS' ;
  347. SI (BOOL.'GRADPROP' ET BOOL.'THER') ;
  348. M1 = VARI 'NUAG' MOD_MEC_R (EXCO 'T' TEPINT 'T')
  349. (SUPTAB.'SOLUTION_PASAPAS'.'CARACTERISTIQUES') ;
  350. SINON ;
  351. M1 = SUPTAB.'SOLUTION_PASAPAS'.'CARACTERISTIQUES' ;
  352. FINSI ;
  353. RIGTOT = RIGI M1 (SUPTAB.'SOLUTION_PASAPAS'.'MODELE') ;
  354. SINON ;
  355. RIGTOT = RIGI (SUPTAB.'CARACTERISTIQUES') (SUPTAB.'MODELE') ;
  356. FINSI ;
  357. FINSI ;
  358.  
  359. ************************************
  360. *** RIGTOT + BLOCAGES MECANIQUES ***
  361. ************************************
  362.  
  363. SI BOOL.'DJ/DA' ;
  364. SI BOOL.'PASAPAS' ;
  365. RIGTOT = RIGTOT ET
  366. (SUPTAB.'SOLUTION_PASAPAS'.'BLOCAGES_MECANIQUES') ;
  367. * rem bp: on suppose ceux ci identique a ceux de wtab...
  368. SINON ;
  369. RIGTOT = RIGTOT ET SUPTAB.'BLOCAGES_MECANIQUES' ;
  370. FINSI ;
  371. FINSI ;
  372. OBJUTI.'RIGTOT' = RIGTOT ;
  373.  
  374. ********************************************************************
  375. ****** CHARGEMENT MECANIQUE (FORCES NODALES) A L INSTANT INST ******
  376. ********************************************************************
  377.  
  378. PREINT = FOR000 ;
  379. SI BOOL.'PASAPAS' ;
  380. *** SOLUTION_PASAPAS ******************************
  381. SI (EXIS CHAR1 'MECA') ;
  382. PREINT = PREINT + ((TIRE CHAR1 INST 'MECA') REDU ELTETA) ;
  383. FINSI ;
  384. SI BOOL.'MODE_PRES' ;
  385. * Dans le cas ou il y a un modele de pression
  386. MATPRE = TIRE CHAR1 'PRES' INST ;
  387. * --> on isole la partie du MMODEL de pression qui est appliquee
  388. * sur la fissure
  389. SI BOOL.'PRES_FISS' ;
  390. MODPF = REDU MODPRE MAILPF ;
  391. MATPF = REDU MATPRE MODPF ;
  392. FINSI ;
  393. * --> on calcule les forces nodales equivalentes aux pressions
  394. * appliquees hors de la fissure
  395. MAILPEXT = DIFF MAILPTOT MAILPF ;
  396. SI ((NBEL MAILPEXT) > 0) ;
  397. MODPEXT = REDU MODPRE MAILPEXT ;
  398. MATPEXT = REDU MATPRE MODPEXT ;
  399. PREINT = PREINT + (BSIG MODPEXT MATPEXT) ;
  400. FINSI ;
  401. FINSI ;
  402. SINON ;
  403. *** SOLUTION_RESO **********************************
  404. SI (EXIS SUPTAB 'CHARGEMENTS_MECANIQUES') ;
  405. PREINT = PREINT + (SUPTAB.'CHARGEMENTS_MECANIQUES' REDU ELTETA) ;
  406. FINSI ;
  407. SI BOOL.'MODE_PRES' ;
  408. * Dans le cas ou il y a un modele de pression
  409. * --> on isole la partie du MMODEL de pression qui est appliquee sur
  410. * la fissure
  411. SI BOOL.'PRES_FISS' ;
  412. MODPF = REDU MODPRE MAILPF ;
  413. MATPF = REDU MATPRE MODPF ;
  414. FINSI ;
  415. * --> on calcule les forces nodales equivalentes aux pressions
  416. * appliquees hors de la fissure
  417. MAILPEXT = DIFF MAILPTOT MAILPF ;
  418. SI ((NBEL MAILPEXT) > 0) ;
  419. MODPEXT = REDU MODPRE MAILPEXT ;
  420. MATPEXT = REDU MATPRE MODPEXT ;
  421. PREINT = PREINT + (BSIG MODPEXT MATPEXT) ;
  422. FINSI ;
  423. FINSI ;
  424. FINSI ;
  425.  
  426. **********************************************************************
  427. ******** POUR LES PRESSIONS APPLIQUEES SUR LA FISSURE
  428. * on calcule le MCHAML vectoriel de [pression * normale]
  429. **********************************************************************
  430.  
  431. SI BOOL.'PRES_FISS' ;
  432. * champ de normale unitaire au maillage de la fissure
  433. MAT_INSTF = PRES MODPF 'PRES' 1. ;
  434. NF1 = BSIG MODPF MAT_INSTF ;
  435. LCOMP = EXTR NF1 'COMP' ;
  436. NF2 = CHAN 'CHAM' NF1 MODPF 'STRESSES' ;
  437. XX = PSCA NF2 NF2 LCOMP LCOMP ;
  438. NF = NF2 / (XX**0.5) ;
  439. * champ de pression normale au maillage de la fissure
  440. PF = CHAN 'STRESSES' MODPF MATPF ;
  441. PF = CHAN 'TYPE' PF 'FORCES' ;
  442. NCOMP = DIME LCOMP ;
  443. LCP = MOTS NCOMP*'PRES' ;
  444. PNF = PF * NF LCP LCOMP LCOMP ;
  445. FINSI ;
  446.  
  447. ****************************************************
  448. ***** APPEL A G_AUX POUR LES CHAMPS AUXILIAIRES ****
  449. ****************************************************
  450.  
  451. * G_AUX
  452. SI BOOL.'DECOUPLAGE' ;
  453. CH_AUX = G_AUX SUPTAB OBJUTI BOOL ;
  454. SI (EGA (TYPE CH_AUX) (MOT 'ANNULE')) ;
  455. MESS 'ERREUR : G_AUX A RENCONTRE UN PROBLEME' ;
  456. QUIT G_CALCUL ;
  457. FINSI ;
  458. SUPTAB.'CH_AUX' = CH_AUX ;
  459. FINSI ;
  460.  
  461. *debut du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  462. SI (BOOL.'FROT') ;
  463. OBJCON = OBJUTI.'OBJCON' ;
  464. OBJCON2 = OBJUTI.'OBJCON2' ;
  465. FINSI ;
  466. *fin du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  467.  
  468.  
  469. ***********************************************
  470. ***********************************************
  471. **** BOUCLE SUR LES INTEGRALES A CALCULER *****
  472. ***********************************************
  473. ***********************************************
  474.  
  475. * NBMIXT = nbre d integrale a calculer (=1 si J, =2 si K1 K2, =3
  476. * si K1 K2 K3)
  477. NBMIXT = 1 ;
  478. SI BOOL.'DECOUPLAGE' ;
  479. C_MATE = OBJUTI.'C_MATE' ;
  480. MU_1 = OBJUTI.'MU_1' ;
  481. NBMIXT = 2 ;
  482. SI (EGA GDIME 3) ;
  483. NBMIXT = 3 ;
  484. FINSI ;
  485. FINSI ;
  486. REPE BOUCMIX NBMIXT ;
  487.  
  488.  
  489. *|=====================================================================|
  490. *|======= I. OBJETS NECESSAIRES =====================================|
  491.  
  492.  
  493. SI BOOL.'DECOUPLAGE' ;
  494. MOCOMP = CHAI 'K' &BOUCMIX ;
  495. FINSI ;
  496.  
  497. ****************************************************
  498. **************** EN CAS DE DECOUPLAGE **************
  499. ****************************************************
  500.  
  501. SI BOOL.'DECOUPLAGE' ;
  502. MOTMIX = CH_AUX.&BOUCMIX.'MOTMIX' ;
  503. MOTMIA = CH_AUX.&BOUCMIX.'MOTMIA' ;
  504. A_PREI = CH_AUX.&BOUCMIX.'A_PREI' ;
  505. A_DEPI = CH_AUX.&BOUCMIX.'A_DEPI' ;
  506. A_SIGF = CH_AUX.&BOUCMIX.'A_SIGF' ;
  507. A_DEPGR = CH_AUX.&BOUCMIX.'A_DEPGR' ;
  508. *debut du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  509. SI (BOOL.'FROT') ;
  510. B_DEPGR = CH_AUX.&BOUCMIX.'B_DEPGR' ;
  511. FINSI ;
  512. *fin du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  513. FINSI ;
  514.  
  515.  
  516. ****************************************************
  517. ******* EN CAS DE CALCUL EN VISCO_PLASTICITE *******
  518. ****************************************************
  519.  
  520. * INITIALISATION DE FACT1
  521. FACT1 = 1. ;
  522. SI (BOOL.'C*' OU BOOL.'C*H') ;
  523. SI (EGA ITYPEF 1) ;
  524. CHAF1 = (CHAN 'STRESSES' MOD_MEC_R (EXCO 'AF1 ' MAT_INST 'SCAL'))
  525. CHAN 'TYPE' 'SCALAIRE' ;
  526. CHAF2 = (CHAN 'STRESSES' MOD_MEC_R (EXCO 'AF2 ' MAT_INST 'SCAL'))
  527. CHAN 'TYPE' 'SCALAIRE' ;
  528. CHAF3 = (CHAN 'STRESSES' MOD_MEC_R (EXCO 'AF3 ' MAT_INST 'SCAL'))
  529. CHAN 'TYPE' 'SCALAIRE' ;
  530. SI (EXIS MAT_INST 'AF0 ') ;
  531. CHAF4 =( CHAN 'STRESSES' MOD_MEC_R (EXCO 'AF4 ' MAT_INST 'SCAL'))
  532. CHAN 'TYPE' 'SCALAIRE' ;
  533. CHAF5 =( CHAN 'STRESSES' MOD_MEC_R (EXCO 'AF5 ' MAT_INST 'SCAL'))
  534. CHAN 'TYPE' 'SCALAIRE' ;
  535. CHAF6 = (CHAN 'STRESSES' MOD_MEC_R (EXCO 'AF6 ' MAT_INST 'SCAL'))
  536. CHAN 'TYPE' 'SCALAIRE' ;
  537. FINSI ;
  538. FINSI ;
  539. SI BOOL.'C*' ;
  540. SI (EGA ITYPEF 1) ;
  541. * DENSITE D'ENERGIE POUR LES FLUAGES DONT ON A UNE
  542. * EXPRESSION EXPLICITE DE L'INTEGRATION SUR LE TEMPS
  543. SI (EXIS MAT_INST 'AF0 ') ;
  544. COE1 = ((MINI (CHAF2 + 1.)) + (MAXI (CHAF2 + 1.)))/2. ;
  545. COE2 = ((MINI (CHAF4 + 1.)) + (MAXI (CHAF4 + 1.)))/2. ;
  546. COE3 = ((MINI (CHAF6 + 1.)) + (MAXI (CHAF6 + 1.)))/2. ;
  547. VMI1 = (EXCO ('VMIS' MOD_MEC_R SIGF MAT_INST) 'SCAL')
  548. CHAN 'TYPE' 'SCALAIRE' ;
  549. ENERM1 = (CHAF2*((CHAF2 + 1.)**(-1.)))*CHAF1*(VMI1**COE1) ;
  550. ENERM2 = (CHAF4*((CHAF4 + 1.)**(-1.)))*CHAF3*(VMI1**COE2) ;
  551. ENERM3 = (CHAF6*((CHAF6 + 1.)**(-1.)))*CHAF5*(VMI1**COE3) ;
  552. ENERM = ENERM1 + ENERM2 + ENERM3 ;
  553. SINON ;
  554. COE1 = ((MINI (CHAF2 + 1.)) + (MAXI (CHAF2 + 1.)))/2. ;
  555. COE2 = ((MINI CHAF3) + (MAXI CHAF3))/2. ;
  556. VMI1 = (EXCO ('VMIS' MOD_MEC_R SIGF MAT_INST) 'SCAL')
  557. CHAN 'TYPE' 'SCALAIRE' ;
  558. SI ((EGA INST 0. 1.E-10) ET ('<'(COE2 - 1) 0.)) ;
  559. V1 = 0. ;
  560. SINON ;
  561. V1 = INST**(COE2 - 1) ;
  562. FINSI ;
  563. ENERM = (CHAF2*((CHAF2 + 1.)**(-1.)))*
  564. CHAF1*(VMI1**COE1)*CHAF3*V1 ;
  565. FINSI ;
  566. SI (BOOL.'COQ' ET BOOL.'EL_LIN') ; ENERM = ENERM*MOD_MEC_R EPAICH ; FINSI ;
  567. FINSI ;
  568. SI (EGA ITYPEF 2) ;
  569. * ON N'A PAS UNE EXPRESSION EXPLICITE DE
  570. * L'INTEGRATION DU FLUAGE SUR LE TEMPS
  571. SIGMOY = 0.5*(SIG1 + SIGF) ;
  572. SI ((EGA IABC 0) ET (NON BOOL.'REPRI')) ;
  573. ENERM = 'ENER' MOD_MEC_R VITDFI SIGMOY ;
  574. SINON ;
  575. ENERM = ENERM + ('ENER' MOD_MEC_R (VITDFI - VDI1) SIGMOY) ;
  576. FINSI ;
  577. SIG11 = SIG1 ; SIG1 = SIGF ; VDI1 = VITDFI ;
  578. FINSI ;
  579. FINSI ;
  580. * FACTEUR AFFECTE A J SI ON CALCULE C*(H)
  581. SI BOOL.'C*H' ;
  582. CHAR2 = EXTR CHAR1 'MECA' ;
  583. COE1 = ((MINI CHAF1) + (MAXI CHAF1)) / 2. ;
  584. COE2 = ((MINI CHAF2) + (MAXI CHAF2)) / 2. ;
  585. COE3 = ((MINI CHAF3) + (MAXI CHAF3)) / 2. ;
  586. N1 = COE2 / COE3 ;
  587. SI (EGA INST 0. 1.E-10) ; INST = 1.E-10 ; FINSI ;
  588. P1 = PROG 0. 'PAS' (INST / 100.) INST ;
  589. P2 = PROG ;
  590. REPE BF1 (DIME P1) ;
  591. T1 = EXTR P1 &BF1 ;
  592. V1 = 0. ;
  593. REPE BF2 (DIME CHAR2) ;
  594. E1 = EXTR CHAR2 'EVOL' &BF2 ;
  595. V1 = V1 + ('IPOL' T1 (EXTR E1 'ABSC') (EXTR E1 ORDO)) ;
  596. FIN BF2 ;
  597. P2 = P2 ET (PROG V1) ;
  598. FIN BF1 ;
  599. E1 = EVOL 'MANU' 'TEMPS' P1 'FORCE' (P2 ** N1) ;
  600. FACT1 = EXTR (INTG E1) 1 ;
  601. SI (EGA FACT1 0. 1.E-10) ; FACT1 = 1.E+30 ; FINSI ;
  602. FACT1 = ((V1 ** N1) / FACT1) ** COE3 ;
  603. FINSI ;
  604. FINSI ;
  605.  
  606.  
  607. ********************************************************
  608. * SI LA COURBE DE TRACTION DEPEND DE LA TEMPERATURE ON *
  609. * CALCULE LA VARIATION DE CONTRAINTES DE VON-MISES LORS*
  610. * D'UNE AUGMENTATION (DETATE) DE LA TEMPERATURE A INST *
  611. ********************************************************
  612. *bp 11/08/2011 : on calcule plutot la variation de la limite d elasticite
  613. * ce qui est moins faux si presence de decharge...
  614. * => on construit VM1 comm VM2 !
  615. SI (((DIME MODPLA) '>' 0) ET BOOL.'THER') ;
  616. DETATE = 1. ;
  617. TEP1 = TEPINT + (MANU 'CHPO' ELTETA 1 'T' DETATE) ;
  618. EPS1 = (EXCO VARF 'EPSE') CHAN 'TYPE' 'SCALAIRE' ;
  619. MSQ1 = 'MASQ' 'SUPERIEUR' EPS1 1.E-10 ;
  620. EPS1 = MSQ1 * EPS1 ;
  621. * rem : on pourrait utiliser BORN dans le futur
  622. * VMI1 = (CHAN ('VMIS' MOD_MEC_R SIGF MAT_INST)
  623. * 'TYPE' 'SCALAIRE')*MSQ1 ;
  624. * DETAVM = VMI1 * 0. ;
  625. DETAVM = 0. ;
  626. REPETER BCMOD2 NBOBJ ;
  627. MODI = TABMOD.&BCMOD2 ;
  628. * VM1 = REDU VMI1 MODI ;
  629. EPS2 = redu EPS1 MODI ;
  630. SI (EXIS MODPLA &BCMOD2) ;
  631. SI (EGA MODPLA.&BCMOD2 1) ;
  632. MA1 = VARI 'NUAG' MODI (MATE MODI
  633. 'ECRO' TABTRA.&BCMOD2) TEPINT ;
  634. VM1 = VARI 'NUAG' MODI (EXCO 'ECRO' MA1 'SIGM')
  635. EPS2 'STRESSES' 'SCALAIRE' ;
  636. VM1 = (EXCO VM1 'SIGM' 'SCAL') CHAN 'TYPE' 'SCALAIRE' ;
  637. MA2 = 'VARI' 'NUAG' MODI (MATE MODI
  638. 'ECRO' TABTRA.&BCMOD2) TEP1 ;
  639. * VM2 = 'VARI' 'NUAG' MODI (EXCO 'ECRO' MA2 SIGM)
  640. * (REDU EPS1 MODI) 'STRESSES' 'SCALAIRE' ;
  641. * VM2 = ((EXCO VM2 SIGM 'SCAL')CHAN 'TYPE' 'SCALAIRE')
  642. * * (REDU MSQ1 MODI) ;
  643. VM2 = VARI 'NUAG' MODI (EXCO 'ECRO' MA2 'SIGM')
  644. EPS2 'STRESSES' 'SCALAIRE' ;
  645. VM2 = (EXCO VM2 SIGM 'SCAL') CHAN 'TYPE' 'SCALAIRE' ;
  646. FINSI ;
  647. SI ((EGA MODPLA.&BCMOD2 2) OU
  648. (EGA MODPLA.&BCMOD2 3)) ;
  649. MA1 = VARI 'NUAG' MODI (REDU MAT_MEC MODI) TEPINT ;
  650. VM1 = CHAN 'STRESSES' MODI (EXCO MA1 'SIGY' 'SCAL') ;
  651. MA2 = VARI 'NUAG' MODI (REDU MAT_MEC MODI) TEP1 ;
  652. * EPS2 = REDU EPS1 MODI ;
  653. VM2 = CHAN 'STRESSES' MODI (EXCO MA2 'SIGY' 'SCAL') ;
  654. SI (EGA MODPLA.&BCMOD2 2) ;
  655. HSCAL1 = (EXCO MA1 'H' 'SCAL') CHAN 'TYPE' 'SCALAIRE' ;
  656. VM1 = VM1 + ((CHAN 'STRESSES' MODI HSCAL1)*EPS2) ;
  657. HSCAL2 = (EXCO MA2 'H' 'SCAL') CHAN 'TYPE' 'SCALAIRE' ;
  658. VM2 = VM2 + ((CHAN 'STRESSES' MODI HSCAL2)*EPS2) ;
  659. FINSI ;
  660. * VM2 = VM2 * (REDU MSQ1 MODI) ;
  661. FINSI ;
  662. SI (EGA (TYPE DETAVM) 'FLOTTANT') ;
  663. DETAVM = ((VM2 - VM1) / DETATE) ;
  664. SINON ;
  665. DETAVM = DETAVM + ((VM2 - VM1) / DETATE) ;
  666. FINSI ;
  667. FINSI ;
  668. FIN BCMOD2 ;
  669. FINSI ;
  670.  
  671.  
  672.  
  673. *******************************************************
  674. **** ENERGIE DE DEFORMATION ELASTIQUE ET PLASTIQUE ****
  675. *******************************************************
  676. ***
  677. *** DENSITE D'ENERGIE EN ELASTO OU THERMO-ELASTO-PLASTICITE ET
  678. *** DENSITE D'ENERGIE LIEE A LA VARIATION DE COURBE DE TRACTION
  679. ***
  680. SI (NON BOOL.'C*') ;
  681. WELAS = 0.5*('ENER' MOD_MEC_R SIGF ('ELAS' MOD_MEC_R SIGF MAT_INST)) ;
  682. * SI (BOOL.'PASAPAS' ET (NON BOOL.'DECOUPLAGE')) ;
  683. SI (BOOL.'PASAPAS') ;
  684. SI (EGA IABC 0) ;
  685. VMI1 = CHAN ('VMIS' MOD_MEC_R SIGF MAT_INST) 'TYPE' 'SCALAIRE' ;
  686. SI (BOOL.'COQ' ET BOOL.'EL_LIN') ; VMI1 = VMI1*MOD_MEC_R EPAICH ; FINSI ;
  687. WPLAS=0.5*VMI1*((EXCO VARF 'EPSE')CHAN 'TYPE' 'SCALAIRE') ;
  688. SI (((DIME MODPLA) '>' 0) ET BOOL.'THER') ;
  689. WVMIS = 0.5*DETAVM*((EXCO VARF 'EPSE')
  690. CHAN 'TYPE' 'SCALAIRE') ;
  691. FINSI ;
  692. SINON ;
  693. VMI1 = CHAN (0.5*(('VMIS' MOD_MEC_R SIG1 MAT_INST) +
  694. ('VMIS' MOD_MEC_R SIGF MAT_INST))) 'TYPE' 'SCALAIRE' ;
  695. SI (BOOL.'COQ' ET BOOL.'EL_LIN') ; VMI1 = VMI1*MOD_MEC_R EPAICH ; FINSI ;
  696. WPLAS = WPLAS + (VMI1*((EXCO (VARF - VAR1) 'EPSE')
  697. CHAN 'TYPE' 'SCALAIRE')) ;
  698. SI (((DIME MODPLA) '>' 0) ET BOOL.'THER') ;
  699. WVMIS = WVMIS + ((0.5*(DETAV1 + DETAVM))*
  700. ((EXCO (VARF - VAR1) 'EPSE')
  701. CHAN 'TYPE' 'SCALAIRE') ) ;
  702. FINSI ;
  703. FINSI ;
  704. ENERM = WELAS + WPLAS ;
  705. SIG11 = SIG1 ; SIG1 = SIGF*1. ; VAR11 = VAR1 ; VAR1 = VARF*1. ;
  706. SI (((DIME MODPLA) '>' 0) ET BOOL.'THER') ;
  707. DETAV1 = DETAVM ;
  708. FINSI ;
  709. SINON ;
  710. ENERM = WELAS ;
  711. FINSI ;
  712. FINSI ;
  713.  
  714.  
  715.  
  716.  
  717. *|=====================================================================|
  718. *|======= II. CRITERES DE DECHARGES =================================|
  719.  
  720.  
  721. ************************************************************
  722. ****** CRITERE GLOBAL 1 DE DECHARGE DES CONTRAINTES ********
  723. ************************************************************
  724. ***
  725. *** EVALUATION EN ELASTO-PLASTICITE OU THERMO-ELASTO-PLASTICITE
  726. *** PAR COMPARAISON AVEC UN CALCUL EN ELASTICITE NON-LINEAIRE
  727. *** EN PRENANT POUR REFERENCE LES CONTRAINTES DE VON-MISES DU
  728. *** CALCUL RENDU PAR PASAPAS ET LES CONTRAINTES EQUIVALENTES LUES
  729. *** SUR LES COURBES DE TRACTION
  730. ***
  731. OUICRIT = FAUX ;
  732. SI (EXIS SUPTAB 'CALCUL_CRITERE') ;
  733. OUICRIT = SUPTAB.'CALCUL_CRITERE' ;
  734. FINSI ;
  735. SI (BOOL.'MESS' ET OUICRIT) ;
  736. MESS 'on va calculer les CRITERES DE DECHARGES, modpla=' ;
  737. * list modpla ;
  738. FINSI ;
  739.  
  740. SI ((EGA ITYPEF 99) ET BOOL.'PASAPAS' ET OUICRIT) ;
  741.  
  742. XCRIT = 1. ;
  743.  
  744. REPE BCMOD0 (DIME TABMOD) ;
  745. EXISCRIT = FAUX ;
  746. MODI = TABMOD.&BCMOD0 ;
  747. MATI = REDU MAT_INST MODI ;
  748. EPSE1 = EXCO VARF 'EPSE' ;
  749. EPSE1 = EPSE1 CHAN TYPE 'SCALAIRE' ;
  750. EPSET = REDU EPSE1 MODI ;
  751. MSQ = MASQ 'SUPERIEUR' EPSET 1.E-6 ;
  752.  
  753. * VMIS1 = contraintes de Von-Mises en elastoplastique
  754. VMIS1 = CHAN ('VMIS' MODI (REDU SIGF MODI) MATI)
  755. TYPE 'SCALAIRE' ;
  756.  
  757. SI ('EXIS' MODPLA &BCMOD0) ;
  758. YOU = CHAN 'STRESSES' MODI (EXCO MATI 'YOUN') ;
  759. YOU = YOU CHAN TYPE 'SCALAIRE' ;
  760. SI (EGA MODPLA.&BCMOD0 1) ;
  761. * modele est plastique isotrope. on utilise la
  762. * courbe de traction TABTRA.&BCMOD0
  763. EXISCRIT = VRAI ;
  764. MATA = VARI 'NUAG' MODI ('MATE' MODI
  765. 'ECRO' TABTRA.&BCMOD0) TEPINT ;
  766. EPELAST = EXCO (VMIS1*(YOU**(-1))) 'SCAL' 'EPSE' ;
  767. EPSTOT = EPELAST + EPSET ;
  768. * VMIS2 = contraintes deduites des deformations
  769. * equivalentes par la courbe de traction
  770. VMIS2 = VARI 'NUAG' MODI (EXCO 'ECRO' MATA 'SIGM')
  771. EPSTOT 'STRESSES' 'SCALAIRE' ;
  772. FINSI ;
  773.  
  774. SI (EGA MODPLA.&BCMOD0 2) ;
  775. * modele est plastique cinematique, cas ou
  776. * SIGY et H sont des evolutions
  777. EXISCRIT = VRAI ;
  778. VMIS22 = CHAN 'STRESSES' MODI (EXCO MATI 'SIGY' 'SCAL') ;
  779. HSCAL = EXCO MATI 'H' 'SCAL' ;
  780. HSCAL = HSCAL CHAN TYPE 'SCALAIRE' ;
  781. VMIS2 = VMIS22 + ((CHAN 'STRESSES' MODI HSCAL) * EPSET) ;
  782. FINSI ;
  783.  
  784. SI (EGA MODPLA.&BCMOD0 3) ;
  785. * modele est plastique parfait
  786. EXISCRIT = VRAI ;
  787. VMIS2 = CHAN 'STRESSES' MODI ((EXCO MATI 'SIGY' 'SCAL')
  788. CHAN TYPE 'SCALAIRE' ) ;
  789. FINSI ;
  790.  
  791. SINON ;
  792. *** modele elastoplastique et modele plastique cinematique
  793. *** avec caracteristiques independantes de la temperature
  794.  
  795. SI (EXIS MATI 'ECRO') ;
  796. * extraction de la courbe de traction du modele MODI
  797. EXISCRIT = VRAI ;
  798. TRACTI = EXTR MATI 'ECRO' 1 1 1 ;
  799. PEPSO = EXTR TRACTI 'ABSC' ;
  800. PSIGM = EXTR TRACTI 'ORDO' ;
  801. TRACTI = 'EVOL' 'MANU' 'EPSE' PEPSO 'SIGM' PSIGM ;
  802. YOU = CHAN 'STRESSES' MODI (EXCO MATI 'YOUN') ;
  803. YOU = YOU CHAN TYPE 'SCALAIRE' ;
  804. EPELAST= EXCO (VMIS1*(YOU**(-1))) 'SCAL' 'EPSE' ;
  805. EPSTOT = EPELAST + EPSET ;
  806. * VMIS2 = contraintes deduites des deformations
  807. * equivalentes par la courbe de traction
  808. VMIS2 = 'VARI' MODI EPSTOT TRACTI 'STRESSES' ;
  809. * ? VMIS2 = VMIS2 CHAN TYPE 'SCALAIRE' ;
  810. FINSI ;
  811.  
  812. SI ((EXIS MATI 'SIGY') ET (EXIS MATI 'H')) ;
  813. * modele est plastique cinematique traite ici separement du cas
  814. * ou SIGY et H sont des evolutions c'est inutile car MAT_INST est
  815. * deja instantie en temperature mais il faudra regler le pb de
  816. * MODPLA dans son ensemble avec ZONE et une identification
  817. * automatique de chacun des sous-modes
  818. EXISCRIT = VRAI ;
  819. VMIS22 = CHAN 'STRESSES' MODI (EXCO MATI 'SIGY' 'SCAL') ;
  820. VMIS22 = VMIS22 CHAN TYPE 'SACALAIRE' ;
  821. HSCAL = EXCO MATI 'H' 'SCAL' ;
  822. HSCAL = HSCAL CHAN TYPE 'SCALAIRE' ;
  823. VMIS2 = VMIS22 + ((CHAN 'STRESSES' MODI HSCAL) * EPSET) ;
  824. FINSI ;
  825. SI ((EXIS MATI 'SIGY') ET (NON (EXIS MATI 'H'))) ;
  826. * modele est plastique parfait
  827. EXISCRIT = VRAI ;
  828. VMIS2 = CHAN 'STRESSES' MODI (EXCO MATI 'SIGY' 'SCAL') ;
  829. VMIS2 = VMIS2 CHAN TYPE 'SCALAIRE' ;
  830. FINSI ;
  831.  
  832. FINSI ;
  833.  
  834. SI EXISCRIT ;
  835. VMIS1P = VMIS1 * MSQ ;
  836. VMIS1S = INTG MODI VMIS1P ;
  837. VMIS2P = VMIS2 * MSQ ;
  838. VMIS2S = INTG MODI VMIS2P ;
  839. SI ('NEG' VMIS1S 0.) ;
  840. XCRIT = XCRIT + ((VMIS2S/VMIS1S) - 1.) ;
  841. FINSI ;
  842. FINSI ;
  843.  
  844. FIN BCMOD0 ;
  845.  
  846. SUPTAB.'CRIT_DECHA_GLOBAL1'.IABC = XCRIT ;
  847.  
  848. FINSI ;
  849.  
  850.  
  851. *********************************************************
  852. ****** CRITERE LOCAL 1 DE DECHARGE DES CONTRAINTES ******
  853. *********************************************************
  854.  
  855. SI ((EGA ITYPEF 99) ET BOOL.'PASAPAS' ET (IABC > 0) ET OUICRIT) ;
  856. SI BOOL.'MESS' ;
  857. MESS 'CRITERE LOCAL 1' ;
  858. FINSI ;
  859. EXISCRIT = FAUX ;
  860. VMITOTF = ZERO MOD_MEC_R STRESSES ;
  861. VMITOT1 = ZERO MOD_MEC_R STRESSES ;
  862. * initialisation
  863.  
  864. REPE BCMOD0 (DIME TABMOD) ;
  865.  
  866. MODI = TABMOD.&BCMOD0 ;
  867. MATI = REDU MAT_INST MODI ;
  868. EPSE1 = EXCO VARF 'EPSE' ;
  869. EPSE1 = EPSE1 CHAN TYPE 'SCALAIRE' ;
  870. EPSET = REDU EPSE1 MODI ;
  871. MSQ = 'MASQ' 'SUPERIEUR' EPSET 1.E-6 ;
  872.  
  873. SI ('EXIS' MODPLA &BCMOD0) ;
  874. INST1 = SUPTAB.'SOLUTION_PASAPAS'.'TEMPS'.(IABC-1) ;
  875. TEPIN1 = TIRE CHAR1 INST1 'T' ;
  876. TEPIN1 = REDU TEPIN1 ELTETA ;
  877. * TEPIN1 : temperature absolue au pas precedent
  878.  
  879. * modele plastique isotrope
  880. SI (EGA MODPLA.&BCMOD0 1) ;
  881. MATA = 'VARI' 'NUAG' MODI ('MATE' MODI
  882. 'ECRO' TABTRA.&BCMOD0) TEPINT ;
  883. VMISF = CHAN ('VMIS' MODI SIGF MATA) TYPE 'SCALAIRE' ;
  884. * VMISF : contrainte de Von Mises au pas courant
  885. MATA1 = 'VARI' 'NUAG' MODI ('MATE' MODI
  886. 'ECRO' TABTRA.&BCMOD0) TEPIN1 ;
  887. VMIS1 = CHAN ('VMIS' MODI SIG11 MATA1) TYPE 'SCALAIRE' ;
  888. * VMIS1 : contrainte de Von Mises au pas precedent
  889. FINSI ;
  890.  
  891. * modele plastique cinematique ou plastique parfait
  892. SI ((EGA MODPLA.&BCMOD0 2) OU (EGA MODPLA.&BCMOD0 3)) ;
  893. VMISF = CHAN ('VMIS' MODI SIGF MATI) TYPE 'SCALAIRE' ;
  894. VMIS1 = CHAN ('VMIS' MODI SIG11 MATI) TYPE 'SCALAIRE' ;
  895. FINSI ;
  896.  
  897. * pour ces 3 modeles
  898. SI ((EGA MODPLA.&BCMOD0 1) OU
  899. (EGA MODPLA.&BCMOD0 2) OU
  900. (EGA MODPLA.&BCMOD0 3)) ;
  901. EXISCRIT = VRAI ;
  902. VMISFP = VMISF * MSQ ;
  903. VMIS1P = VMIS1 * MSQ ;
  904. * VMISFP : contrainte de Von Mises aux points d'integration plastifies
  905. ** au pas courant
  906. * VMIS1P : contrainte de Von Mises aux points d'integration plastifies
  907. ** au pas precedent
  908. * on considere la plastification lorsque EPSET > 1E-6
  909. VMISF1P = VMISFP - VMIS1P ;
  910. * VMISFP : difference entre la contrainte equivalente au temps de
  911. * calcul t et celle au temps precedent (t-1)
  912. VMITOTF = VMITOTF + VMISFP ;
  913. VMITOT1 = VMITOT1 + VMISF1P ;
  914. FINSI ;
  915.  
  916. SINON ;
  917.  
  918. SI ('EXIS' MATI 'ECRO') ;
  919. * modele elastoplastique avec
  920. ** caracteristiques independantes de la temperature
  921. VMISF = CHAN ('VMIS' MODI (REDU SIGF MODI) MATI)
  922. TYPE 'SCALAIRE' ;
  923. VMIS1 = CHAN ('VMIS' MODI (REDU SIG11 MODI) MATI)
  924. TYPE 'SCALAIRE' ;
  925. FINSI ;
  926. SI (EXIS MATI 'SIGY') ;
  927. * modele plastique cinematique et plastique parfait avec
  928. ** caracteristiques independantes de la temperature
  929. VMISF = CHAN ('VMIS' MODI SIGF MATI)
  930. TYPE 'SCALAIRE' ;
  931. VMIS1 = CHAN ('VMIS' MODI SIG11 MATI)
  932. TYPE 'SCALAIRE' ;
  933. FINSI ;
  934.  
  935. SI (('EXIS' MATI 'ECRO') OU (EXIS MATI 'SIGY')) ;
  936. EXISCRIT = VRAI ;
  937. VMISFP = VMISF * MSQ ;
  938. VMIS1P = VMIS1 * MSQ ;
  939. VMISF1P = VMISFP - VMIS1P ;
  940. VMITOTF = VMITOTF + VMISFP ;
  941. VMITOT1 = VMITOT1 + VMISF1P ;
  942. FINSI ;
  943. FINSI ;
  944.  
  945. FIN BCMOD0 ;
  946.  
  947. SI EXISCRIT ;
  948. * MSQO = (CHAN 'CHPO' MOD_MEC_R (VMITOT1*((VMITOTF)**(-1))))
  949. * 'MASQ' 'INFERIEUR' 0. ;
  950. * SUPTAB.'CRIT_DECHA_LOCAL1'.IABC =
  951. * (CHAN 'CHPO' MOD_MEC_R ((VMITOT1*((VMITOTF)**(-1)))) * MSQO) ;
  952. * #MC 04/11/98 : pour le MASQ, un produit suffit (pas de risque de /0)
  953. MSQO = (CHAN 'CHPO' MOD_MEC_R (VMITOT1*VMITOTF))
  954. 'MASQ' 'INFERIEUR' 0. ;
  955. * #MC 04/11/98 : ou il y a des 0, on met 1.E-10
  956. SUPTAB.'CRIT_DECHA_LOCAL1'.IABC =
  957. (CHAN 'CHPO' MOD_MEC_R ((VMITOT1*((
  958. VMITOTF+(1.E-10*(VMITOTF 'MASQ' 'EGAL' 0.))
  959. )**(-1)))) * MSQO) ;
  960. *lorsque la valeur du critere est positive, c'est-a-dire qu'il n'y a
  961. **pas de decharge, celle-ci est ramenee a zero
  962. FINSI ;
  963.  
  964. FINSI ;
  965.  
  966.  
  967. ************************************************************
  968. ****** CRITERE GLOBAL 2 DE DECHARGE DES CONTRAINTES ********
  969. ************************************************************
  970.  
  971. SI ((EGA ITYPEF 99) ET BOOL.'PASAPAS' ET (NON BOOL.'REPRI') ET OUICRIT) ;
  972.  
  973. SI BOOL.'MESS' ;
  974. MESS 'CRITERE GLOBAL 2' ;
  975. FINSI ;
  976.  
  977. SI ('EXIS' SUPTAB.'SOLUTION_PASAPAS' 'DEFORMATIONS_INELASTIQUES') ;
  978. SI BOOL.'PERSO1' ;
  979. EPPLASF = ESTIM . 'DEFORMATIONS_INELASTIQUES' ;
  980. SINON ;
  981. EPPLASF = SUPTAB.'SOLUTION_PASAPAS'.'DEFORMATIONS_INELASTIQUES'
  982. .IABC ;
  983. FINSI ;
  984.  
  985. XCRIT = 1. ;
  986. PRO1 = 0. ;
  987. PRO2 = 0. ;
  988. CRITLOCA = MANU 'CHML' MOD_MEC_R 'SCAL' 1. 'STRESSES' ;
  989. NUMERA = ZERO MOD_MEC_R 'STRESSES' ;
  990. DENOMI = ZERO MOD_MEC_R 'STRESSES' ;
  991. * initialisation
  992. * glob2 n'est pas calcule si reprise car on ne connait pas i-1
  993.  
  994. VMISF = CHAN ('VMIS' MOD_MEC_R SIGF MAT_INST) TYPE 'SCALAIRE' ;
  995. * VMISF : contrainte de Von Mises au pas courant
  996. SI ('EXIS' SUPTAB VMISMAX) ;
  997. MQSIG = SUPTAB.VMISMAX MASQ 'SUPERIEUR' VMISF ;
  998. VMISF = VMISF + (MQSIG * ((SUPTAB.VMISMAX) - VMISF)) ;
  999. FINSI ;
  1000. SUPTAB.VMISMAX = VMISF ;
  1001.  
  1002. REPE BCMOD0 (DIME TABMOD) ;
  1003. EXISCRIT = FAUX ;
  1004. MODI = TABMOD.&BCMOD0 ;
  1005. MATI = REDU MAT_INST MODI ;
  1006. MAILI = EXTR MODI 'MAIL' ;
  1007. EPSEI = REDU (EXCO VARF 'EPSE') MODI ;
  1008. EPSEI = EPSEI CHAN TYPE 'SCALAIRE' ;
  1009. * EPPLASI = (SUPTAB.'SOLUTION_PASAPAS'.
  1010. * 'DEFORMATIONS_INELASTIQUES'.IABC) REDU MODI ;
  1011. EPPLASI= REDU EPPLASF MODI ;
  1012. VMISFI = REDU VMISF MODI ;
  1013. SIGFI = REDU SIGF MODI ;
  1014. YOU = CHAN 'STRESSES' MODI (EXCO MATI 'YOUN') ;
  1015. YOU = YOU CHAN TYPE 'SCALAIRE' ;
  1016. SI ('EXIS' MODPLA &BCMOD0) ;
  1017. SI ((EGA MODPLA.&BCMOD0 1) OU
  1018. (EGA MODPLA.&BCMOD0 2) OU
  1019. (EGA MODPLA.&BCMOD0 3)) ;
  1020. * modele plastique isotrope
  1021. * modele plastique cinematique
  1022. * modele plastique parfait
  1023. lm_dein = EXTR epplasi 'COMP' ;
  1024. lm_defo = EXTR modi 'DEFO' ;
  1025. ep_u = nomc lm_dein lm_defo epplasi ;
  1026. ep_u = changer ep_u type deformations ;
  1027. * PRO1 = PRO1 + (INTG MODI (ENER MODI SIGFI EPPLASI)) ;
  1028. PRO1 = PRO1 + (INTG MODI (ENER MODI SIGFI ep_u)) ;
  1029. PRO2 = PRO2 + (INTG MODI (VMISFI * EPSEI)) ;
  1030. SI (PRO2 'NEG' 0.D0) ;
  1031. XCRIT = XCRIT + (1. - (PRO1/PRO2)) ;
  1032. FINSI ;
  1033. FINSI ;
  1034. SINON ;
  1035.  
  1036. SI (('EXIS' MATI 'ECRO') OU (EXIS MATI 'SIGY')) ;
  1037. * modele elastoplastique et
  1038. * modele plastique cinematique et plastique parfait
  1039. ** avec caracteristiques independantes de la temperature
  1040. lm_dein = EXTR epplasi 'COMP' ;
  1041. lm_defo = EXTR modi 'DEFO' ;
  1042. ep_u = NOMC lm_dein lm_defo epplasi ;
  1043. ep_u = ep_u changer type deformations ;
  1044. * PRO1 = PRO1 + (INTG MODI (ENER MODI SIGFI EPPLASI)) ;
  1045. PRO1 = PRO1 + (INTG MODI (ENER MODI SIGFI ep_u)) ;
  1046. PRO2 = PRO2 + (INTG MODI (VMISFI * EPSEI)) ;
  1047. * NUMERA = NUMERA + (ENER MODI SIGFI EPPLASI) ;
  1048. NUMERA = NUMERA + (ENER MODI SIGFI ep_u) ;
  1049. DENOMI = DENOMI + (VMISFI * EPSEI) ;
  1050. * petit traitement pour eviter de diviser par zero
  1051. MIN0 = MINI 'ABS' DENOMI ;
  1052. MIN1 = MINI DENOMI ;
  1053. MAX1 = MAXI DENOMI ;
  1054. AMP = MAX1 - MIN1 ;
  1055. SI (AMP < 1.E-15) ;
  1056. AMP = 1.E-15 ;
  1057. FINSI ;
  1058. SI (MIN0 < (1.E-15 * AMP)) ;
  1059. DENOMI = DENOMI + (1.E-15 * AMP) ;
  1060. FINSI ;
  1061. CRITLOCA = CRITLOCA + (1. - (NUMERA / DENOMI)) ;
  1062. FINSI ;
  1063. FINSI ;
  1064. FIN BCMOD0 ;
  1065.  
  1066. * Le maxi sert a corriger le probleme castem sur les EPSE
  1067. * (ENER MODI SIGFI EPPLASI) n est pas toujours egal a
  1068. * (VMISFI * EPSEI) lorsque le chargement est proportionnel
  1069. * A supprimer quand le pb sera resolu
  1070. SUPTAB.'CRIT_DECHA_GLOBAL2' .IABC='MAXI'(prog 0.9999999999 XCRIT) ;
  1071. SUPTAB.'CRIT_DECHA_GLOBAL2_L'.IABC= CRITLOCA ;
  1072.  
  1073. * mess 'PRO1' , PRO1 , 'PRO2' , PRO2 , 'XCRIT' , XCRIT ;
  1074. SINON ;
  1075. SI BOOL.'MESS' ;
  1076. MESS 'ATTENTION : LES DEFORMATIONS INELASTIQUES N''ONT' ;
  1077. MESS ' PAS ETE SAUVEGARDEES LORS DE PASAPAS.' ;
  1078. MESS ' LE CRITERE GLOBAL 2 NE PEUT DONC PAS' ;
  1079. MESS ' ETRE CALCULE.' ;
  1080. FINSI ;
  1081. FINSI ;
  1082. FINSI ;
  1083.  
  1084.  
  1085. *********************************************************
  1086. ****** CRITERE LOCAL 2 DE DECHARGE DES CONTRAINTES ******
  1087. *********************************************************
  1088.  
  1089. SI ((EGA ITYPEF 99) ET BOOL.'PASAPAS' ET (IABC > 0) ET OUICRIT) ;
  1090. SI BOOL.'MESS' ; MESS 'CRITERE local 2' ; FINSI ;
  1091.  
  1092. *initialisation
  1093. EXISCRIT = FAUX ;
  1094. CRIT0 = 'ZERO' MOD_MEC_R STRESSES ;
  1095.  
  1096. REPE BCMOD0 (DIME TABMOD) ;
  1097. MODI = TABMOD.&BCMOD0 ;
  1098. MATI = REDU MAT_INST MODI ;
  1099. EPSE1 = EXCO VARF 'EPSE' ;
  1100. EPSE1 = EPSE1 CHAN TYPE 'SCALAIRE' ;
  1101. EPSET = REDU EPSE1 MODI ;
  1102.  
  1103. SI (('EXIS' MODPLA &BCMOD0) OU ('EXIS' MATI 'ECRO')
  1104. OU ('EXIS' MATI 'SIGY')) ;
  1105.  
  1106. MAT_z = 'MANU' 'CHML' MODI 'YOUN' 1. 'NU' 0. 'EPAI' 1.
  1107. TYPE 'CARACTERISTIQUES' 'RIGIDITE' ;
  1108. EXISCRIT = VRAI ;
  1109. DSIG = ELAS MODI (SIGF - SIG11) MAT_z ;
  1110. INV1 = ENER MODI (REDU SIGF MODI) (REDU DSIG MODI) ;
  1111. SIGFTRA = ENER MODI (REDU SIGF MODI)
  1112. (REDU (ELAS MODI SIGF MAT_z) MODI) ;
  1113. DSIGTRA = ENER MODI (REDU DSIG MODI)
  1114. (ELAS MODI DSIG MAT_z) ;
  1115. NOR1 = SIGFTRA**(1./2) ;
  1116. DNOR = DSIGTRA**(1./2) ;
  1117. DENO = NOR1 * DNOR ;
  1118. CRIT0 = CRIT0 + (INV1 * (DENO**(-1))) ;
  1119.  
  1120. FINSI ;
  1121.  
  1122. FIN BCMOD0 ;
  1123.  
  1124. SI EXISCRIT ;
  1125. SUPTAB.'CRIT_DECHA_LOCAL2'.IABC = CHAN 'CHPO' MOD_MEC_R CRIT0 ;
  1126. FINSI ;
  1127.  
  1128.  
  1129. FINSI ;
  1130.  
  1131.  
  1132.  
  1133. *|=====================================================================|
  1134. *|======= III. TRAITEMENT DES CHAMPS MECANIQUES ====================|
  1135. SI BOOL.'MESS' ; MESS 'TRAITEMENT DES CHAMPS MECANIQUES' ; FINSI ;
  1136.  
  1137. ****************************************************
  1138. * ON CHANGE LA TEMPERATURE EN MCHAML AU NOEUD =TEPINT
  1139. ****************************************************
  1140. SI (EGA (TYPE TEPINT) 'CHPOINT ') ;
  1141. TEPINT = REDU TEPINT ELTETA ;
  1142. TEPINT = CHAN 'CHAM' TEPINT MOD_MEC_R 'NOEUD' 'TEMPERATURES' ;
  1143. SINON ;
  1144. SI (EGA (TYPE TEPINT) 'MCHAML ') ;
  1145. TEPINT = REDU TEPINT MOD_MEC_R ;
  1146. TEPINT = CHAN 'NOEUD' MOD_MEC_R TEPINT ;
  1147. FINSI ;
  1148. FINSI ;
  1149. SI (BOOL.'THER' ET (NON BOOL.'COQ')) ;
  1150. EPT1 = EPTH MOD_MEC_R MAT_INST TEPINT ;
  1151. EPT1 VAR2 VAR3 = INVA MOD_MEC_R EPT1 ;
  1152. EPT1 = CHAN 'CHAM' (EPT1/3.) MOD_MEC_R 'NOEUD' ;
  1153. EPT1 = EPT1 - OBJUTI.'EPTREF' ;
  1154. FINSI ;
  1155.  
  1156. ***************************************************
  1157. ***** GRADIENT DU DEPLACEMENT DEPINT =GRADEP ******
  1158. ***************************************************
  1159. GRADEP = GRAD MOD_MEC_R MAT_INST DEPINT ;
  1160. GRADEF = TEXT ' ' ;
  1161. SI (BOOL.'COQ' ET BOOL.'EL_LIN') ;
  1162. GRADEF = 'GRAF' MOD_MEC_R MAT_INST DEPINT ;
  1163. FINSI ;
  1164.  
  1165. ***************************************************
  1166. ***** CAS DU CONTACT FROTTANT : ON CALCULE WSAUTGR = GRADIENT DU SAUT ******
  1167. ***************************************************
  1168. SI BOOL.'FROT' ;
  1169. * WDEP = deplacement de la fissure de composante UX ... AX ...
  1170. * [grad(w)] = grad [w] car linearite (le saut [w] est donne par AX ...)
  1171. * on utilise un modele liee a la geo de la fissure (cohesif ou contact)
  1172. WSAUTGR = GRAD OBJCON WDEP ;
  1173. * SIGCON = sigma*n de composantes SMX... homogene a une contrainte
  1174. * supporte sur la levre superieure
  1175. SI (NEG (TYPE SIGCON) 'MCHAML ') ;
  1176. SIGCON = REDU SIGCON (extr OBJCON2 'MAILLAGE') ;
  1177. SIGCON = CHAN 'CHAM' SIGCON OBJCON2 'STRESSES' 'CONTRAINTES' ;
  1178. FINSI ;
  1179. * Vsigcon = 'VECTEUR' sigcon objcon (1E-8) ('MOTS' 'SMX' 'SMY' 'SMZ') ;
  1180. * 'TRACER' vsigcon ('EXTRAIRE' objcon 'MAIL') ;
  1181. SIGXN = (CHAN (exco SIGCON 'SMX' 'SCAL') TYPE 'SCALAIRE') ;
  1182. SIGYN = (CHAN (exco SIGCON 'SMY' 'SCAL') TYPE 'SCALAIRE') ;
  1183. SI (EGA GDIME 3) ;
  1184. SIGZN = (CHAN (exco SIGCON 'SMZ' 'SCAL') TYPE 'SCALAIRE') ;
  1185. FINSI ;
  1186. FINSI ;
  1187.  
  1188. ***************************************************
  1189. ***** GRADIENT DE LA VITESSE VITF =GRAVIT ******
  1190. ***************************************************
  1191. SI BOOL.'J_DYNA' ;
  1192. GRAVIT = GRAD MOD_MEC_R MAT_INST VITF ;
  1193. VITF = CHAN 'CHAM' MOD_MEC_R VITF 'STRESSES' ;
  1194. ACCF = CHAN 'CHAM' MOD_MEC_R ACCF 'STRESSES' ;
  1195. FINSI ;
  1196.  
  1197. ***************************************************
  1198. ** GRADIENT TEMPERATURE Grad T pour tous elements =TEPEGR
  1199. ** et Grad Grad T pour les elements massifs seuls (si DJ/DA) =DEPDTGR
  1200. ***************************************************
  1201. SI BOOL.'THER' ;
  1202. SI (NON BOOL.'COQ') ;
  1203. TEPEGR = GRAD MOD_MEC_R MAT_INST (((EXCO 'T' TEPINT MU1)
  1204. CHAN TYPE 'SCALAIRE') + CMD000) ;
  1205. GR_EPTH = GRAD MOD_MEC_R MAT_INST ((NOMC MU1 EPT1) + CMD000) ;
  1206. SI BOOL.'DJ/DA' ;
  1207. DEPDT = ((EXCO GR1 TEPEGR MU1) + (EXCO GR2 TEPEGR MU2))
  1208. CHAN TYPE 'SCALAIRE' ;
  1209. SI (GDIME EGA 3) ;
  1210. DEPDT=DEPDT + ((EXCO GR3 TEPEGR MU3) CHAN TYPE 'SCALAIRE') ;
  1211. FINSI ;
  1212. DEPDTGR = GRAD MOD_MEC_R MAT_INST (CHAN TYPE
  1213. (CHAN 'NOEUD' MOD_MEC_R DEPDT) 'DEPLACEMENTS') ;
  1214. * DEPDTGR = GRAD MOD_MEC_R MAT_INST (CHAN 'CHPO' MOD_MEC_R DEPDT) ;
  1215. FINSI ;
  1216. SINON ;
  1217. TEPEGR = GRAD MOD_MEC_R MAT_INST ((((EXCO 'TINF' TEPINT MU1)
  1218. CHAN TYPE 'SCALAIRE') ET
  1219. ((EXCO 'T ' TEPINT MU2)CHAN TYPE 'SCALAIRE') ET
  1220. ((EXCO 'TSUP' TEPINT MU3)CHAN TYPE 'SCALAIRE'))
  1221. + CMD000) ;
  1222. FINSI ;
  1223. FINSI ;
  1224.  
  1225. ***************************************************
  1226. **GRADIENT DE PRESSIONS Grad P (si DJ/DA) =PRESGR
  1227. ***************************************************
  1228. SI BOOL.'DJ/DA' ;
  1229. SI ('>' (XTX PREINT) 1.E-10) ;
  1230. M1 = EXTR MOD_MEC_R 'FORC' ;
  1231. M2 = EXTR MOD_MEC_R 'DEPL' ;
  1232. REPE B1 (DIME M1) ;
  1233. F1 = DEP000 + (EXCO (EXTR M1 &B1) PREINT (EXTR M2 &B1)) ;
  1234. FIN B1 ;
  1235. PRESGR = GRAD MOD_MEC_R MAT_INST F1 ;
  1236. FINSI ;
  1237. FINSI ;
  1238.  
  1239. ***************************************************
  1240. * PROFIL DE L'ENERGIE DANS L'EPAISSEUR DE LA COQUE
  1241. ***************************************************
  1242. SI BOOL.'COQ' ;
  1243. PEX1 = PROG ; PEN1 = PROG ;
  1244. REPE NBJ7 (DIME OBJUTI.'MODCOU') ;
  1245. MCOU1 = OBJUTI.'MODCOU'.&NBJ7 ;
  1246. EX1 = EXTR (REDU MCOU1 MAT_INST) 'EXCE' 1 1 1 ;
  1247. E1 = EXTR (REDU MCOU1 MAT_INST) 'EPAI' 1 1 1 ;
  1248. SI ('<' (E1 / EPAITO) 1.E-4) ;
  1249. ENR1 = EXTR (REDU MCOU1 ENERM) 'SCAL' 1 1 1 ;
  1250. PEX1 = PEX1 ET ('PROG' EX1) ;
  1251. PEN1 = PEN1 ET ('PROG' ENR1) ;
  1252. FINSI ;
  1253. FIN NBJ7 ;
  1254. M1 = MOT ' DANS L EPAISSEUR DE LA COQUE A T =' ;
  1255. TITR ('CHAI' 'INTEGRALE ' OBJUTI.'MOTTI' M1 INST) ;
  1256. EVENR = 'EVOL' 'MANU' 'COOR.Z LOCAL' PEX1 OBJUTI.'MOTTI' PEN1 ;
  1257. SOM1 = ('INTG' EVENR) ;
  1258. SI (EGA SOM1 0.) ;
  1259. SOM1 = SOM1 + 1.E-10 ;
  1260. FINSI ;
  1261. EVENR = EVENR * EPAITO / SOM1 ;
  1262. NN = DIME (EXTR EVENR 'ORDO' 1) ;
  1263. V_SUPE = EXTR NN (EXTR EVENR 'ORDO' 1) ;
  1264. V_MOYE = EXTR ((NN - 1) / 2) (EXTR EVENR 'ORDO' 1) ;
  1265. V_INFE = EXTR 1 (EXTR EVENR 'ORDO' 1) ;
  1266. FINSI ;
  1267.  
  1268. ****************************************************
  1269. * RECUPERATION DU NOMBRE DE CALCULS A FAIRE
  1270. ****************************************************
  1271. TTHETA = SUPTAB.'TAB_THETA' ;
  1272. INDTH = INDE TTHETA ;
  1273. NBOU = DIME TTHETA ;
  1274. SI BOOL.'DJ/DA' ;
  1275. TPI = SUPTAB.'TAB_PI' ;
  1276. INDPI = INDE TPI ;
  1277. FINSI ;
  1278.  
  1279. ********************************************************
  1280. * DENSITE DE MATERIAU EN CAS DE CALCUL DE J DYNAMIQUE **
  1281. ********************************************************
  1282. SI BOOL.'J_DYNA' ;
  1283. RHO1 = REDU (EXCO MAT_INST 'RHO' 'SCAL') MOD_MEC_R ;
  1284. RHO1 = (CHAN MOD_MEC_R 'STRESSES' RHO1) CHAN TYPE 'SCALAIRE' ;
  1285. FINSI ;
  1286.  
  1287.  
  1288.  
  1289. *|=====================================================================|
  1290. *|======= BOUCLE SUR LES NOEUDS A AVANCER VIRTUELLEMENT =============>
  1291. GCHAM1 = VIDE 'MCHAML' ;
  1292. GCHPO1 = VIDE 'CHPOINT'/'DISCRET' ;
  1293.  
  1294. REPE BCNOEU NBOU ;
  1295. **************************************************
  1296. * RECUP DU CHAMP THETA ASSOCIE AU NOEUD PM DE NUMERO NUNOE
  1297. * ET DU CHAMP PI (SI DJ/DA)
  1298. **************************************************
  1299.  
  1300. IND0 = INDTH.&BCNOEU ;
  1301. CHTHETA = TTHETA.IND0 ;
  1302. SI BOOL.'DJ/DA' ;
  1303. CHPI = TPI.(INDPI.&BCNOEU) ;
  1304. FINSI ;
  1305. SI (EGA (TYPE IND0) 'CHPOINT') ;
  1306. FFRON = IND0 ;
  1307. NUNOE = &BCNOEU ;
  1308. FINSI ;
  1309. SI (EGA (TYPE IND0) 'MOT') ;
  1310. NUNOE = 'CHAI' ' ' IND0 ' ' ;
  1311. FINSI ;
  1312. SI (EGA (TYPE IND0) 'POINT') ;
  1313. PM = IND0 ;
  1314. NUNOE = NOEU PM ;
  1315. FINSI ;
  1316. SI (EGA (TYPE IND0) 'MAILLAGE') ;
  1317. PM = IND0 ;
  1318. NUNOE = &BCNOEU ;
  1319. FINSI ;
  1320.  
  1321.  
  1322. **************************************************
  1323. * GRADIENT, DIVERGENCE DU CHAMP THETA =TETAGR, DIVTETA
  1324. * CHAMELEM THETA =(TETX,TETY,TETZ)
  1325. **************************************************
  1326. CHTHETA = CHTHETA + DEP000 ;
  1327. TETAGR = GRAD MOD_MEC_R MAT_INST CHTHETA ;
  1328. DIVTETA = (EXCO GR1 TETAGR 'SCAL') +
  1329. (EXCO GR5 TETAGR 'SCAL') +
  1330. (EXCO GR9 TETAGR 'SCAL') ;
  1331. DIVTETA= DIVTETA CHAN TYPE 'SCALAIRE' ;
  1332. * btrolle 2013 : ajout de TETAX, TETAY et TETAZ
  1333. TETAX= CHAN 'CHAM' MOD_MEC_R (EXCO MU1 CHTHETA 'SCAL') 'SCALAIRE' ;
  1334. TETAY= CHAN 'CHAM' MOD_MEC_R (EXCO MU2 CHTHETA 'SCAL') 'SCALAIRE' ;
  1335. TETX = CHAN 'CHAM' MOD_MEC_R (EXCO MU1 CHTHETA 'SCAL') 'STRESSES' ;
  1336. TETY = CHAN 'CHAM' MOD_MEC_R (EXCO MU2 CHTHETA 'SCAL') 'STRESSES' ;
  1337. TETX = TETX CHAN TYPE'SCALAIRE' ;
  1338. TETY = TETY CHAN TYPE'SCALAIRE' ;
  1339. THET_GR = ZERO MOD_MEC_R 'GRADIENT' ;
  1340. THET_GR = THET_GR + (NOMC GR1 TETX) + (NOMC GR2 TETY) ;
  1341. SI (GDIME EGA 3) ;
  1342. TETAZ= CHAN 'CHAM' MOD_MEC_R (EXCO MU3 CHTHETA 'SCAL') 'SCALAIRE' ;
  1343. TETZ = CHAN 'CHAM' MOD_MEC_R (EXCO MU3 CHTHETA 'SCAL') 'STRESSES' ;
  1344. TETZ = TETZ CHAN TYPE'SCALAIRE' ;
  1345. THET_GR = THET_GR + (NOMC GR3 TETZ) ;
  1346. FINSI ;
  1347.  
  1348.  
  1349. **************************************************
  1350. * GRADIENT, DIVERGENCE DU CHAMP PI =PIGR, DIVPI
  1351. * CHAMELEM PI =(PIX,PIY,PIZ)
  1352. * ...
  1353. **************************************************
  1354. SI BOOL.'DJ/DA' ;
  1355. NORM1 = ((EXCO MU1 CHPI 'SCAL')**2) + ((EXCO MU2 CHPI 'SCAL')**2) ;
  1356. SI (EGA GDIME 3) ;
  1357. NORM1 = NORM1 + ((EXCO MU3 CHPI 'SCAL')**2) ;
  1358. FINSI ;
  1359. CHPI = CHPI + DEP000 ;
  1360. CHPI = CHPI / ('MAXI' (NORM1**0.5)) ;
  1361. PIGR = GRAD MOD_MEC_R MAT_INST CHPI ;
  1362. DIVPI = (EXCO GR1 PIGR 'SCAL') +
  1363. (EXCO GR5 PIGR 'SCAL') +
  1364. (EXCO GR9 PIGR 'SCAL') ;
  1365. DIVPI = DIVPI CHAN TYPE 'SCALAIRE' ;
  1366. PITAGR = (MOD_MEC_R PIGR * TETAGR) ;
  1367. DIVPITA = (EXCO GR1 PITAGR 'SCAL') +
  1368. (EXCO GR5 PITAGR 'SCAL') +
  1369. (EXCO GR9 PITAGR 'SCAL') ;
  1370. DIVPITA = DIVPITA CHAN TYPE 'SCALAIRE' ;
  1371. ADJ = (DIVPITA - (DIVPI * DIVTETA)) ;
  1372. PIX = CHAN 'CHAM' MOD_MEC_R (EXCO MU1 CHPI 'SCAL') 'STRESSES' ;
  1373. PIY = CHAN 'CHAM' MOD_MEC_R (EXCO MU2 CHPI 'SCAL') 'STRESSES' ;
  1374. PIX= PIX CHAN TYPE'SCALAIRE' ;
  1375. PIY= PIY CHAN TYPE'SCALAIRE' ;
  1376. SI (GDIME EGA 3) ;
  1377. PIZ = CHAN 'CHAM' MOD_MEC_R (EXCO MU3 CHPI 'SCAL') 'STRESSES' ;
  1378. PIZ= PIZ CHAN TYPE'SCALAIRE' ;
  1379. FINSI ;
  1380. FINSI ;
  1381.  
  1382. ********************************************************
  1383. *********** SI LE MATERIAU N'EST PAS CONSTANT **********
  1384. * YOU1 = YOUGR * THETA = (grad E) * THETA
  1385. * SIGPRIM = (grad D)*THETA*(EPSI elas) ou grad D =D(grad E,nu) =DMAT
  1386. * ALF1 = ALFGR*THETA = (grad Alpha)*THETA
  1387. * DMAT = D(1,nu,ALF1)
  1388. ********************************************************
  1389. SI BOOL.'GRADPROP' ;
  1390. *** Le coefficient de Poisson est constant ***
  1391. * NU1 = REDU (EXCO MAT_INST 'NU' 'SCAL') MOD_MEC_R ;
  1392. * NU1 = EXCO NU1 'SCAL' 'NU' ;
  1393. NU1 = REDU (EXCO MAT_INST 'NU') MOD_MEC_R ;
  1394. NU1 = NU1 CHAN TYPE 'SCALAIRE' ;
  1395. ****** Gradient de Module d'young ******
  1396. SI BOOL.'GRADYOUN' ;
  1397. YOU1 = REDU (EXCO MAT_INST 'YOUN' 'SCAL') MOD_MEC_R ;
  1398. YOU1 = YOU1 CHAN TYPE 'SCALAIRE' ;
  1399. YOUGR = GRA000 ; I = 0 ;
  1400. REPE NBJ2 (DIME TABMOD) ;
  1401. I = I + 1 ;
  1402. YO1 = CHAN 'STRESSES' TABMOD.I
  1403. (REDU ((EXCO MAT_INST 'YOUN' MU1)
  1404. CHAN TYPE 'SCALAIRE') TABMOD.I) ;
  1405. YOUGR = YOUGR + (GRAD TABMOD.I MAT_INST (YO1 +
  1406. (REDU CMD001 TABMOD.I))) ;
  1407. * YO1 = CHAN 'CHPO' TABMOD.I
  1408. * (REDU (EXCO MAT_INST 'YOUN' 'SCAL') TABMOD.I) ;
  1409. * YOUGR = YOUGR + (GRAD TABMOD.I MAT_INST ((NOMC MU1 YO1)
  1410. * + (REDU DEP000 (EXTR YO1 'MAIL')))) ;
  1411. FIN NBJ2 ;
  1412. YOU1 = (((EXCO GR1 YOUGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1413. MOD_MEC_R TETX) +
  1414. (((EXCO GR2 YOUGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1415. MOD_MEC_R TETY) ;
  1416. SI (GDIME EGA 3) ;
  1417. YOU1 = YOU1 + (((EXCO GR3 YOUGR 'SCAL')
  1418. CHAN TYPE 'SCALAIRE') * MOD_MEC_R TETZ) ;
  1419. FINSI ;
  1420. YOU1 = (EXCO YOU1 'SCAL' 'YOUN') CHAN TYPE 'SCALAIRE' ;
  1421. DMAT = 'MATE' MOD_MEC_R 'YOUN' YOU1 'NU' NU1 ;
  1422. SIGPRIM = (HOOK MOD_MEC_R DMAT)*MOD_MEC_R
  1423. (ELAS MOD_MEC_R SIGF MAT_INST) ;
  1424. FINSI ;
  1425. ****** Gradient de Coefficient de Dilatation ******
  1426. SI (BOOL.'THER' ET BOOL.'GRADALPH') ;
  1427. ALF1 = REDU (EXCO MAT_INST 'ALPH' 'SCAL') MOD_MEC_R ;
  1428. ALF1 = ALF1 CHAN TYPE 'SCALAIRE' ;
  1429. ALFGR = GRA000 ; I = 0 ;
  1430. REPE NBJ3 (DIME TABMOD) ;
  1431. I = I + 1 ;
  1432. AL1 = CHAN 'STRESSES' TABMOD.I
  1433. (REDU (EXCO MAT_INST 'ALPH' MU1) TABMOD.I) ;
  1434. AL1 = AL1 CHAN TYPE 'SCALAIRE' ;
  1435. ALFGR = ALFGR + (GRAD TABMOD.I MAT_INST (AL1 +
  1436. (REDU CMD001 TABMOD.I))) ;
  1437. *! AL1 = CHAN 'CHPO' TABMOD.I
  1438. *! (REDU (EXCO MAT_INST 'ALPH' 'SCAL') TABMOD.I) ;
  1439. *! ALFGR = ALFGR + (GRAD TABMOD.I MAT_INST ((NOMC MU1 AL1)
  1440. *! + (REDU DEP000 (EXTR AL1 'MAIL')))) ;
  1441. FIN NBJ3 ;
  1442. ALF1 = (((EXCO GR1 ALFGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1443. MOD_MEC_R TETX) +
  1444. (((EXCO GR2 ALFGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1445. MOD_MEC_R TETY) ;
  1446.  
  1447. SI (GDIME EGA 3) ;
  1448. ALF1 = ALF1 + (((EXCO GR3 ALFGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1449. MOD_MEC_R TETZ) ;
  1450. FINSI ;
  1451. ALF1 = EXCO ALF1 'SCAL' 'ALPH' ;
  1452. ALF1 = ALF1 CHAN TYPE 'SCALAIRE' ;
  1453. DMAT = 'MATE' MOD_MEC_R 'YOUN' 1. 'NU' NU1 'ALPH' ALF1 ;
  1454. FINSI ;
  1455. FINSI ;
  1456.  
  1457. ***********************************************
  1458. * TEMU = (Grad T)*THETA
  1459. * TEMU1 = (Grad T)*PI
  1460. * TEMU2 = (Grad (Grad T))*PI*THETA
  1461. * EPSTU = D^-1 sigma^th
  1462. * avec sigma^th = (-3lambda-2mu)*alpha*(grad T)*THETA*I
  1463. * GR_EPTH_THET = (grad epsilon_th)*THETA
  1464. ***********************************************
  1465. SI BOOL.'THER' ;
  1466. SI (NON BOOL.'COQ') ;
  1467. TEMU = PSCA TEPEGR THET_GR MGI MGI ;
  1468. TEMU = CHAN TYPE (EXCO 'SCAL' TEMU 'T') 'TEMPERATURES' ;
  1469. GR_EPTH_THET = PSCA GR_EPTH THET_GR MGI MGI ;
  1470. GR_EPTH_THET = NOMC 'T' GR_EPTH_THET ;
  1471. GR_EPTH_THET = CHAN 'TYPE' GR_EPTH_THET 'TEMPERATURES' ;
  1472. MAT0 = MATE MOD_MEC_R 'YOUN' 1. 'NU' 0. 'ALPH' 1.
  1473. 'TALP' 0. 'TREF' 0. ;
  1474. GR_EPTH_THET = EPTH MOD_MEC_R MAT0 GR_EPTH_THET ;
  1475. SINON ;
  1476. T1 = (((EXCO GR1 TEPEGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1477. MOD_MEC_R TETX) +
  1478. (((EXCO GR2 TEPEGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1479. MOD_MEC_R TETY) +
  1480. (((EXCO GR3 TEPEGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1481. MOD_MEC_R TETZ) ;
  1482. T2 = (((EXCO GR4 TEPEGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1483. MOD_MEC_R TETX) +
  1484. (((EXCO GR5 TEPEGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1485. MOD_MEC_R TETY) +
  1486. (((EXCO GR6 TEPEGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1487. MOD_MEC_R TETZ) ;
  1488. T3 = (((EXCO GR7 TEPEGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1489. MOD_MEC_R TETX) +
  1490. (((EXCO GR8 TEPEGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1491. MOD_MEC_R TETY) +
  1492. (((EXCO GR9 TEPEGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1493. MOD_MEC_R TETZ) ;
  1494. TEMU = CHAN TYPE ((EXCO 'SCAL' T1 'TINF') ET
  1495. (EXCO 'SCAL' T2 'T ') ET
  1496. (EXCO 'SCAL' T3 'TSUP')) 'TEMPERATURES';
  1497. FINSI ;
  1498. EPSTU = ELAS MOD_MEC_R (THET MOD_MEC_R MAT_INST TEMU) MAT_INST ;
  1499. SI BOOL.'DJ/DA' ;
  1500. TEMU1 = (((EXCO GR1 TEPEGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1501. MOD_MEC_R PIX) + (((EXCO GR2 TEPEGR 'SCAL')
  1502. CHAN TYPE 'SCALAIRE') * MOD_MEC_R PIY) ;
  1503. SI (GDIME EGA 3) ;
  1504. TEMU1 = TEMU1 + (((EXCO GR3 TEPEGR 'SCAL')
  1505. CHAN TYPE 'SCALAIRE') * MOD_MEC_R PIZ) ;
  1506. FINSI ;
  1507. SI BOOL.'COQ' ;
  1508. TEMU1 = CHAN TYPE ((EXCO 'SCAL' TEMU1 'T') ET
  1509. (EXCO 'SCAL' TEMU1 'TINF') ET
  1510. (EXCO 'SCAL' TEMU1 'TSUP')) 'TEMPERATURES' ;
  1511. SINON ;
  1512. TEMU1 = CHAN TYPE (EXCO 'SCAL' TEMU1 'T')
  1513. 'TEMPERATURES' ;
  1514. FINSI ;
  1515. EPSTU1 = ELAS MOD_MEC_R (THET MOD_MEC_R MAT_INST TEMU1)
  1516. MAT_INST ;
  1517. TXXPIX = ((EXCO GR1 DEPDTGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1518. MOD_MEC_R PIX ;
  1519. TYXPIY = ((EXCO GR2 DEPDTGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1520. MOD_MEC_R PIY ;
  1521. TXYPIX = ((EXCO GR4 DEPDTGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1522. MOD_MEC_R PIX ;
  1523. TYYPIY = ((EXCO GR5 DEPDTGR 'SCAL')CHAN TYPE 'SCALAIRE') *
  1524. MOD_MEC_R PIY ;
  1525. TEMU2 = (TETX*MOD_MEC_R (TXXPIX + TYXPIY)) +
  1526. (TETY*MOD_MEC_R (TXYPIX + TYYPIY)) ;
  1527. SI (GDIME EGA 3) ;
  1528. TEMU1 = TEMU1 + (((EXCO GR3 TEPEGR 'SCAL')
  1529. CHAN TYPE 'SCALAIRE') * MOD_MEC_R PIZ) ;
  1530. TZXPIZ = ((EXCO GR3 DEPDTGR 'SCAL')
  1531. CHAN TYPE 'SCALAIRE') * MOD_MEC_R PIZ ;
  1532. TZYPIZ = ((EXCO GR6 DEPDTGR 'SCAL')
  1533. CHAN TYPE 'SCALAIRE') * MOD_MEC_R PIZ ;
  1534. TXZPIX = ((EXCO GR7 DEPDTGR 'SCAL')
  1535. CHAN TYPE 'SCALAIRE') * MOD_MEC_R PIX ;
  1536. TYZPIY = ((EXCO GR8 DEPDTGR 'SCAL')
  1537. CHAN TYPE 'SCALAIRE') * MOD_MEC_R PIY ;
  1538. TZZPIY = ((EXCO GR9 DEPDTGR 'SCAL')
  1539. CHAN TYPE 'SCALAIRE') * MOD_MEC_R PIZ ;
  1540. TEMU2 = (TETX*MOD_MEC_R (TXXPIX + TYXPIY + TZXPIZ)) +
  1541. (TETY*MOD_MEC_R (TXYPIX + TYYPIY + TZYPIZ)) +
  1542. (TETZ*MOD_MEC_R (TXZPIX + TYZPIY + TZZPIZ)) ;
  1543. FINSI ;
  1544. SI BOOL.'COQ' ;
  1545. TEMU2 = CHAN TYPE ((EXCO 'SCAL' TEMU2 'T') ET
  1546. (EXCO 'SCAL' TEMU2 'TINF') ET
  1547. (EXCO 'SCAL' TEMU2 'TSUP')) 'TEMPERATURES' ;
  1548. SINON ;
  1549. TEMU2 = CHAN TYPE (EXCO 'SCAL' TEMU2 'T') 'TEMPERATURES' ;
  1550. FINSI ;
  1551. EPSTU2 = ELAS MOD_MEC_R (THET MOD_MEC_R MAT_INST TEMU2) MAT_INST ;
  1552. FINSI ;
  1553. FINSI ;
  1554.  
  1555. * modif sm
  1556. ***********************************************
  1557. * CUMDEFI = SIG_{IJ} * (deps_{ij} / dx_{,k}) * thet_{k}
  1558. ***********************************************
  1559. CUMDEFI = ZERO MOD_MEC_R 'STRESSES' ;
  1560. SI (BOOL.'DEF_IMP' ET (NON BOOL.'COQ')) ;
  1561. LMOEP = EXTR MOD_MEC_R 'DEFO' ;
  1562. LMOSI = EXTR MOD_MEC_R 'CONT' ;
  1563. LMOGR = EXTR MOD_MEC_R 'GRAD' ;
  1564. NIDEF = DIME LMOSI ;
  1565. REPETER BDEFI NIDEF ;
  1566. MOEP = EXTR LMOEP &BDEFI ;
  1567. MOSI = EXTR LMOSI &BDEFI ;
  1568. EIJ = EXCO DEFI MOEP MU1 ;
  1569. SMIJ = EXCO SIGF MOSI 'SCAL' ;
  1570. GREIJ = GRAD MOD_MEC_R MAT_INST
  1571. ((CHAN (CHAN 'NOEUD' MOD_MEC_R EIJ)
  1572. 'TYPE' 'SCALAIRE') + CMD000) ;
  1573. DEIJX = (CHAN (CHAN 'STRESSES' MOD_MEC_R
  1574. (EXCO GREIJ (EXTR LMOGR 1) 'SCAL'))
  1575. TYPE 'SCALAIRE') *
  1576. (CHAN SMIJ TYPE 'SCALAIRE') * TETX ;
  1577. DEIJY = (CHAN (CHAN 'STRESSES' MOD_MEC_R
  1578. (EXCO GREIJ (EXTR LMOGR 2) 'SCAL'))
  1579. TYPE 'SCALAIRE') *
  1580. (CHAN SMIJ TYPE 'SCALAIRE') * TETY ;
  1581. CUMDEFI = CUMDEFI + DEIJX + DEIJY ;
  1582. SI (GDIME EGA 3) ;
  1583. DEIJZ = (CHAN (CHAN 'STRESSES' MOD_MEC_R
  1584. (EXCO GREIJ (EXTR LMOGR 3) 'SCAL'))
  1585. TYPE 'SCALAIRE') *
  1586. (CHAN SMIJ TYPE 'SCALAIRE') * TETZ ;
  1587. CUMDEFI = CUMDEFI + DEIJZ ;
  1588. FINSI ;
  1589. FIN BDEFI ;
  1590. FINSI ;
  1591.  
  1592. ***********************************************
  1593. * PEMU1 = (Grad P)*TETA
  1594. * PEMU2 = (Grad P)*(Grad PI)*TETA
  1595. ***********************************************
  1596. SI BOOL.'DJ/DA' ;
  1597. SI ((XTX PREINT) > 1.E-10) ;
  1598. * NOUVELLE IMPLEMENTATION JB :
  1599. * PEMU = VIDE 'CHPOINT'/'DISCRET' ;
  1600. * REPE ICOMP GDIME ;
  1601. * IDEB = 1 + (3*(&ICOMP - 1)) ;
  1602. * IFIN = IDEB + GDIME - 1 ;
  1603. * LMO1 = EXTR MGI (LECT IDEB PAS 1 IFIN) ;
  1604. * LMO2 = EXTR MUI (LECT 1 PAS GDIME) ;
  1605. * FI = PSCA PRESGR PI LMO1 LMO2 ;
  1606. * FI = NOMC (EXTR MUI &ICOMP) FI ;
  1607. * PEMU = PEMU + (CHAN 'CHPO' MOD_MEC_R FI) ;
  1608. * FIN ICOMP ;
  1609. * CETTE SECTION N'EST PAS TESTEE ACTUELLEMENT DANS LA BASE DE CAS-TESTS
  1610. * IL FAUT DONC AJOUTER UN CAS-TEST AVANT DE POUVOIR REMPLACER CE QUI SUIT
  1611. * PAR LES LIGNES COMMENTEES CI-DESSUS
  1612. F1 = (((EXCO GR1 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1613. MOD_MEC_R PIX) +
  1614. (((EXCO GR2 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1615. MOD_MEC_R PIY) ;
  1616. F2 = (((EXCO GR4 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1617. MOD_MEC_R PIX) +
  1618. (((EXCO GR5 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1619. MOD_MEC_R PIY) ;
  1620. PEMU = CHAN 'CHPO' MOD_MEC_R ((EXCO 'SCAL' F1 MF1) ET
  1621. (EXCO 'SCAL' F2 MF2)) ;
  1622. SI (EGA GDIME 3) ;
  1623. F1 = F1 +
  1624. (((EXCO GR3 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1625. MOD_MEC_R PIZ) ;
  1626. F2 = F2 +
  1627. (((EXCO GR6 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1628. MOD_MEC_R PIZ) ;
  1629. F3 = (((EXCO GR7 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1630. MOD_MEC_R PIX) +
  1631. (((EXCO GR8 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1632. MOD_MEC_R PIY) +
  1633. (((EXCO GR9 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1634. MOD_MEC_R PIZ) ;
  1635. PEMU = CHAN 'CHPO' MOD_MEC_R ((EXCO 'SCAL' F1 MF1) ET
  1636. (EXCO 'SCAL' F2 MF2) ET (EXCO 'SCAL' F3 MF3)) ;
  1637. FINSI ;
  1638. F1 = (((EXCO GR1 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1639. MOD_MEC_R TETX) +
  1640. (((EXCO GR2 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1641. MOD_MEC_R TETY) ;
  1642. F2 = (((EXCO GR4 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1643. MOD_MEC_R TETX) +
  1644. (((EXCO GR5 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1645. MOD_MEC_R TETY) ;
  1646. PEMU1 = CHAN 'CHPO' MOD_MEC_R ((EXCO 'SCAL' F1 MF1) ET
  1647. (EXCO 'SCAL' F2 MF2)) ;
  1648. SI (EGA GDIME 3) ;
  1649. F1 = F1 +
  1650. (((EXCO GR3 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1651. MOD_MEC_R TETZ) ;
  1652. F2 = F2 +
  1653. (((EXCO GR6 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1654. MOD_MEC_R TETZ) ;
  1655. F3 = (((EXCO GR7 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1656. MOD_MEC_R TETX) +
  1657. (((EXCO GR8 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1658. MOD_MEC_R TETY) +
  1659. (((EXCO GR9 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1660. MOD_MEC_R TETZ) ;
  1661. PEMU1 = CHAN 'CHPO' MOD_MEC_R ((EXCO 'SCAL' F1 MF1) ET
  1662. (EXCO 'SCAL' F2 MF2) ET (EXCO 'SCAL' F3 MF3)) ;
  1663. FINSI ;
  1664. F1 = (((EXCO GR1 PIGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1665. MOD_MEC_R TETX) +
  1666. (((EXCO GR2 PIGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1667. MOD_MEC_R TETY) ;
  1668. F2 = (((EXCO GR4 PIGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1669. MOD_MEC_R TETX) +
  1670. (((EXCO GR5 PIGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1671. MOD_MEC_R TETY) ;
  1672. SI (EGA GDIME 3) ;
  1673. F1 = F1 +
  1674. (((EXCO GR3 PIGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1675. MOD_MEC_R TETZ) ;
  1676. F2 = F2 +
  1677. (((EXCO GR6 PIGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1678. MOD_MEC_R TETZ) ;
  1679. F3 = (((EXCO GR7 PIGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1680. MOD_MEC_R TETX) +
  1681. (((EXCO GR8 PIGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1682. MOD_MEC_R TETY) +
  1683. (((EXCO GR9 PIGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1684. MOD_MEC_R TETZ) ;
  1685. FINSI ;
  1686. F4 = (((EXCO GR1 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1687. MOD_MEC_R F1) +
  1688. (((EXCO GR2 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1689. MOD_MEC_R F2) ;
  1690. F5 = (((EXCO GR4 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1691. MOD_MEC_R F1) +
  1692. (((EXCO GR5 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1693. MOD_MEC_R F2) ;
  1694. PEMU2 = CHAN 'CHPO' MOD_MEC_R ((EXCO 'SCAL' F4 MF1) ET
  1695. (EXCO 'SCAL' F5 MF2)) ;
  1696. SI (EGA GDIME 3) ;
  1697. F4 = F4 +
  1698. (((EXCO GR3 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1699. MOD_MEC_R F3) ;
  1700. F5 = F5 +
  1701. (((EXCO GR6 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1702. MOD_MEC_R F3) ;
  1703. F6 = (((EXCO GR7 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1704. MOD_MEC_R F1) +
  1705. (((EXCO GR8 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1706. MOD_MEC_R F2) +
  1707. (((EXCO GR9 PRESGR 'SCAL') CHAN TYPE 'SCALAIRE') *
  1708. MOD_MEC_R F3) ;
  1709. PEMU2 = CHAN 'CHPO' MOD_MEC_R ((EXCO 'SCAL' F4 MF1) ET
  1710. (EXCO 'SCAL' F5 MF2) ET (EXCO 'SCAL' F6 MF3)) ;
  1711. FINSI ;
  1712. FINSI ;
  1713. FINSI ;
  1714.  
  1715. ***********************************************
  1716. * DANS LE CAS DE CALCUL DE DJ/DA
  1717. * U^aux=A_DEPI et SIGMA^aux=A_SIGF
  1718. ***********************************************
  1719. SI BOOL.'DJ/DA' ;
  1720. GRAD11 = (MOD_MEC_R GRADEP * PIGR) ;
  1721. EPXX1 = (EXCO GR1 GRAD11 'SCAL') CHAN TYPE 'SCALAIRE' ;
  1722. EPYY1 = (EXCO GR5 GRAD11 'SCAL') CHAN TYPE 'SCALAIRE' ;
  1723. EPZZ1 = (EXCO GR9 GRAD11 'SCAL') CHAN TYPE 'SCALAIRE' ;
  1724. GAXY1 = ((EXCO GR2 GRAD11 'SCAL') + (EXCO GR4 GRAD11 'SCAL'))
  1725. CHAN TYPE 'SCALAIRE' ;
  1726. GAXZ1 = ((EXCO GR3 GRAD11 'SCAL') + (EXCO GR7 GRAD11 'SCAL'))
  1727. CHAN TYPE 'SCALAIRE' ;
  1728. GAYZ1 = ((EXCO GR6 GRAD11 'SCAL') + (EXCO GR8 GRAD11 'SCAL'))
  1729. CHAN TYPE 'SCALAIRE' ;
  1730. SI (GDIME EGA 3) ;
  1731. EPSIA1 = MANU 'CHML' MOD_MEC_R EP1 EPXX1 EP2
  1732. EPYY1 EP3 EPZZ1 EP4 GAXY1 EP5 GAXZ1 EP6
  1733. GAYZ1 TYPE 'DEFORMATIONS' 'STRESSES' ;
  1734. SINON ;
  1735. EPSIA1 = MANU 'CHML' MOD_MEC_R EP1 EPXX1 EP2
  1736. EPYY1 EP3 EPZZ1 EP4 GAXY1
  1737. TYPE 'DEFORMATIONS' 'STRESSES' ;
  1738. FINSI ;
  1739. SI BOOL.'THER' ; EPSIA1 = EPSIA1 + EPSTU1 ; FINSI ;
  1740. F11 = BSIG MOD_MEC_R (((HOOK MOD_MEC_R MAT_INST)*MOD_MEC_R EPSIA1)
  1741. - (MOD_MEC_R SIGF*DIVPI)) + (FOFI MOD_MEC_R SIGF PIGR) ;
  1742. SI ((XTX PREINT) > 1.E-10) ;
  1743. F11 = F11 + PEMU + (PREINT*(CHAN 'CHPO' MOD_MEC_R DIVPI)) ;
  1744. FINSI ;
  1745. A_PREI = FOR000 ;
  1746. A_DEPI = REDU (RESO F11 RIGTOT) ELTETA ;
  1747. A_SIGF = MOD_MEC_R (HOOK MOD_MEC_R MAT_INST) *
  1748. ((EPSI MOD_MEC_R A_DEPI) - EPSIA1) ;
  1749. A_DEPGR = GRAD MOD_MEC_R MAT_INST A_DEPI ;
  1750. SI (BOOL.'COQ' ET BOOL.'EL_LIN') ;
  1751. A_DEPGF = 'GRAF' MOD_MEC_R MAT_INST A_DEPI ;
  1752. SINON ;
  1753. A_DEPGF = TEXT ' ' ;
  1754. FINSI ;
  1755. FINSI ;
  1756.  
  1757. ***********************************************
  1758. * DEP0 = (grad U)*THETA
  1759. ***********************************************
  1760. LO1 = ((BOOL.'J') OU BOOL.'C*' OU BOOL.'C*H'
  1761. OU BOOL.'DJ/DA' OU BOOL.'J_DYNA' )
  1762. ET ('>' (XTX PREINT) 1.E-10) ;
  1763. LO2 = FAUX ;
  1764. SI BOOL.'DECOUPLAGE' ;
  1765. LO2 = (XTX A_PREI) > 1.E-10 ;
  1766. FINSI ;
  1767. SI (LO1 OU LO2) ;
  1768. GRADCH = CHAN 'CHPO' MOD_MEC_R GRADEP ;
  1769. * mess 'gcalcul : CHAN CHPO grad(U)' ;
  1770. *bp : on se ramene a un chpoint pour faire XTY avec preint ensuite
  1771. * on moyenne avce CHAN CHPO, pourrait on l'eviter?
  1772. DEPLX = ((EXCO GR1 GRADCH 'SCAL')*(EXCO MU1 CHTHETA 'SCAL')) +
  1773. ((EXCO GR2 GRADCH 'SCAL')*(EXCO MU2 CHTHETA 'SCAL')) ;
  1774. DEPLY = ((EXCO GR4 GRADCH 'SCAL')*(EXCO MU1 CHTHETA 'SCAL')) +
  1775. ((EXCO GR5 GRADCH 'SCAL')*(EXCO MU2 CHTHETA 'SCAL')) ;
  1776. DEP0 = (NOMC DEPLX MU1) + (NOMC DEPLY MU2) ;
  1777. SI (GDIME EGA 3) ;
  1778. DEPLX = DEPLX +
  1779. ((EXCO GR3 GRADCH 'SCAL')*(EXCO MU3 CHTHETA 'SCAL')) ;
  1780. DEPLY = DEPLY +
  1781. ((EXCO GR6 GRADCH 'SCAL')*(EXCO MU3 CHTHETA 'SCAL')) ;
  1782. DEPLZ = ((EXCO GR7 GRADCH 'SCAL')*(EXCO MU1 CHTHETA 'SCAL')) +
  1783. ((EXCO GR8 GRADCH 'SCAL')*(EXCO MU2 CHTHETA 'SCAL')) +
  1784. ((EXCO GR9 GRADCH 'SCAL')*(EXCO MU3 CHTHETA 'SCAL')) ;
  1785. DEP0 = (NOMC DEPLX MU1) + (NOMC DEPLY MU2) +
  1786. (NOMC DEPLZ MU3) ;
  1787. FINSI ;
  1788. SI (BOOL.'COQ' ET BOOL.'EL_LIN') ;
  1789. GRAFCH = CHAN 'CHPO' MOD_MEC_R GRADEF ;
  1790. BXX = EXCO 'BX,X' GRAFCH 'SCAL' ;
  1791. BXY = EXCO 'BX,Y' GRAFCH 'SCAL' ;
  1792. BYX = EXCO 'BY,X' GRAFCH 'SCAL' ;
  1793. BYY = EXCO 'BY,Y' GRAFCH 'SCAL' ;
  1794. DEPFX = NOMC 'RX' ( (BXX*(EXCO 'UX' CHTHETA 'SCAL')) +
  1795. (BXY*(EXCO 'UY' CHTHETA 'SCAL')) ) ;
  1796. DEPFY = NOMC 'RY' ( (BYX*(EXCO 'UX' CHTHETA 'SCAL')) +
  1797. (BYY*(EXCO 'UY' CHTHETA 'SCAL')) ) ;
  1798. DEP0 = DEP0 + DEPFX + DEPFY ;
  1799. FINSI ;
  1800. FINSI ;
  1801.  
  1802.  
  1803. ***************************************************************
  1804. * S'il y a une pression sur la fissure, on calcule
  1805. * GRUTE = (grad U)*THETA sur les elements du modele de pression
  1806. * et dans la zone d'etude (ou le champ TETA est definit)
  1807. ***************************************************************
  1808. SI BOOL.'PRES_FISS' ;
  1809. * on isole les elements de la fissure ou la pression s'applique et ou le
  1810. * champ teta est definit
  1811. FISSP = EXTR MODPRE 'MAIL' ;
  1812. PFISSP = CHAN 'POI1' FISSP ;
  1813. FISSP = FISSP ELEM 'APPU' 'STRI' MAILMOD ;
  1814. MODPFT = VIDE 'MMODEL' ;
  1815. GRADEPF = VIDE 'MCHAML' ;
  1816. * on interpole le gradient de deplacement (GRADEP) sur les elements du
  1817. * modele de pression touchant la levre inferieure
  1818. SI (EXIS SUPTAB 'LEVRE_INFERIEURE') ;
  1819. FISI = INTE FISSP (SUPTAB . 'LEVRE_INFERIEURE') ;
  1820. MODPFI = REDU MODPF FISI ;
  1821. MP1 = DIFF (CHAN 'POI1' FISI) FF1 ;
  1822. EL1 = MAILMOD ELEM 'APPU' 'LARG' MP1 ;
  1823. MOD_MEC_R1 = REDU MOD_MEC_R EL1 ;
  1824. GRADEP1 = REDU GRADEP MOD_MEC_R1 ;
  1825. GRADEP1 = CHAN 'CHAM' GRADEP1 MOD_MEC_R1 'NOEUD' ;
  1826. GRUI = PROI GRADEP1 MODPFI 'STRESSES' ;
  1827. MODPFT = MODPFT ET MODPFI ;
  1828. GRADEPF = GRADEPF ET GRUI ;
  1829. FINSI ;
  1830. * on interpole le gradient de deplacement (GRADEP) sur les elements du
  1831. * modele de pression touchant la levre superieure
  1832. SI (EXIS SUPTAB 'LEVRE_SUPERIEURE') ;
  1833. FISS = INTE FISSP (SUPTAB . 'LEVRE_SUPERIEURE') ;
  1834. MODPFS = REDU MODPF FISS ;
  1835. MP1 = DIFF (CHAN 'POI1' FISS) FF1 ;
  1836. EL1 = MAILMOD ELEM 'APPU' 'LARG' MP1 ;
  1837. MOD_MEC_R1 = REDU MOD_MEC_R EL1 ;
  1838. GRADEP1 = REDU GRADEP MOD_MEC_R1 ;
  1839. GRADEP1 = CHAN 'CHAM' GRADEP1 MOD_MEC_R1 'NOEUD' ;
  1840. GRUS = PROI GRADEP1 MODPFS 'STRESSES' ;
  1841. MODPFT = MODPFT ET MODPFS ;
  1842. GRADEPF = GRADEPF ET GRUS ;
  1843. FINSI ;
  1844. GRADEPF = REDU GRADEPF MODPFT ;
  1845. * on interpole le champ theta (THETA) sur les elements du modele de
  1846. * pression ==> TETAF
  1847. TETAF = REDU CHTHETA FISSP ;
  1848. TETAF = CHAN 'CHAM' MODPFT TETAF 'STRESSES' ;
  1849. * on fait ensuite le produit (GRADEPF * TETAF) ==> GRUTE
  1850. LCT = EXTR TETAF 'COMP' ;
  1851. LCG = EXTR GRADEPF 'COMP' ;
  1852. SI (EGA GDIME 2) ;
  1853. LCG12 = EXTR LCG (LECT 1 2) ;
  1854. LCG45 = EXTR LCG (LECT 4 5) ;
  1855. GRUTE1 = PSCA GRADEPF TETAF LCG12 LCT ;
  1856. GRUTE2 = PSCA GRADEPF TETAF LCG45 LCT ;
  1857. GRUTE = (NOMC (EXTR LCT 1) GRUTE1) ET
  1858. (NOMC (EXTR LCT 2) GRUTE2) ;
  1859. FINSI ;
  1860. SI (EGA GDIME 3) ;
  1861. LCG123 = EXTR LCG (LECT 1 2 3) ;
  1862. LCG456 = EXTR LCG (LECT 4 5 6) ;
  1863. LCG789 = EXTR LCG (LECT 7 8 9) ;
  1864. GRUTE1 = PSCA GRADEPF TETAF LCG123 LCT ;
  1865. GRUTE2 = PSCA GRADEPF TETAF LCG456 LCT ;
  1866. GRUTE3 = PSCA GRADEPF TETAF LCG789 LCT ;
  1867. GRUTE = (NOMC (EXTR LCT 1) GRUTE1) ET
  1868. (NOMC (EXTR LCT 2) GRUTE2) ET
  1869. (NOMC (EXTR LCT 3) GRUTE3) ;
  1870. FINSI ;
  1871. GRUTE = CHAN 'TYPE' GRUTE 'FORCES' ;
  1872. FINSI ;
  1873.  
  1874.  
  1875. ***********************************************
  1876. * DEP1 = (grad A_DEPI)*THETA
  1877. ***********************************************
  1878. LO1 = BOOL.'DJ/DA' ET ('>' (XTX PREINT) 1.E-10) ;
  1879. LO2 = FAUX ;
  1880. SI BOOL.'DECOUPLAGE' ;
  1881. LO2 = ('>' (XTX A_PREI) 1.E-10) OU ('>' (XTX PREINT) 1.E-10) ;
  1882. FINSI ;
  1883. SI (LO1 OU LO2) ;
  1884. * mess 'gcalcul : CHAN CHPO grad(U^aux)' ;
  1885. GRADCH = CHAN 'CHPO' MOD_MEC_R A_DEPGR ;
  1886. *bp : on se ramene a un chpoint pour faire XTY avec preint ensuite
  1887. * on moyenne avec CHAN CHPO, pourrait on l'eviter?
  1888. DEPLX = ((EXCO GR1 GRADCH 'SCAL')*(EXCO MU1 CHTHETA 'SCAL')) +
  1889. ((EXCO GR2 GRADCH 'SCAL')*(EXCO MU2 CHTHETA 'SCAL')) ;
  1890. DEPLY = ((EXCO GR4 GRADCH 'SCAL')*(EXCO MU1 CHTHETA 'SCAL')) +
  1891. ((EXCO GR5 GRADCH 'SCAL')*(EXCO MU2 CHTHETA 'SCAL')) ;
  1892. DEP1 = (NOMC DEPLX MU1) + (NOMC DEPLY MU2) ;
  1893. SI (GDIME EGA 3) ;
  1894. DEPLX = DEPLX +
  1895. ((EXCO GR3 GRADCH 'SCAL')*(EXCO MU3 CHTHETA 'SCAL')) ;
  1896. DEPLY = DEPLY +
  1897. ((EXCO GR6 GRADCH 'SCAL')*(EXCO MU3 CHTHETA 'SCAL')) ;
  1898. DEPLZ = ((EXCO GR7 GRADCH 'SCAL')*(EXCO MU1 CHTHETA 'SCAL')) +
  1899. ((EXCO GR8 GRADCH 'SCAL')*(EXCO MU2 CHTHETA 'SCAL')) +
  1900. ((EXCO GR9 GRADCH 'SCAL')*(EXCO MU3 CHTHETA 'SCAL')) ;
  1901. DEP1 = (NOMC DEPLX MU1) + (NOMC DEPLY MU2) +
  1902. (NOMC DEPLZ MU3) ;
  1903. FINSI ;
  1904. SI (BOOL.'COQ' ET BOOL.'EL_LIN') ;
  1905. GRAFCH = CHAN 'CHPO' MOD_MEC_R GRADEF ;
  1906. BXX = EXCO 'BX,X' GRAFCH 'SCAL' ;
  1907. BXY = EXCO 'BX,Y' GRAFCH 'SCAL' ;
  1908. BYX = EXCO 'BY,X' GRAFCH 'SCAL' ;
  1909. BYY = EXCO 'BY,Y' GRAFCH 'SCAL' ;
  1910. DEPFX = NOMC 'RX' ( (BXX*(EXCO 'UX' CHTHETA 'SCAL')) +
  1911. (BXY*(EXCO 'UY' CHTHETA 'SCAL')) ) ;
  1912. DEPFY = NOMC 'RY' ( (BYX*(EXCO 'UX' CHTHETA 'SCAL')) +
  1913. (BYY*(EXCO 'UY' CHTHETA 'SCAL')) ) ;
  1914. DEP1 = DEP1 + DEPFX + DEPFY ;
  1915. FINSI ;
  1916. FINSI ;
  1917. ***********************************************
  1918. * Termes supplemenetaire en Dynamique
  1919. * VCARE = V*V
  1920. * GRUTV = (grad U)*THETA*V (Attigui)
  1921. * GRVTV = V^T * (grad V)*THETA (BP)
  1922. * GRWTU = W^T * (grad U)*THETA (BP)
  1923. ***********************************************
  1924. SI BOOL.'J_DYNA' ;
  1925. VCARE = PSCA VITF VITF MUI MUI ;
  1926. * NOUVELLE IMPLEMENTATION JB :
  1927. * CHML_TETA = CHAN 'CHAM' MOD_MEC_R TETA 'STRESSES' ;
  1928. * GRUTV = MANU 'CHML' MOD_MEC_R 'SCAL' 0.
  1929. * 'TYPE' 'DEPLACEM' 'STRESSES' ;
  1930. * GRVTV = COPI GRUTV ;
  1931. * GRWTU = COPI GRUTV ;
  1932. * REPE ICOMP GDIME ;
  1933. * CALCUL DE DEPFI ET VITFI
  1934. * IDEB = 1 + (3*(&ICOMP - 1)) ;
  1935. * IFIN = IDEB + GDIME - 1 ;
  1936. * LMO1 = EXTR MGI (LECT IDEB PAS 1 IFIN) ;
  1937. * LMO2 = MUI ;
  1938. * DEPFI = PSCA GRADEP CHML_TETA LMO1 LMO2 ;
  1939. * VITFI = PSCA GRAVIT CHML_TETA LMO1 LMO2 ;
  1940. * CALCUL DE GRUTV
  1941. * MO1 = EXTR MUI &ICOMP ;
  1942. * GRUTV = GRUTV + ((EXCO MO1 VITF 'SCAL') * DEPFI) ;
  1943. * CALCUL DE GRVTV
  1944. * GRVTV = GRVTV + ((EXCO MO1 VITF 'SCAL') * VITFI) ;
  1945. * CALCUL DE GRWTU
  1946. * GRWTU = GRWTU + ((EXCO MO1 ACCF 'SCAL') * DEPFI) ;
  1947. * FIN ICOMP ;
  1948. * CETTE SECTION N'EST PAS ASSEZ TESTEE ACTUELLEMENT DANS LA BASE DE CAS-TESTS
  1949. * IL FAUT DONC AJOUTER DES CAS-TESTS AVANT DE POUVOIR REMPLACER CE QUI SUIT
  1950. * PAR LES LIGNES COMMENTEES CI-DESSUS
  1951. DEPFX = (((EXCO GR1 GRADEP 'SCAL')CHAN TYPE 'SCALAIRE') *TETX) +
  1952. (((EXCO GR2 GRADEP 'SCAL')CHAN TYPE 'SCALAIRE') *TETY) ;
  1953. DEPFY = (((EXCO GR4 GRADEP 'SCAL')CHAN TYPE 'SCALAIRE') *TETX) +
  1954. (((EXCO GR5 GRADEP 'SCAL')CHAN TYPE 'SCALAIRE') *TETY) ;
  1955. VITFX = (((EXCO GR1 GRAVIT 'SCAL')CHAN TYPE 'SCALAIRE') *TETX) +
  1956. (((EXCO GR2 GRAVIT 'SCAL')CHAN TYPE 'SCALAIRE') *TETY) ;
  1957. VITFY = (((EXCO GR4 GRAVIT 'SCAL')CHAN TYPE 'SCALAIRE') *TETX) +
  1958. (((EXCO GR5 GRAVIT 'SCAL')CHAN TYPE 'SCALAIRE') *TETY) ;
  1959. SI (EGA GDIME 3) ;
  1960. DEPFX=DEPFX +(((EXCO GR3 GRADEP 'SCAL')CHAN TYPE 'SCALAIRE')*TETZ) ;
  1961. DEPFY=DEPFY +(((EXCO GR6 GRADEP 'SCAL')CHAN TYPE 'SCALAIRE')*TETZ) ;
  1962. DEPFZ = (((EXCO GR7 GRADEP 'SCAL')CHAN TYPE 'SCALAIRE')*TETX) +
  1963. (((EXCO GR8 GRADEP 'SCAL')CHAN TYPE 'SCALAIRE')*TETY) +
  1964. (((EXCO GR9 GRADEP 'SCAL')CHAN TYPE 'SCALAIRE')*TETZ) ;
  1965. VITFX=VITFX +(((EXCO GR3 GRAVIT 'SCAL')CHAN TYPE 'SCALAIRE')*TETZ) ;
  1966. VITFY=VITFY +(((EXCO GR6 GRAVIT 'SCAL')CHAN TYPE 'SCALAIRE')*TETZ) ;
  1967. VITFZ = (((EXCO GR7 GRAVIT 'SCAL')CHAN TYPE 'SCALAIRE')*TETX) +
  1968. (((EXCO GR8 GRAVIT 'SCAL')CHAN TYPE 'SCALAIRE')*TETY) +
  1969. (((EXCO GR9 GRAVIT 'SCAL')CHAN TYPE 'SCALAIRE')*TETZ) ;
  1970. GRUTV = ((EXCO MU1 VITF 'SCAL')*DEPFX) +
  1971. ((EXCO MU2 VITF 'SCAL')*DEPFY) +
  1972. ((EXCO MU3 VITF 'SCAL')*DEPFZ) ;
  1973. GRWTU = ((EXCO MU1 ACCF 'SCAL')*DEPFX) +
  1974. ((EXCO MU2 ACCF 'SCAL')*DEPFY) +
  1975. ((EXCO MU3 ACCF 'SCAL')*DEPFZ) ;
  1976. GRVTV = ((EXCO MU1 VITF 'SCAL')*VITFX) +
  1977. ((EXCO MU2 VITF 'SCAL')*VITFY) +
  1978. ((EXCO MU3 VITF 'SCAL')*VITFZ) ;
  1979. SINON ;
  1980. GRUTV = ((EXCO MU1 VITF 'SCAL')*DEPFX) +
  1981. ((EXCO MU2 VITF 'SCAL')*DEPFY) ;
  1982. GRWTU = ((EXCO MU1 ACCF 'SCAL')*DEPFX) +
  1983. ((EXCO MU2 ACCF 'SCAL')*DEPFY) ;
  1984. GRVTV = ((EXCO MU1 VITF 'SCAL')*VITFX) +
  1985. ((EXCO MU2 VITF 'SCAL')*VITFY) ;
  1986. FINSI ;
  1987. FINSI ;
  1988.  
  1989.  
  1990. *|=====================================================================|
  1991. *|======== IV. CALCUL DE J,C*,C*(h) ou J_DYNA =======================|
  1992.  
  1993. ***********************************************
  1994. * S10 = w*(div THETA)
  1995. * S20 = sigma*(grad U)*(grad THETA)
  1996. * S40 = Tr(sigma)*Alpha*(Grad T)*THETA
  1997. * S50 = F*(grad U)*THETA
  1998. * S60 = 0.5*(grad D)*THETA*(EPSI elas)*(EPSI elas)
  1999. * S70 = Tr(sigma)*T*(Grad Alpha)*THETA
  2000. * S100 = (W(b) - W(a))*THETA(x)
  2001. * S110 = SIGF*n*[ (dU/dX)(b) - (dU/dX)(a) ]*THETA(x)
  2002. * S120 = wvmis*(Grad T)*THETA
  2003. * ou wvmis = SOME d(Von_mises)/d(Temperature) d(EPSE)
  2004. ***********************************************
  2005. * Termes supplementaires pour le J dynamique (Formulation de Attigui)
  2006. * S130 = 0.5*RHO*(V^2)*(div THETA)
  2007. * S140 = [Delta (RHO*V*(grad U)*THETA)]/(Delta Temps)
  2008. * Termes supplementaires pour le J dynamique (Formulation de BP)
  2009. * S130 = -0.5*RHO*(V^2)*(div THETA)
  2010. * S140 = RHO*W*(grad U)*THETA
  2011. * S141 = -RHO*V*(grad V)*THETA
  2012. ***********************************************
  2013. * Termes supplementaires pour le J en grands-deplacements
  2014. * S150 = sigma*((grad U)t)*(grad U)*(grad THETA)
  2015. ***********************************************
  2016. ***********************************************
  2017. * Termes supplementaires pour un chaergement en deformation imposee (modif sm)
  2018. * S160 = sigma*(deps/dx)*(THETA)
  2019. * = SIG_{IJ} * (deps^{imp}_{ij} / dx_{,k}) * thet_{k}
  2020. ***********************************************
  2021. * Termes supplementaires pour le contact frottant (modif BP,BT)
  2022. * S111 = SIGF*n*[ (dU/dX)(b) - (dU/dX)(a) ]*THETA(x)
  2023. ***********************************************
  2024.  
  2025.  
  2026. SI ((BOOL.'J') OU BOOL.'C*' OU BOOL.'C*H' OU BOOL.'J_DYNA' ) ;
  2027. GMCANI = 0. ;
  2028. GTERMI = 0. ;
  2029. GPRESS = 0. ;
  2030.  
  2031. S10 = INTG MOD_MEC_R (ENERM*MOD_MEC_R DIVTETA) MAT2 ;
  2032. GMCANI = GMCANI - S10 ;
  2033. SI (BOOL.'COQ' ET BOOL.'EL_LIN') ;
  2034. S20 = INTG MOD_MEC_R (WORK MOD_MEC_R SIGF
  2035. (GRADEP*MOD_MEC_R TETAGR)
  2036. (GRADEF*MOD_MEC_R TETAGR)) ;
  2037. SINON ;
  2038. S20 = INTG MOD_MEC_R (WORK MOD_MEC_R SIGF
  2039. (GRADEP*MOD_MEC_R TETAGR)) MAT2 ;
  2040. FINSI ;
  2041. GMCANI = GMCANI + S20 ;
  2042. SI BOOL.'GRANDS_DEP' ;
  2043. SI (BOOL.'COQ' ET BOOL.'EL_LIN') ;
  2044. S150 = INTG MOD_MEC_R (WORK MOD_MEC_R SIGF
  2045. (((TAGR GRADEP)*MOD_MEC_R GRADEP)*MOD_MEC_R TETAGR)
  2046. (((TAGR GRADEF)*MOD_MEC_R GRADEF)*MOD_MEC_R TETAGR)) ;
  2047. SINON ;
  2048. S150 = INTG MOD_MEC_R (WORK MOD_MEC_R SIGF
  2049. (((TAGR GRADEP)*MOD_MEC_R GRADEP)*MOD_MEC_R TETAGR)) MAT2 ;
  2050. FINSI ;
  2051. GMCANI = GMCANI + S150 ;
  2052. FINSI ;
  2053. SI (BOOL.'GRADPROP' ET BOOL.'GRADYOUN') ;
  2054. S60 = INTG MOD_MEC_R (0.5*(ENER MOD_MEC_R
  2055. SIGPRIM (ELAS MOD_MEC_R SIGF MAT_INST))) MAT2 ;
  2056. GMCANI = GMCANI - S60 ;
  2057. FINSI ;
  2058. SI (((DIME LINTER) > 0) ET (NON BOOL.'PARAL')) ;
  2059. I = 0 ; IND1 = INDE LINTER ;
  2060. REPE NBJ4 (DIME IND1) ;
  2061. I = I + 1 ;
  2062. LE1 = IND1.&NBJ4 ;
  2063. L1 = LINTER.LE1 ;
  2064. M1 = TABMOD.(EXTR LE1 1) ;
  2065. M2 = TABMOD.(EXTR LE1 2) ;
  2066. OBJINT = MODE L1 'MECANIQUE' 'ELASTIQUE' ;
  2067. TETXL = REDU L1 (EXCO MU1 CHTHETA 'SCAL') ;
  2068. TETXLC = CHAN 'CHAM' OBJINT TETXL 'STRESSES' ;
  2069. ***
  2070. ENEMA = REDU L1 (CHAN 'CHPO' M1 (REDU M1 ENERM)) ;
  2071. ENEMB = REDU L1 (CHAN 'CHPO' M2 (REDU M2 ENERM)) ;
  2072. ENRMAL = CHAN 'CHAM' OBJINT ENEMA 'STRESSES' ;
  2073. ENRMBL = CHAN 'CHAM' OBJINT ENEMB 'STRESSES' ;
  2074. S100 = S100 + (INTG OBJINT
  2075. ((ENRMBL - ENRMAL) * OBJINT TETXLC) MAT2) ;
  2076. ***
  2077. GRADA = REDU L1 (CHAN 'CHPO' M1 (REDU M1 GRADEP)) ;
  2078. GRADB = REDU L1 (CHAN 'CHPO' M2 (REDU M2 GRADEP)) ;
  2079. UXXAL = CHAN 'CHAM' OBJINT (EXCO GR1 GRADA 'SCAL')
  2080. 'STRESSES' ;
  2081. UXXBL = CHAN 'CHAM' OBJINT (EXCO GR1 GRADB 'SCAL')
  2082. 'STRESSES' ;
  2083. UYXAL = CHAN 'CHAM' OBJINT (EXCO GR4 GRADA 'SCAL')
  2084. 'STRESSES' ;
  2085. UYXBL = CHAN 'CHAM' OBJINT (EXCO GR4 GRADB 'SCAL')
  2086. 'STRESSES' ;
  2087. SIGML = REDU L1 (CHAN 'CHPO' MOD_MEC_R SIGF) ;
  2088. SIXXL = CHAN 'CHAM' OBJINT (EXCO SM1 SIGML 'SCAL')
  2089. 'STRESSES' ;
  2090. SIXYL = CHAN 'CHAM' OBJINT (EXCO SM4 SIGML 'SCAL')
  2091. 'STRESSES' ;
  2092. AAAA1 = (SIXXL * OBJINT (UXXBL - UXXAL)) +
  2093. (SIXYL * OBJINT (UYXBL - UYXAL)) ;
  2094. S110 = S110 + (INTG OBJINT (AAAA1*OBJINT TETXLC) MAT2) ;
  2095. FIN NBJ4 ;
  2096. GMCANI = GMCANI - S100 + S110 ;
  2097. FINSI ;
  2098. * Termes supplementaire en Dynamique **********
  2099. SI BOOL.'J_DYNA' ;
  2100. S130 = INTG MOD_MEC_R (0.5*(RHO1 * VCARE * DIVTETA)) MAT2 ;
  2101. S140 = INTG MOD_MEC_R (RHO1 * GRWTU) MAT2 ;
  2102. S141 = INTG MOD_MEC_R (RHO1 * GRVTV) MAT2 ;
  2103. GMCANI = GMCANI - S130 + S140 - S141 ;
  2104. FINSI ;
  2105. * Termes supplementaire pour le contact frottant (btrolle 19/02/2013)
  2106. SI (BOOL.'FROT') ;
  2107. * teta
  2108. TETXC = PROI OBJCON2 TETAX 'STRESSES' ;
  2109. TETYC = PROI OBJCON2 TETAY 'STRESSES' ;
  2110. SI (EGA GDIME 3) ;
  2111. TETZC = PROI OBJCON2 TETAZ 'STRESSES' ;
  2112. FINSI ;
  2113. * [grad(w)] = grad [w] = WSAUTGR
  2114. * sigma*n
  2115. AAAAX = (SIGXN * (CHAN (exco WSAUTGR AX,X 'SCAL') TYPE 'SCALAIRE'))
  2116. + (SIGYN * (CHAN (exco WSAUTGR AY,X 'SCAL') TYPE 'SCALAIRE')) ;
  2117. AAAAY = (SIGXN * (CHAN (exco WSAUTGR AX,Y 'SCAL') TYPE 'SCALAIRE'))
  2118. + (SIGYN * (CHAN (exco WSAUTGR AY,Y 'SCAL') TYPE 'SCALAIRE')) ;
  2119. SI (EGA GDIME 3) ;
  2120. AAAAX = AAAAX
  2121. + (SIGZN * (CHAN(exco WSAUTGR AZ,X) TYPE 'SCALAIRE')) ;
  2122. AAAAY = AAAAY
  2123. + (SIGZN * (CHAN(exco WSAUTGR AZ,Y) TYPE 'SCALAIRE')) ;
  2124. AAAAZ = (SIGXN * (CHAN(exco WSAUTGR AX,Z) TYPE 'SCALAIRE'))
  2125. + (SIGYN * (CHAN(exco WSAUTGR AY,Z) TYPE 'SCALAIRE'))
  2126. + (SIGZN * (CHAN(EXCO WSAUTGR AZ,Z) TYPE 'SCALAIRE')) ;
  2127. AAAA111 = (AAAAX * OBJCON2 TETXC) + (AAAAY * OBJCON2 TETYC)
  2128. + (AAAAZ * OBJCON2 TETZC) ;
  2129. SINON ;
  2130. AAAA111 = (AAAAX * OBJCON2 TETXC) + (AAAAY * OBJCON2 TETYC) ;
  2131. FINSI ;
  2132. * AAAA111 = 'MANUEL' CHML objcon 'SCAL' 1 TYPE 'SCALAIRE' 'STRESSES' ;
  2133. S111 = INTG OBJCON2 AAAA111 ; mess 'S111=' S111 ;
  2134. GMCANI = GMCANI - S111 ;
  2135. SINON ;
  2136. S111 = 0.0 ;
  2137. FINSI ;
  2138. * fin du cas contact frottant (btrolle 19/02/2013)
  2139.  
  2140. S50 = 0. ;
  2141. SI ((XTX PREINT) > 1.E-10) ;
  2142. S50 = XTY PREINT DEP0 MFI MUI ;
  2143. FINSI ;
  2144. SI BOOL.'PRES_FISS' ;
  2145. PNF = REDU PNF MODPFT ;
  2146. LC1 = EXTR PNF 'COMP' ;
  2147. LC2 = EXTR GRUTE 'COMP' ;
  2148. PGRU = MANU 'CHML' MODPFT 'SCAL' 0. 'STRESSES' ;
  2149. REPE B1 (DIME LC1) ;
  2150. PGRU = PGRU + ((EXCO (EXTR LC1 &B1) PNF 'SCAL') *
  2151. (EXCO (EXTR LC2 &B1) GRUTE 'SCAL')) ;
  2152. FIN B1 ;
  2153. S50 = S50 + (INTG MODPFT PGRU) ;
  2154. FINSI ;
  2155. GPRESS = GPRESS - S50 ;
  2156. * Termes supplementaire pour un chargement en deformation imposee (SM) *********
  2157. S160 = 0. ;
  2158. SI (BOOL.'J' ET BOOL.'DEF_IMP') ;
  2159. S160 = INTG MOD_MEC_R CUMDEFI MAT2 ;
  2160. GPRESS = GPRESS + S160 ;
  2161. FINSI ;
  2162.  
  2163. SI BOOL.'THER' ;
  2164. SI BOOL.'COQ' ;
  2165. S40 = INTG MOD_MEC_R (ENER MOD_MEC_R SIGF EPSTU) MAT2 ;
  2166. GTERMI = GTERMI + S40 ;
  2167. SI BOOL.'GRADALPH' ;
  2168. S70 = INTG MOD_MEC_R (ENER MOD_MEC_R SIGF (ELAS
  2169. MOD_MEC_R (THET MOD_MEC_R TEPINT DMAT) DMAT)) MAT2 ;
  2170. GTERMI = GTERMI + S70 ;
  2171. FINSI ;
  2172. SINON ;
  2173. S41 = INTG MOD_MEC_R (ENER MOD_MEC_R SIGF GR_EPTH_THET) MAT2 ;
  2174. GTERMI = GTERMI + S41 ;
  2175. FINSI ;
  2176. SI ((DIME MODPLA) > 0) ;
  2177. TEMU = CHAN TYPE (EXCO 'T' TEMU 'SCAL') 'SCALAIRE' ;
  2178. S120 = INTG MOD_MEC_R (WVMIS * TEMU) MAT2 ;
  2179. GTERMI = GTERMI - S120 ;
  2180. FINSI ;
  2181. FINSI ;
  2182.  
  2183. * somme des termes ***************************
  2184. GTOTA = (GMCANI + GTERMI + GPRESS)*FACT1 ;
  2185. FINSI ;
  2186.  
  2187.  
  2188.  
  2189. *|=====================================================================|
  2190. *|======= V. CALCUL DE DJ/DA ========================================|
  2191.  
  2192. ***********************************************
  2193. * S10 = -SIGF*(Grad U)*(Grad PI)*(Grad TETA)
  2194. * S20 = -SIGF*(Grad U)*(Grad TETA)*(Grad PI)
  2195. * S30 = SIGF*(Grad U)*(Grad TETA)*(Div PI)
  2196. * S40 = SIGF*(Grad U)*(Grad PI)*(Div TETA)
  2197. * S50 = ENEGIE*(ADJ TETA*PI)
  2198. * S60 = ALPH*SIGF*(Grad (Grad T))*PI*TETA
  2199. * S70 = ALPH*SIGF*((Grad T)*PI)*(Div TETA)
  2200. * S80 = ALPH*SIGF*((Grad T)*TETA)*(Div PI)
  2201. * S90 = SIG11*(Grad U)*(Grad TETA)
  2202. * S100= SIGF*(Grad U1)*(Grad TETA)
  2203. * S110= -SIGF*(Grad U1)*(Div TETA)
  2204. * S120= ALPH*SIG11*((Grad T)*TETA)
  2205. * S130= -PRESSION*(grad A_DEPI)*THETA
  2206. * S140= -(Grad PRESSION)*(Grad PI)*TETA*U
  2207. * S150= (Grad PRESSION)*TETA*U*(Div PI)
  2208. * S160= -(Grad PRESSION)*PI*(Grad U)*TETA
  2209. ***********************************************
  2210. SI BOOL.'DJ/DA' ;
  2211. S10 = 0. - (INTG MOD_MEC_R (WORK MOD_MEC_R SIGF
  2212. (MOD_MEC_R GRADEP * (MOD_MEC_R PIGR * TETAGR)))) ;
  2213. S20 = 0. - (INTG MOD_MEC_R (WORK MOD_MEC_R SIGF
  2214. (MOD_MEC_R GRADEP * (MOD_MEC_R TETAGR * PIGR)))) ;
  2215. S30 = INTG MOD_MEC_R (MOD_MEC_R (WORK MOD_MEC_R
  2216. SIGF (MOD_MEC_R GRADEP * TETAGR)) * DIVPI) ;
  2217. S40 = INTG MOD_MEC_R (MOD_MEC_R (WORK MOD_MEC_R
  2218. SIGF (MOD_MEC_R GRADEP * PIGR)) * DIVTETA) ;
  2219. S50 = INTG MOD_MEC_R (ENERM * ADJ) ;
  2220. SI BOOL.'THER' ;
  2221. S60 = INTG MOD_MEC_R (ENER MOD_MEC_R SIGF EPSTU2) ;
  2222. S70 = INTG MOD_MEC_R ((ENER MOD_MEC_R SIGF EPSTU1)*DIVTETA) ;
  2223. S80 = INTG MOD_MEC_R ((ENER MOD_MEC_R SIGF EPSTU)*DIVPI) ;
  2224. S120 = INTG MOD_MEC_R (ENER MOD_MEC_R A_SIGF EPSTU) ;
  2225. FINSI ;
  2226. SI ((XTX PREINT) > 1.E-10) ;
  2227. S130 = XTY PREINT DEP1 MFI MUI ;
  2228. S140 = XTY PEMU2 (CHAN 'CHPO' MOD_MEC_R DEPINT) MFI MUI ;
  2229. S150 = XTY (PEMU1*(CHAN 'CHPO' MOD_MEC_R DIVPI))
  2230. (CHAN 'CHPO' MOD_MEC_R DEPINT) MFI MUI ;
  2231. S160 = XTY PEMU DEP0 MFI MUI ;
  2232. FINSI ;
  2233. S90 = INTG MOD_MEC_R (WORK MOD_MEC_R A_SIGF (MOD_MEC_R GRADEP * TETAGR)) ;
  2234. S100 = INTG MOD_MEC_R (WORK MOD_MEC_R SIGF (MOD_MEC_R A_DEPGR * TETAGR)) ;
  2235. S110 = 0. - (INTG MOD_MEC_R (MOD_MEC_R (WORK
  2236. MOD_MEC_R SIGF A_DEPGR) * DIVTETA)) ;
  2237. GMCANI = S10 + S20 + S30 + S40 + S50 + S90 + S100 + S110 ;
  2238. GTERMI = S60 + S70 + S80 + S120 ;
  2239. GPRESS = S150 - S130 - S140 - S160 ;
  2240. GTOTA = GMCANI + GTERMI + GPRESS ;
  2241. FINSI ;
  2242.  
  2243.  
  2244.  
  2245. *|=====================================================================|
  2246. *|====== VI. CALCUL DES FACTEURS D INTENSITE DES CONTRAINTES =======|
  2247.  
  2248. ***********************************************
  2249. * En pratique on les deduit de l integrale d interaction
  2250. * M(u,u^aux) = 2/E^* (K1*K1^aux + K2*K2^aux)
  2251. * On calcule donc :
  2252. * J1 = 1/E^* K1^2 = M(u,u^aux_1)**2 / 4*J(u^aux_1,u^aux_1)
  2253. * J2 = 1/E^* K2^2 = M(u,u^aux_2)**2 / 4*J(u^aux_2,u^aux_2)
  2254. ***********************************************
  2255. * l'integrale J(u^aux, u^aux) est la somme de :
  2256. * S10 = 0.5*Tr(A_sigf*(grad A_depi))*(div THETA)
  2257. * S20 = Tr[A_sigf*(grad A_depi)*(grad THETA)] *
  2258. * S50 = A_prei*(grad A_depi)*THETA
  2259. ***********************************************
  2260. * l'integrale M(u, u^aux) et la somme de :
  2261. * S60 = Tr[A_sigf*(Grad U)*(Grad THETA)]
  2262. * S70 = Tr[SIGF*(Grad A_depi)*(Grad THETA)]
  2263. * S80 = Tr[SIGF*(Grad A_depi)*(Div THETA)]
  2264. * S90 = PREINT*(grad A_depi)*THETA
  2265. * S100= A_prei*(grad U)*THETA
  2266. * S110= ALPH*A_sigf*((Grad T)*TETA)
  2267. ***********************************************
  2268. * Termes supplementaires pour le contact frottant (modif BP,BT)
  2269. * S111 = SIGF*n*[ (dU^aux/dX)(b) - (dU^aux/dX)(a) ]*TETA(x)
  2270. ***********************************************
  2271.  
  2272.  
  2273. SI BOOL.'DECOUPLAGE' ;
  2274. * si(BOOL.'XFEM') ;
  2275. * * REM: pour les elements XFEM on a contruit les champs aux. tq
  2276. * * (K_I^aux, K_II^aux) = (1,0) et (0,1)
  2277. * * => inutile de calculer J(u^aux,u^aux) (= C_MATE)
  2278. *bp 07/07/2011 : cela est faux dans le cas d'une fissure courbee
  2279. * COE_M2K = 2. * C_MATE ;
  2280. * SINON ;
  2281. S10 = 0.5*( INTG MOD_MEC_R
  2282. (MOD_MEC_R (WORK MOD_MEC_R A_SIGF A_DEPGR) * DIVTETA) ) ;
  2283. S20 = INTG MOD_MEC_R
  2284. (WORK MOD_MEC_R A_SIGF (A_DEPGR*MOD_MEC_R TETAGR) ) MAT2 ;
  2285. SI ((XTX A_PREI) > 1.E-10) ;
  2286. S50 = XTY A_PREI DEP1 MFI MUI ;
  2287. FINSI ;
  2288. JETOILE = 'ABS' (S20 - S10 - S50) ;
  2289. SI ((EGA &BOUCMIX 1) OU (EGA &BOUCMIX 2)) ;
  2290. FACTK = 0.5 / ((C_MATE * JETOILE)**0.5) ;
  2291. SINON ;
  2292. FACTK = 0.5 * ((2. * MU_1 / JETOILE)**0.5) ;
  2293. FINSI ;
  2294. * FINSI ;
  2295. * integrale M(u, u^aux)
  2296. S60 = INTG MOD_MEC_R (WORK MOD_MEC_R A_SIGF (MOD_MEC_R GRADEP * TETAGR)) ;
  2297. S70 = INTG MOD_MEC_R (WORK MOD_MEC_R SIGF (MOD_MEC_R A_DEPGR * TETAGR)) ;
  2298. S80 = INTG MOD_MEC_R (MOD_MEC_R (WORK MOD_MEC_R SIGF A_DEPGR) * DIVTETA) ;
  2299. *rem: on pourrait calculer M avec les 2 lignes ci dessous:
  2300. * S81 = INTG MOD_MEC_R (MOD_MEC_R (WORK MOD_MEC_R A_SIGF GRADEP) * DIVTETA) ;
  2301. * S80 = 0.5*(S80+S81) ;
  2302. * Termes supplementaire pour le contact frottant (btrolle 19/02/2013)
  2303. * on calcule WSAUTGR^aux = GRADIENT DU SAUT^aux
  2304. SI (BOOL.'FROT' 'ET' BOOL.'XFEM') ;
  2305. * WDEP = deplacement de la fissure de composante UX ... AX ...
  2306. * [grad(w)] = grad [w] car linearite (le saut [w] est donne par AX ...)
  2307. * on utilise un modele liee a la geo de la fissure (cohesif ou contact)
  2308. * mess 'I avec contact frottant' ;
  2309. * SIGCON = sigma*n de composantes SMX... homogene a une contrainte
  2310. * supporte sur la levre superieure
  2311. SI (NEG (TYPE SIGCON) 'MCHAML ') ;
  2312. SIGCON = REDU SIGCON (extr OBJCON2 'MAILLAGE') ;
  2313. SIGCON = CHAN 'CHAM' SIGCON OBJCON2 'STRESSES' 'CONTRAINTES' ;
  2314. FINSI ;
  2315. SIGXN = (CHAN (exco SIGCON 'SMX' 'SCAL') TYPE 'SCALAIRE') ;
  2316. SIGYN = (CHAN (exco SIGCON 'SMY' 'SCAL') TYPE 'SCALAIRE') ;
  2317. SI (EGA GDIME 3) ;
  2318. SIGZN =