Télécharger g_calcul.procedur

Retour à la liste

Numérotation des lignes :

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