Télécharger g_calcul.procedur

Retour à la liste

Numérotation des lignes :

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