Télécharger g_theta.procedur

Retour à la liste

Numérotation des lignes :

  1. * G_THETA PROCEDUR PV 21/10/20 11:49:42 11134
  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_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 => LE CHAMP_THETA FOURNI EST ECRASE' ;
  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 = ((EGA P1 PDIR1 1.E-6) OU
  547. (EGA 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 (NON (EXIS SUPTAB 'METH_AUX')) ;
  723. SI BOOL.'DANS' ;
  724. * PAR DEFAUT ON UTILISE LA METHODE U-ANALYTIQUE DANS LE CAS BI-MATERIAU
  725. SUPTAB.'METH_AUX' = 'UANA' ;
  726. SINON ;
  727. * PAR DEFAUT ON UTILISE LA METHODE G-ANALYTIQUE DANS LE CAS MONO-MATERIAU
  728. SUPTAB.'METH_AUX' = 'GANA' ;
  729. FINSI ;
  730. SINON ;
  731. SI (BOOL.'DANS' ET (NEG SUPTAB.'METH_AUX' 'UANA')) ;
  732. * ON UTILISE TOUJOURS LA METHODE U-ANALYTIQUE POUR UN BI-MATERIAU
  733. SUPTAB.'METH_AUX' = 'UANA' ;
  734. FINSI ;
  735. FINSI ;
  736. * VERIFICATION QUE LA METHODE EST UTILISABLE
  737. METH_AUX = SUPTAB.'METH_AUX' ;
  738. SI ((NEG METH_AUX 'GANA') ET (NEG METH_AUX 'UANA')
  739. ET (NEG METH_AUX 'MECA')) ;
  740. MESS 'ERREUR : ON NE CONNAIT PAS LA METHODE DEMANDEE POUR CALCULER' ;
  741. MESS ' LES CHAMPS AUXILIAIRES' ;
  742. ERRE 21 ; QUIT G_THETA ;
  743. FINSI ;
  744. SI (EGA METH_AUX 'GANA') ;
  745. SI BOOL.'DANS' ;
  746. MESS 'ATTENTION : ON NE PEUT PAS ENCORE UTILISER LA METHODE' ;
  747. MESS ' G-ANALYTIQUE LORSQUE LE FRONT EST DANS UNE' ;
  748. MESS ' INTERFACE' ;
  749. ERRE 21 ; QUIT G_THETA ;
  750. FINSI ;
  751. SI (NON BOOL.'XFEM') ;
  752. VERR = VALE 'ERRE' ;
  753. OPTI 'ERRE' 'IGNO' ;
  754. GEO2 = VERS SUPTAB.'LEVRE_SUPERIEURE' ;
  755. GEO2 = VERS SUPTAB.'LEVRE_INFERIEURE' ;
  756. * INSTRUCTION BIDON CAR SINON LA DETECTION D'ERREUR NE SE PASSE PAS BIEN...
  757. VAR = VRAI ;
  758. OPTI 'ERRE' VERR ;
  759. SI (EGA (TYPE GEO2) (MOT 'ANNULE')) ;
  760. MESS 'ERREUR : LES LEVRES NE SONT PAS ORIENTEES CORRECTEMENT' ;
  761. ERRE 21 ; QUIT G_THETA ;
  762. FINSI ;
  763. FINSI ;
  764. FINSI ;
  765. SI ((EGA METH_AUX 'MECA') ET (BOOL.'XFEM' OU (EGA GDIME 2))) ;
  766. MESS 'ERREUR : ON NE PEUT UTILISER LA METHODE MECANIQUE QUE DANS LE' ;
  767. MESS ' CAS 3D AVEC DES ELEMENTS STANDARDS' ;
  768. ERRE 21 ; QUIT G_THETA ;
  769. FINSI ;
  770. SI ((EGA METH_AUX 'UANA') ET (EGA GDIME 3)) ;
  771. MESS 'ERREUR : ON NE PEUT UTILISER LA METHODE U-ANALYTIQUE' ;
  772. MESS ' QUE DANS LE CAS 2D' ;
  773. ERRE 21 ; QUIT G_THETA ;
  774. FINSI ;
  775. FINSI ;
  776.  
  777.  
  778. * CAS IMPOSSIBLE A TRAITER
  779. * ************************
  780.  
  781. SI (EXIS SUPTAB 'MODELES_COMPOSITES') ;
  782. SI (BOOL.'DECOUPLAGE' ET BOOL.'DANS') ;
  783. SI (NON BOOL.'PARAL') ;
  784. MESS 'ERREUR : ON NE PEUT PAS ENCORE DECOUPLER LES MODES' ;
  785. MESS ' EN PRESENCE D''UNE DISCONTINUITE MATERIELLE' ;
  786. MESS ' SI LA FISSURE N APPARTIENT PAS A L INTERFACE' ;
  787. ERRE 21 ; QUIT G_THETA ;
  788. FINSI ;
  789. SI (EGA GDIME 3) ;
  790. MESS 'ERREUR : ON NE PEUT PAS ENCORE DECOUPLER LES MODES' ;
  791. MESS ' EN PRESENCE D''UNE DISCONTINUITE MATERIELLE' ;
  792. MESS ' DANS LE CAS 3D.' ;
  793. ERRE 21 ; QUIT G_THETA ;
  794. FINSI ;
  795. FINSI ;
  796. FINSI ;
  797.  
  798.  
  799.  
  800. * =============================================================================
  801.  
  802. * PREREQUIS POUR EFFECTUER LES CALCULS
  803. * ------------------------------------
  804.  
  805. * TITRES A AFFICHER SELON LE PROBLEME TRAITER
  806. * *******************************************
  807.  
  808. SI BOOL.'PASAPAS' ;
  809. TXMECANI= MOT ' Mecanique' ;
  810. TXTERMI = MOT ' Thermique' ;
  811. TXPRESS = MOT ' Volumique' ;
  812. SINON ;
  813. TXMECANI= MOT ' Mecanique' ;
  814. TXTERMI = MOT ' Thermique' ;
  815. TXPRESS = MOT ' Volumique' ;
  816. FINSI ;
  817. MC1 = MOT ' EN VISCO-THERMO-PLASTIQUE' ;
  818. MC2 = MOT ' EN VISCO-PLASTICITE' ;
  819. MC3 = MOT ' EN THERMO-PLASTICITE' ;
  820. MC4 = MOT ' EN ELASTO-PLASTICITE' ;
  821. SI (EXIS SUPTAB 'COUCHE') ;
  822. MC10 = CHAI ' (Theta ' SUPTAB.'COUCHE' ')' ;
  823. SINON ;
  824. MC10 = CHAI ' (Theta utilisateur)' ;
  825. FINSI ;
  826. SI BOOL.'J' ;
  827. CHA1 = CHAI 'INTEGRALE J EN FONCTION DU TEMPS' ;
  828. MOTTI = MOT 'J' ;
  829. MOTCO = MOT ' J' ;
  830. SI BOOL.'THER' ;
  831. TX1 = CHAI ' INTEGRALE J' MC3 ;
  832. SINON ;
  833. TX1 = CHAI ' INTEGRALE J' MC4 ;
  834. FINSI ;
  835. FINSI ;
  836. SI BOOL.'C*' ;
  837. CHA1 = CHAI 'INTEGRALE C* EN FONCTION DU TEMPS' ;
  838. MOTTI = MOT 'C*' ;
  839. MOTCO = MOT ' C*' ;
  840. SI BOOL.'THER' ;
  841. TX1 = CHAI ' INTEGRALE C*' MC1 ;
  842. SINON ;
  843. TX1 = CHAI ' INTEGRALE C*' MC2 ;
  844. FINSI ;
  845. FINSI ;
  846. SI BOOL.'C*H' ;
  847. CHA1 = CHAI 'INTEGRALE C*H EN FONCTION DU TEMPS' ;
  848. MOTTI = MOT 'C*H' ;
  849. MOTCO = MOT ' C*(H)' ;
  850. SI BOOL.'THER' ;
  851. TX1 = CHAI ' INTEGRALE C*H' MC1 ;
  852. SINON ;
  853. TX1 = CHAI ' INTEGRALE C*H' MC2 ;
  854. FINSI ;
  855. FINSI ;
  856. SI BOOL.'DJ/DA' ;
  857. SI (EXIS SUPTAB 'FISSURE_2') ;
  858. CHA1 = CHAI 'INTEGRALE CROISEE DJi/DAj EN FONCTION DU TEMPS' ;
  859. MOTTI = MOT 'DJi/DAj' ;
  860. MOTCO = MOT ' dJi/dAj' ;
  861. SI BOOL.'THER' ;
  862. TX1 = CHAI ' INTEGRALE CROISEE DJi/DAj' MC3 ;
  863. SINON ;
  864. TX1 = CHAI ' INTEGRALE CROISEE DJi/DAj' MC4 ;
  865. FINSI ;
  866. SINON ;
  867. CHA1 = CHAI 'INTEGRALE DJ/DA EN FONCTION DU TEMPS' ;
  868. MOTTI = MOT 'DJ/DA' ;
  869. MOTCO = MOT ' dJ/dA' ;
  870. SI BOOL.'THER' ;
  871. TX1 = CHAI ' INTEGRALE DJ/DA' MC3 ;
  872. SINON ;
  873. TX1 = CHAI ' INTEGRALE DJ/DA' MC4 ;
  874. FINSI ;
  875. FINSI ;
  876. FINSI ;
  877. SI BOOL.'J_DYNA' ;
  878. CHA1 = CHAI 'INTEGRALE J DYNAMIQUE EN FONCTION DU TEMPS' ;
  879. MOTTI = MOT 'J_DYNA' ;
  880. MOTCO = MOT ' J_DYNA' ;
  881. SI BOOL.'THER' ;
  882. TX1 = CHAI ' INTEGRALE J EN THERMO-ELASTO-DYNAMIQUE' ;
  883. SINON ;
  884. TX1 = CHAI ' INTEGRALE J EN ELASTO-DYNAMIQUE' ;
  885. FINSI ;
  886. FINSI ;
  887. SI BOOL.'DECOUPLAGE' ;
  888. CHA1=CHAI 'F.I.C. Ki EN FONCTION DU TEMPS' ;
  889. MOTTI = MOT 'Ki' ;
  890. MOTCO = MOT ' K' ;
  891. SI BOOL.'THER' ;
  892. TX1 = CHAI ' SEPARATION DES F.I.C.' MC3 ;
  893. SINON ;
  894. TX1 = CHAI ' SEPARATION DES F.I.C.' MC4 ;
  895. FINSI ;
  896. FINSI ;
  897. TX2 = CHAI ' Contribution due au chargement' MC10 ;
  898. TX3 = CHAI ' ________________________________________' ;
  899. SI (EXIS SUPTAB 'COUCHE') ;
  900. SI (SUPTAB.'COUCHE' > 9) ;
  901. TX3 = CHAI ' _________________________________________' ;
  902. FINSI ;
  903. SI (SUPTAB.'COUCHE' > 99) ;
  904. TX3 = CHAI ' __________________________________________' ;
  905. FINSI ;
  906. SINON ;
  907. TX3 = CHAI ' _____________________________________________' ;
  908. FINSI ;
  909.  
  910. * AFFICHAGE DU TITRE
  911. * ******************
  912.  
  913. SI BOOL.'PASAPAS' ;
  914. SI (EGA GDIME 2) ;
  915. SI BOOL.'DECOUPLAGE' ;
  916. MESS ' ' TX1 ;
  917. MESS ' ' TX2 ; MESS ' ' TX3 ;
  918. MESS 'Mode No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  919. SINON ;
  920. MESS ' ' TX1 ;
  921. MESS ' ' TX2 ; MESS ' ' TX3 ;
  922. MESS ' No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  923. FINSI ;
  924. FINSI ;
  925. SI ((EGA GDIME 3) ET (NON BOOL.'COQ')) ;
  926. SI BOOL.'DECOUPLAGE' ;
  927. MESS ' ' TX1 ;
  928. MESS ' ' TX2 ; MESS ' ' TX3 ;
  929. MESS 'Mode Noeud No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  930. SINON ;
  931. MESS ' ' TX1 ;
  932. MESS ' ' TX2 ; MESS ' ' TX3 ;
  933. MESS ' Noeud No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  934. FINSI ;
  935. FINSI ;
  936. SI BOOL.'COQ' ;
  937. MESS ' ' TX1 ;
  938. MESS ;
  939. MESS ' ' TX2 ; MESS ' ' TX3 ;
  940. MESS ' Plan No.Pas ' TXMECANI TXTERMI TXPRESS MOTCO ;
  941. FINSI ;
  942. SINON ;
  943. SI (EGA GDIME 2) ;
  944. SI BOOL.'DECOUPLAGE' ;
  945. MESS ' ' TX2 ; MESS ' ' TX3 ;
  946. MESS 'Mode ' TXMECANI TXTERMI TXPRESS MOTCO ;
  947. SINON ;
  948. MESS ' ' TX2 ; MESS ' ' TX3 ;
  949. MESS ' ' TXMECANI TXTERMI TXPRESS MOTCO ;
  950. FINSI ;
  951. FINSI ;
  952. SI ((EGA GDIME 3) ET (NON BOOL.'COQ')) ;
  953. SI BOOL.'DECOUPLAGE' ;
  954. MESS ' ' TX2 ; MESS ' ' TX3 ;
  955. MESS ' Mode Noeud ' TXMECANI TXTERMI TXPRESS MOTCO ;
  956. SINON ;
  957. MESS ' ' TX2 ; MESS ' ' TX3 ;
  958. MESS ' Noeud ' TXMECANI TXTERMI TXPRESS MOTCO ;
  959. FINSI ;
  960. FINSI ;
  961. SI BOOL.'COQ' ;
  962. MESS ' ' TX2 ; MESS ' ' TX3 ;
  963. MESS ' Plan ' TXMECANI TXTERMI TXPRESS MOTCO ;
  964. FINSI ;
  965. FINSI ;
  966.  
  967.  
  968. * NOMBRE DE BOUCLE POUR LE CALCUL DES INTEGRALES
  969. * **********************************************
  970.  
  971. SI BOOL.'PASAPAS' ;
  972. NBG = -1 ;
  973. NBDEP = DIME (SUPTAB.'SOLUTION_PASAPAS'.'TEMPS') ;
  974. SI BOOL.'REPRI' ;
  975. NBG = SUPTAB.'IABC' ;
  976. NBDEP = NBDEP - 1 - NBG ;
  977. FINSI ;
  978. SI BOOL.'PERSO1' ;
  979. NBG = (WTAB . 'PAS') - 1 ;
  980. NBDEP = 1 ;
  981. FINSI ;
  982. SINON ;
  983. NBG = -1 ;
  984. NBDEP = 1 ;
  985. FINSI ;
  986.  
  987.  
  988. * SOLUTION DU PAS PRECEDENT SI REPRISE DE CALCUL OU SI PERSO1
  989. * ***********************************************************
  990.  
  991. SI (BOOL.'REPRI' OU (BOOL.'PERSO1' ET (NBG >EG 0))) ;
  992. SIG1 = (SUPTAB.'SOLUTION_PASAPAS'.'CONTRAINTES'.NBG) REDU MOD_MEC_R ;
  993. SI (EXIS (SUPTAB.'SOLUTION_PASAPAS') 'VARIABLES_INTERNES') ;
  994. VAR1 = (SUPTAB.'SOLUTION_PASAPAS'.'VARIABLES_INTERNES'.NBG)
  995. REDU MOD_MEC_R ;
  996. SINON ;
  997. VAR1 = ZERO MOD_MEC_R 'VARINTER' ; ;
  998. FINSI ;
  999. MAT_INST = SUPTAB.'MAT_INST' ;
  1000. WELAS = 0.5*('ENER' MOD_MEC_R SIG1 ('ELAS' MOD_MEC_R SIG1 MAT_INST)) ;
  1001. WPLAS = (REDU MOD_MEC_R SUPTAB.'END1') - WELAS ;
  1002. SI (EGA ITYPEF 2) ;
  1003. VDI1 = SUPTAB.'VDI1' ;
  1004. FINSI ;
  1005. SI (((DIME MODPLA) > 0) ET BOOL.'THER') ;
  1006. WVMIS = SUPTAB.'ENV1' ;
  1007. FINSI ;
  1008. SI BOOL.'MESS' ;
  1009. MESS 'RECUP DU PAS PRECEDENT OK' ;
  1010. FINSI ;
  1011. FINSI ;
  1012.  
  1013. * CALCUL DE LA DEFORMATION THERMIQUE A TREF
  1014. SI (BOOL.'THER' ET (NON BOOL.'COQ')) ;
  1015. SI (EXIS MAT_MEC 'TREF') ;
  1016. TREF = REDU (EXCO 'TREF' MAT_MEC 'T') ELTETA ;
  1017. TREF = CHAN 'TYPE' TREF 'TEMPERATURES' ;
  1018. SINON ;
  1019. TREF = MANU 'CHML' MOD_MEC_R 'T' 0. 'TYPE' 'TEMPERATURES' ;
  1020. FINSI ;
  1021. MATREF = VARI 'NUAG' MOD_MEC_R MAT_MEC TREF ;
  1022. EPTREF = EPTH MOD_MEC_R MATREF TREF ;
  1023. EPTREF VAR2 VAR3 = INVA MOD_MEC_R EPTREF ;
  1024. EPTREF = CHAN 'CHAM' (EPTREF/3.) MOD_MEC_R 'NOEUD' ;
  1025. OBJUTI.'EPTREF' = EPTREF ;
  1026. FINSI ;
  1027.  
  1028.  
  1029. * REMPLISSAGE DE OBJUTI
  1030. * *********************
  1031.  
  1032. OBJUTI.'MOD_MEC_R' = MOD_MEC_R ;
  1033. OBJUTI.'MOTTI' = MOTTI ;
  1034. OBJUTI.'MODCOU' = MODCOU ;
  1035. OBJUTI.'TABMOD' = TABMOD ;
  1036. OBJUTI.'LINTER' = LINTER ;
  1037. OBJUTI.'MODPLA' = MODPLA ;
  1038. OBJUTI.'FOR000' = FOR000 ;
  1039. OBJUTI.'DEP000' = DEP000 ;
  1040. OBJUTI.'ITYPEF' = ITYPEF ;
  1041. OBJUTI.'NBG' = NBG ;
  1042. * DECOUPLAGE
  1043. OBJUTI.'MODSUP' = MODSUP ;
  1044. OBJUTI.'MODINF' = MODINF ;
  1045. * AJOUT BP BT POUR LE CONTACT FROTTANT
  1046. SI BOOL.'FROT' ;
  1047. OBJUTI.'OBJCON' = OBJCON ;
  1048. OBJUTI.'MAILCON' = MAILCON ;
  1049. FINSI ;
  1050. * FIN AJOUT BP BT
  1051. SI BOOL.'PERSO1' ;
  1052. OBJUTI.'ESTIMATION' = ESTIM ;
  1053. FINSI ;
  1054.  
  1055. ***************************************************
  1056. ** DECLARATION DES TABLES STOCKANT LES RESULTATS **
  1057. ***************************************************
  1058. SI BOOL.'PERSO1' ;
  1059. FLCREA = NBG EGA -1 ;
  1060. SINON ;
  1061. FLCREA = NON BOOL.'REPRI' ;
  1062. FINSI ;
  1063. SI FLCREA ;
  1064. SI ((EGA GDIME 3) OU BOOL.'PASAPAS' OU BOOL.'DECOUPLAGE') ;
  1065. SUPTAB.'RESULTATS' = TABL ;
  1066. FINSI ;
  1067. SI BOOL.'PASAPAS' ;
  1068. SI (EGA GDIME 3) ;
  1069. SUPTAB.'EVOLUTION_RESULTATS' = TABL ;
  1070. FINSI ;
  1071. SI (EGA ITYPEF 99) ;
  1072. SUPTAB.'CRIT_DECHA_GLOBAL1' = TABLE ;
  1073. SUPTAB.'CRIT_DECHA_LOCAL1' = TABLE ;
  1074. SUPTAB.'CRIT_DECHA_GLOBAL2' = TABLE ;
  1075. SUPTAB.'CRIT_DECHA_GLOBAL2_L' = TABLE ;
  1076. SUPTAB.'CRIT_DECHA_LOCAL2' = TABLE ;
  1077. FINSI ;
  1078. FINSI ;
  1079. SI (BOOL.'COQ' ET (BOOL.'PASAPAS' OU BOOL.'DECOUPLAGE')) ;
  1080. SUPTAB.'EPAISSEUR_RESULTATS' = TABL ;
  1081. FINSI ;
  1082. SI BOOL.'DECOUPLAGE' ;
  1083. REPE IRUPT GDIME ;
  1084. MODE_RUPT = EXTR 'III' 1 &IRUPT ;
  1085. SI ((EGA GDIME 3) OU BOOL.'PASAPAS') ;
  1086. SUPTAB.'RESULTATS'.MODE_RUPT = TABL ;
  1087. FINSI ;
  1088. SI (BOOL.'COQ' ET BOOL.'PASAPAS') ;
  1089. SUPTAB.'EPAISSEUR_RESULTATS'.MODE_RUPT = TABL ;
  1090. FINSI ;
  1091. FIN IRUPT ;
  1092. FINSI ;
  1093. FINSI ;
  1094. * DECLARATION DES TABLES POUR CHPO_RESULTATS ET CHAM_RESULTATS
  1095. SI (NON (EXIS SUPTAB 'CHPO_RESULTATS')) ;
  1096. SI BOOL.'PASAPAS' ;
  1097. SUPTAB.'CHPO_RESULTATS' = TABL ;
  1098. SINON ;
  1099. SUPTAB.'CHPO_RESULTATS' = VIDE 'CHPOINT'/'DISCRET' ;
  1100. FINSI ;
  1101. FINSI ;
  1102. SI (NON (EXIS SUPTAB 'CHAM_RESULTATS')) ;
  1103. SI BOOL.'PASAPAS' ;
  1104. SUPTAB.'CHAM_RESULTATS' = TABL ;
  1105. SINON ;
  1106. SUPTAB.'CHAM_RESULTATS' = VIDE 'MCHAML' ;
  1107. FINSI ;
  1108. FINSI ;
  1109.  
  1110.  
  1111. * =============================================================================
  1112.  
  1113. * APPEL A G_CALCUL POUR EFFECTUER LES CALCULS ET ENREGISTRER LES RESULTATS
  1114. * ------------------------------------------------------------------------
  1115.  
  1116. G_CALCUL SUPTAB OBJUTI BOOL ;
  1117.  
  1118. FINPROC ;
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  

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