Télécharger g_calcul.procedur

Retour à la liste

Numérotation des lignes :

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