Télécharger g_theta.procedur

Retour à la liste

Numérotation des lignes :

  1. * G_THETA PROCEDUR JB251061 22/08/09 21:15:02 11426
  2. DEBPROC G_THETA SUPTAB*'TABLE';
  3. * =============================================================================
  4. * PROCEDURE DE MISE EN OEUVRE DE LA METHODE G-THETA
  5. * -------------------------------------------------
  6. *
  7. * DESCRIPTION : CETTE PROCEDURE PERMET DE CALCULER DES INTEGRALES DE MECANIQUE
  8. * DE LA RUPTURE. CES INTEGRALES SONT :
  9. * 1) LE TAUX DE RESTITUTION D'ENERGIE G (OU INTEGRALE DE
  10. * CONTOUR J) EN ELASTO-PLASTICITE OU ELASTO-DYNAMIQUE;
  11. * 2) dJ/dA EN ELASTOPLASTICITE;
  12. * 3) C* POUR LE FLUAGE SECONDAIRE STATIONNAIRE;
  13. * 4) C*H POUR LE FLUAGE PRIMAIRE SOUS CHARGEMENT RADIAL.
  14. *
  15. * IL EST EGALEMENT POSSIBLE DE CALCULER LES FACTEURS D'INTENSITE
  16. * DES CONTRAINTES (KI, KII, KIII) VIA L'OPTION 'DECOUPLAGE'.
  17. * =============================================================================
  18.  
  19. * INTRODUCTION DE VARIABLES UTILES
  20. * --------------------------------
  21.  
  22. * CREATION DE LA TABLE DE BOOLEENS
  23. * ********************************
  24.  
  25. BOOL = TABL;
  26. BOOL.'TRAC' = FAUX;
  27. BOOL.'MESS' = VRAI;
  28. SI BOOL.'MESS';
  29. SAUT 'LIGNE';
  30. MESS '------------------' 'DEBUT DE LA PROCEDURE G_THETA'
  31. '--------------------';
  32. FINSI;
  33.  
  34. * CONFIGURATION INITIALE
  35. * **********************
  36.  
  37. CONFIG0 = FORM;
  38.  
  39.  
  40. * =============================================================================
  41.  
  42. * DETERMINATION DU CAS DEMANDE ET VERIFICATION DES DONNEES OBLIGATOIRES
  43. * ---------------------------------------------------------------------
  44.  
  45. * APPEL A G_CAS
  46. * *************
  47.  
  48. OBJUTI = G_CAS SUPTAB BOOL;
  49. SI (EGA (TYPE OBJUTI) (MOT 'ANNULE'));
  50. MESS 'ERREUR : IL Y A EU UN PROBLEME INATTENDU PENDANT LA LECTURE DES';
  51. MESS ' DONNEES';
  52. QUIT G_THETA;
  53. FINSI;
  54. NMESS = OBJUTI.'NMESS';
  55.  
  56.  
  57. * LECTURE DES DONNEES FOURNIES
  58. * ****************************
  59.  
  60. GDIME = OBJUTI.'DIMENSION';
  61. GMODE = OBJUTI.'MODE';
  62. MOD_MEC = OBJUTI.'MOD_MEC';
  63. MAT_MEC = OBJUTI.'MAT_MEC';
  64. SI BOOL.'PASAPAS';
  65. WTAB = OBJUTI.'WTAB';
  66. FINSI;
  67. MAILLAGE = OBJUTI.'MAILLAGE';
  68. M_FRONT = OBJUTI.'FRONT';
  69.  
  70.  
  71. * QUELQUES DONNEES NON ISSUES DE G_CAS
  72. * ************************************
  73.  
  74. * TYPE D'ELEMENTS DU MAILLAGE
  75. LELEM1 = MAILLAGE ELEM 'TYPE';
  76.  
  77. * VERIFICATIONS DANS LE CAS DE PERSO1
  78. SI BOOL.'PERSO1';
  79. SI BOOL.'MESS';
  80. MESS 'utilisation de PERSO1 en cours de dvlpt';
  81. FINSI;
  82. SI (EXIS SUPTAB.'SOLUTION_PASAPAS' 'ESTIMATION');
  83. ESTIM = SUPTAB.'SOLUTION_PASAPAS'.'ESTIMATION';
  84. SINON;
  85. MESS 'ERREUR : il faut une ESTIMATION dans la SOLUTION_PASAPAS';
  86. ERRE 21 ; QUIT G_THETA;
  87. FINSI;
  88. SI (NON (EXIS SUPTAB 'MAILLAGE_REDUIT'));
  89. MESS 'Attention! utilisation de PERSO1 sans MAILLAGE_REDUIT';
  90. MESS 'uniquement valable dans le cas de fissure stationnaire';
  91. FINSI;
  92. FINSI;
  93.  
  94.  
  95. * MOTS DE COMPOSANTES UTILES
  96. * **************************
  97.  
  98. * LISTMOT SCAL :
  99. MTS1 = MOTS 'SCAL';
  100. * LISTMOTS POUR LE DEPLACEMENT ET POUR LA FORCE :
  101. * ON EXTRAIT LES GDIME PREMIERS MOTS CAR ON NE VEUT PAS DES ROTATIONS
  102. * DANS LE CAS DES COQUES
  103. MUI = EXTR (EXTR MOD_MEC 'DEPL') (LECT 1 PAS 1 GDIME);
  104. MFI = EXTR (EXTR MOD_MEC 'FORC') (LECT 1 PAS 1 GDIME);
  105. MU1 = EXTR MUI 1 ; MU2 = EXTR MUI 2;
  106. MF1 = EXTR MFI 1 ; MF2 = EXTR MFI 2;
  107. SI (EGA GDIME 3);
  108. MF3 = EXTR MFI 3;
  109. FINSI;
  110.  
  111.  
  112. * CREATION DE CHAR1 SI PASAPAS
  113. * ****************************
  114.  
  115. SI BOOL.'PASAPAS';
  116. CHAR1 = SUPTAB.'SOLUTION_PASAPAS'.'CHARGEMENT';
  117. FINSI;
  118.  
  119.  
  120. * DONNEES EN CAS DE CONTACT
  121. * *************************
  122.  
  123. SI ((NON BOOL.'PASAPAS') ET BOOL.'FROT');
  124. OBJCON = SUPTAB.'MODELE_FISSURE';
  125. MAICON = EXTR OBJCON 'MAILLAGE';
  126. FINSI;
  127.  
  128.  
  129. * =============================================================================
  130.  
  131. * EXTRACTION DU MAILLAGE, DU CHAMP THETA ET DE LA DIRECTION DE PROPAGATION
  132. * ------------------------------------------------------------------------
  133.  
  134. * MODELE MULTICOUCHES DANS LE CAS DE COQUE
  135. * ****************************************
  136.  
  137. SI BOOL.'COQ';
  138. M_DETA = EXTR MOD_MEC 'ZONE';
  139. SI (EXIS SUPTAB 'ELEMENT_MULTICOUCHE');
  140. ELMULT = SUPTAB.'ELEMENT_MULTICOUCHE';
  141. SI (NEG (TYPE ELMULT) 'MAILLAGE');
  142. MESS 'ERREUR : L ELEMENT EN MULTICOUCHE DOIT';
  143. MESS ' ETRE UN OBJET DE TYPE MAILLAGE';
  144. ERRE 21 ; QUIT G_THETA;
  145. FINSI;
  146. SI (NEG (NBEL ELMULT) 1);
  147. MESS 'ERREUR : ON VEUT UN SEUL ELEMENT EN MULTICOUCHE';
  148. ERRE 21 ; QUIT G_THETA;
  149. FINSI;
  150. SINON;
  151. MESS 'ERREUR : IL FAUT DESIGNER UN ELEMENT EN MULTICOUCHE';
  152. ERRE 21 ; QUIT G_THETA;
  153. FINSI;
  154. M_ELMU = EXTR (REDU MOD_MEC ELMULT) 'ZONE';
  155. SI ((DIME M_ELMU) '<' 10);
  156. MESS 'ERREUR : IL FAUT AU MOINS 3 COUCHES (peau inf, peau';
  157. MESS ' sup, ligne moyenne) D EPAISSEUR INFERIEURE';
  158. MESS ' A 1E-4*(EPAISSEUR TOTALE) + 2 COUCHES';
  159. MESS ' INTERMEDIAIRES POUR L ELEMENT DESIGNE EN';
  160. MESS ' MULTICOUCHE PROCHE DE LA FISSURE.';
  161. ERRE 21 ; QUIT G_THETA;
  162. FINSI;
  163. PEX1 = PROG ; LMO1 = LECT ; MODCOU = TABLE ; EPAITO = 0.;
  164. REPE NBJ5 ((DIME M_ELMU)/2);
  165. I1 = (2 * &NBJ5) - 1;
  166. MODCOU.&NBJ5 = M_ELMU.I1;
  167. EX1 = EXTR (REDU MODCOU.&NBJ5 MAT_MEC) 'EXCE' 1 1 1;
  168. EP1 = EXTR (REDU MODCOU.&NBJ5 MAT_MEC) 'EPAI' 1 1 1;
  169. EPAITO = EPAITO + EP1;
  170. PEX1 = PEX1 ET (PROG EX1);
  171. LMO1 = LMO1 ET (LECT &NBJ5);
  172. FIN NBJ5;
  173. NSUPE = 0 ; NMOYE = 0 ; NINFE = 0;
  174. REPE NBJ6 (DIME MODCOU);
  175. EX1 = EXTR PEX1 &NBJ6;
  176. LM1 = EXTR LMO1 &NBJ6;
  177. SI (EGA EX1 (EPAITO/2.) 1.E-4);
  178. NSUPE = LM1;
  179. FINSI;
  180. SI (EGA EX1 0. 1.E-10);
  181. NMOYE = LM1;
  182. FINSI;
  183. SI (EGA EX1 (EPAITO/(-2.)) 1.E-4);
  184. NINFE = LM1;
  185. FINSI;
  186. FIN NBJ6;
  187. SI (EGA NSUPE 0);
  188. MESS 'ERREUR : IL FAUT UNE COUCHE EN PEAU SUPERIEURE';
  189. MESS ' D EPAISSEUR INFERIEURE A';
  190. MESS ' 1E-4*(EPAISSEUR TOTALE) ';
  191. ERRE 21 ; QUIT G_THETA;
  192. FINSI;
  193. SI (EGA NMOYE 0);
  194. MESS 'ERREUR : IL FAUT UNE COUCHE AU PLAN MEDIAN';
  195. MESS ' AYANT UN EXCENTREMENT NUL';
  196. ERRE 21 ; QUIT G_THETA;
  197. FINSI;
  198. SI (EGA NINFE 0);
  199. MESS 'ERREUR : IL FAUT UNE COUCHE EN PEAU INFERIEURE';
  200. MESS ' D EPAISSEUR INFERIEURE A';
  201. MESS ' 1E-4*(EPAISSEUR TOTALE) ';
  202. ERRE 21 ; QUIT G_THETA;
  203. FINSI;
  204. SUPTAB.'EPAISSEUR' = EPAITO;
  205. M_SUPE = MODCOU.NSUPE;
  206. M_MOYE = MODCOU.NMOYE;
  207. M_INFE = MODCOU.NINFE;
  208. FINSI;
  209.  
  210.  
  211. * MAILLAGE UTILISE DANS LA RESOLUTION PAR E.F.
  212. * ********************************************
  213.  
  214. SI BOOL.'COQ';
  215. TMULT = TABL;
  216. REPE NBJ8 ((DIME M_DETA)/2);
  217. M1 = M_DETA.(2*&NBJ8);
  218. SI (EXIS TMULT M1);
  219. ITER NBJ8;
  220. FINSI;
  221. M2 = EXTR (REDU MOD_MEC M1) 'ZONE';
  222. SI (> (DIME M2) 2);
  223. TMULT.M1 = VRAI;
  224. REPE NBJ9 (((DIME M2)/2) - 1);
  225. MAILLAGE = DIFF MAILLAGE M1;
  226. FIN NBJ9;
  227. FINSI;
  228. FIN NBJ8;
  229. FINSI;
  230. SUPTAB.'MAILLAGE' = MAILLAGE;
  231.  
  232.  
  233. * DETERMINATION DES CHAMPS THETA ET PI ET DE LA ZONE DE TRAVAIL ELTETA
  234. * ********************************************************************
  235.  
  236. SI (EXIS SUPTAB 'TAB_THETA');
  237. OTER SUPTAB 'TAB_THETA';
  238. FINSI;
  239. SI (EXIS SUPTAB 'TAB_PI');
  240. OTER SUPTAB 'TAB_PI';
  241. FINSI;
  242. SI (EXIS SUPTAB 'COUCHE');
  243. MESS 'CHAMP_THETA NON FOURNI PAR L''UTILISATEUR';
  244. SI (EXIS SUPTAB 'CHAMP_THETA');
  245. * CHAMP_THETA ET COUCHE SONT TOUS DEUX FOURNIS, ON ECRASE CHAMP_THETA
  246. MESS 'Nombre de couches donne => on ne tient pas compte du champ fourni'/3;
  247. OTER SUPTAB 'CHAMP_THETA';
  248. FINSI;
  249. SINON;
  250. MESS 'CHAMP_THETA FOURNI PAR L UTILISATEUR';
  251. FINSI;
  252. SI BOOL.'XFEM';
  253. * ON APPELLE CH_TETX POUR CALCULER CHAMP_THETA
  254. CH_THETX SUPTAB OBJUTI BOOL;
  255. SINON;
  256. * ON APPELLE CH_TETA POUR CALCULER CHAMP_THETA
  257. CH_THETA SUPTAB OBJUTI BOOL;
  258. FINSI;
  259.  
  260. * DETERMINATION DE ELTETA
  261. * ELTETA1 = MAILLAGE OU TETA N EST PAS NUL + 1 COUCHE
  262. CHTHETA = SUPTAB.'CHAMP_THETA';
  263. SI (NEG (TYPE CHTHETA) 'CHPOINT');
  264. CHTHETA = CHTHETA.'GLOBAL';
  265. FINSI;
  266. * UU = EXTR CHTHETA 'MAILLAGE';
  267. NTHETA = (PSCA CHTHETA CHTHETA MUI MUI)**0.5;
  268. ELTETA1 = MAILLAGE ELEM 'APPU' 'LARG' (NTHETA POIN 'SUPERIEUR' 0.);
  269. SI (NON BOOL.'XFEM');
  270. ELTETA1 = MAILLAGE ELEM 'APPU' 'LARG' ELTETA1;
  271. FINSI;
  272. SI (EXIS SUPTAB 'MAILLAGE_REDUIT');
  273. * ELTETA = MAILLAGE FOURNI PAR L UTILISATEUR
  274. ELTETA = SUPTAB.'MAILLAGE_REDUIT';
  275. * VERIFICATION DE LA COMPATIBILITE AVEC CHTHETA
  276. SI ((NBEL (DIFF ELTETA ELTETA1)) NEG 0);
  277. MESS 'ATTENTION : LE MAILLAGE_REDUIT DONNE EST INCOMPATIBLE AVEC LE';
  278. MESS ' CHAMP THETA, IL SERA DONC IGNORE.';
  279. ELTETA = ELTETA1;
  280. FINSI;
  281. SINON;
  282. ELTETA = ELTETA1;
  283. FINSI;
  284. SI BOOL.'TRAC';
  285. VCHTHETA = VECT CHTHETA 'DEPL' 'BLEU';
  286. TRAC VCHTHETA (MAILLAGE ET M_FRONT) 'TITR' 'CHAMP_THETA';
  287. FINSI;
  288. * ON STOCKE LES DIRECTIONS DANS UTILTET1 POUR PROPAGATION EN XFEM
  289. * DIRECTION DE PROPAGATION : DIR1
  290. * DIRECTION TANGENTE AU FRONT : DIR2
  291. * DIRECTION DE CISAILLEMENT SI SEPARATION DE MODES : DIR3
  292. SUPTAB.'UTILTET1' = TABL;
  293. REPE I 3;
  294. MDIR = CHAI 'DIRECTION' &I;
  295. SI (EXIS OBJUTI MDIR);
  296. SUPTAB.'UTILTET1'.MDIR = OBJUTI.MDIR;
  297. FINSI;
  298. FIN I;
  299.  
  300.  
  301. * ON COMPLETE ELTETA
  302. * ******************
  303.  
  304. * AJOUT EVENTUEL DE ELPI A ELTETA
  305. SI ((EXIS SUPTAB 'FRONT_FISSURE_2') ET BOOL.'DJ/DA');
  306. ELPI = SUPTAB.'FRONT_FISSURE_2';
  307. REPE MAIL2 ((SUPTAB.'COUCHE') + 1);
  308. ELPI = MAILLAGE ELEM 'APPU' 'LARG' ELPI;
  309. FIN MAIL2;
  310. ELTETA = ELTETA ET ELPI;
  311. FINSI;
  312.  
  313. * AJOUT DU NOEUD SUPPORT EN DEF.PL.GENERALISEES
  314. SI (EGA GMODE 'PLANGENE');
  315. ELTETA = ELTETA ET (VALE 'MODE' 'PLANGENE');
  316. FINSI;
  317. ELPOI1 = CHAN ELTETA 'POI1';
  318.  
  319. * L'ELEMENT SUPPORTANT LE MODELE MULTICOUCHE
  320. * DOIT ETRE DANS LA ZONE THETA
  321. SI BOOL.'COQ';
  322. N1 = NBNO ELTETA;
  323. N2 = NBNO (ELTETA ET (EXTR M_MOYE 'MAIL'));
  324. SI (NEG N1 N2);
  325. MESS 'ERREUR : L ELEMENT EN MULTICOUCHE DESIGNE POUR CALCULER';
  326. MESS ' L INTEGRALE SE TROUVE EN DEHORS DE LA ZONE';
  327. MESS ' DEFINIE PAR LE NOMBRE DE COUCHES DONNE.';
  328. ERRE 21 ; QUIT G_THETA;
  329. FINSI;
  330. FINSI;
  331.  
  332. * ELTETA SERA PRATIQUE POUR LES TESTS DE REPRISE
  333. OBJUTI.'ELTETA' = ELTETA;
  334. SUPTAB.'ELTET1' = ELTETA;
  335.  
  336.  
  337. * TESTS DE COMPATIBILITE
  338. * **********************
  339.  
  340. * BOOL.'REPRI' = VRAI SI REPRISE DE CALCUL, FAUX SINON
  341. BOOL.'REPRI' = FAUX;
  342. SI (BOOL.'PASAPAS' ET (NON BOOL.'PERSO1'));
  343. N1 = DIME (SUPTAB.'SOLUTION_PASAPAS'.'TEMPS');
  344. SI ((EXIS SUPTAB 'IABC') ET
  345. (EXIS SUPTAB 'ELTET1') ET
  346. (EXIS SUPTAB 'RESULTATS') ET
  347. (EXIS SUPTAB 'EVOLUTION_RESULTATS'));
  348. BOOL.'REPRI' = (N1 - 1) > SUPTAB.'IABC';
  349. MESS 'on tente une reprise...';
  350. FINSI;
  351. FINSI;
  352.  
  353. * TESTS DE COMPATIBILITE SI REPRISE DE CALCUL
  354. SI BOOL.'REPRI';
  355. * ON VERIFIE QUE L OBJECTIF RESTE LE MEME
  356. SI (NEG SUPTAB.'OBJ1' SUPTAB.'OBJECTIF');
  357. MESS 'ERREUR : REPRISE IMPOSSIBLE CAR L OBJECTIF DU';
  358. MESS ' CALCUL ACTUEL N EST PAS LE MEME QUE';
  359. MESS ' CELUI DU CALCUL PRECEDENT';
  360. ERRE 21 ; QUIT G_THETA;
  361. FINSI;
  362. * ON DOIT AVOIR LE MEME NOMBRE DE COUCHE (ON SUPPOSE LA FISSURE FIXE)
  363. SI ((EXIS SUPTAB 'COUCHE') ET (EXIS SUPTAB 'COU1'));
  364. SI (NEG SUPTAB.'COU1' SUPTAB.'COUCHE');
  365. MESS 'ERREUR : REPRISE IMPOSSIBLE CAR LE NOMBRE DE';
  366. MESS ' COUCHE ACTUEL N EST PAS LE MEME QUE';
  367. MESS ' CELUI UTILISE POUR LE CALCUL PRECEDENT';
  368. ERRE 21 ; QUIT G_THETA;
  369. FINSI;
  370. FINSI;
  371. * RESTE A VERIFIER LA COMPATIBILITE DES SUPPORT DE CHAMP TETA VIA ELTETA
  372. * ELTETA DOIT ETRE INCLUS DANS ELTET1
  373. ELTET1 = SUPTAB.'ELTET1';
  374. SI(NEG (NBNO ELTETA) (NBNO (ELTET1 INTE ELTETA)));
  375. MESS 'ERREUR : REPRISE IMPOSSIBLE CAR LE SUPPORT DU ';
  376. MESS ' CHAMP_THETA FOURNI N EST PAS INCLUS DANS';
  377. MESS ' CELUI UTILISE POUR LE CALCUL PRECEDENT';
  378. ERRE 21 ; QUIT G_THETA;
  379. FINSI;
  380. MESS 'REPRISE DU CALCUL AUTORISE !';
  381. FINSI;
  382.  
  383. * TESTS DE COMPATIBILITE SI UTILISATION DE PERSO1
  384. SI (BOOL.'PERSO1' ET (EXIS SUPTAB 'ELTET1'));
  385. ELTET1 = SUPTAB.'ELTET1';
  386. SI(NEG (NBNO ELTETA) (NBNO (ELTET1 INTE ELTETA)));
  387. MESS 'ERREUR : REPRISE IMPOSSIBLE CAR LE SUPPORT DU ';
  388. MESS ' CHAMP_THETA FOURNI N EST PAS INCLUS DANS';
  389. MESS ' CELUI UTILISE POUR LE CALCUL PRECEDENT';
  390. ERRE 21 ; QUIT G_THETA;
  391. FINSI;
  392. SI BOOL.'MESS';
  393. MESS 'POURSUITE DU CALCUL VIA PERSO1 AUTORISE !';
  394. FINSI;
  395. FINSI;
  396.  
  397.  
  398. * =============================================================================
  399.  
  400. * MODELES ET MATERIAUX DANS LA ZONE DE TRAVAIL
  401. * --------------------------------------------
  402.  
  403. * VERIFICATION DES DONNEES D ENTREE POUR MODELES_COMPOSITES
  404. SI (EXIS SUPTAB 'MODELES_COMPOSITES');
  405. N1 = DIME SUPTAB.'MODELES_COMPOSITES';
  406. M1 = EXTR MOD_MEC 'MAIL';
  407. M2 = VIDE 'MAILLAGE';
  408. REPE BIN4 N1;
  409. T1 = TYPE SUPTAB.'MODELES_COMPOSITES'.&BIN4;
  410. SI (NEG T1 'MMODEL ');
  411. MESS 'ERREUR : LE TYPE DE L OBJET No' &BIN4 'DANS LA';
  412. MESS ' TABLE MODELES_COMPOSITES EST INCORRECTE';
  413. ERRE 21 ; QUIT G_THETA;
  414. FINSI;
  415. M2 = M2 ET (EXTR SUPTAB.'MODELES_COMPOSITES'.&BIN4 'MAIL');
  416. FIN BIN4;
  417. SI (NEG (NBNO M1) (NBNO M2));
  418. MESS 'ERREUR : TOUS LES MODELES DE MATERIAUX';
  419. MESS ' COMPOSITES NE SONT PAS DONNES';
  420. ERRE 21 ; QUIT G_THETA;
  421. FINSI;
  422. FINSI;
  423.  
  424. * CREATION DE MOD_MEC ET TABMOD
  425. TABMOD = TABL;
  426. SI (EXIS SUPTAB 'MODELES_COMPOSITES');
  427. * CAS DE MODELES COMPOSITES (AVEC DISCONTINUITE) : ON A DU TRAVAIL
  428. MOD_MEC_R = VIDE 'MMODEL';
  429. REPE BIN1 (DIME SUPTAB.'MODELES_COMPOSITES');
  430. M1 = SUPTAB.'MODELES_COMPOSITES'.&BIN1;
  431. M2 = EXTR M1 'MAIL';
  432. N1 = NBNO M2;
  433. N2 = NBNO ELTETA;
  434. N3 = NBNO (ELTETA ET M2);
  435. * SI ON A DES NOEUDS EN COMMUN, ...
  436. SI (NEG (N1 + N2) N3);
  437. M2 = CHAN M2 'POI1';
  438. * ... ON LES RECUPERE
  439. E1 = (DIFF ELPOI1 M2) DIFF (ELPOI1 ET M2);
  440. N1 = NBNO (CONT ELTETA);
  441. N2 = NBNO (E1 ET (CONT ELTETA));
  442. * SI TOUS LES NOEUDS EN COMMUN SONT SUR LE CONTOUR
  443. * => PAS D ELEMENTS A RECUPERER => ON PASSE AU MODELE SUIVANT
  444. SI (EGA N1 N2);
  445. ITER BIN1;
  446. FINSI;
  447. * SINON, ON RECUPERE LES ELEMENTS CONCERNES ET LE MODELE REDUIT
  448. E1 = MAILLAGE ELEM 'APPU' 'STRI' E1;
  449. N1 = (DIME TABMOD) + 1;
  450. TABMOD.N1 = REDU M1 E1;
  451. MOD_MEC_R = MOD_MEC_R ET TABMOD.N1;
  452. FINSI;
  453. FIN BIN1;
  454. SINON;
  455. * CAS DE MODELES SANS DISCONTINUITE : ON A MOINS DE TRAVAIL
  456. MOD_MEC_R = REDU MOD_MEC ELTETA;
  457. TABMOD.1 = MOD_MEC_R;
  458. FINSI;
  459. NBOBJ = DIME TABMOD;
  460. MAT_MEC = REDU MAT_MEC MOD_MEC_R;
  461.  
  462. * CHAMP EPAISSEUR DANS LA ZONE DE TRAVAIL
  463. SI BOOL.'COQ';
  464. EPAICH = (CHAN (EXCO MAT_MEC 'EPAI' 'SCAL')
  465. 'STRESSES' MOD_MEC_R) CHAN 'TYPE' 'SCALAIRE';
  466. FINSI;
  467.  
  468.  
  469. * CALCUL DE C* PAR DEUX TYPES DE MODELE FLUAGE
  470. * ********************************************
  471. *** ITYPEF = 1 MODELE FLUAGE POUR LEQUEL ON A UNE EXPRESSION
  472. *** EXPLICITE DE L'INTEGRATION DE LA VITESSE DE
  473. *** DEFORMATION DE FLUAGE SUR LE TEMPS
  474. *** ITYPEF = 2 MODELE FLUAGE POUR LEQUEL ON N'OBTIENT PAS
  475. *** FACILEMENT CETTE EXPRESSION EXPLICITE
  476. *** ITYPEF = 99 SI EN ELASTO OU THERMO-ELASTO-PLASTICITE
  477.  
  478. * DETERMINATION DE ITYPEF
  479. ITYPEF = 99;
  480. SI (BOOL.'C*' OU BOOL.'C*H');
  481. SI ((EXIS MOD_MEC_R 'MATE' 'FLUAGE' 'NORTON') OU
  482. (EXIS MOD_MEC_R 'MATE' 'FLUAGE' 'POLYNOMIAL'));
  483. ITYPEF = 1;
  484. FINSI;
  485. SI ((EXIS MOD_MEC_R 'MATE' 'FLUAGE' 'BLACKBURN') OU
  486. (EXIS MOD_MEC_R 'MATE' 'FLUAGE' 'RCCMR_316') OU
  487. (EXIS MOD_MEC_R 'MATE' 'FLUAGE' 'RCCMR_304') OU
  488. (EXIS MOD_MEC_R 'MATE' 'FLUAGE' 'LEMAITRE'));
  489. ITYPEF = 2;
  490. FINSI;
  491. FINSI;
  492.  
  493.  
  494. * INTERFACES DANS LA ZONE DE TRAVAIL
  495. * **********************************
  496.  
  497. * CREATION DES INTERFACES INTER-MODELE
  498. BOOL.'PARAL' = VRAI ; LINTER = TABL;
  499. SI ((EXIS SUPTAB 'MODELES_COMPOSITES') ET ((DIME TABMOD) > 1));
  500. * ON BOUCLE SUR LES MODELES QUI APPARTIENNENT A ELTETA
  501. REPE BIN2 ((DIME TABMOD) - 1);
  502. M1 = EXTR (TABMOD.&BIN2) 'MAIL';
  503. IIN3 = &BIN2;
  504. NIN3 = (DIME TABMOD) - &BIN2;
  505. REPE BIN3 NIN3;
  506. IIN3 = IIN3 + 1;
  507. LE1 = LECT &BIN2 IIN3;
  508. M2 = EXTR (TABMOD . IIN3) 'MAIL';
  509. * ON ITERE SI (M1 INCLUT DANS M2) OU (M2 INCLUT DANS M1)
  510. SI (EGA (NBNO (M1 DIFF M2)) 0);
  511. ITER BIN3;
  512. FINSI;
  513. * ON ITERE SI M1 ET M2 N ONT PAS DE NOEUDS COMMUNS
  514. SI (EGA ((NBNO M1) + (NBNO M2)) (NBNO (M1 ET M2)));
  515. ITER BIN3;
  516. FINSI;
  517. * ON RECUPERE L INTERFACE M1-M2
  518. L1 = (CONT M1) ELEM 'APPU' (CONT M2);
  519. N1 = NBNO M1 ; N2 = NBNO M2;
  520. * LO1=VRAI <=> IL EXISTE DES NOEUDS COMMUNS A M1 ET M2
  521. LO1 = NEG (N1 + N2) (NBNO (M1 ET M2));
  522. * LO2=VRAI <=> IL N'Y A PAS 1 NOEUD COMMUN A M1 ET M2
  523. LO2 = NEG ('ABS' ((N1 + N2) - (NBNO (M1 ET M2)))) 1;
  524. * LO4 = M1 ET M2 FORMENT BIEN UNE INTERFACE ET NE SE CHEVAUCHENT PAS
  525. LO4 = NEG (NBEL L1) 0;
  526. SI (LO1 ET LO2 ET LO4);
  527. * ON AJOUTE L INTERFACE CAR ON A >1 NOEUDS EN COMMUN A M1 ET M2
  528. LINTER.LE1 = L1;
  529. * BOOL.'PARAL'=VRAI <=> TOUTES LES INTERFACES SONT // A LA FISSURE
  530. * SI BOOL.'PARAL'=FAUX IL FAUT AJOUTER DES TERMES D INTERFACES AU C
  531. P1 = (POIN L1 1) MOIN (POIN L1 2);
  532. P1 = P1 / (NORM P1);
  533. * PETITE MODIF CAR DIR1 DOIT ETRE UN CHPOINT DESORMAIS
  534. * -> A VERIFIER ?
  535. PDIR1 = RESU OBJUTI.'DIRECTION1';
  536. PRESU = (EXTR PDIR1 'MAIL') POIN 1;
  537. XDIR1 = EXTR PDIR1 PRESU 'UX';
  538. YDIR1 = EXTR PDIR1 PRESU 'UY';
  539. SI (GDIME EGA 2);
  540. PDIR1 = XDIR1 YDIR1;
  541. SINON;
  542. ZDIR1 = EXTR PDIR1 PRESU 'UZ';
  543. PDIR1 = XDIR1 YDIR1 ZDIR1;
  544. FINSI;
  545. PDIR1 = PDIR1 / (NORM PDIR1);
  546. LO1 = ('&lt;EG' ('DIST' P1 PDIR1 ) 1.E-6) 'OU'
  547. ('&lt;EG' ('DIST' P1 (-1.*PDIR1)) 1.E-6);
  548. BOOL.'PARAL' = BOOL.'PARAL' ET LO1;
  549. FINSI;
  550. FIN BIN3;
  551. FIN BIN2;
  552. FINSI;
  553.  
  554. * DANS LE CAS DECOUPLAGE SEULEMENT :
  555. * TEST SI FRONT_FISSURE EST DANS UNE INTERFACE
  556. BOOL.'DANS' = FAUX;
  557. SI ((NEG (DIME LINTER) 0) ET BOOL.'DECOUPLAGE');
  558. IND1 = INDE LINTER;
  559. REPE BIN4 (DIME IND1);
  560. LE1 = IND1.&BIN4;
  561. M1 = CHAN LINTER.LE1 'POI1';
  562. N1 = NBNO M1;
  563. N2 = NBNO (M1 ET SUPTAB.'FRONT_FISSURE');
  564. SI (EGA N1 N2);
  565. BOOL.'DANS' = VRAI;
  566. QUIT BIN4;
  567. SINON;
  568. ITER BIN4;
  569. FINSI;
  570. FIN BIN4;
  571. FINSI;
  572. * SI OUI (BOOL.'DANS'),ON DETERMINE LES MODELES SUP ET INF
  573. MODINF = 0 ; MODSUP = 0;
  574. SI BOOL.'DANS';
  575. * ON REDEFINIT : BOOL.'PARAL'=VRAI <=> L'INTERFACE A LAQUELLE APPARTIENT LA FISSURE E
  576. BOOL.'PARAL' = FAUX;
  577. M1 = EXTR TABMOD.(EXTR LE1 1) 'MAIL';
  578. M2 = EXTR TABMOD.(EXTR LE1 2) 'MAIL';
  579. LSUP = SUPTAB.'LEVRE_SUPERIEURE';
  580. LINF = SUPTAB.'LEVRE_INFERIEURE';
  581. N1 = NBNO M1;
  582. N2 = NBNO M2;
  583. NLSUP = NBNO LSUP;
  584. NLINF = NBNO LINF;
  585. N1SUP = NBNO (M1 ET LSUP);
  586. N2INF = NBNO (M2 ET LINF);
  587. SI ( ((N1 + NLSUP - N1SUP) > 1) ET ((N2 + NLINF - N2INF) > 1));
  588. * LSUP ET MOD1 ONT PLUS D'1 POINT COMMUN ET IDEM POUR LINF ET MOD2
  589. MODSUP = TABMOD.(EXTR LE1 1);
  590. MODINF = TABMOD.(EXTR LE1 2);
  591. SINON;
  592. N1INF = NBNO (M1 ET LINF);
  593. N2SUP = NBNO (M2 ET LSUP);
  594. SI ( ((N1 + NLINF - N1INF) > 1) ET ((N2 + NLSUP - N2SUP) > 1));
  595. MODSUP = TABMOD.(EXTR LE1 2);
  596. MODINF = TABMOD.(EXTR LE1 1);
  597. SINON;
  598. MESS 'ERREUR : INCOMPATIBILITE ENTRE LE MODELES_COMPOSITES';
  599. MESS ' ET LES LEVRE_SUPERIEURE ET _INFERIEURE';
  600. ERRE 21 ; QUIT G_THETA;
  601. FINSI;
  602. FINSI;
  603. * LA FISSURE EST BIEN DANS LE PROLONGEMENT DE L' INTERFACE
  604. BOOL.'PARAL' = VRAI;
  605. FINSI;
  606. * REM: il faudrait egalement verifier que MODSUP et MODINF suffisent a decrire E
  607.  
  608.  
  609. * MODPLA : table indicee par entier pour stocker les modeles
  610. * mecaniques de chaque objet MMODEL.
  611. **************************************************
  612. *** Elle est vide si le modele est elastique ou elastoplastique
  613. *** avec une courbe de traction independante de la temperature.
  614. *** Dans le cas contraire la table vaut :
  615. *** 1 si le modele est plastique isotrope. Alors une
  616. *** nouvelle courbe de traction EPSE-SIGMA est faite.
  617. *** 2 si le modele est plastique cinematique
  618. *** 3 si le modele est plastique parfaite
  619.  
  620. BOOL.'GRADYOUN' = FAUX ; BOOL.'GRADNU' = FAUX;
  621. BOOL.'GRADALPH' = FAUX ; MODPLA = TABLE ; TABTRA = TABLE;
  622.  
  623. REPE BCMOD1 NBOBJ;
  624. MODEI = TABMOD.&BCMOD1;
  625. MATEI = REDU MAT_MEC MODEI;
  626.  
  627. * ON DETERMINE SI ON A DES GRADIENTS DE PROPRIETES (THERMO-)ELASTIQUES
  628. MPROP = MOTS 'YOUN' 'NU';
  629. SI BOOL.'THER';
  630. MPROP = MPROP ET 'ALPH';
  631. FINSI;
  632. REPE IPROP (DIME MPROP);
  633. MCOMP = EXTR MPROP &IPROP;
  634. MGRAD = CHAI 'GRAD' MCOMP;
  635. PRO1 = EXCO MATEI MCOMP;
  636. TYP1 = TYPE (EXTR PRO1 MCOMP 1 1 1);
  637. SI (EGA TYP1 'EVOLUTIO');
  638. BOOL.MGRAD = VRAI;
  639. SINON;
  640. DPRO1 = (MAXI PRO1) - (MINI PRO1);
  641. CRI1 = (MAXI PRO1 'ABS') * 1.E-10;
  642. SI (DPRO1 > CRI1);
  643. BOOL.MGRAD = VRAI;
  644. FINSI;
  645. FINSI;
  646. FIN IPROP;
  647.  
  648. * COURBE DE TRACTION
  649. SI (EXIS MATEI 'ECRO');
  650. TR1 = EXCO MATEI 'ECRO';
  651. TYPTR = TYPE (EXTR TR1 'ECRO' 1 1 1);
  652. SI (EGA TYPTR 'NUAGE ');
  653. MODPLA.&BCMOD1 = 1;
  654. TRA1 = EXTR TR1 'ECRO' 1 1 1 ; COM1 = EXTR TRA1 'COMP';
  655. NOMEVO1 = MOT 'ECRO' ; NOMFLO1 = MOT 'T';
  656. REPE BNUA1 (DIME TRA1 'UPLE');
  657. SI (EGA &BNUA1 1);
  658. NUA1 = EXTR TRA1 'MINI' NOMFLO1;
  659. SINON;
  660. NUA1 = EXTR TRA1 'SUPE' NOMFLO1 (T1 + 1.E-10);
  661. FINSI;
  662. T1 = EXTR NUA1 NOMFLO1;
  663. EV1 = EXTR NUA1 NOMEVO1;
  664. PSIG1 = EXTR EV1 ORDO ; PEPS1 = EXTR EV1 'ABSC';
  665. VYOU1 = (EXTR 2 PSIG1) / (EXTR 2 PEPS1);
  666. PEPS2 = PROG;
  667. REPE BSIG1 ((DIME PSIG1) - 1);
  668. VA1 = (EXTR (&BSIG1 + 1) PEPS1) -
  669. ((EXTR (&BSIG1 + 1) PSIG1) / VYOU1);
  670. PEPS2 = PEPS2 ET (PROG VA1);
  671. FIN BSIG1;
  672. EV1 = EVOL 'MANU' 'EPSE' PEPS2 SIGM ('ENLE' PSIG1 1);
  673. SI (&BNUA1 EGA 1);
  674. TRA2 = 'NUAG' 'COMP' NOMFLO1 T1 'COMP' NOMEVO1 EV1;
  675. SINON;
  676. TRA2 = TRA2 ET ('NUAG' 'COMP' NOMFLO1
  677. T1 'COMP' NOMEVO1 EV1);
  678. FINSI;
  679. FIN BNUA1;
  680. TABTRA.&BCMOD1 = TRA2;
  681. * ON ENLEVE LA COURBE DE TRACTION SI ELLE DEPEND DE
  682. * LA TEMPERATURE (OPERATION TROP COUTEUSE POUR VARI)
  683. MAT0 = MATEI ; LCOMP1 = EXTR MAT0 'COMP';
  684. REPE BCOM1 (DIME LCOMP1);
  685. C1 = EXTR LCOMP1 &BCOM1;
  686. SI (NEG C1 'ECRO');
  687. SI (EGA &BCOM1 1);
  688. MATEI = 'MATE' MODEI C1 (EXCO C1 MAT0);
  689. SINON;
  690. MATEI = MATEI ET ('MATE' MODEI C1 (EXCO C1 MAT0));
  691. FINSI;
  692. FINSI;
  693. FIN BCOM1;
  694. FINSI;
  695. * SIGY (et pas TRAC)
  696. SINON;
  697. SI (EXIS MATEI 'SIGY');
  698. SI1 = EXCO MATEI 'SIGY';
  699. TYPSI = TYPE (EXTR SI1 'SIGY' 1 1 1);
  700. SI (EXIS MATEI 'H');
  701. H1 = EXCO MATEI 'H';
  702. TYPH = TYPE (EXTR H1 'H' 1 1 1);
  703. SI ((EGA TYPH 'EVOLUTIO') OU
  704. (EGA TYPSI 'EVOLUTIO'));
  705. MODPLA.&BCMOD1 = 2;
  706. FINSI;
  707. SINON;
  708. SI (EGA TYPSI 'EVOLUTIO');
  709. MODPLA.&BCMOD1 = 3;
  710. FINSI;
  711. FINSI;
  712. FINSI;
  713. FINSI;
  714. FIN BCMOD1;
  715. BOOL.'GRADPROP' = BOOL.'GRADYOUN' OU BOOL.'GRADNU' OU BOOL.'GRADALPH' OU ((DIME MODPLA) '>' 0);
  716.  
  717.  
  718. * METHODE DE CALCUL DES CHAMPS AUXILIAIRES SI DECOUPLAGE (VOIR G_AUX)
  719. * *******************************************************************
  720.  
  721. SI BOOL.'DECOUPLAGE';
  722. SI (BOOL.'DANS' ET (NEG GDIME 2));
  723. MESS 'ERREUR : CAS BI-MATERIAU TRAITABLE UNIQUEMENT EN 2D';
  724. ERRE 21;
  725. FINSI;
  726. SI (NON (EXIS SUPTAB 'METH_AUX'));
  727. MESS 'L''indice METH_AUX n''est pas fourni => choix par defaut'
  728. /NMESS;
  729. SI BOOL.'DANS';
  730. * PAR DEFAUT ON UTILISE LA METHODE U-ANALYTIQUE DANS LE CAS BI-MATERIAU 2D
  731. SUPTAB.'METH_AUX' = 'UANA';
  732. SINON;
  733. * PAR DEFAUT ON UTILISE LA METHODE G-ANALYTIQUE DANS LE CAS MONO-MATERIAU
  734. SUPTAB.'METH_AUX' = 'GANA';
  735. FINSI;
  736. SINON;
  737. SI (BOOL.'DANS' ET (NEG SUPTAB.'METH_AUX' 'UANA'));
  738. * ON UTILISE TOUJOURS LA METHODE U-ANALYTIQUE POUR UN BI-MATERIAU
  739. SUPTAB.'METH_AUX' = 'UANA';
  740. MESS 'ATTENTION : SEULE LA METHODE UANA EST UTILISABLE POUR';
  741. MESS ' LE CAS D''UN BI-MATERIAU => ON L''UTILISE';
  742. FINSI;
  743. SAUT 'LIGNE';
  744. FINSI;
  745. * VERIFICATION QUE LA METHODE EST UTILISABLE
  746. METH_AUX = SUPTAB.'METH_AUX';
  747. SI ((NEG METH_AUX 'GANA') ET (NEG METH_AUX 'UANA')
  748. ET (NEG METH_AUX 'MECA'));
  749. MESS 'ERREUR : ON NE CONNAIT PAS LA METHODE DEMANDEE POUR CALCULER';
  750. MESS ' LES CHAMPS AUXILIAIRES';
  751. ERRE 21 ; QUIT G_THETA;
  752. FINSI;
  753. SI (EGA METH_AUX 'GANA');
  754. SI (NON BOOL.'XFEM');
  755. VERR = VALE 'ERRE';
  756. OPTI 'ERRE' 'IGNO';
  757. GEO2 = VERS SUPTAB.'LEVRE_SUPERIEURE';
  758. GEO2 = VERS SUPTAB.'LEVRE_INFERIEURE';
  759. * INSTRUCTION BIDON CAR SINON LA DETECTION D'ERREUR NE SE PASSE PAS BIEN...
  760. VAR = VRAI;
  761. OPTI 'ERRE' VERR;
  762. SI (EGA (TYPE GEO2) (MOT 'ANNULE'));
  763. MESS 'ERREUR : LES LEVRES NE SONT PAS ORIENTEES CORRECTEMENT';
  764. ERRE 21 ; QUIT G_THETA;
  765. FINSI;
  766. FINSI;
  767. FINSI;
  768. SI ((EGA METH_AUX 'MECA') ET (BOOL.'XFEM' OU (EGA GDIME 2)));
  769. MESS 'ERREUR : ON NE PEUT UTILISER LA METHODE MECANIQUE QUE DANS LE';
  770. MESS ' CAS 3D AVEC DES ELEMENTS STANDARDS';
  771. ERRE 21 ; QUIT G_THETA;
  772. FINSI;
  773. SI ((EGA METH_AUX 'UANA') ET (EGA GDIME 3));
  774. MESS 'ERREUR : ON NE PEUT UTILISER LA METHODE U-ANALYTIQUE';
  775. MESS ' QUE DANS LE CAS 2D';
  776. ERRE 21 ; QUIT G_THETA;
  777. FINSI;
  778. FINSI;
  779.  
  780.  
  781. * CAS IMPOSSIBLE A TRAITER
  782. * ************************
  783.  
  784. SI (EXIS SUPTAB 'MODELES_COMPOSITES');
  785. SI (BOOL.'DECOUPLAGE' ET BOOL.'DANS');
  786. SI (NON BOOL.'PARAL');
  787. MESS 'ERREUR : ON NE PEUT PAS ENCORE DECOUPLER LES MODES';
  788. MESS ' EN PRESENCE D''UNE DISCONTINUITE MATERIELLE';
  789. MESS ' SI LA FISSURE N APPARTIENT PAS A L INTERFACE';
  790. ERRE 21 ; QUIT G_THETA;
  791. FINSI;
  792. SI (EGA GDIME 3);
  793. MESS 'ERREUR : ON NE PEUT PAS ENCORE DECOUPLER LES MODES';
  794. MESS ' EN PRESENCE D''UNE DISCONTINUITE MATERIELLE';
  795. MESS ' DANS LE CAS 3D.';
  796. ERRE 21 ; QUIT G_THETA;
  797. FINSI;
  798. FINSI;
  799. FINSI;
  800.  
  801.  
  802.  
  803. * =============================================================================
  804.  
  805. * PREREQUIS POUR EFFECTUER LES CALCULS
  806. * ------------------------------------
  807.  
  808. * NOMBRE DE BOUCLE POUR LE CALCUL DES INTEGRALES
  809. * **********************************************
  810.  
  811. SI BOOL.'PASAPAS';
  812. NBG = -1;
  813. NBDEP = DIME (SUPTAB.'SOLUTION_PASAPAS'.'TEMPS');
  814. SI BOOL.'REPRI';
  815. NBG = SUPTAB.'IABC';
  816. NBDEP = NBDEP - 1 - NBG;
  817. FINSI;
  818. SI BOOL.'PERSO1';
  819. NBG = (WTAB . 'PAS') - 1;
  820. NBDEP = 1;
  821. FINSI;
  822. SINON;
  823. NBG = -1;
  824. NBDEP = 1;
  825. FINSI;
  826.  
  827.  
  828. * SOLUTION DU PAS PRECEDENT SI REPRISE DE CALCUL OU SI PERSO1
  829. * ***********************************************************
  830.  
  831. SI (BOOL.'REPRI' OU (BOOL.'PERSO1' ET (NBG >EG 0)));
  832. SIG1 = (SUPTAB.'SOLUTION_PASAPAS'.'CONTRAINTES'.NBG) REDU MOD_MEC_R;
  833. SI (EXIS (SUPTAB.'SOLUTION_PASAPAS') 'VARIABLES_INTERNES');
  834. VAR1 = (SUPTAB.'SOLUTION_PASAPAS'.'VARIABLES_INTERNES'.NBG)
  835. REDU MOD_MEC_R;
  836. SINON;
  837. VAR1 = ZERO MOD_MEC_R 'VARINTER' ;;
  838. FINSI;
  839. MAT_INST = SUPTAB.'MAT_INST';
  840. WELAS = 0.5*('ENER' MOD_MEC_R SIG1 ('ELAS' MOD_MEC_R SIG1 MAT_INST));
  841. WPLAS = (REDU MOD_MEC_R SUPTAB.'END1') - WELAS;
  842. SI (EGA ITYPEF 2);
  843. VDI1 = SUPTAB.'VDI1';
  844. FINSI;
  845. SI (((DIME MODPLA) > 0) ET BOOL.'THER');
  846. WVMIS = SUPTAB.'ENV1';
  847. FINSI;
  848. SI BOOL.'MESS';
  849. MESS 'RECUP DU PAS PRECEDENT OK';
  850. FINSI;
  851. FINSI;
  852.  
  853. * CALCUL DE LA DEFORMATION THERMIQUE A TREF
  854. SI (BOOL.'THER' ET (NON BOOL.'COQ'));
  855. SI (EXIS MAT_MEC 'TREF');
  856. TREF = REDU (EXCO 'TREF' MAT_MEC 'T') ELTETA;
  857. TREF = CHAN 'TYPE' TREF 'TEMPERATURES';
  858. SINON;
  859. TREF = MANU 'CHML' MOD_MEC_R 'T' 0. 'TYPE' 'TEMPERATURES';
  860. FINSI;
  861. MATREF = VARI 'NUAG' MOD_MEC_R MAT_MEC TREF;
  862. EPTREF = EPTH MOD_MEC_R MATREF TREF;
  863. EPTREF VAR2 VAR3 = INVA MOD_MEC_R EPTREF;
  864. EPTREF = CHAN 'CHAM' (EPTREF/3.) MOD_MEC_R 'NOEUD';
  865. OBJUTI.'EPTREF' = EPTREF;
  866. FINSI;
  867.  
  868.  
  869. * REMPLISSAGE DE OBJUTI
  870. * *********************
  871.  
  872. OBJUTI.'MOD_MEC_R' = MOD_MEC_R;
  873. OBJUTI.'MODCOU' = MODCOU;
  874. OBJUTI.'TABMOD' = TABMOD;
  875. OBJUTI.'LINTER' = LINTER;
  876. OBJUTI.'MODPLA' = MODPLA;
  877. OBJUTI.'ITYPEF' = ITYPEF;
  878. OBJUTI.'NBG' = NBG;
  879. * DECOUPLAGE
  880. OBJUTI.'MODSUP' = MODSUP;
  881. OBJUTI.'MODINF' = MODINF;
  882. * AJOUT BP BT POUR LE CONTACT FROTTANT
  883. SI BOOL.'FROT';
  884. OBJUTI.'OBJCON' = OBJCON;
  885. OBJUTI.'MAILCON' = MAILCON;
  886. FINSI;
  887. * FIN AJOUT BP BT
  888. SI BOOL.'PERSO1';
  889. OBJUTI.'ESTIMATION' = ESTIM;
  890. FINSI;
  891.  
  892. ***************************************************
  893. ** DECLARATION DES TABLES STOCKANT LES RESULTATS **
  894. ***************************************************
  895. SI BOOL.'PERSO1';
  896. FLCREA = NBG EGA -1;
  897. SINON;
  898. FLCREA = NON BOOL.'REPRI';
  899. FINSI;
  900. SI FLCREA;
  901. SI ((EGA GDIME 3) OU BOOL.'PASAPAS' OU BOOL.'DECOUPLAGE');
  902. SUPTAB.'RESULTATS' = TABL;
  903. FINSI;
  904. SI BOOL.'PASAPAS';
  905. SI (EGA GDIME 3);
  906. SUPTAB.'EVOLUTION_RESULTATS' = TABL;
  907. FINSI;
  908. SI (EGA ITYPEF 99);
  909. SUPTAB.'CRIT_DECHA_GLOBAL1' = TABLE;
  910. SUPTAB.'CRIT_DECHA_LOCAL1' = TABLE;
  911. SUPTAB.'CRIT_DECHA_GLOBAL2' = TABLE;
  912. SUPTAB.'CRIT_DECHA_GLOBAL2_L' = TABLE;
  913. SUPTAB.'CRIT_DECHA_LOCAL2' = TABLE;
  914. FINSI;
  915. FINSI;
  916. SI (BOOL.'COQ' ET (BOOL.'PASAPAS' OU BOOL.'DECOUPLAGE'));
  917. SUPTAB.'EPAISSEUR_RESULTATS' = TABL;
  918. FINSI;
  919. SI BOOL.'DECOUPLAGE';
  920. REPE IRUPT GDIME;
  921. MODE_RUPT = EXTR 'III' 1 &IRUPT;
  922. SI ((EGA GDIME 3) OU BOOL.'PASAPAS');
  923. SUPTAB.'RESULTATS'.MODE_RUPT = TABL;
  924. FINSI;
  925. SI (BOOL.'COQ' ET BOOL.'PASAPAS');
  926. SUPTAB.'EPAISSEUR_RESULTATS'.MODE_RUPT = TABL;
  927. FINSI;
  928. FIN IRUPT;
  929. FINSI;
  930. FINSI;
  931. * DECLARATION DES TABLES POUR CHPO_RESULTATS ET CHAM_RESULTATS
  932. SI (NON (EXIS SUPTAB 'CHPO_RESULTATS'));
  933. SI BOOL.'PASAPAS';
  934. SUPTAB.'CHPO_RESULTATS' = TABL;
  935. SINON;
  936. SUPTAB.'CHPO_RESULTATS' = VIDE 'CHPOINT'/'DISCRET';
  937. FINSI;
  938. FINSI;
  939. SI (NON (EXIS SUPTAB 'CHAM_RESULTATS'));
  940. SI BOOL.'PASAPAS';
  941. SUPTAB.'CHAM_RESULTATS' = TABL;
  942. SINON;
  943. SUPTAB.'CHAM_RESULTATS' = VIDE 'MCHAML';
  944. FINSI;
  945. FINSI;
  946.  
  947.  
  948. * =============================================================================
  949.  
  950. * APPEL A G_AUX SI DECOUPLAGE
  951. * --------------------------
  952.  
  953. SI BOOL.'DECOUPLAGE';
  954. OBJUTI.'MAT_INST' = MAT_MEC;
  955. CH_AUX = G_AUX SUPTAB OBJUTI BOOL;
  956. SI (EGA (TYPE CH_AUX) (MOT 'ANNULE'));
  957. MESS 'ERREUR : G_AUX A RENCONTRE UN PROBLEME';
  958. QUIT G_CALCUL;
  959. FINSI;
  960. SUPTAB.'CH_AUX' = CH_AUX;
  961. FINSI;
  962.  
  963. * APPEL A G_CALCUL POUR EFFECTUER LES CALCULS ET ENREGISTRER LES RESULTATS
  964. * ------------------------------------------------------------------------
  965.  
  966. G_CALCUL SUPTAB OBJUTI BOOL;
  967.  
  968. * MESSAGE DE FIN DE LA PROCEDURE
  969. SI BOOL.'MESS';
  970. SAUT 'LIGNE';
  971. MESS '-------------------' 'FIN DE LA PROCEDURE G_THETA'
  972. '---------------------';
  973. SAUT 'LIGNE';
  974. FINSI;
  975.  
  976. FINPROC;
  977.  
  978.  
  979.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales