Télécharger g_theta.procedur

Retour à la liste

Numérotation des lignes :

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

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