Télécharger g_calcul.procedur

Retour à la liste

Numérotation des lignes :

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