Télécharger g_cas.procedur

Retour à la liste

Numérotation des lignes :

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

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