Télécharger g_cas.procedur

Retour à la liste

Numérotation des lignes :

  1. * G_CAS PROCEDUR JB251061 22/08/09 21:15:02 11426
  2. * =============================================================================
  3. * PROCEDURE D'ANALYSE DE LA TABLE D'ENTREE FOURNIE A G_THETA
  4. * ----------------------------------------------------------
  5. *
  6. * DESCRIPTION : DETERMINE SI LE CALCUL DEMANDE EST PREVU PAR LA VERSION
  7. * ACTUELLE DE G_THETA, ET PREVIENT L'UTILISATEUR SI LE CAS
  8. * ENVISAGE N'EST PAS TESTE OU VALIDE PAR LA BASE DE CAS TESTS
  9. * ACTUELLE.
  10. * ON EN PROFITE EGALEMENT POUR CREER CERTAINS OBJETS QUI SERONT
  11. * UTILISES PAR G_THETA.
  12. * =============================================================================
  13. DEBP G_CAS SUPTAB*'TABLE' BOOL*'TABLE';
  14.  
  15. * I - DETERMINATION DU CAS DEMANDE ET VERIFICATION DES DONNEES OBLIGATOIRES
  16. * -------------------------------------------------------------------------
  17.  
  18. NMESS = 2;
  19. NDEC = NMESS + 20;
  20.  
  21. * I.1 - LECTURE DES DONNEES FOURNIES A SUPTAB
  22. * *******************************************
  23.  
  24. * I.1.A - OBJECTIF
  25. SI (NON (EXIS SUPTAB 'OBJECTIF'));
  26. MESS 'ERREUR : IL FAUT SPECIFIER L INTEGRALE';
  27. MESS ' A CALCULER PAR UN MOT';
  28. ERRE 21 ; QUIT G_CAS;
  29. SINON;
  30. SI (NEG (TYPE SUPTAB.'OBJECTIF') 'MOT');
  31. MESS 'ERREUR : OBJECTIF INCORRECT. ON ATTEND UN ''MOT''.';
  32. ERRE 21 ; QUIT G_CAS;
  33. FINSI;
  34. GOBJ = MOT SUPTAB.'OBJECTIF';
  35. FINSI;
  36. * MESSAGE
  37. MESS 'OBJECTIF :'/NMESS (MOT GOBJ)/NDEC;
  38.  
  39. * I.1.B - DIMENSION ET MODE DE CALCUL
  40. GDIME = VALE 'DIME';
  41. GMODE = VALE 'MODE';
  42. * MESSAGE
  43. MESSDIME = CHAI 'DIMENSION :'/NMESS GDIME/NDEC;
  44. MESS MESSDIME;
  45. MESSMODE = CHAI 'MODE :'/NMESS GMODE/NDEC;
  46. MESS MESSMODE;
  47.  
  48. * I.1.C - TYPE DE SOLUTION DONNEE
  49. SI (NON ((EXIS SUPTAB 'SOLUTION_RESO') OU (EXIS SUPTAB 'SOLUTION_PASAPAS')));
  50. MESS 'ERREUR : IL FAUT UNE SOLUTION PROVENANT DE PASAPAS';
  51. MESS ' OU DE RESO POUR DETERMINER L''INTEGRALE';
  52. ERRE 21 ; QUIT G_CAS;
  53. SINON;
  54. SI (EXIS SUPTAB 'SOLUTION_RESO');
  55. SI (NEG (TYPE SUPTAB.'SOLUTION_RESO') 'CHPOINT');
  56. MESS 'ERREUR : SOLUTION_RESO INCORRECTE.'
  57. MESS ' ON ATTEND UN ''CHPOINT''.';
  58. ERRE 21 ; QUIT G_CAS;
  59. FINSI;
  60. GSOLU = 'LINEAIRE';
  61. SINON;
  62. GSOLU = MOT 'PASAPAS';
  63. FINSI;
  64. FINSI;
  65.  
  66. * I.1.D - MODELE MECANIQUE, MATERIAU ET HYPOTHESE DE CALCUL
  67. SI (EGA GSOLU 'LINEAIRE');
  68. SI (NON (EXIS SUPTAB 'MODELE'));
  69. MESS 'ERREUR : UNE SOLUTION ISSUE DE RESO NECESSITE UN MODELE';
  70. ERRE 21 ; QUIT G_CAS;
  71. FINSI;
  72. SI (NON (EXIS SUPTAB 'CARACTERISTIQUES'));
  73. MESS 'ERREUR : IL FAUT DONNER LE CHAMP CARACTERISTIQUE';
  74. ERRE 21 ; QUIT G_CAS;
  75. FINSI;
  76. MOD_TOT = SUPTAB.'MODELE';
  77. MOD_MEC = EXTR MOD_TOT 'FORM' 'MECANIQUE';
  78. MAT_MEC = REDU (SUPTAB.'CARACTERISTIQUES') MOD_MEC;
  79. GHYPO = 'HPP';
  80. SINON;
  81. SI (EXIS SUPTAB.'SOLUTION_PASAPAS' 'WTABLE');
  82. MOD_TOT = SUPTAB.'SOLUTION_PASAPAS'.'MODELE';
  83. WTAB = SUPTAB.'SOLUTION_PASAPAS'.'WTABLE';
  84. MOD_MEC = WTAB.'MOD_MEC';
  85. MAT_MEC = WTAB.'MAT_MEC';
  86. SINON;
  87. MESS 'Absence de WTABLE ! l execution continue ...';
  88. MOD_TOT = SUPTAB.'SOLUTION_PASAPAS'.'MODELE';
  89. WTAB = SUPTAB.'SOLUTION_PASAPAS';
  90. MOD_MEC = EXTR MOD_TOT 'FORM' 'MECANIQUE';
  91. MAT_MEC = REDU (WTAB.'CARACTERISTIQUES') MOD_MEC;
  92. FINSI;
  93. SUPTAB.'MODELE' = MOD_MEC;
  94. SI WTAB.'GRANDS_DEPLACEMENTS';
  95. GHYPO = 'GRANDS_DEPLACEMENTS';
  96. SINON;
  97. GHYPO = 'HPP';
  98. FINSI;
  99. SI WTAB.'DYNAMIQUE';
  100. GSOLU = CHAI GSOLU ' ' 'DYNAMIQUE';
  101. SINON;
  102. GSOLU = CHAI GSOLU ' ' 'STATIQUE';
  103. FINSI;
  104. FINSI;
  105. GMTYPE = TABL;
  106. * COMPORTEMENT ELASTIQUE
  107. SI (EXIS MOD_MEC 'MATE' 'ISOTROPE');
  108. GMTYPE.'ELASTIQUE' = MOT 'ELASTIQUE ISOTROPE';
  109. SINON;
  110. GMTYPE.'ELASTIQUE' = MOT 'ELASTIQUE ANISOTROPE';
  111. FINSI;
  112. * COMPORTEMENT PLASTIQUE
  113. MPLAS = TABL;
  114. MPLAS.(1) MPLAS.(2) MPLAS.(3) = 'ISOTROPE' 'PARFAIT' 'CINEMATIQUE';
  115. SI (EXIS MOD_MEC 'MATE' 'PLASTIQUE');
  116. GMTYPE.'PLASTIQUE' = MOT 'PLASTIQUE';
  117. REPE I (DIME MPLAS);
  118. SI (EXIS MOD_MEC 'MATE' MPLAS.&I);
  119. GMTYPE.'PLASTIQUE' = CHAI GMTYPE.'PLASTIQUE' ' ' MPLAS.&I;
  120. FINSI;
  121. FIN I;
  122. FINSI;
  123. * COMPORTEMENT VISCOPLASTIQUE
  124. MVISC = TABL;
  125. MVISC.(1) MVISC.(2) MVISC.(3) MVISC.(4) MVISC.(5) MVISC.(6) =
  126. 'NORTON' 'POLYNOMIAL' 'BLACKBURN' 'RCCMR_316' 'RCCMR_304' 'LEMAITRE';
  127. SI (EXIS MOD_MEC 'MATE' 'FLUAGE');
  128. GMTYPE.'FLUAGE' = MOT 'FLUAGE';
  129. REPE I (DIME MVISC);
  130. SI (EXIS MOD_MEC 'MATE' MVISC.&I);
  131. GMTYPE.'FLUAGE' = CHAI GMTYPE.'FLUAGE' ' ' MVISC.&I;
  132. FINSI;
  133. FIN I;
  134. FINSI;
  135.  
  136. * PROPRIETES QUI DEPENDENT D'UN PARAMETRE
  137. CPARA = EXTR MAT_MEC 'COVA';
  138. PPARA = MOTS;
  139. REPE I (DIME CPARA);
  140. PPARA = PPARA ET (EXTR CPARA &I);
  141. FIN I;
  142. * PROPRIETES QUI DEPENDENT DE LA POSITION
  143. MCOMP = EXTR MAT_MEC 'COMP';
  144. PPOSI = MOTS;
  145. REPE I (DIME MCOMP);
  146. ICOMP = EXTR MCOMP &I;
  147. SI (NON (EXIS PPARA ICOMP));
  148. ICHAM = EXCO MAT_MEC ICOMP;
  149.  
  150. * On teste le Type car 'COVA' a des exceptions (comme 'ECRO' qui est un EVOLUTION mais consideree constante)
  151. * Amelioration a prevoir : boucle sur les SOUS-ZONES et s'assurer qu'il y a bien au moins 1 élément...
  152. * On aimerait bien avoir un operateur qui repond par VRAI ou FAUX si un objet est constant !!!
  153. ValTyp='TYPE' ('EXTR' ICHAM ICOMP 1 1 1);
  154. SI ('NEG' ValTyp ('MOT' 'FLOTTANT')); 'ITER' I ; 'FINS';
  155. SI (NEG (MINI ICHAM) (MAXI ICHAM));
  156. PPOSI = PPOSI ET ICOMP;
  157. FINSI;
  158. FINSI;
  159. FIN I;
  160. * PROPRIETES A GRADIENT
  161. PGRAD = PPARA ET PPOSI;
  162. * DISCONTINUITES MATERIELLES
  163. SI (EXIS SUPTAB 'MODELES_COMPOSITES');
  164. DISMAT = VRAI;
  165. TABMOD = SUPTAB.'MODELES_COMPOSITES';
  166. SINON;
  167. DISMAT = FAUX;
  168. FINSI;
  169. * MESSAGE TYPE DE SOLUTION
  170. MESS 'CALCUL :'/NMESS GSOLU/NDEC;
  171. * MESSAGE HYPOTHESE DE CALCUL
  172. MESS 'HYPOTHESE :'/NMESS GHYPO/NDEC;
  173. * MESSAGE MATERIAU
  174. MESSMAT = CHAI 'COMPORTEMENT :'/NMESS GMTYPE.'ELASTIQUE'/NDEC;
  175. SI (EXIS GMTYPE 'PLASTIQUE');
  176. MESSMAT = CHAI MESSMAT ' ' GMTYPE.'PLASTIQUE';
  177. FINSI;
  178. SI (EXIS GMTYPE 'FLUAGE');
  179. MESSMAT = CHAI MESSMAT ' ' GMTYPE.'FLUAGE';
  180. FINSI;
  181. MESS MESSMAT;
  182. * MESSAGE VARIATION DES PROPRIETES
  183. SI DISMAT;
  184. MESSVAR = CHAI 'PROPRIETES :'/NMESS 'HOMOGENES PAR MORCEAUX'/NDEC;
  185. SINON;
  186. SI ((DIME PGRAD) > 0);
  187. MESSVAR = CHAI 'PROPRIETES :'/NMESS 'HETEROGENES A GRADIENT'/NDEC;
  188. SINON;
  189. MESSVAR = CHAI 'PROPRIETES :'/NMESS 'HOMOGENES'/NDEC;
  190. FINSI;
  191. FINSI;
  192. MESS MESSVAR;
  193.  
  194. * I.1.E - MAILLAGE ET TYPE D'ELEMENTS
  195. MAILLAGE = EXTR MOD_MEC 'MAIL';
  196. SUPTAB.'FISSURE' = VIDE 'MAILLAGE';
  197. SI (EXIS SUPTAB 'LEVRE_SUPERIEURE');
  198. SUPTAB.'FISSURE' = SUPTAB.'FISSURE' ET SUPTAB.'LEVRE_SUPERIEURE';
  199. FINSI;
  200. SI (EXIS SUPTAB 'LEVRE_INFERIEURE');
  201. SUPTAB.'FISSURE' = SUPTAB.'FISSURE' ET SUPTAB.'LEVRE_INFERIEURE';
  202. FINSI;
  203. * ELEMENTS LINEAIRES OU NONLINEAIRES
  204. ELTYPE = MAILLAGE ELEM 'TYPE';
  205. ELLIN = MOTS 'TRI3' 'QUA4' 'CUB8' 'PRI6' 'PYR5' 'TET4';
  206. ELQUA = MOTS 'TRI6' 'QUA8' 'CU20' 'PR15' 'PY13' 'TE10';
  207. IENLE = LECT;
  208. REPE I (DIME ELTYPE);
  209. SI (NON (EXIS (ELLIN ET ELQUA) (EXTR ELTYPE &I)));
  210. IENLE = IENLE ET (LECT &I);
  211. FINSI;
  212. FIN I;
  213. SI ((DIME IENLE) NEG 0);
  214. MESS 'ATTENTION : IL Y A DES ELEMENTS ATYPIQUES DANS LE MAILLAGE...';
  215. MESS ' LE CALCUL SE POURSUIT QUAND MEME.';
  216. ELTYPE = ENLE ELTYPE IENLE;
  217. FINSI;
  218. SI (NON ((EXIS ELLIN ELTYPE 'ET') OU (EXIS ELQUA ELTYPE 'ET')));
  219. MESS 'ATTENTION : IL Y A A LA FOIS DES ELEMENTS LINEAIRES ET DES';
  220. MESS ' ELEMENTS QUADRATIQUES DANS LE MAILLAGE';
  221. GELDEG = 1.5;
  222. SINON;
  223. SI (EXIS ELLIN ELTYPE 'ET');
  224. GELDEG = 1;
  225. SINON;
  226. GELDEG = 2;
  227. FINSI;
  228. FINSI;
  229. * ELEMENTS XFEM OU STANDARD (MASSIF OU COQUE)
  230. SI (EXIS MOD_MEC 'ELEM' 'XQ4R' 'XC8R');
  231. GELTYP = MOT 'XFEM';
  232. SINON;
  233. EL2D = MOTS 'TRI3' 'TRI6' 'QUA4' 'QUA8';
  234. EL3D = MOTS 'CUB8' 'CU20' 'PRI6' 'PR15' 'PYR5' 'PY13' 'TET4' 'TE10';
  235. SI (NON ((EXIS EL2D ELTYPE 'ET') OU (EXIS EL3D ELTYPE 'ET')));
  236. MESS 'ERREUR : LE MAILLAGE SUPPORT DU MODELE EST CONSTITUE';
  237. MESS ' D''ELEMENTS 2D ET 3D.';
  238. ERRE 21 ; QUIT G_CAS;
  239. SINON;
  240. SI ((EGA GDIME 3) ET (EXIS EL2D ELTYPE 'ET'));
  241. GELTYP = 'STD COQUE';
  242. SINON;
  243. GELTYP = MOT 'STD MASSIF';
  244. FINSI;
  245. FINSI;
  246. FINSI;
  247. * MESSAGE
  248. MESSELEM = CHAI 'ELEMENTS :'/NMESS GELTYP/NDEC;
  249. MESSELEM = CHAI MESSELEM ' DEGRE' ' ' GELDEG;
  250. MESS MESSELEM;
  251.  
  252. * I.1.F - CHARGEMENT
  253. GCHAR = TABL;
  254. SI (EXIS MOD_TOT 'MATE' 'PRESSION');
  255. SI (EGA GELTYP 'XFEM');
  256. GCHAR.'PRESSION' = 'HORS LEVRES';
  257. SINON;
  258. MODCHA = EXTR MOD_TOT 'FORM' 'CHARGEMENT';
  259. MODPRE = EXTR MODCHA 'COMP' 'PRESSION';
  260. MAILPTOT = EXTR MODPRE 'MAIL';
  261. MAILPF = INTE MAILPTOT (SUPTAB.'FISSURE');
  262. SI ((NBEL MAILPF) > 0);
  263. GCHAR.'PRESSION' = 'SUR LEVRES';
  264. SINON;
  265. GCHAR.'PRESSION' = 'HORS LEVRES';
  266. FINSI;
  267. FINSI;
  268. SINON;
  269. GCHAR.'PRESSION' = 'AUCUN';
  270. FINSI;
  271. SI (EGA GSOLU 'LINEAIRE');
  272. GCHAR.'MECANIQUE' = EXIS SUPTAB 'CHARGEMENTS_MECANIQUES';
  273. SI (EXIS SUPTAB 'TEMPERATURES');
  274. GCHAR.'THERMIQUE' = MOT 'DECOUPLE';
  275. SINON;
  276. GCHAR.'THERMIQUE' = 'AUCUN';
  277. FINSI;
  278. GCHAR.'DEFORMATIONS IMPOSEES' = EXIS SUPTAB 'DEFORMATIONS_IMPOSEES';
  279. SINON;
  280. CHAR1 = SUPTAB.'SOLUTION_PASAPAS'.'CHARGEMENT';
  281. GCHAR.'MECANIQUE' = (EXIS CHAR1 'DIMP') OU (EXIS CHAR1 'MECA');
  282. SI (EXIS CHAR1 'T');
  283. GCHAR.'THERMIQUE' = MOT 'DECOUPLE';
  284. SINON;
  285. SI ((EXIS CHAR1 'TIMP') OU (EXIS CHAR1 'Q') OU
  286. (EXIS CHAR1 'TECO') OU (EXIS CHAR1 'TERA'));
  287. GCHAR.'THERMIQUE' = MOT 'COUPLE';
  288. SINON;
  289. GCHAR.'THERMIQUE' = 'AUCUN';
  290. FINSI;
  291. FINSI;
  292. GCHAR.'DEFORMATIONS IMPOSEES' = EXIS CHAR1 'DEFI';
  293. FINSI;
  294. NBCHAR = 0;
  295. MESSCHAR = MOT 'CHARGEMENT :';
  296. ICHAR = INDE GCHAR;
  297. REPE I (DIME ICHAR);
  298. MCHAR = MOT ICHAR.&I;
  299. SI (NEG NBCHAR 0);
  300. MESSCHAR = ' ';
  301. FINSI;
  302. SI (EGA (TYPE GCHAR.(MOT ICHAR.&I)) 'LOGIQUE');
  303. SI GCHAR.MCHAR;
  304. MESSCHAR = CHAI MESSCHAR/NMESS MCHAR/NDEC;
  305. MESS MESSCHAR;
  306. NBCHAR = NBCHAR + 1;
  307. FINSI;
  308. FINSI;
  309. SI (EGA (TYPE GCHAR.MCHAR) 'MOT');
  310. SI (NEG GCHAR.MCHAR 'AUCUN');
  311. MESSCHAR = CHAI MESSCHAR/NMESS MCHAR/NDEC;
  312. MESSCHAR = CHAI MESSCHAR ' ' GCHAR.MCHAR;
  313. MESS MESSCHAR;
  314. NBCHAR = NBCHAR + 1;
  315. FINSI;
  316. FINSI;
  317. FIN I;
  318.  
  319. * I.1.G - CONTACT ENTRE LEVRES DE FISSURE
  320. BCONT = (EXIS SUPTAB 'MODELE_FISSURE');
  321. MESS 'CONTACT LEVRES :'/NMESS BCONT/NDEC;
  322.  
  323.  
  324. * I.2 - VERIFICATION QUE LE CAS EST TRAITABLE
  325. * *******************************************
  326.  
  327. * I.2.A - VERIFICATION QUE L'ON CONNAIT L'OBJECTIF
  328. SI ((NEG GOBJ 'J') ET (NEG GOBJ 'C*') ET (NEG GOBJ 'C*H')
  329. ET (NEG GOBJ 'DJ/DA') ET (NEG GOBJ 'J_DYNA')
  330. ET (NEG GOBJ 'DECOUPLAGE'));
  331. MESS 'ERREUR : ON NE CONNAIT PAS L INTEGRALE SPECIFIEE';
  332. MESS ' A CALCULER';
  333. ERRE 21 ; QUIT G_CAS;
  334. FINSI;
  335.  
  336. * I.2.B - VERIFICATION QUE LE MATERIAU EST ISOTROPE
  337. SI (EGA GMTYPE.'ELASTIQUE' (MOT 'ELASTIQUE ANISOTROPE'));
  338. MESS 'ERREUR : ON NE PEUT PAS TRAITER LE CAS DE MATERIAUX ANISOTROPES.';
  339. ERRE 21 ; QUIT G_CAS;
  340. FINSI;
  341.  
  342. * I.2.C - VERIFICATION QUE L'ON A PAS A LA FOIS DES INTERFACES ET DES GRADIENTS
  343. * DE PROPRIETES
  344. SI (DISMAT ET ((DIME PGRAD) > 0));
  345. MESS 'ERREUR : ON NE PEUT PAS TRAITER LE CAS DE DISCONTINUITES';
  346. MESS ' MATERIELLES DANS UN SOLIDE A GRADIENT DE PROPRIETES';
  347. ERRE 21 ; QUIT G_CAS;
  348. FINSI;
  349.  
  350. * I.2.D - INTERFACES (2D SEULEMENT, ET ON DOIT AVOIR AU MOINS DEUX MODELES)
  351. SI DISMAT;
  352. SI (EGA GDIME 3);
  353. MESS 'ERREUR : ON NE PEUT PAS ENCORE TRAITER LES DISCONTINUITES DE';
  354. MESS ' PROPRIETES EN 3D';
  355. ERRE 21 ; QUIT G_CAS;
  356. FINSI;
  357. SI ((DIME SUPTAB.'MODELES_COMPOSITES') < 2);
  358. MESS 'ERREUR : IL FAUT AU MOINS DEUX MODELES POUR';
  359. MESS ' DETERMINER LA LIGNE COMMUNE D''INTERFACE';
  360. ERRE 21 ; QUIT G_CAS;
  361. FINSI;
  362. FINSI;
  363.  
  364. * I.2.E - OBJECTIF : J
  365. SI (EGA GOBJ 'J');
  366. SI (EXIS GMTYPE 'FLUAGE');
  367. MESS 'ERREUR : ON ATTEND UN COMPORTEMENT ELASTOPLASTIQUE POUR';
  368. MESS ' CALCULER L''INTEGRALE J';
  369. ERRE 21 ; QUIT G_CAS;
  370. FINSI;
  371. FINSI;
  372.  
  373. * I.2.F - OBJECTIF : C* OU C*H
  374. SI ((EGA GOBJ 'C*') OU (EGA GOBJ 'C*H'));
  375. SI (NON (EXIS GMTYPE 'FLUAGE'));
  376. MESS 'ERREUR : ON ATTEND UN COMPORTEMENT VISCOPLASTIQUE POUR';
  377. MESS ' CALCULER L''INTEGRALE' ' ' GOBJ;
  378. ERRE 21 ; QUIT G_CAS;
  379. FINSI;
  380. SI (NEG GCHAR.'THERMIQUE' 'AUCUN');
  381. MESS 'ERREUR : ON NE PEUT PAS ENCORE CALCULER L''INTEGRALE' ' ' GOBJ;
  382. MESS ' DANS LE CAS D''UN CHARGEMENT THERMIQUE';
  383. ERRE 21 ; QUIT G_CAS;
  384. FINSI;
  385. SI (NEG GHYPO 'HPP');
  386. MESS 'ERREUR : ON NE PEUT PAS ENCORE CALCULER L''INTEGRALE' ' ' GOBJ;
  387. MESS ' EN GRANDS DEPLACEMENTS';
  388. ERRE 21 ; QUIT G_CAS;
  389. FINSI;
  390. SI (EGA GOBJ 'C*H');
  391. REPE I (DIME MVISC);
  392. SI ((NEG MVISC.&I 'NORTON') ET (EXIS MOD_MEC 'MATE' MVISC.&I));
  393. MESS 'ERREUR : IL FAUT UN MODELE DE FLUAGE NORTON';
  394. MESS ' SEUL POUR CALCULER L INTEGRALE' ' ' GOBJ;
  395. ERRE 21 ; QUIT G_CAS;
  396. FINSI;
  397. FIN I;
  398. FINSI;
  399. FINSI;
  400.  
  401. * I.2.G - OBJECTIF : DJ/DA
  402. SI (EGA GOBJ 'DJ/DA');
  403. SI (EXIS GMTYPE 'FLUAGE');
  404. MESS 'ERREUR : ON ATTEND UN COMPORTEMENT ELASTOPLASTIQUE POUR';
  405. MESS ' CALCULER L''INTEGRALE DJ/DA';
  406. ERRE 21 ; QUIT G_CAS;
  407. FINSI;
  408. SI (DISMAT OU ((DIME PGRAD) > 0));
  409. MESS 'ERREUR : ON NE PEUT CALCULER L''INTEGRALE DJ/DA QUE';
  410. MESS ' DANS LE CAS DE PROPRIETES HOMOGENES';
  411. ERRE 21 ; QUIT G_CAS;
  412. FINSI;
  413. SI (NEG GELTYP 'STD MASSIF');
  414. MESS 'ERREUR : ON NE PEUT CALCULER L''INTEGRALE DJ/DA QU''AVEC';
  415. MESS ' DES ELEMENTS STANDARDS MASSIFS';
  416. ERRE 21 ; QUIT G_CAS;
  417. FINSI;
  418. SI (NEG GHYPO 'HPP');
  419. MESS 'ERREUR : ON NE PEUT CALCULER L''INTEGRALE DJ/DA QUE';
  420. MESS ' SOUS L''HYPOTHESE DES PETITES PERTURBATIONS';
  421. ERRE 21 ; QUIT G_CAS;
  422. FINSI;
  423. SI (NON (EXIS SUPTAB 'BLOCAGES_MECANIQUES'));
  424. MESS 'ERREUR : IL FAUT DONNER LES BLOCAGES MECANIQUES';
  425. MESS ' POUR CALCULER L''INTEGRALE DJ/DA'
  426. ERRE 21 ; QUIT G_CAS;
  427. FINSI;
  428. FINSI;
  429.  
  430. * I.2.H - OBJECTIF : J_DYNA
  431. SI (EGA GOBJ 'J_DYNA');
  432. SI ((EXIS GMTYPE 'PLASTIQUE') OU (EXIS GMTYPE 'FLUAGE'));
  433. MESS 'ERREUR : ON ATTEND UN COMPORTEMENT ELASTIQUE POUR CALCULER';
  434. MESS ' L''INTEGRALE J_DYNA';
  435. ERRE 21 ; QUIT G_CAS;
  436. FINSI;
  437. SI (NEG GSOLU (MOT 'PASAPAS DYNAMIQUE'));
  438. MESS 'ERREUR : ON ATTEND UNE SOLUTION DE PASAPAS DYNAMIQUE POUR';
  439. MESS ' CALCULER L''INTEGRALE J_DYNA';
  440. ERRE 21 ; QUIT G_CAS;
  441. FINSI;
  442. FINSI;
  443.  
  444. * I.2.I - OBJECTIF : DECOUPLAGE
  445. SI (EGA GOBJ (MOT 'DECOUPLAGE'));
  446. SI ((EXIS GMTYPE 'PLASTIQUE') OU (EXIS GMTYPE 'FLUAGE'));
  447. MESS 'ERREUR : ON ATTEND UN COMPORTEMENT ELASTIQUE POUR UTILISER';
  448. MESS ' L''OPTION DECOUPLAGE';
  449. ERRE 21 ; QUIT G_CAS;
  450. FINSI;
  451. SI ((DIME PGRAD) > 0);
  452. MESS 'ERREUR : ON NE PEUT PAS UTILISER L''OPTION DECOUPLAGE POUR UN';
  453. MESS ' SOLIDE A GRADIENT DE PROPRIETES';
  454. ERRE 21 ; QUIT G_CAS;
  455. FINSI;
  456. SI (EGA GELTYP 'STD COQUE');
  457. MESS 'ERREUR : ON NE PEUT PAS UTILISER L''OPTION DECOUPLAGE DANS LE';
  458. MESS ' CAS DE COQUES';
  459. ERRE 21 ; QUIT G_CAS;
  460. FINSI;
  461. * SI IL Y A DES INTERFACES IL FAUT VERIFIER QU'ELLES SONT PARALLELES A LA
  462. * FISSURE, MAIS LA DIRECTION DE CELLE-CI EST OBTENUE APRES AVOIR CALCULE
  463. * LE CHAMP THETA, DONC CETTE VERIFICATION EST FAITE DANS G_THETA
  464. FINSI;
  465.  
  466. * I.2.J - CONTACT ENTRE LES LEVRES : UNIQUEMENT AVEC RESO ET XFEM
  467. SI BCONT;
  468. SI (NEG GSOLU 'LINEAIRE');
  469. MESS 'ERREUR : CONTACT ENTRE LES LEVRES NON PREVU AVEC UNE SOLUTION';
  470. MESS ' DE PASAPAS';
  471. ERRE 21 ; QUIT G_CAS;
  472. FINSI;
  473. SI (NEG GELTYP (MOT 'XFEM'));
  474. MESS 'ERREUR : CONTACT ENTRE LES LEVRES NON PREVU AVEC DES ELEMENTS';
  475. MESS ' STANDARDS';
  476. ERRE 21 ; QUIT G_CAS;
  477. FINSI;
  478. FINSI;
  479.  
  480. * I.2.K - ON VERIFIE QU'IL N'Y A PAS DE GRADIENT DE COEFFICIENT DE POISSON
  481. SI (EXIS PGRAD 'NU');
  482. MESS 'ERREUR : ON NE SAIT PAS ENCORE TRAITER LA PRESENCE D''UN GRADIENT';
  483. MESS ' DE COEFFICIENT DE POISSON';
  484. ERRE 21 ; QUIT G_CAS;
  485. FINSI;
  486.  
  487.  
  488. * I.3 - VERIFICATION DES DONNEES NECESSAIRES
  489. * ******************************************
  490.  
  491. * I.3.A - FRONT DE FISSURE
  492. SI (NON (EXIS SUPTAB 'FRONT_FISSURE'));
  493. MESS 'ERREUR : ON VEUT LE FRONT DE LA FISSURE';
  494. ERRE 21 ; QUIT G_CAS;
  495. FINSI;
  496. M_FRONT = SUPTAB.'FRONT_FISSURE';
  497. SI ((NEG (TYPE M_FRONT) 'MAILLAGE') ET (NEG (TYPE M_FRONT) 'POINT'));
  498. MESS 'ERREUR : LE FRONT DE FISSURE DOIT ETRE DE TYPE MAILLAGE OU POINT';
  499. ERRE 21 ; QUIT G_CAS;
  500. FINSI;
  501. SI (EGA (TYPE M_FRONT) 'POINT');
  502. M_FRONT = MANU 'POI1' M_FRONT;
  503. SINON;
  504. MTYPEL = M_FRONT ELEM 'TYPE';
  505. MTYPEL = EXTR MTYPEL 1;
  506. SI (NEG MTYPEL 'POI1');
  507. M_FRONT = ORDO M_FRONT;
  508. SUPTAB.'FRONT_FISSURE' = M_FRONT;
  509. FINSI;
  510. FINSI;
  511. M_FRONT = M_FRONT COUL 'OLIV';
  512.  
  513. * I.3.B - FISSURE_2 ET SON FRONT POUR DJ/DA
  514. SI (EGA GOBJ 'DJ/DA');
  515. SI ((EXIS SUPTAB 'FISSURE_2') OU (EXIS SUPTAB 'FRONT_FISSURE_2'));
  516. SI (NON (EXIS SUPTAB 'FISSURE_2'));
  517. MESS 'ERREUR : ON VEUT AUSSI LA FISSURE 2 POUR CALCULER';
  518. MESS ' LES TERMES CROISES DE LA MATRICE';
  519. ERRE 21 ; QUIT G_CAS;
  520. FINSI;
  521. SI (NON (EXIS SUPTAB 'FRONT_FISSURE_2'));
  522. MESS 'ERREUR : ON VEUT AUSSI LE FROND DE LA FISSURE 2 POUR';
  523. MESS ' CALCULER LES TERMES CROISES DE LA MATRICE';
  524. ERRE 21 ; QUIT G_CAS;
  525. FINSI;
  526. SINON;
  527. SI (EGA SUPTAB.'COUCHE' 0);
  528. MESS 'ERREUR : LE NOMBRE DE COUCHES DOIT ETRE SUPERIEUR A';
  529. MESS ' 0 POUR LE CALCUL DU TERME PRINCIPAL DJi/DAi';
  530. ERRE 21 ; QUIT G_CAS;
  531. FINSI;
  532. FINSI;
  533. FINSI;
  534.  
  535. * I.3.C - PRESSION OBLIGATOIRE SI CALCUL LINEAIRE ET MODELE DE PRESSION
  536. SI ((NEG GCHAR.'PRESSION' 'AUCUN') ET (EGA GSOLU 'LINEAIRE'));
  537. SI (NON (EXIS SUPTAB 'PRESSION'));
  538. MESS 'ERREUR : IL MANQUE LA DONNEE DU CHAMP DE PRESSION';
  539. ERRE 21 ; QUIT G_CAS;
  540. FINSI;
  541. FINSI;
  542.  
  543. * I.3.D - DEFINITION DE LA FISSURE NECESSAIRE
  544. SI (EGA GELTYP (MOT 'XFEM'));
  545. SI (NON ((EXIS SUPTAB 'PSI') ET (EXIS SUPTAB 'PHI')));
  546. MESS 'ERREUR : ON VEUT PSI et PHI LEVELSET DE LA FISSURE';
  547. ERRE 21 ; QUIT G_CAS;
  548. FINSI;
  549. SINON;
  550. SI (EGA GT_OBJ 'DECOUPLAGE');
  551. SI (NON ((EXIS SUPTAB 'LEVRE_SUPERIEURE') ET
  552. (EXIS SUPTAB 'LEVRE_INFERIEURE')));
  553. MESS 'ERREUR : L''OBJECTIF DECOUPLAGE NECESSITE LES DEUX';
  554. MESS ' LEVRES DE LA FISSURE';
  555. ERRE 21 ; QUIT G_CAS;
  556. FINSI;
  557. SINON;
  558. SI (NON ((EXIS SUPTAB 'LEVRE_SUPERIEURE') OU
  559. (EXIS SUPTAB 'LEVRE_INFERIEURE')));
  560. MESS 'ERREUR : IL FAUT DONNER LA FISSURE';
  561. MESS '(LEVRE_SUPERIEURE OU LEVRE_INFERIEURE OU LES 2)';
  562. ERRE 21 ; QUIT G_CAS;
  563. FINSI;
  564. FINSI;
  565. FINSI;
  566.  
  567. * I.3.E - ON VERIFIE QU'ON A OU BIEN LE NOMBRE DE COUCHES OU BIEN CHAMP_THETA
  568. SI (NON ((EXIS SUPTAB 'COUCHE') OU (EXIS SUPTAB 'CHAMP_THETA')));
  569. MESS 'ERREUR : ON VEUT LE NOMBRE DE COUCHES D ELEMENTS';
  570. MESS ' AUTOUR DE LA FISSURE QUI SE DEPLACE';
  571. MESS ' OU LE CHAMP_THETA';
  572. MESS ' POUR SIMULER LA PROPAGATION DE LA FISSURE';
  573. ERRE 21 ; QUIT G_CAS;
  574. FINSI;
  575.  
  576. * I.3.F - ON NE CALCULE PAS CORRECTEMENT LE CAS THERMIQUE AVEC DES COQUES
  577. * DONC POUR L'INSTANT ON DEBRANCHE L'OPTION
  578. SI ((EGA GELTYP 'STD COQUE') ET (NEG GCHAR.'THERMIQUE' 'AUCUN'));
  579. MESS 'ERREUR : UNE CORRECTION EST NECESSAIRE POUR TRAITER UN CHARGEMENT';
  580. MESS ' THERMIQUE AVEC LES ELEMENTS COQUE';
  581. ERRE 21 ; QUIT G_CAS;
  582. FINSI;
  583.  
  584.  
  585. * =============================================================================
  586.  
  587. * II - STOCKAGE DES INFORMATIONS POUR TRANSFERT A G_THETA
  588. * -------------------------------------------------------
  589.  
  590. * II.1 - OBJETS ET INFOS UTILES DANS OBJUTI
  591. * *****************************************
  592.  
  593. OBJUTI = TABL;
  594. OBJUTI.'DIMENSION' = GDIME;
  595. OBJUTI.'MODE' = GMODE;
  596. OBJUTI.'MOD_TOT' = MOD_TOT;
  597. OBJUTI.'MOD_MEC' = MOD_MEC;
  598. OBJUTI.'MAT_MEC' = MAT_MEC;
  599. OBJUTI.'NMESS' = NMESS;
  600. OBJUTI.'MAILLAGE' = MAILLAGE;
  601. OBJUTI.'FRONT' = M_FRONT;
  602. SI (NEG GSOLU 'LINEAIRE');
  603. OBJUTI.'WTAB' = WTAB;
  604. FINSI;
  605.  
  606. * II.2 - BOOLEENS DANS BOOL
  607. * *************************
  608.  
  609. * OBJECTIF
  610. BOOL.'J' = EGA SUPTAB.'OBJECTIF' 'J';
  611. BOOL.'C*' = EGA SUPTAB.'OBJECTIF' 'C*';
  612. BOOL.'C*H' = EGA SUPTAB.'OBJECTIF' 'C*H';
  613. BOOL.'DJ/DA' = EGA SUPTAB.'OBJECTIF' 'DJ/DA';
  614. BOOL.'J_DYNA' = EGA SUPTAB.'OBJECTIF' 'J_DYNA';
  615. BOOL.'DECOUPLAGE' = EGA SUPTAB.'OBJECTIF' (MOT 'DECOUPLAGE');
  616. * PASAPAS
  617. BOOL.'PASAPAS' = NEG GSOLU 'LINEAIRE';
  618. * GRANDS DEPLACEMENTS
  619. BOOL.'GRANDS_DEP' = EGA GHYPO 'GRANDS_DEPLACEMENTS';
  620. * MODELE DE PRESSION
  621. BOOL.'MODE_PRES' = NEG GCHAR.'PRESSION' 'AUCUN';
  622. * PRESSION SUR FISSURE
  623. BOOL.'PRES_FISS' = EGA GCHAR.'PRESSION' 'SUR LEVRES';
  624. * CHARGEMENTS THERMIQUES
  625. BOOL.'THER_DECO' = EGA GCHAR.'THERMIQUE' (MOT 'DECOUPLE');
  626. BOOL.'THER' = NEG GCHAR.'THERMIQUE' 'AUCUN';
  627. * DEFORMATIONS IMPOSEES
  628. BOOL.'DEF_IMP' = GCHAR.'DEFORMATIONS IMPOSEES';
  629. * ORDRE DES ELEMENTS
  630. BOOL.'EL_LIN' = EGA GELDEG 1;
  631. BOOL.'EL_QUA' = EGA GELDEG 2;
  632. * ELEMENTS XFEM
  633. BOOL.'XFEM' = EXIS MOD_MEC 'ELEM' 'XQ4R' 'XC8R';
  634. * ELEMENTS COQUE
  635. BOOL.'COQ' = EGA GELTYP 'STD COQUE';
  636. * ROTATION DE CORPS RIGIDE
  637. BOOL.'XFEM' = EXIS MOD_MEC 'ELEM' 'XQ4R' 'XC8R';
  638. * ELEMENTS COQUE
  639. BOOL.'XFEM' = EXIS MOD_MEC 'ELEM' 'XQ4R' 'XC8R';
  640. * ELEMENTS COQUE
  641. BOOL.'COQ' = EGA GELTYP 'STD COQUE';
  642. * ROTATION DE CORPS RIGIDE
  643. BOOL.'ROT_RIG' = EXIS SUPTAB 'ROTATION_RIGIDIFIANTE';
  644. * PERSO1
  645. SI (EXIS SUPTAB 'PERSO1');
  646. BOOL.'PERSO1' = SUPTAB.'PERSO1';
  647. SINON;
  648. BOOL.'PERSO1' = FAUX;
  649. FINSI;
  650. * FROTTEMENT ENTRE LEVRES DE FISSURE
  651. BOOL.'FROT' = EXIS SUPTAB 'MODELE_FISSURE';
  652.  
  653.  
  654. * SAUT DE LIGNE AVANT DE RETOURNER DANS G_THETA
  655. SAUT 'LIGNE';
  656.  
  657. FINP OBJUTI;
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  

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