Télécharger pas_defa.procedur

Retour à la liste

Numérotation des lignes :

  1. * PAS_DEFA PROCEDUR MB234859 24/02/26 21:15:03 11849
  2. DEBPROC PAS_DEFA PRECED*'TABLE';
  3. ************************************************************************
  4. *
  5. * Objet de la procedure :
  6. * - verifications coherences donnees.
  7. * - initialisations des valeurs par defaut des options de calcul
  8. * - initialisation des variables locales
  9. *
  10. * verifications de quelques arguments obligatoires
  11. * existence modele verification et initialisation modeles particuliers
  12. * affectation des valeurs par defaut des options dans TWORK
  13. * En cas de reprise, la configuration peut etre erronnee
  14. * (reprise/poursuite d'un calcul suite a une erreur)
  15. *
  16. ************************************************************************
  17. * Verifier si d'anciens mots-cles ne sont pas utilises
  18. ************************************************************************
  19. 'SI' (('EXISTE' PRECED 'GRANDES_ROTATIONS' ) 'OU'
  20. ('EXISTE' PRECED 'GRANDES_DEFORMATIONS'));
  21. 'MESS' ' ATTENTION :' ;
  22. 'MESS' ' Les donnees concernant les GRANDES ROTATIONS et GRANDES DEFORMATIONS ont ete modifiees :';
  23. 'MESS' ' Utilisez l''indice HYPOTHESE_DEFORMATIONS';
  24. 'ERREUR' 21 ;
  25. 'FINSI';
  26. *
  27. 'SI' ('EXISTE' PRECED 'CONTACT') ;
  28. 'MESS' ' ATTENTION :' ;
  29. 'MESS' ' Les donnees concernant le CONTACT dans PASAPAS ont ete modifiees :' ;
  30. 'MESS' ' - L''indice CONTACT de la table de PASAPAS n''existe plus.';
  31. 'MESS' ' - Il faut definir un MODELE de CONTACT.' ;
  32. 'ERREUR' 21 ;
  33. 'FINSI';
  34. *
  35. 'SI' (('EXISTE' PRECED 'PROCEDURE_REAC_MECA') 'OU'
  36. ('EXISTE' PRECED 'PROCEDURE_CHAR_MECA') 'OU'
  37. ('EXISTE' PRECED 'PROCEDURE_REAC_THER') 'OU'
  38. ('EXISTE' PRECED 'PROCEDURE_CHAR_THER') 'OU'
  39. ('EXISTE' PRECED 'PROCEDURE_PARA_THER')) ;
  40. 'MESS' ' ATTENTION :' ;
  41. 'MESS' ' Les donnees concernant les procedures utilisateur ont ete modifiees :' ;
  42. 'MESS' ' - L''indice PROCEDURE_REAC_MECA est remplace par l''indice PROCEDURE_REEV_MEC' ;
  43. 'MESS' ' - L''indice PROCEDURE_CHAR_MECA est remplace par l''indice PROCEDURE_CHARMECA' ;
  44. 'MESS' ' - L''indice PROCEDURE_REAC_THER est remplace par l''indice PROCEDURE_REEV_THE' ;
  45. 'MESS' ' - L''indice PROCEDURE_CHAR_THER est remplace par l''indice PROCEDURE_CHARTHER' ;
  46. 'MESS' ' - L''indice PROCEDURE_PARA_THER est remplace par l''indice PROCEDURE_PARATHER' ;
  47. 'ERREUR' 21 ;
  48. 'FINSI';
  49.  
  50. * Modifs CB215821 Juillet 2020
  51. 'SI' ('EXISTE' PRECED 'TEMPERATURE_REFERENCE');
  52. 'MESS' ' ATTENTION :' ;
  53. 'MESS' ' L''indice ''TEMPERATURE_REFERENCE'' de PASAPAS a ete supprime';
  54. 'MESS' ' Il faut desormais fournir la composante ''TREF'' dans le materiau';
  55. 'ERREUR' 21 ;
  56. 'FINSI';
  57. 'SI' ('EXISTE' PRECED 'TALPHA_REFERENCE');
  58. 'MESS' ' ATTENTION :' ;
  59. 'MESS' ' L''indice ''TALPHA_REFERENCE'' de PASAPAS a ete supprime';
  60. 'MESS' ' Il faut desormais fournir la composante ''TALP'' dans le materiau';
  61. 'ERREUR' 21 ;
  62. 'FINSI';
  63. ************************************************************************
  64. * Verifier la presence de certains indices de PRECED, obligatoires
  65. ************************************************************************
  66. 'SI' ('NON' ('EXISTE' PRECED 'MODELE')) ;
  67. 'ERREUR' 'Il manque la donnee du modele.';
  68. 'SINON' ;
  69. MO = PRECED.'MODELE';
  70. TYPMO = 'TYPE' MO ;
  71. 'SI' (('NEG' TYPMO 'MMODEL ') 'ET' ('NEG' TYPMO 'CHARGEME')) ;
  72. 'ERREUR' 'Le type du MODELE est incorrect';
  73. 'FINSI';
  74. 'FINSI' ;
  75. *
  76. 'SI' ('NON' ('EXISTE' PRECED 'CARACTERISTIQUES')) ;
  77. 'ERREUR' 'Il manque la donnee du materiau.';
  78. 'SINON' ;
  79. MA = PRECED.'CARACTERISTIQUES' ;
  80. TYPMA = 'TYPE' MA ;
  81. 'SI' (('NEG' TYPMA 'MCHAML ') 'ET' ('NEG' TYPMA 'CHARGEME')) ;
  82. 'ERREUR' 'Le type du champ de materiau est incorrect';
  83. 'FINSI';
  84. 'FINSI' ;
  85. *
  86. 'SI' ('EXISTE' PRECED 'TEMPS_CALCULES');
  87. TYP1 = 'TYPE' PRECED.'TEMPS_CALCULES';
  88. 'SI' ('NEG' TYP1 'LISTREEL');
  89. 'ERREUR' 'Le type de TEMPS_CALCULES est incorrect';
  90. 'FINSI';
  91. 'FINSI' ;
  92. *
  93. 'SI' ('EXISTE' PRECED 'CHARGEMENT');
  94. TYP1 = 'TYPE' PRECED.'CHARGEMENT' ;
  95. 'SI' ('NEG' TYP1 'CHARGEME');
  96. 'ERREUR' 'Le type du CHARGEMENT est incorrect';
  97. 'FINSI';
  98. 'FINSI';
  99. ************************************************************************
  100. * Initialiser les indices de WTABLE a leur valeur par defaut
  101. ************************************************************************
  102. TWORK = 'TABLE' ;
  103. * adap_mode : adaptation du modele au cours du calcul
  104. TWORK.'ADAP_MODE' = FAUX;
  105. * Adherence presence de la composante ADHE (modele contact ou cont/fro)
  106. TWORK.'ADHERENCE' = FAUX ;
  107. * Advection presence d'un modele thermique advection ou diffusion advection
  108. TWORK.'ADVECTION' = FAUX;
  109. * matrice d'amortissement en dynamique
  110. TWORK.'AMORTISSEMENT' = 'MOT' 'INCONNU';
  111. * arret: indicateur pour quitter la boucle temporelle de PASAPAS
  112. TWORK.'ARRET' = FAUX;
  113. * autocrit: valeur du critere a utiliser dans autopilo(option automatique)
  114. TWORK.'AUTOCRIT' = 0.005;
  115. * autocoef: coefficient de pilotage
  116. TWORK.'AUTOCOEF' = 'MOT' 'INCONNU';
  117. * autodeux=vrai si pilotage et pas premiere tentative : pasapas
  118. TWORK.'AUTODEUX' = FAUX;
  119. * automatique =vrai si demande de pilotage automatique
  120. TWORK.'AUTOMATIQUE' = FAUX;
  121. * autopas : nb maxi de tentative en pilotage automatique
  122. TWORK.'AUTOPAS' = 250;
  123. * autoredu : reduit le critere de pilotage : pasapas unpas
  124. TWORK.'AUTOREDU' = 1.D0;
  125. * autored1 : joue sur la strategie d'evolution de autoredu :pasapas unpas
  126. TWORK.'AUTORED1' = 'MOT' 'INCONNU';
  127. * beton_ht ( ne marche pas!)
  128. TWORK.'BETON_HT' = FAUX;
  129. * blocages_diffusions; matrices
  130. TWORK.'BLOCAGES_DIFFUSIONS' = 'VIDE' 'RIGIDITE'/'RIGIDITE';
  131. * blocages_mecaniques; matrices
  132. TWORK.'BLOCAGES_MECANIQUES' = 'VIDE' 'RIGIDITE'/'RIGIDITE';
  133. * blocages_thermiques; matrices
  134. TWORK.'BLOCAGES_THERMIQUES' = 'VIDE' 'RIGIDITE'/'RIGIDITE';
  135. * bou_meth : valeur par defaut du nombre de bouclage mecanique-thermique
  136. TWORK.'BOU_METH' = 1;
  137. * cafrotte : veut dire il existe modele contact-frottement
  138. TWORK.'CAFROTTE' = FAUX ;
  139. * capaconst logique il existe une capacite constante
  140. TWORK.'CAPACONST' = FAUX;
  141. * cara stocke les caracteristiques reactualisees du dernier pas :pasapas
  142. TWORK.'CARA' = 'MOT' 'INCONNU';
  143. * caracteristiques :
  144. TWORK.'CARACTERISTIQUES' = 'MOT' 'INCONNU';
  145. * ceramique presence de modele ceramique
  146. TWORK.'CERAMIQUE' = FAUX;
  147. * indice celsius
  148. TWORK.'CELSIUS' = FAUX;
  149. * chargement idem celui de preced ou creation d'un chargement farfelu
  150. TWORK.'CHARGEMENT' = 'VIDE' 'CHARGEMENT' ;
  151. * chargement_i idem chargement DFIS et FI si certain materiau pas_defa
  152. TWORK.'CHARGEMENT_I' = 'MOT' 'INCONNU';
  153. * char_BLOD presence d'un chargement de BLOcages Diffusion
  154. TWORK.'CHAR_BLOD' = FAUX;
  155. * char_blom presence d'un chargement de BLOcages Mecaniques
  156. TWORK.'CHAR_BLOM' = FAUX;
  157. * char_blot presence d'un chargement de BLOcages Thermiques
  158. TWORK.'CHAR_BLOT' = FAUX;
  159. * char_defi presence de chargement DEFI deformation initiale
  160. TWORK.'CHAR_DEFI' = FAUX;
  161. * char_mate presence d'un chargement 'MATE'
  162. TWORK.'CHAR_MATE' = FAUX;
  163. * char_mode : le modele est de type chargement
  164. TWORK.'CHAR_MODE' = FAUX;
  165. * char_pres presence de chargement 'P ' de pression suiveuse
  166. TWORK.'CHAR_PRES' = FAUX;
  167. * char_the presence de chargement thermique pour la mecanique
  168. TWORK.'CHAR_THE' = FAUX;
  169. * char_pilo presence de chargement de pilotage indirect
  170. TWORK.'CHAR_PILO' = FAUX;
  171. TWORK.'DEPLACEMENTS_PILOTES' = 'VIDE' 'CHPOINT' / 'DISCRET' ;
  172. TWORK.'FORCES_PILOTEES' = 'VIDE' 'CHPOINT' / 'DISCRET' ;
  173. TWORK.'ZONE_DE_PILOTAGE' = FAUX ;
  174. TWORK.'PARAMETRE_DE_PILOTAGE' = 'MOT' 'INCONNU' ;
  175. * clim matrice des blocagesmecaniques y compris contact et frottement pasapas
  176. TWORK.'CLIM' = 'MOT' 'INCONNU';
  177. * condconst logique il existe une conductivite constante
  178. TWORK.'CONDCONST' = FAUX;
  179. * conduction presence d'un modele de conduction
  180. TWORK.'CONDUCTION' = FAUX;
  181. * consolidation presence de consolidation
  182. TWORK.'CONSOLIDATION' = FAUX;
  183. * contact presence de contact
  184. TWORK.'CONTACT' = FAUX ;
  185. * conv logique precisant si unpas a bien converge
  186. TWORK.'CONV' = VRAI;
  187. * convection presence d'un modele de convection
  188. TWORK.'CONVECTION' = FAUX;
  189. * convergence_forcee logique demandant la convergence forcee
  190. TWORK.'CONVERGENCE_FORCEE' = VRAI;
  191. * demande de convergence mecanique-thermique en cas de bouclage
  192. TWORK.'CONVERGENCE_MEC_THE' = FAUX;
  193. * logique pour imposer au residu de decroitre de facon monotone
  194. TWORK.'CONVERGENCE_MONOTONE' = FAUX;
  195. * conv_thmec on a convergee le bouclage mecanique-thermique pasapas
  196. TWORK.'CONV_THMEC' = VRAI;
  197. * couplage le calcul contient des modeles thermiques et des mecaniques
  198. TWORK.'COUPLAGE' = FAUX;
  199. * co1 champ de CONCENTRATION du pas precedent : pasapas
  200. TWORK.'CO1' = 0;
  201. * co2 champ de CONCENTRATION du pas courant : pasapas
  202. TWORK.'CO2' = 0;
  203. * cte_stefan_boltzmann valeur de la constante
  204. TWORK.'CTE_STEFAN_BOLTZMANN' = 5.673E-8 ;
  205. * deja_calc_charther indique le dernier temps pour lequel on a calcule le
  206. * chargement thermique dans charther : charther
  207. TWORK.'DEJA_CALC_CHARTHER' = 0.d0;
  208. * deltaiter sert au test de non convergence : unpas
  209. TWORK.'DELTAITER' = 10;
  210. * deltan sert au dynamique ou consolidation pour savoir si RECAOP=VRAI
  211. TWORK.'DELTAN' = 0.;
  212. * dept : increment de deplacement sur le pas de temps (VITEUNIL)
  213. TWORK.'DEPT' = 'MOT' 'INCONNU' ;
  214. * gradient du deplacement : unpas
  215. TWORK.'DFGRAD' = 'MOT' 'INCONNU' ;
  216. * dt: valeur du delta de temps entre le dernier pas et le pas en cours:pasapas
  217. TWORK.'DT' = 'MOT' 'INCONNU';
  218. * dtprec : dt du pas precedent: pasapas
  219. TWORK.'DTPREC' = 'MOT' 'INCONNU';
  220. * dt_init c'est le dt initiale sert au pilotage automatique : pasapas
  221. TWORK.'DT_INIT' = 0.D0;
  222. * dynamique calcul en dynamique
  223. TWORK.'DYNAMIQUE' = FAUX;
  224. * endommagement il esiste un tel modele de comportement
  225. TWORK.'ENDOMMAGEMENT' = FAUX;
  226. * Enregistrement de la date du depart de PASAPAS
  227. TWORK.'EPOQUE' = DATE 'EPOCH';
  228. * etat0 etat au temps 0 : pasapas pas_etat
  229. TWORK.'ETAT0' = 'MOT' 'INCONNU';
  230. * etat1 etat au temps courant : pasapas pas_etat
  231. TWORK.'ETAT1' = 'MOT' 'INCONNU';
  232. * etat_ref etat de reference : pasapas pas_etat
  233. TWORK.'ETAT_REF' = 'MOT' 'INCONNU';
  234. * etref deformation d'origine thermique de reference : pas_epth
  235. TWORK.'ETREF' = 'MOT' 'INCONNU';
  236. * ether1 stocke des deformations thermiques au temps precedent : pasapas
  237. TWORK.'ETHER1' = 'MOT' 'INCONNU';
  238. * fnonl permet forces de reequilibrage du pas precedent : unpas
  239. TWORK.'FNONL' = 'MOT' 'INCONNU';
  240. * fopl : forces d'acceleration et d'amortissement
  241. TWORK.'FOPL' = 'MOT' 'INCONNU';
  242. * configuration finale : pasapas unpas
  243. TWORK.'FOR' = 'MOT' 'INCONNU';
  244. * configuration en debut de pas : pasapas
  245. TWORK.'FOR0' = 'MOT' 'INCONNU';
  246. * FOR_DIFF le calcul inclus des modeles DIFFUSION
  247. TWORK.'FOR_DIFF' = FAUX;
  248. * FOR_METALLU le calcul inclus des modeles METALLURGIE
  249. TWORK.'FOR_METALLU' = FAUX;
  250. * utilisation de la frormulation fefp
  251. TWORK.'FEFP_FORMULATION' = FAUX;
  252. * ffrot seuil de force de frottement : unpas
  253. TWORK.'FFROT' = 'MOT' 'INCONNU';
  254. * frea1 partie constante du second membre dynamique,consolidation: pasapas
  255. TWORK.'FREA1' = 'MOT' 'INCONNU';
  256. * frequentiel calcul en frequentiel
  257. TWORK.'FREQUENTIEL' = 'EGA' ('VALE' 'MODE') 'FREQ' ;
  258. * ftol desequilibre tolere
  259. TWORK.'FTOL' = 'MOT' 'INCONNU';
  260. * Configuration courante
  261. TWORK.'GE0_DEB' = 'MOT' 'INCONNU';
  262. * grands_deplacement
  263. TWORK.'GRANDS_DEPLACEMENTS' = FAUX;
  264. * hypothese de calcul pour les deformations
  265. TWORK.'HYPOTHESE_DEFORMATIONS' = 'MOT' 'LINEAIRE';
  266. * indice d'evolution de la boucle temporelle de pasapas
  267. TWORK.'ICHG' = 0;
  268. * increment de charge du pas precedent : unpas
  269. TWORK.'INCREMENT' ='MOT' 'INCONNU';
  270. * logique le pas precedent a ete initialise par le temps : unpas
  271. TWORK.'INITEMPS' = FAUX;
  272. * logique pour autoriser l'Initialisation a partir du pas precedent : unpas
  273. TWORK.'INITIALISATION' = VRAI;
  274. * iplavi il existe un modele devant passer par COMP
  275. TWORK.'IPLAVI' = FAUX;
  276. * ipresu : listreel des temps a mettre dans les tables resultats
  277. TWORK.'IPRESU' = 'MOT' 'INCONNU';
  278. * iptime liste des temps a calculer
  279. TWORK.'IPTIME' = 'MOT' 'INCONNU';
  280. * isauvega liste des temps sauvegardes (appel SAUV dans pasapas)
  281. TWORK.'ISAUVEGA' = 'MOT' 'INCONNU';
  282. * logique la sauvegarde dans pasapas est activee
  283. TWORK.'ISAUVEGL' = FAUX;
  284. * itcar des elements ont des caracteristiques geometriques
  285. TWORK.'ITCAR' = FAUX;
  286. * ither : pour un calcul meca presence de thermique (via mode ou char)
  287. TWORK.'ITHER' = FAUX;
  288. * k_sigma il faut utiliser l'operateur KSIGMA
  289. TWORK.'K_SIGMA' = FAUX;
  290. * k_tangent il faut utiliser l'operateur KTANG
  291. TWORK.'K_TANGENT' = FAUX;
  292. * k_tangent_iter0 matrice tangente a utiliser pour iteration 0 : unpas
  293. TWORK.'K_TANGENT_ITER0' = 'MOT' 'INCONNU';
  294. * k_tangent_pert operateur KTAN matrice tangente par perturbation : unpas
  295. TWORK.'K_TANGENT_PERT' = FAUX;
  296. * k_tangent_syme matrice tangente symetrisee : unpas
  297. TWORK.'K_TANGENT_SYME' = FAUX;
  298. * k_tang_pert_c1 matrice tangente par perturbation coefficient C1 : unpas
  299. TWORK.'K_TANG_PERT_C1' = 1.D-3;
  300. * k_tang_pert_c2 matrice tangente par perturbation coefficient C2 : unpas
  301. TWORK.'K_TANG_PERT_C2' = 'MOT' 'INCONNU';
  302. * lastktan matrice donnant la derniere matrice tangente : pasapas unpas
  303. TWORK.'LASTKTAN' = 'MOT' 'INCONNU';
  304. * langrangien schema numerique lagrangien reactualise par defaut
  305. TWORK.'LAG_TOT' = 3 ;
  306. * ldeva liste des variables dont dependent les materiaux
  307. TWORK.'LDEVA' = 'MOT' 'INCONNU';
  308. * leconomi l'option economique est activee : pas_sauv
  309. TWORK.'LECONOMI' = FAUX;
  310. * liaison_persistante si il existe des liaisons persistantes
  311. TWORK.'LIAISON_PERSISTANTE' = FAUX;
  312. * linesearch en grand deplacement
  313. TWORK.'LINESEARCH' = FAUX;
  314. * lisea_m pour les contacts unilateraux en mecaniques :pasapas unpas
  315. TWORK.'LISEA_M' = 'MOT' 'INCONNU';
  316. * lisea_t pour les changements de phase en thermique : pasapas transnon
  317. TWORK.'LISEA_T' = 'MOT' 'INCONNU';
  318. * lpar0 liste des parametres externes a passer a COMP
  319. TWORK.'LPAR0' = 'MOT' 'INCONNU';
  320. * man methode asymptotique numerique
  321. TWORK.'MAN' = FAUX;
  322. * massconst logique il existe des masses constantes
  323. TWORK.'MASSCONST' = FAUX;
  324. * mat0 materiau au temps 0 : pasapas pas_epth
  325. TWORK.'MAT0' = 'MOT' 'INCONNU';
  326. * mat1 materiaux pour le pas en cours : pasapas unpas
  327. TWORK.'MAT1' = 'MOT' 'INCONNU';
  328. * matvar le materiau est variable : pas_verm
  329. TWORK.'MATVAR' = FAUX;
  330. * mat_con materiau des modeles de convection
  331. TWORK.'MAT_CON' = 'MOT' 'INCONNU';
  332. * mat_dif materiau des modeles de diffusion
  333. TWORK.'MAT_DIF' = 'MOT' 'INCONNU';
  334. * mat_mec materiau des modeles de mecanique
  335. TWORK.'MAT_MEC' = 'MOT' 'INCONNU';
  336. * mat_pha materiau des modeles de changement de phase 'PARFAIT'
  337. TWORK.'MAT_PHA' = 'MOT' 'INCONNU';
  338. * mat_por materiau des modeles poreux
  339. TWORK.'MAT_POR' = 'MOT' 'INCONNU';
  340. * mat_ray materiau des modeles de rayonnement
  341. TWORK.'MAT_RAY' = 'MOT' 'INCONNU';
  342. * mat1 materiaux de reference
  343. TWORK.'MAT_REF' = 'MOT' 'INCONNU';
  344. * mat_sol materiau des modeles de changement de phase 'SOLUBILITE'
  345. TWORK.'MAT_SOL' = 'MOT' 'INCONNU';
  346. * mat_T materiau thermique + thermohydrique
  347. TWORK.'MAT_T' = 'MOT' 'INCONNU';
  348. * mat_the materiau des modeles thermiques
  349. TWORK.'MAT_THE' = 'MOT' 'INCONNU';
  350. * mat_thm materiau thermohydrique
  351. TWORK.'MAT_THM' = 'MOT' 'INCONNU';
  352. * materiau des modeles convection + thermiques
  353. TWORK.'MAT_TOT' = 'MOT' 'INCONNU';
  354. * maxdefor valeur limitant la deformation en cas de non convergence
  355. * ou de RENORMALISATION souhaitee de ZDEP1
  356. TWORK.'MAXDEFOR' = 1.e-3;
  357. * maxiteration nombre maximum d'iteration pour un pas de calcul
  358. TWORK.'MAXITERATION' = 49;
  359. * maxisouspas nombre maximum de sous pas d'integration du fluage
  360. TWORK.'MAXISOUSPAS' = 2000;
  361. * maxsousiterations nombre maximum de sous iterations pour un calcul non-local
  362. TWORK.'MAXSOUSITERATION' = 500;
  363. * maxsouspas nombre maximum de sous pas en cas de non convergence
  364. TWORK.'MAXSOUSPAS' = 100;
  365. * ma_tot materiau des modeles mecaniques + poreux +liaison
  366. TWORK.'MA_TOT' = 'MOT' 'INCONNU';
  367. * mec1 il existe au moins un modele mecanique
  368. TWORK.'MEC1' = FAUX;
  369. * affichage messages options calcul entete procedure resolution THERMIQUE
  370. TWORK.'MESSTHER' = VRAI ;
  371. * modal ou statique
  372. TWORK.'MODAL' = FAUX;
  373. * mod_adv modele de thermique, advection
  374. TWORK.'MOD_ADV' = 'MOT' 'INCONNU';
  375. * mod_con modele de thermique convection
  376. TWORK.'MOD_CON' = 'MOT' 'INCONNU';
  377. * mod_dif modele de diffusion
  378. TWORK.'MOD_DIF' = 'MOT' 'INCONNU';
  379. * mod_mec modele mecanique
  380. TWORK.'MOD_MEC' = 'MOT' 'INCONNU';
  381. * mod_pha modele de changement de phase 'PARFAIT'
  382. TWORK.'MOD_PHA' = 'MOT' 'INCONNU';
  383. * mod_por modele poreux
  384. TWORK.'MOD_POR' = 'MOT' 'INCONNU';
  385. * mod_ray modele rayonnement
  386. TWORK.'MOD_RAY' = 'MOT' 'INCONNU';
  387. * mod_sol modele de changement de phase 'SOLUBILITE'
  388. TWORK.'MOD_SOL' = 'MOT' 'INCONNU';
  389. * mod_soq : modele source de chaleur
  390. TWORK.'MOD_SOQ' = 'MOT' 'INCONNU';
  391. * mod_T modele thermique + thermohydrique (contient inconnue T)
  392. TWORK.'MOD_T' = 'MOT' 'INCONNU';
  393. * mod_the modele thermique
  394. TWORK.'MOD_THE' = 'MOT' 'INCONNU';
  395. * mod_thm modele thermohydrique
  396. TWORK.'MOD_THM' = 'MOT' 'INCONNU';
  397. * mod_tot modele thermique
  398. TWORK.'MOD_TOT' = 'MOT' 'INCONNU';
  399. * mo_tot modele mecanique + modele poreux
  400. TWORK.'MO_TOT' = 'MOT' 'INCONNU';
  401. * mo_tot_prec modele mecanique + modele poreux au pas precedent
  402. TWORK.'MO_TOT_PREC' = 'MOT' 'INCONNU';
  403. * MODELE ce qui est dans preced.modele
  404. TWORK.'MODELE' = 'MOT' 'INCONNU' ;
  405. * mova nom de la variables internes dont le max est imprime
  406. TWORK.'MOVA' = 'MOT' 'EPSE';
  407. * msrther1 deformations thermiques pour les poreux
  408. TWORK.'MSRTHER1' = 'MOT' 'INCONNU';
  409. * msrther2 deformations thermiques pour les poreux
  410. TWORK.'MSRTHER2' = 'MOT' 'INCONNU';
  411. * mtol valeur autorisee du desequilibre (en terme de moment)
  412. TWORK.'MTOL' = 'MOT' 'INCONNU';
  413. * naures valeur de preced .autoresu
  414. TWORK.'NAURES' = 100000;
  415. * nbplas nb de point ayant plastifie : pasapas unpas
  416. TWORK.'NBPLAS' = 'MOT' 'INCONNU';
  417. * nb_el_para nb minimum d'elements dans une zone pour accepter le parallelisme
  418. TWORK.'NB_EL_PARA' = 1000;
  419. * premier pas de sauvegarde encore present (option economique de pasapas)
  420. TWORK.'NFSOR' = 0;
  421. * nombre maxi d'iteration internes si k_tangent
  422. TWORK.'NITERINTER_MAX' = 15;
  423. * niter_ktangent recalcule de la matrice tangente toutes les .. iterations
  424. TWORK.'NITER_KTANGENT' = 1;
  425. * nloc s'il existe un modele de comportement non_local (preced.non_local)
  426. TWORK.'NLOC' = FAUX ;
  427. * nmaxsubsteps nb maximun de substepping si fefp
  428. TWORK.'NMAXSUBSTEPS' = 1;
  429. * nombre_iterations nb d'iterations du pas precedent : pasapas unpas
  430. TWORK.'NOMBRE_ITERATIONS' = 12 ;
  431. * non_lineaire il existe un materiau utilisateur non-lineaire
  432. TWORK.'NON_LINEAIRE' = FAUX;
  433. * non_local decrit le modele de comportement non_local (preced.non_local)
  434. TWORK.'NON_LOCAL' = 'MOT' 'INCONNU' ;
  435. * delta temps du pas en cours pour dupont2 : pasapas
  436. TWORK.'NOUV_PAS' = 0.D0;
  437. * nsor numero a ecrire dans les tables de resultats : pas_ init
  438. TWORK.'NSOR' = 0;
  439. * formulation NAVIER_STOKES materiau NLIN
  440. TWORK.'NVSTNL' = FAUX ;
  441. * operateur matrice contenant l'operateur d'iterations : pasapas
  442. TWORK.'OPERATEUR' = 'MOT' 'INCONNU';
  443. * Ordre est l'ordre de developpement de la MAN
  444. TWORK.'ORDRE' = 12;
  445. * para_exte il existe des parametres externes : pas_verm
  446. TWORK.'PARA_EXTE' = FAUX;
  447. * pas numero du pas de temps utile a transnon : pasapas
  448. TWORK.'PAS' = 0;
  449. * pas_ajuste si ajustement automatique de longueur de pas
  450. TWORK.'PAS_AJUSTE' = FAUX;
  451. * pas_redu en automatiqu il a fallu reduire le pas : pasapas unpas
  452. TWORK.'PAS_REDU' = FAUX;
  453. * phase il existe du changement de phase 'PARFAIT'
  454. TWORK.'PHASE' = FAUX;
  455. * plastique il exite un comportement plastique
  456. TWORK.'PLASTIQUE' = FAUX;
  457. * por1 il existe un model poreux
  458. TWORK.'POR1' = FAUX;
  459. * precdecharge critere de decharge en opilotage automatique
  460. TWORK.'PRECDECHARGE' = 1.E-2;
  461. * precflex critere de desequilibre sur moment autorise
  462. TWORK.'PRECFLEX' = 1.E-4;
  463. * precisinter precision pour les iterations locales (fefp)
  464. TWORK.'PRECISINTER' = 1.D-8;
  465. * precision critere de convergence Thermique & Mecanique
  466. TWORK.'PRECISION' = 1.E-4 ;
  467. * precsousiteration precision pour les sous iterations en non local
  468. TWORK.'PRECSOUSITERATION' = 1.0E-6;
  469. * predicteur
  470. TWORK.'PREDICTEUR' = 'MOT' 'INCONNU';
  471. * procedure initialisation pour g_theta
  472. TWORK.'PROCEDURE' = 'MOT' 'PASAPAS';
  473. * procedure_charmeca il faut appele la procedure charmeca
  474. TWORK.'PROCEDURE_CHARMECA' = FAUX;
  475. * procedure_charther il faut appele la procedure charther
  476. TWORK.'PROCEDURE_CHARTHER' = FAUX;
  477. * procedure_parather il faut appeler la procedure parather
  478. TWORK.'PROCEDURE_PARATHER' = FAUX ;
  479. * procedure_perso1 il faut appeler la procedur perso1
  480. TWORK.'PROCEDURE_PERSO1' = FAUX;
  481. * procedure_perso2 il faut appeler la procedur perso2
  482. TWORK.'PROCEDURE_PERSO2' = FAUX;
  483. * procedure_reev_mec il faut appeler la procedur reev_mec
  484. TWORK.'PROCEDURE_REEV_MEC' = FAUX ;
  485. * procedure_reev_the il faut appeler la procedur reev_the
  486. TWORK.'PROCEDURE_REEV_THE' = FAUX ;
  487. * procedur_thermique non de la procedure thermique a appeler
  488. TWORK.'PROCEDURE_THERMIQUE' = 'MOT' 'NONLINEAIRE';
  489. * processeurs pour imposer l'option de parallelisme
  490. TWORK.'PROCESSEURS' = 'MOT' 'INCONNU';
  491. * projection le champ de temperature clcule doit etere projete
  492. TWORK.'PROJECTION' = FAUX;
  493. * raidconst il existe des raideurs constantes
  494. TWORK.'RAIDCONST' = FAUX;
  495. * raidaugm diffaugm theraugm il existe des raideurs augmentees
  496. TWORK.'RAIDAUGM' = FAUX;
  497. TWORK.'DIFFAUGM' = FAUX;
  498. TWORK.'THERAUGM' = FAUX;
  499. * autaug augmentation automatique
  500. TWORK.'AUTOAUGM' = FAUX;
  501. * rayo il existe du rayonnement en thermique
  502. TWORK.'RAYO' = FAUX;
  503. * rayonnement on y met des pre-calculs pour le rayonnement : transnon charther
  504. TWORK.'RAYONNEMENT' = 'MOT' 'INCONNU';
  505. * Reactualisation de la matrice en grands deplacements pour 0,1 de defor
  506. TWORK.'REAC_GRANDS' = 0.1 ;
  507. * logique disant pour charther si geometrie a change : pasapas
  508. TWORK.'REA_GEOM' = FAUX ;
  509. * reaprec utile pour les contacts unilateraux en dynamiques
  510. TWORK.'REAPREC' = 'MOT' 'INCONNU';
  511. * recalcul =vrai il faut recalculer la raideur ..
  512. TWORK.'RECALCUL' = FAUX;
  513. * recaop = recalcul operateur
  514. * recadet = oubli operateur (destruction de la rigi en commentaire)
  515. * recari = recalcul rigidite
  516. TWORK.'RECAOP' = VRAI;
  517. TWORK.'RECADET' = FAUX;
  518. TWORK.'RECARI' = FAUX;
  519. * recalcul du dernier pas de temps lors d'une reprise
  520. TWORK.'REEQUILIBRAGE' = FAUX ;
  521. * relaxation_dupont2 coeff de relaxation pour dupont2
  522. TWORK.'RELAXATION_DUPONT' = 0.25;
  523. * parametre de relaxation du pas de temps en non convergence
  524. TWORK.'RELAXATION_NONCONV' = 1.;
  525. * relaxation_thet coeff de relaxation pour transnon
  526. TWORK.'RELAXATION_THETA' = 1. ;
  527. * renormalisation de l'itere pour le limiter
  528. TWORK.'RENORMALISATION' = FAUX;
  529. * residu chpoint donnant le dernier residu d'equilibre : pasapas unpas
  530. TWORK.'RESIDU' = 'MOT' 'INCONNU';
  531. * riblo_m matrice de blocages des appuis unilateraux : unpas
  532. TWORK.'RIBLO_M' = 'MOT' 'INCONNU';
  533. * riblo_t matrice de blocages des changement de phase : transnon
  534. TWORK.'RIBLO_T' = 'MOT' 'INCONNU';
  535. * valeurr des rigidites constantes
  536. TWORK.'RIGIDITE_CONSTANTE' = 'MOT' 'INCONNU';
  537. * second_membre c'est le second_membre du pas d'avant : unpas
  538. TWORK.'SECOND_MEMBRE' = 'MOT' 'INCONNU';
  539. * solubilite il existe du changement de phase 'SOLUBILITE'
  540. TWORK.'SOLUBILITE' = FAUX;
  541. * sous_increment nombre de sous increment
  542. TWORK.'SOUS_INCREMENT' = 1 ;
  543. * SOURCE_Q presence d'un modele thermique source de chaleur
  544. TWORK.'SOURCE_Q' = FAUX;
  545. * test stabilite de la solution
  546. TWORK.'STABILITE' = VRAI;
  547. * substepping pour integrer en petites deformation
  548. TWORK.'SUBSTEPPING' = FAUX;
  549. * tabsauv table indiquant les options de sauv des resultats
  550. TWORK.'TABSAUV' = 'TABL' ;
  551. TWORK.'TABSAUV'.'DEFIN' = FAUX;
  552. TWORK.'TABSAUV'.'DEFTO' = FAUX;
  553. * temps0 temps de calcul precedent : pasapas
  554. TWORK.'TEMPS0' = 0.D0;
  555. * temps_calcules liste des tempsd a calculer
  556. TWORK.'TEMPS_CALCULES' = 'MOT' 'INCONNU';
  557. * tem_calc liste des temps a calculer pour les proc thermique : pasapas
  558. TWORK.'TEM_CALC' = 'MOT' 'INCONNU';
  559. * teta facteur pour la theta methode en consolidation
  560. TWORK.'TETA' = 1.0D0;
  561. * tet0 champ de temperature 2 pas avant : pasapas dupont2
  562. TWORK.'TET0' = 0;
  563. * tet1 champ de temperature 1 pas avant : pasapas
  564. TWORK.'TET1' = 0;
  565. * tet2 champ de temperature du pas courant : pasapas
  566. TWORK.'TET2' = 0;
  567. * the1 le calcul inclus des modeles thermique
  568. TWORK.'THE1' = FAUX;
  569. * ther_courant champ de temperature propose pour charther : dupont2 transnon
  570. TWORK.'THER_COURANT' = 'MOT' 'INCONNU';
  571. * thm1 le calcul inclus des modeles thermohydriques
  572. TWORK.'THM1' = FAUX;
  573. * tref temperature de reference 0 ou 273 : transnon dupont2
  574. TWORK.'TREF' = 0.D0;
  575. * ttol desequilibre absolu dans TRANSNON
  576. TWORK.'TTOL' = 'MOT' 'INCONNU';
  577. * t_final objectif du temps a calcule si pas_ajuste pasapas
  578. TWORK.'T_FINAL' = 0.D0;
  579. * update_lagrangian on veut faire du lagrangien reactualise fefp
  580. TWORK.'UPDATE_LAGRANGIAN' = FAUX;
  581. * vaux : correction des vitesses si liaison persistante
  582. TWORK.'VAUX' = 'MOT' 'INCONNU' ;
  583. * vieuxpas dt precedent pour dupont2
  584. TWORK.'VIEUXPAS' = 0.D0;
  585. * viscodommage il existe un modele de comportement viscodommage
  586. TWORK.'VISCODOMMAGE' = FAUX;
  587. * viscoplastique il existe un modele de comportement viscoplastique
  588. TWORK.'VISCOPLASTIQUE' = FAUX;
  589. * visco_externe il existe un modele de comportementvisco_externe
  590. TWORK.'VISCO_EXTERNE' = FAUX;
  591. * xdeno valeur pour calculer le critere de convergence force : unpas
  592. TWORK.'XDENO' = 0.d0;
  593. * xdenom valeur pour calculer le critere de convergence moment : unpas
  594. TWORK.'XDENOM' = 0.d0;
  595. * zraidv : rigidite K+4M/H2 (VITEUNIL)
  596. TWORK.'ZRAIDV' = 'MOT' 'INCONNU' ;
  597. ************************************************************************
  598. * Reprise/poursuite d'un calcul
  599. ************************************************************************
  600. * - Reprise d'un calcul : supprimer les infos des instants t > treprise
  601. 'SI' ('EXIS' PRECED 'REPRISE');
  602. 'SI' (PRECED.'REPRISE' > 0.);
  603. PAS_REPR PRECED;
  604. 'FINSI';
  605. 'SI' ('EXISTE' PRECED 'REEQUILIBRAGE') ;
  606. TWORK.'REEQUILIBRAGE' = PRECED.'REEQUILIBRAGE' ;
  607. 'FINSI' ;
  608. 'FINSI';
  609. *
  610. * - Poursuite d'un calcul : repartir du dernier instant calcule
  611. 'SI' ('EXIS' PRECED 'CONTINUATION' );
  612. iii = 'INDEX' PRECED;nii= 'DIME' iii;
  613. 'REPETER' boui nii;
  614. 'SI' ('EGA' ('TYPE' iii. &boui ) 'MOT ');
  615. aa = 'MOT' iii. &boui;
  616. 'SINON';
  617. aa = iii. &boui;
  618. 'FINSI';
  619. 'SI'('NON' ('EXIS' TWORK aa));
  620. TWORK. aa = PRECED . aa;
  621. 'FINSI';
  622. 'FIN' BOUI;
  623. 'SI' ('EXISTE' PRECED 'REEQUILIBRAGE') ;
  624. TWORK.'REEQUILIBRAGE' = PRECED.'REEQUILIBRAGE' ;
  625. 'FINSI' ;
  626. *
  627. * En cas de poursuite de calcul, indices eventuellement utiles a unpas
  628. * (a ameliorer...)
  629. 'SI' ('EXIS' PRECED 'WTABLE') ;
  630. *
  631. * Pour initialisation a partir du pas precedent
  632. 'SI' ('EXIS' PRECED.'WTABLE' 'ZDEP1') ;
  633. TWORK.'ZDEP1' = PRECED.'WTABLE'.'ZDEP1' ;
  634. TWORK.'FNONL' = PRECED.'WTABLE'.'FNONL' ;
  635. TWORK.'INCREMENT' = PRECED.'WTABLE'.'INCREMENT' ;
  636. TWORK.'RESIDU' = PRECED.'WTABLE'.'RESIDU' ;
  637. TWORK.'DTPREC' = PRECED.'WTABLE'.'DTPREC' ;
  638. TWORK.'INITEMPS' = PRECED.'WTABLE'.'INITEMPS' ;
  639. 'FINSI' ;
  640. *
  641. * Pour le pilotage automatique
  642. TWORK.'AUTOCOEF' = PRECED.'WTABLE'.'AUTOCOEF';
  643. TWORK.'AUTOREDU' = PRECED.'WTABLE'.'AUTOREDU';
  644. TWORK.'NBPLAS' = PRECED.'WTABLE'.'NBPLAS' ;
  645. TWORK.'XDENO' = PRECED.'WTABLE'.'XDENO' ;
  646. TWORK.'XDENOM' = PRECED.'WTABLE'.'XDENOM' ;
  647. *
  648. * En dynamique
  649. TWORK.'FREA1' = PRECED.'WTABLE'.'FREA1' ;
  650. TWORK.'OPERATEUR' = PRECED.'WTABLE'.'OPERATEUR' ;
  651. TWORK.'DELTAN' = PRECED.'WTABLE'.'DT' ;
  652. *
  653. * Rigidite tangente
  654. TWORK.'LASTKTAN' = PRECED.'WTABLE'.'LASTKTAN' ;
  655. *
  656. * Pour PAS_AJUSTE
  657. TWORK.'NOMBRE_ITERATIONS' = PRECED.'WTABLE'.'NOMBRE_ITERATIONS' ;
  658. 'FINSI' ;
  659. *
  660. 'FINSI';
  661. ************************************************************************
  662. * Stocker TWORK a l'indice WTABLE de PRECED
  663. ************************************************************************
  664. PRECED.'WTABLE' = TWORK ;
  665. ************************************************************************
  666. * Renseigner WTABLE a partir des informations de PRECED
  667. ************************************************************************
  668. 'SI' ('EGA' TYPMO 'CHARGEME') ;
  669. TWORK.'CHAR_MODE' = VRAI ;
  670. TWORK.'MODELE' = 'TIRE' MO 'MODE' TWORK.'TEMPS0' ;
  671. 'SINON' ;
  672. TWORK.'MODELE' = MO ;
  673. 'FINSI' ;
  674. *-----------------------------------------------------------------------
  675. 'SI' ('EGA' TYPMA 'CHARGEME') ;
  676. TWORK.'CHAR_MATE' = VRAI ;
  677. TWORK.'CARACTERISTIQUES' = 'TIRE' MA 'MATE' TWORK.'TEMPS0' ;
  678. 'SINON' ;
  679. TWORK.'CARACTERISTIQUES' = MA ;
  680. 'FINSI';
  681. *-----------------------------------------------------------------------
  682. 'SI' ('EXIS' PRECED 'CHARGEMENT') ;
  683. TWORK.'CHARGEMENT' = PRECED.'CHARGEMENT';
  684. 'FINSI';
  685. *-----------------------------------------------------------------------
  686. 'SI' ('EXISTE' PRECED 'PAS_AJUSTE');
  687. TWORK.'PAS_AJUSTE' = PRECED.'PAS_AJUSTE';
  688. 'FINSI';
  689. 'SI' ('EXISTE' PRECED 'AUTOMATIQUE');
  690. TWORK.'AUTOMATIQUE' = PRECED.'AUTOMATIQUE';
  691. * par defaut pas de controle de stabilite en pilotage
  692. TWORK.'STABILITE' = FAUX;
  693. 'FINSI' ;
  694. 'SI' TWORK.'AUTOMATIQUE';
  695. TWORK.'PAS_AJUSTE' = FAUX;
  696. 'FINSI';
  697. *
  698. 'SI' (('EXIS' PRECED 'TEMPS_CALCULES') 'ET' ('NON' TWORK.'PAS_AJUSTE'));
  699. TWORK.'TEMPS_CALCULES'= PRECED.'TEMPS_CALCULES';
  700. 'SINON' ;
  701. 'SI' TWORK.'FREQUENTIEL' ;
  702. l_zf = 'PROG' ; l_ii = 'PROG' 1. 'PAS' 0.3 4. 'PAS' 1. 10. ;
  703. 'SI' ('EXISTE' TWORK.'CARACTERISTIQUES' 'FREQ') ;
  704. ccfr1 = 'EXCO' TWORK.'CARACTERISTIQUES' 'FREQ' 'NOID' ;
  705. 'SI' ('EGA' ('TYPE' ccfr1) 'MCHAML ') ;
  706. ncfr1 = 'EXTR' ccfr1 'NBZO' ;
  707. 'REPE' vfr1 ncfr1 ;
  708. ** hypothese 1 modele = 1 mode !!
  709. f1 = 'EXTR' ccfr1 'FREQ' &vfr1 1 1 ;
  710. log_f1 = ('LOG' f1) / ('LOG' 10.) ;
  711. e10_f1 = 'ENTI' log_f1 ;
  712. 'SI' (log_f1 < 0.) ; e10_f1 = e10_f1 - 1 ; 'FINSI' ;
  713. 'SI'((log_f1 - e10_f1) 'EGA' 0.) ; e10_f1 = e10_f1 - 1 ; 'FINSI' ;
  714. p10_f1 = 10. ** e10_f1 ;
  715. l_zf1 = 'PROG' (f1 - (p10_f1/10.)) (f1 - (p10_f1/100.))
  716. (f1 - (p10_f1/1000.)) (f1 + (p10_f1/1000.)) ;
  717. l_i10 = l_ii * p10_f1 ;
  718. 'SI' (('DIME' l_zf) 'EGA' 0) ;
  719. e10_min = e10_f1 ; e10_max = e10_f1 + 1 ;
  720. l_zf = 'ORDO' (l_i10 'ET' l_zf1) 'UNIQ' ;
  721. 'SINON' ;
  722. l_zf0 = l_zf ;
  723. 'SI' ((e10_f1 '>EG' e10_min) 'ET' (e10_f1 < e10_max)) ;
  724. l_zf = 'ORDO' (l_zf 'ET' l_zf1) 'UNIQ' ;
  725. 'SINON' ;
  726. 'SI' (e10_f1 < e10_min) ;
  727. e10_u = e10_f1 ;
  728. 'REPE' b_lz ;
  729. l_zf0 = l_i10 'ET' l_zf0 ; e10_u = e10_u + 1 ;
  730. 'SI' (e10_u 'EGA' e10_min) ; 'QUIT' b_lz ; 'FINSI' ;
  731. l_i10 = l_i10 * 10 ;
  732. 'FIN' b_lz ;
  733. e10_min = e10_f1 ;
  734. l_zf = 'ORDO' (l_zf0 'ET' l_zf1) 'UNIQ' ;
  735. 'FINSI' ;
  736. 'SI' (e10_f1 '>EG' e10_max) ;
  737. e10_u = e10_f1 ;
  738. 'REPE' b_lz ;
  739. l_zf0 = l_i10 'ET' l_zf0 ; e10_u = e10_u - 1 ;
  740. 'SI' (e10_u < e10_max) ; 'QUIT' b_lz ; 'FINSI' ;
  741. l_i10 = l_i10 / 10 ;
  742. 'FIN' b_lz ;
  743. e10_max = e10_f1 + 1;
  744. l_zf = 'ORDO' (l_zf0 'ET' l_zf1) 'UNIQ' ;
  745. 'FINSI' ;
  746. 'FINSI' ;
  747. 'FINSI' ;
  748. 'FIN' vfr1 ;
  749. 'SINON' ;
  750. l_zf = l_ii ;
  751. 'FINSI' ;
  752. TWORK.'TEMPS_CALCULES' = l_zf ;
  753. 'SINON' ;
  754. TWORK.'TEMPS_CALCULES' = l_ii ;
  755. 'FINSI' ;
  756. 'SINON';
  757. 'SI' ('NON' ('EXISTE' PRECED 'TEMPS_SAUVES'));
  758. 'ERREUR' 'Il manque la donnee des temps a sauver ou a calculer';
  759. 'FINSI';
  760. TWORK.'PAS_AJUSTE' = VRAI;
  761. TWORK.'TEMPS_CALCULES' = PRECED.'TEMPS_SAUVES';
  762. TWORK.'TEMPS_SAUVES' = PRECED.'TEMPS_SAUVES';
  763. 'FINSI';
  764. 'FINSI';
  765. *
  766. 'SI' TWORK.'FREQUENTIEL' ;
  767. 'REPETER' BTFRE ;
  768. TI = 'EXTRAIRE' TWORK.'TEMPS_CALCULES' &BTFRE ;
  769. 'SI' (TI '>' 0.D0) ;
  770. TWORK.'TEMPS0' = TI ;
  771. 'QUITTER' BTFRE ;
  772. 'FINSI' ;
  773. 'FIN' BTFRE ;
  774. 'FINSI' ;
  775. *
  776. TWORK.'IPTIME' = TWORK.'TEMPS_CALCULES';
  777. TWORK.'IPRESU' = TWORK.'TEMPS_CALCULES';
  778. 'SI' ('EXISTE' PRECED 'TEMPS_SAUVES' );
  779. TWORK.'IPRESU' = PRECED.'TEMPS_SAUVES';
  780. 'FINSI';
  781. 'SI' ('EXISTE' PRECED 'TEMPS_SAUVEGARDES');
  782. TWORK.'ISAUVEGL' = VRAI;
  783. TWORK.'ISAUVEGA' = PRECED.'TEMPS_SAUVEGARDES';
  784. 'FINSI';
  785. 'SI' ('EXISTE' PRECED 'ECONOMIQUE');
  786. TWORK.'LECONOMI' = PRECED.'ECONOMIQUE';
  787. 'FINSI';
  788. 'SI' ('EXIS' PRECED 'MES_SAUVEGARDES');
  789. TABSAUV = PRECED .'MES_SAUVEGARDES';
  790. TWORK.'TABSAUV' = TABSAUV ;
  791. 'SI' ('NON' ( 'EXIS' TABSAUV 'DEFIN'));
  792. TWORK.'TABSAUV'.'DEFIN' = FAUX;
  793. 'FINSI';
  794. 'SI' ('NON' ( 'EXIS' TABSAUV 'DEFTO'));
  795. TWORK.'TABSAUV'.'DEFTO' = FAUX;
  796. 'FINSI';
  797. 'FINSI';
  798. LOGERR1 = 'DANS' 'QUEL' TWORK.'IPRESU' TWORK.'IPTIME';
  799. LOGERR2 = VRAI;
  800. 'SI' TWORK.'ISAUVEGL';
  801. LOGERR2= 'DANS' 'QUEL' TWORK.'ISAUVEGA' TWORK.'IPTIME';
  802. 'FINSI';
  803. 'SI' ('NON' (LOGERR1 'ET' LOGERR2));
  804. 'ERRE' 1013;
  805. 'FINSI';
  806. *
  807. *----- Indicateur ADAP_MODE d'adaptation du modele :
  808. 'SI' ('EXIS' PRECED 'TEMPS_ADAPTATION_MODELE') ;
  809. TWORK.'ADAP_MODE' = VRAI ;
  810. TWORK.'LTPS_ADAP' = PRECED.'TEMPS_ADAPTATION_MODELE' ;
  811. * TPS1_ADAP : prochain temps d'adaptation
  812. TWORK.'TPS1_ADAP' = TWORK.'LTPS_ADAP' 'EXTR' 1 ;
  813. TWORK.'INDI_ADAP' = 1 ;
  814. 'SINON' ;
  815. TWORK.'TPS1_ADAP' = ('MAXI' TWORK.'TEMPS_CALCULES') + 1. ;
  816. 'FINSI' ;
  817. *-----------------------------------------------------------------------
  818. 'SI' ('EXISTE' PRECED 'CONSOLIDATION') ;
  819. TWORK.'CONSOLIDATION' = PRECED.'CONSOLIDATION' ;
  820. 'FINSI';
  821. *
  822. 'SI' ('EXISTE' PRECED 'CONVERGENCE_MONOTONE');
  823. TWORK.'CONVERGENCE_MONOTONE' = PRECED.'CONVERGENCE_MONOTONE';
  824. 'FINSI';
  825. *
  826. 'SI' ('EXISTE' PRECED 'DELTAITER');
  827. TWORK.'DELTAITER' = PRECED.'DELTAITER';
  828. 'FINSI' ;
  829. *
  830. 'SI' ('EXISTE' PRECED 'DYNAMIQUE') ;
  831. TWORK.'DYNAMIQUE' = PRECED.'DYNAMIQUE';
  832. 'SI' ('EXISTE' PRECED 'AMORTISSEMENT' );
  833. TWORK.'AMORTISSEMENT' = 'EXTR' PRECED.'AMORTISSEMENT' 'RIGI' 'NOMU';
  834. 'FINSI';
  835. 'FINSI';
  836. *
  837. 'SI' ('EXISTE' PRECED 'FTOL' );
  838. TWORK.'FTOL' = PRECED.'FTOL';
  839. 'FINSI';
  840. *
  841. 'SI' ('EXISTE' PRECED 'INITIALISATION');
  842. TWORK.'INITIALISATION' = PRECED.'INITIALISATION';
  843. 'FINSI';
  844. *
  845. 'SI' ('EXISTE' PRECED 'LIAISON_PERSISTANTE' ) ;
  846. TWORK.'LIAISON_PERSISTANTE' = PRECED.'LIAISON_PERSISTANTE';
  847. 'FINSI';
  848. *
  849. 'SI' ('EXISTE' PRECED 'MAXSOUSITERATION') ;
  850. TWORK.'MAXSOUSITERATION' = PRECED.'MAXSOUSITERATION';
  851. 'FINSI';
  852. *
  853. 'SI' ('EXISTE' PRECED 'MAXSOUSPAS');
  854. TWORK.'MAXSOUSPAS' = PRECED.'MAXSOUSPAS' ;
  855. 'FINSI';
  856. *
  857. 'SI' ('EXISTE' PRECED 'LINESEARCH');
  858. 'SI' ('EGA' PRECED.'LINESEARCH' VRAI);
  859. TWORK.'LINESEARCH' = VRAI;
  860. TWORK.'GRANDS_DEPLACEMENTS' = VRAI;
  861. 'FINSI';
  862. 'FINSI';
  863. *
  864. 'SI' ('EXISTE' PRECED 'MTOL' );
  865. TWORK.'MTOL' = PRECED.'MTOL';
  866. 'FINSI';
  867. *
  868. 'SI' ('EXISTE' PRECED 'PRECISION') ;
  869. TWORK.'PRECISION' = PRECED.'PRECISION' ;
  870. 'FINS' ;
  871. *
  872. 'SI' ('NEG' TWORK.'OPERATEUR' 'INCONNU');
  873. TWORK.'RECAOP' = FAUX ;
  874. 'FINSI' ;
  875. *
  876. 'SI' ('EXISTE' PRECED 'PRECSOUSITERATION') ;
  877. TWORK.'PRECSOUSITERATION' = PRECED.'PRECSOUSITERATION';
  878. 'FINSI';
  879. *
  880. 'SI' ('EXISTE' PRECED 'PREDICTEUR');
  881. TWORK.'PREDICTEUR' = 'MOT' PRECED.'PREDICTEUR';
  882. TWORK.'GRANDS_DEPLACEMENTS' = VRAI;
  883. 'FINSI';
  884. *
  885. 'SI' ('EXISTE' PRECED 'PROCEDURE_CHARMECA');
  886. TWORK.'PROCEDURE_CHARMECA' = PRECED.'PROCEDURE_CHARMECA';
  887. 'FINSI';
  888. *
  889. 'SI' ('EXISTE' PRECED 'PROCEDURE_CHARTHER');
  890. TWORK.'PROCEDURE_CHARTHER' = PRECED.'PROCEDURE_CHARTHER';
  891. 'FINSI';
  892. *
  893. 'SI' ('EXISTE' PRECED 'PROCEDURE_PARATHER') ;
  894. TWORK.'PROCEDURE_PARATHER' = PRECED.'PROCEDURE_PARATHER' ;
  895. 'FINSI';
  896. *
  897. 'SI' ('EXISTE' PRECED 'PROCEDURE_PERSO1');
  898. TWORK.'PROCEDURE_PERSO1' = PRECED.'PROCEDURE_PERSO1';
  899. 'FINSI';
  900. *
  901. 'SI' ('EXISTE' PRECED 'PROCEDURE_PERSO2');
  902. TWORK.'PROCEDURE_PERSO2' = PRECED.'PROCEDURE_PERSO2';
  903. 'FINSI';
  904. *
  905. 'SI' ('EXISTE' PRECED 'PROCEDURE_REEV_MEC');
  906. TWORK.'PROCEDURE_REEV_MEC' = PRECED.'PROCEDURE_REEV_MEC' ;
  907. 'FINSI';
  908. *
  909. 'SI' ('EXISTE' PRECED 'PROCEDURE_REEV_THE');
  910. TWORK.'PROCEDURE_REEV_THE' = PRECED.'PROCEDURE_REEV_THE' ;
  911. 'FINSI';
  912. *
  913. 'SI' ('EXISTE' PRECED 'PROCEDURE_THERMIQUE');
  914. TWORK.'PROCEDURE_THERMIQUE' = PRECED.'PROCEDURE_THERMIQUE';
  915. 'FINSI';
  916. *
  917. 'SI' ('EXIS' PRECED 'REAC_GRANDS');
  918. 'SI' ('EGA' ('TYPE' PRECED . 'REAC_GRANDS') 'FLOTTANT') ;
  919. TWORK.'REAC_GRANDS' = PRECED.'REAC_GRANDS';
  920. 'FINSI';
  921. 'FINSI';
  922. *
  923. 'SI' ('EXISTE' PRECED 'RENORMALISATION');
  924. TWORK.'RENORMALISATION' = PRECED.'RENORMALISATION';
  925. 'FINSI';
  926. *
  927. 'SI' ('EXIS' PRECED 'SOUS-INCREMENT' );
  928. TWORK.'SOUS-INCREMENT'=PRECED.'SOUS-INCREMENT';
  929. 'FINSI';
  930. *
  931. 'SI' ('EXISTE' PRECED 'STABILITE');
  932. 'SI' ('EGA' PRECED.'STABILITE' FAUX);
  933. TWORK.'STABILITE'= FAUX;
  934. 'SINON';
  935. TWORK.'STABILITE'= VRAI;
  936. 'FINSI';
  937. 'FINSI';
  938. *
  939. 'SI' ('EXISTE' PRECED 'CONVERGENCE_FORCEE');
  940. TWORK.'CONVERGENCE_FORCEE' = PRECED.'CONVERGENCE_FORCEE';
  941. 'SINON';
  942. 'SI' ('NON' TWORK.'AUTOMATIQUE');
  943. TWORK.'CONVERGENCE_FORCEE' = VRAI;
  944. 'FINSI';
  945. 'FINSI';
  946. *
  947. 'SI' ('EXISTE' PRECED 'CONVERGENCE_MEC_THE');
  948. TWORK.'CONVERGENCE_MEC_THE' = PRECED.'CONVERGENCE_MEC_THE';
  949. 'FINSI';
  950. 'SI' TWORK.'CONVERGENCE_MEC_THE';
  951. TWORK.'AUTOMATIQUE' = FAUX;
  952. TWORK.'CONVERGENCE_FORCEE' = FAUX;
  953. 'SI' TWORK.'PAS_AJUSTE' ;
  954. 'ERREUR' 'Options CONVERGENCE_MEC_THE et PAS_AJUSTE incompatibles';
  955. 'FINSI';
  956. TWORK.'CRITERE_COHERENCE' = TWORK.'PRECISION' ;
  957. 'SI' ('EXISTE' PRECED 'CRITERE_COHERENCE') ;
  958. TWORK.'CRITERE_COHERENCE' = PRECED.'CRITERE_COHERENCE' ;
  959. 'FINSI' ;
  960. TWORK.'BOU_METH' = 10;
  961. 'SI' ('EXISTE' PRECED 'NB_BOTH');
  962. TWORK.'BOU_METH'=PRECED.'NB_BOTH';
  963. 'FINSI';
  964. 'FINSI';
  965. *
  966. 'SI' ('EXISTE' PRECED 'MAXITERATION') ;
  967. TWORK.'MAXITERATION' = PRECED.'MAXITERATION';
  968. 'SINON';
  969. 'SI' ((TWORK.'AUTOMATIQUE') 'OU' (TWORK.'PAS_AJUSTE')) ;
  970. TWORK.'MAXITERATION' = 250;
  971. 'FINSI';
  972. 'FINSI';
  973. *
  974. 'SI' (TWORK.'CONVERGENCE_FORCEE' 'OU' TWORK.'RENORMALISATION');
  975. TWORK.'MAXITERATION' = 250;
  976. 'SI' ('EXISTE' PRECED 'MAXDEFOR');
  977. TWORK.'MAXDEFOR' = PRECED.'MAXDEFOR' ;
  978. 'FINSI';
  979. 'SI' TWORK.'CONVERGENCE_FORCEE';
  980. 'SI' ('EXISTE' PRECED 'RELAXATION_NONCONV');
  981. TWORK.'RELAXATION_NONCONV' = PRECED.'RELAXATION_NONCONV' ;
  982. 'FINSI';
  983. 'FINSI';
  984. 'FINSI';
  985. *-----------------------------------------------------------------------
  986. * Note : Il faudrait separer la thermique de la mecanique pour la //.
  987. NBPART = 'VALEUR' 'ASSI' ;
  988. TWORK.'NBPART' = NBPART ;
  989. MPARA = 'MOT' TWORK.'PROCESSEURS' ;
  990. 'SI' ('EXISTE' PRECED 'PROCESSEURS');
  991. MPARA = 'MOT' PRECED.'PROCESSEURS';
  992. 'FINSI';
  993. 'SI' ('&lt;EG' NBPART 1);
  994. MPARA = 'MOT' 'MONO_PROCESSEUR' ;
  995. 'SINON' ;
  996. 'SI' ('EGA' MPARA 'INCONNU') ;
  997. * anciennes valeurs: 2000 200
  998. NBELMIN = 200 ; NBELMM = 400;
  999. toutmo = 'EXTR' TWORK.'MODELE' 'ZONE' ;
  1000. IMOD = ('DIME' toutmo) / 2 ;
  1001. MINELE = 1000000 ; MAXELE = 0 ;
  1002. 'REPE' BOUCMO IMOD ;
  1003. BBB = 'NBEL' TOUTMO . (&BOUCMO * 2);
  1004. 'SI' (MINELE > BBB); MINELE = BBB; 'FINSI';
  1005. 'SI' (MAXELE < BBB); MAXELE = BBB; 'FINSI';
  1006. 'FIN' BOUCMO ;
  1007. NBTMP = (MINELE / NBELMM) ;
  1008. ** mess 'nbtmp' ' ' nbtmp;
  1009. SI (NBTMP < NBPART); NBPART = NBTMP; 'FINSI';
  1010. TWORK.'NBPART' = NBPART ;
  1011. 'SI' ('>' NBPART 1);
  1012. MINELE=MINELE/NBPART ; MAXELE=MAXELE/NBPART;
  1013. ** mess 'minele maxele' ' ' minele ' ' maxele;
  1014. 'SI' (MINELE > NBELMIN) ;
  1015. MPARA = 'MOT' 'AUTOMATIQUE' ;
  1016. 'SINON';
  1017. 'SI'( (MINELE > NBELMM) 'OU' (MAXELE > NBELMM)) ;
  1018. MPARA = 'MOT' 'COMPORTEMENT' ;
  1019. 'FINSI';
  1020. 'FINSI';
  1021. 'SINON';
  1022. MPARA = 'MOT' 'MONO_PROCESSEUR' ;
  1023. 'FINSI';
  1024. 'FINSI';
  1025. 'FINSI';
  1026. LMPARA = 'MOTS' 'MONO_PROCESSEUR' 'AUTOMATIQUE' 'COMPORTEMENT' ;
  1027. 'SI' ('EXIS' LMPARA MPARA) ;
  1028. TWORK.'PROCESSEURS' = 'MOT' MPARA ;
  1029. 'SINON' ;
  1030. 'MESS' ' *** Cas // non prevu' ; 'ERREUR' 5 ;
  1031. 'FINSI' ;
  1032. ************************************************************************
  1033. * Decortiquer ce que contient le MODELE dans PAS_MODL
  1034. ************************************************************************
  1035. * Oublier l'indice MODEL_COURANT pour re-initialiser la table
  1036. si (exis TWORK 'MODELE_COURANT') ;
  1037. oubl TWORK 'MODELE_COURANT' ;
  1038. fins ;
  1039. *
  1040. * Oublier l'indice 'MO_TOT_PREC' pour le reinitialiser dans UNPAS
  1041. si (exis TWORK 'MO_TOT_PREC') ;
  1042. oubl TWORK 'MO_TOT_PREC' ;
  1043. fins ;
  1044.  
  1045. PAS_MODL PRECED ;
  1046. *
  1047. 'SI' ('NON' ('OU' TWORK.'FOR_MECA' TWORK.'FOR_THER' TWORK.'FOR_DIFF'
  1048. TWORK.'NVSTNL')) ;
  1049. 'ERREUR' 'Le modele ne correspond a aucune formulation valable';
  1050. 'FINSI';
  1051. *
  1052. 'SI' TWORK.'ADAP_MODE' ;
  1053. 'SI' ('OU' TWORK.'FOR_METALLU' TWORK.'PHASE' TWORK.'SOLUBILITE'
  1054. TWORK.'FOR_DIFF' TWORK.'THM1' TWORK.'FOR_MECA') ;
  1055. 'MESS' ' > Adaptation du modele pas disponible pour cette formulation.' ;
  1056. 'ERRE' 251 ;
  1057. 'FINSI' ;
  1058. 'FINSI' ;
  1059. *
  1060. 'SI' (TWORK .'NVSTNL' 'ET' TWORK .'FOR_MECA') ;
  1061. TWORK .'DYNAMIQUE' = VRAI ;
  1062. 'FINSI' ;
  1063. *
  1064. * Noms des inconnues passees a TRANSNON :
  1065. 'SI' ('NEG' TWORK.'MOD_TOT' 'INCONNU') ;
  1066. TWORK.'PRIM_TOT' ='EXTR' TWORK.'MOD_TOT' 'DEPL' ;
  1067. TWORK.'DUAL_TOT' ='EXTR' TWORK.'MOD_TOT' 'FORC' ;
  1068. 'FINS' ;
  1069. *
  1070. * GRANDS_DEPLACEMENTS si CONTACT :
  1071. 'SI' TWORK.'CONTACT' ;
  1072. TWORK.'GRANDS_DEPLACEMENTS' = VRAI;
  1073. 'FINSI';
  1074. *
  1075. *---------- Calcul purement thermique / diffusion ? ou couplage? -------
  1076. 'SI' (TWORK.'FOR_THER' 'OU' TWORK.'FOR_DIFF');
  1077. 'SI' TWORK.'FOR_MECA' ;
  1078. TWORK.'COUPLAGE' = VRAI;
  1079. 'SI' ('EXIS' PRECED 'PROJECTION');
  1080. TWORK.'PROJECTION' = PRECED.'PROJECTION';
  1081. 'FINSI';
  1082. 'FINSI';
  1083. 'FINSI';
  1084. *
  1085. 'SI' TWORK.'POR1';
  1086. TWORK.'MAI_POR' = 'EXTR' TWORK.'MOD_POR' 'MAIL';
  1087. TWORK.'MOT_POR' = 'MOTS' 'FP' 'FPQ' 'FTP' ;
  1088. *
  1089. * poreux+consolidation -> il faut donner la matrice de permeabilite
  1090. * et ne pas etre en dynamique
  1091. 'SI' TWORK.'CONSOLIDATION' ;
  1092. 'SI' TWORK.'DYNAMIQUE' ;
  1093. 'ERREUR' ' On ne peut pas etre en dynamique.' ;
  1094. 'FINSI';
  1095. 'SI' ('NON' ('EXISTE' PRECED 'PERMEABILITE'));
  1096. 'ERREUR' 'Il faut donner la matrice de permeabilite';
  1097. 'SINON';
  1098. TWORK.'PERMEABILITE'=PRECED.'PERMEABILITE';
  1099. 'FINSI';
  1100. 'SI' ('EXISTE' PRECED 'TETA' ) ;
  1101. TWORK.'TETA' = PRECED.'TETA';
  1102. 'FINSI';
  1103. 'FINSI';
  1104. 'FINSI';
  1105. *
  1106. * Verif. CHARGEMENT si formulation CHARGEMENT :
  1107. 'SI' ('EXIS' TWORK 'MOD_CHA') ;
  1108. 'SI' ('NON' ('EXIS' (TWORK.'CHARGEMENT') 'PRES')) ;
  1109. 'ERREUR' 'Il manque la donnee d un chargement de pression';
  1110. 'ERREUR' '-> voir la notice de l operateur CHAR';
  1111. 'FINSI' ;
  1112. 'FINSI' ;
  1113.  
  1114. TWORK.'CHAR_THE' = 'EXISTE' TWORK.'CHARGEMENT' 'T' ;
  1115. TWORK.'CHAR_DEFI' = 'EXISTE' TWORK.'CHARGEMENT' 'DEFI' ;
  1116. TWORK.'CHAR_MATE' = TWORK.'CHAR_MATE' 'OU' ('EXIS' TWORK.'CHARGEMENT' 'MATE') ;
  1117. TWORK.'CHAR_PRES' = 'EXISTE' TWORK 'MOD_PRE' ;
  1118. TWORK.'ITHER' = 'OU' TWORK.'FOR_THER' TWORK.'CHAR_THE' ;
  1119.  
  1120. *------------ existe-t-il un chargement en pilotage indirect ? --------
  1121. 'SI' ('EXISTE' PRECED 'PILOTAGE_INDIRECT') ;
  1122. TWORK.'CHAR_PILO' = VRAI;
  1123.  
  1124. *--------- et des deplacements pilotes
  1125. 'SI' ('EXISTE' PRECED 'DEPLACEMENTS_PILOTES' );
  1126. TWORK.'DEPLACEMENTS_PILOTES' = PRECED.'DEPLACEMENTS_PILOTES' ;
  1127. 'FINSI';
  1128.  
  1129. *--------- et des forces pilotees
  1130. 'SI' ('EXISTE' PRECED 'FORCES_PILOTEES' );
  1131. TWORK.'FORCES_PILOTEES' = PRECED.'FORCES_PILOTEES';
  1132. 'FINSI';
  1133.  
  1134. *--------- et une region de recherche
  1135. 'SI' ('EXISTE' PRECED 'ZONE_DE_PILOTAGE' );
  1136. TWORK.'ZONE_DE_PILOTAGE' = PRECED.'ZONE_DE_PILOTAGE';
  1137. 'FINSI';
  1138.  
  1139. *--------- et le parametre de pilotage
  1140. 'SI' ('EXISTE' PRECED 'PARAMETRE_DE_PILOTAGE' );
  1141. TWORK.'PARAMETRE_DE_PILOTAGE' = PRECED.'PARAMETRE_DE_PILOTAGE';
  1142. 'FINSI';
  1143. *
  1144. *---------- Parametre de pilotage indirect et table de sortie
  1145. 'SI' ('NON' ('EXIS' PRECED 'COEFFICIENT_DE_PILOTAGE'));
  1146. PRECED.'COEFFICIENT_DE_PILOTAGE' = PROG 0. ;
  1147. 'FINSI';
  1148. 'FINSI';
  1149. *
  1150. 'SI' ('EXISTE' PRECED 'CAPACITE_CONSTANTE');
  1151. TWORK.'CAPACONST' = VRAI;
  1152. TWORK.'CAPACITE_CONSTANTE' = PRECED.'CAPACITE_CONSTANTE';
  1153. 'FINSI';
  1154. *
  1155. 'SI' ('EXISTE' PRECED 'CONDUCTIVITE_CONSTANTE');
  1156. TWORK.'CONDCONST' = VRAI;
  1157. TWORK.'CONDUCTIVITE_CONSTANTE' = PRECED.'CONDUCTIVITE_CONSTANTE';
  1158. 'FINSI';
  1159. ************************************************************************
  1160. * Verifications/initialisations propres a la THERMIQUE
  1161. ************************************************************************
  1162. 'SI' TWORK.'FOR_THER' ;
  1163. *
  1164. 'SI' ('OU' TWORK.'PHASE' TWORK.'SOLUBILITE' TWORK.'FOR_DIFF' TWORK.'THM1');
  1165. TWORK.'PROCEDURE_THERMIQUE' = 'MOT' 'NONLINEAIRE';
  1166. 'FINSI';
  1167. *
  1168. MOD_T = TWORK.'MOD_T' ;
  1169. PRIM_T ='EXTR' MOD_T 'DEPL' ;
  1170.  
  1171. 'SI' ('EXIS' PRECED 'TTOL');
  1172. TTOL=PRECED.'TTOL' ;
  1173. 'SI' ('EGA' ('TYPE' TTOL) ('MOT' 'FLOTTANT'));
  1174. TTOL ='MANU' 'CHPO' ('EXTR' MOD_T 'MAIL') PRIM_T ('PROG' ('DIME' PRIM_T) '*' TTOL) 'NATURE' 'DIFFUS';
  1175. 'SINO';
  1176. 'ERRE' 'PAS_DEFA : l''indice ''TTOL'' ne peut etre qu''un ''FLOTTANT''' ;
  1177. 'FINS';
  1178. TWORK.'TTOL' = TTOL ;
  1179. 'FINS';
  1180. TWORK.'PRIM_T' = PRIM_T 'ET' 'LX' ;
  1181. TWORK.'DUAL_T' =('EXTR' MOD_T 'FORC') 'ET' 'FLX' ;
  1182. *
  1183. 'SI'('EXIS' PRECED 'CELSIUS');
  1184. TWORK.'CELSIUS' = PRECED.'CELSIUS';
  1185. TWORK.'TREF' = 273.15 ;
  1186. 'FINSI';
  1187. *
  1188. 'SI' ('EXIS' PRECED 'BLOCAGES_THERMIQUES');
  1189. BLOTHE1 = PRECED.'BLOCAGES_THERMIQUES' ;
  1190. TWORK.'BLOCAGES_THERMIQUES' = BLOTHE1 ;
  1191. TWORK.'CHAR_BLOT' = 'EGA' ('TYPE' BLOTHE1) 'CHARGEME' ;
  1192. 'FINSI';
  1193. *
  1194. 'SI' TWORK.'RAYO' ;
  1195. TWORK.'RAYONNEMENT' = 'PRRA' TWORK.'MOD_RAY';
  1196. 'SI' ('NON' ('EXISTE' (TWORK.'CARACTERISTIQUES') 'EMIS'));
  1197. 'ERREUR' ' Il manque la donnee des facteurs d emissivite';
  1198. 'FINSI';
  1199. 'SI'('EXISTE' PRECED 'CTE_STEFAN_BOLTZMANN') ;
  1200. TWORK.'CTE_STEFAN_BOLTZMANN'=PRECED.'CTE_STEFAN_BOLTZMANN';
  1201. 'SAUT' 1 'LIGN' ;
  1202. 'MESS' 'ATTENTION ! Constante de Stefan-Boltzmann en unites SI';
  1203. 'MESS' ' soit ' (TWORK . 'CTE_STEFAN_BOLTZMANN') ;
  1204. 'FINSI' ;
  1205. 'FINSI';
  1206. *
  1207. 'SI' ('EXIS' PRECED 'RELAXATION_THETA' );
  1208. TWORK.'RELAXATION_THETA'=PRECED.'RELAXATION_THETA' ;
  1209. 'FINSI';
  1210. *
  1211. 'SI' ('EXIS' PRECED 'RELAXATION_DUPONT');
  1212. TWORK.'RELAXATION_DUPONT'= PRECED . 'RELAXATION_DUPONT' ;
  1213. 'FINSI';
  1214. *
  1215. 'SI' ('EXISTE' PRECED 'THERMIQUE_AUGMENTEE');
  1216. TWORK.'THERAUGM' = VRAI;
  1217. TWORK.'THERMIQUE_AUGMENTEE' = PRECED.'THERMIQUE_AUGMENTEE';
  1218. RR= PRECED.'THERMIQUE_AUGMENTEE';
  1219. MNOMU = ('EXTR' RR 'MAILLAGE' 'NOMU') 'NBNO';
  1220. MAVMU = ('EXTR' RR 'MAILLAGE' ) 'NBNO';
  1221. 'SI' (MNOMU 'NEG' MAVMU) ;
  1222. 'ERREUR' 'Il ne faut pas de multiplicateur dans THERMIQUE_AUGMENTEE';
  1223. 'FINSI';
  1224. 'FINSI';
  1225. 'FINSI';
  1226. ************************************************************************
  1227. * Verifications/initialisations propres a la DIFFUSION
  1228. ************************************************************************
  1229. 'SI' TWORK.'FOR_DIFF' ;
  1230. *
  1231. MOD_DIF = TWORK.'MOD_DIF' ;
  1232. PRIM_DIF ='EXTR' MOD_DIF 'DEPL' ;
  1233. TWORK.'PRIM_DIF' = PRIM_DIF ;
  1234.  
  1235. 'SI' ('EXIS' PRECED 'CTOL');
  1236. CTOL=PRECED.'CTOL' ;
  1237. 'SI' ('EGA' ('TYPE' CTOL) ('MOT' 'FLOTTANT'));
  1238. CTOL ='MANU' 'CHPO' ('EXTR' MOD_DIF 'MAIL') PRIM_DIF ('PROG' ('DIME' PRIM_DIF) '*' CTOL) 'NATURE' 'DIFFUS';
  1239. 'SINO';
  1240. 'SI' ('EGA' ('TYPE' CTOL) ('MOT' 'CHPOINT'));
  1241. 'SI' ('NON' ('EXIS' ('EXTR' CTOL 'COMP') PRIM_DIF 'ET'));
  1242. 'ERRE' 'CTOL ne contient pas toutes les composantes de la DIFFUSION';
  1243. 'FINS';
  1244. 'SINO';
  1245. 'ERRE' 'PAS_DEFA : l''indice ''CTOL'' ne peut etre qu''un CHPOINT ou un ''FLOTTANT''';
  1246. 'FINS';
  1247. 'FINS';
  1248.  
  1249. 'SI' ('EGA' ('TYPE' TWORK.'TTOL') ('MOT' 'CHPOINT'));
  1250. TWORK.'TTOL' = TWORK.'TTOL' 'ET' CTOL ;
  1251. 'SINO';
  1252. TWORK.'TTOL' = CTOL ;
  1253. 'FINS';
  1254. 'FINS';
  1255. TWORK.'PRIM_DIF' = PRIM_DIF 'ET' 'LX' ;
  1256. TWORK.'DUAL_DIF' =('EXTR' MOD_DIF 'FORC') 'ET' 'FLX' ;
  1257. *
  1258. 'SI' ('EXIS' PRECED 'BLOCAGES_DIFFUSIONS') ;
  1259. BLODIF1 = PRECED.'BLOCAGES_DIFFUSIONS' ;
  1260. TWORK.'BLOCAGES_DIFFUSIONS' = BLODIF1 ;
  1261. TWORK.'CHAR_BLOD' = 'EGA' ('TYPE' BLODIF1) 'CHARGEME' ;
  1262. 'FINSI' ;
  1263. *
  1264. 'SI' ('EXIS' PRECED 'RELAXATION_THETA' );
  1265. TWORK.'RELAXATION_THETA'=PRECED.'RELAXATION_THETA' ;
  1266. 'FINSI';
  1267. *
  1268. 'SI' ('EXIS' PRECED 'RELAXATION_DUPONT');
  1269. TWORK.'RELAXATION_DUPONT'= PRECED . 'RELAXATION_DUPONT' ;
  1270. 'FINSI';
  1271. *
  1272. 'SI' ('EXISTE' PRECED 'DIFFUSION_AUGMENTEE');
  1273. TWORK.'DIFFAUGM' = VRAI;
  1274. TWORK.'DIFFUSION_AUGMENTEE' = PRECED.'DIFFUSION_AUGMENTEE';
  1275. RR= PRECED.'DIFFUSION_AUGMENTEE';
  1276. MNOMU = ('EXTR' RR 'MAILLAGE' 'NOMU') 'NBNO';
  1277. MAVMU = ('EXTR' RR 'MAILLAGE' ) 'NBNO';
  1278. 'SI' (MNOMU 'NEG' MAVMU) ;
  1279. 'ERREUR' 'Il ne faut pas de multiplicateur dans DIFFUSION_AUGMENTEE';
  1280. 'FINSI';
  1281. 'FINSI';
  1282. 'FINSI';
  1283. ************************************************************************
  1284. * Verifications/initialisations propres a la MECANIQUE
  1285. ************************************************************************
  1286. 'SI' ('EXIS' PRECED 'BLOCAGES_MECANIQUES');
  1287. BLOMEC1 = PRECED.'BLOCAGES_MECANIQUES' ;
  1288. TWORK.'BLOCAGES_MECANIQUES' = BLOMEC1 ;
  1289. TWORK.'CHAR_BLOM' = 'EGA' ('TYPE' BLOMEC1) 'CHARGEME' ;
  1290. 'FINSI';
  1291. *
  1292. 'SI' TWORK.'FOR_MECA' ;
  1293. *
  1294. 'SI' ('EXISTE' PRECED 'PRECISION') ;
  1295. TWORK.'PRECFLEX' = PRECED.'PRECISION' ;
  1296. 'FINSI';
  1297. 'SI' ('EXISTE' PRECED 'PRECFLEX') ;
  1298. TWORK.'PRECFLEX' = PRECED.'PRECFLEX';
  1299. 'FINSI';
  1300. 'SI' ('EXISTE' PRECED 'PRECDECHARGE') ;
  1301. TWORK.'PRECDECHARGE' = PRECED.'PRECDECHARGE' ;
  1302. 'FINSI';
  1303. *
  1304. 'SI' ('EXISTE' PRECED 'K_TANGENT');
  1305. TWORK.'K_TANGENT' = PRECED.'K_TANGENT';
  1306. 'FINSI';
  1307. 'SI' ('EXISTE' PRECED 'K_TANGENT_PERT') ;
  1308. TWORK.'K_TANGENT_PERT' = PRECED.'K_TANGENT_PERT' ;
  1309. 'SI' TWORK.'K_TANGENT_PERT' ;
  1310. TWORK.'K_TANGENT' = VRAI ;
  1311. 'FINSI' ;
  1312. 'FINSI' ;
  1313. 'SI' ('EXISTE' PRECED 'K_TANG_PERT_C1') ;
  1314. TWORK.'K_TANG_PERT_C1' = PRECED.'K_TANG_PERT_C1' ;
  1315. 'FINSI' ;
  1316. 'SI' ('EXISTE' PRECED 'K_TANG_PERT_C2') ;
  1317. TWORK.'K_TANG_PERT_C2' = PRECED.'K_TANG_PERT_C2' ;
  1318. 'FINSI' ;
  1319. * Par defaut, C2 = C1/100 (C1 donne ou par defaut 1.D-3)
  1320. 'SI' ('EGA' TWORK.'K_TANG_PERT_C2' 'INCONNU') ;
  1321. TWORK.'K_TANG_PERT_C2' = TWORK.'K_TANG_PERT_C1' / 1.D+02 ;
  1322. 'FINSI' ;
  1323. * Matrice tangente a utiliser pour iteration 0 dans UNPAS
  1324. * Par defaut, matrice tangente precedemment calculee si existe
  1325. 'SI' ('EXISTE' PRECED 'K_TANGENT_ITER0') ;
  1326. TWORK.'K_TANGENT_ITER0' = PRECED.'K_TANGENT_ITER0' ;
  1327. 'FINSI' ;
  1328. * Utilisation matrice tangente symetrisee
  1329. 'SI' ('EXISTE' PRECED 'K_TANGENT_SYME') ;
  1330. TWORK.'K_TANGENT_SYME' = PRECED.'K_TANGENT_SYME' ;
  1331. 'FINSI' ;
  1332. 'SI' ( 'EXISTE' PRECED 'NITER_KTANGENT');
  1333. TWORK.'NITER_KTANGENT' =PRECED.'NITER_KTANGENT' ;
  1334. 'FINSI';
  1335. *----------MAN? ordre de la MAN?
  1336. 'SI' ('EXISTE' PRECED 'MAN' );
  1337. TWORK.'MAN'= PRECED.'MAN';
  1338. 'FINSI';
  1339. 'SI' ( 'EXISTE' PRECED 'ORDRE');
  1340. TWORK.'ORDRE'=PRECED.'ORDRE';
  1341. 'FINSI';
  1342. *-------------y-a-t-il du substepping?-----------
  1343. 'SI' ('EXISTE' PRECED 'SUBSTEPPING');
  1344. TWORK.'SUBSTEPPING'=PRECED.'SUBSTEPPING' ;
  1345. 'FINSI';
  1346. 'SI' ('EXISTE' PRECED 'PRECISINTER');
  1347. TWORK.'PRECISINTER' = PRECED.'PRECISINTER';
  1348. 'FINSI';
  1349. 'SI' ('EXISTE' PRECED 'NITERINTER_MAX');
  1350. TWORK.'NITERINTER_MAX' =PRECED.'NITERINTER_MAX';
  1351. 'FINSI';
  1352. 'SI' ('EXISTE' PRECED 'NMAXSUBSTEPS');
  1353. TWORK.'NMAXSUBSTEPS'=PRECED.'NMAXSUBSTEPS';
  1354. 'FINSI';
  1355. *------------- quelle est l'hypothese de calcul des deformations ?
  1356. 'SI' ('EXISTE' PRECED 'HYPOTHESE_DEFORMATIONS' );
  1357. HYPDEF = MOT PRECED.'HYPOTHESE_DEFORMATIONS';
  1358. 'SI' (('EGA' HYPDEF ('MOT' 'LINEAIRE')) 'OU' ('EGA' HYPDEF ('MOT' 'QUADRATIQUE')) 'OU'
  1359. ('EGA' HYPDEF ('MOT' 'TRUESDELL')) 'OU' ('EGA' HYPDEF ('MOT' 'JAUMANN')) 'OU'
  1360. ('EGA' HYPDEF ('MOT' 'UTILISATEUR')));
  1361. TWORK.'HYPOTHESE_DEFORMATIONS'='MOT' HYPDEF;
  1362. 'SINON';
  1363. 'MESS' 'Les valeurs permises pour HYPOTHESE_DEFORMATIONS sont :';
  1364. 'MESS' 'LINEAIRE, QUADRATIQUE, TRUESDELL, JAUMANN, UTILISATEUR';
  1365. 'ERRE' 308;
  1366. 'FINSI';
  1367. 'FINSI';
  1368. *------------- y-a-t-il du grand deplacement ?
  1369. 'SI' ('EXISTE' PRECED 'GRANDS_DEPLACEMENTS' );
  1370. 'SI' (TWORK.'CONTACT' 'ET' ('NON' PRECED.'GRANDS_DEPLACEMENTS'));
  1371. 'MESS' 'Un calcul avec un modele de CONTACT doit necessairement'
  1372. 'MESS' 'etre realise en GRANDS_DEPLACEMENTS !';
  1373. 'MESS' 'Arret de pasapas';
  1374. 'ERRE' 21;
  1375. 'FINSI';
  1376. TWORK.'GRANDS_DEPLACEMENTS' = PRECED.'GRANDS_DEPLACEMENTS';
  1377. 'FINSI';
  1378. *------------- quelques reglages forces en grands deplacements
  1379. 'SI' TWORK.'GRANDS_DEPLACEMENTS' ;
  1380. TWORK.'RECALCUL' = VRAI ;
  1381. * par defaut, on active K_SIGMA en grands deplacements si pas de controle de stabilite
  1382. 'SI' ('NON' TWORK.'STABILITE');
  1383. TWORK.'K_SIGMA'=VRAI;
  1384. 'FINSI';
  1385. * PV Quel interet d'avoir les deformations?
  1386. ** par defaut, on sauvegarde des def. totales en grands deplacements
  1387. ** 'SI' ('NON' ('EXIS' PRECED 'MES_SAUVEGARDES'));
  1388. ** TWORK.'TABSAUV'.'DEFTO'= VRAI;
  1389. ** 'FINS';
  1390. * par defaut, on calcule avec une deformation quadratique en grands deplacements
  1391. * mais on laisse faire l'utilisateur s'il souhaite autrement
  1392. 'SI' ('NON' ('EXIS' PRECED 'HYPOTHESE_DEFORMATIONS'));
  1393. TWORK.'HYPOTHESE_DEFORMATIONS'='MOT' 'QUADRATIQUE';
  1394. 'FINSI';
  1395.  
  1396. *------Y-a-t-il des elements dont il faudra reactualiser les caracteristiques?
  1397. MOCA = 'MOTS' 'VECT' 'VX ' 'VY ' 'VZ ' 'VXF ' 'VYF ' 'VZF '
  1398. 'V1X ' 'V1Y ' 'V1Z ' 'V2X ' 'V2Y ' 'V2Z ';
  1399. 'REPETER' BOU_CAR ('DIME' MOCA);
  1400. ITE2 = &BOU_CAR;
  1401. MOT1 = 'EXTR' MOCA ITE2;
  1402. 'SI' ('EXIS' TWORK.'MA_TOT' MOT1);
  1403. TWORK.'ITCAR' = VRAI;
  1404. 'QUITTER' BOU_CAR;
  1405. 'FINSI';
  1406. 'FIN' BOU_CAR;
  1407. 'FINSI';
  1408. * ---------- y-a-t-il une demande sur K_SIGMA ?
  1409. 'SI' ('EXISTE' PRECED 'K_SIGMA');
  1410. TWORK.'K_SIGMA' = PRECED.'K_SIGMA';
  1411. 'FINSI';
  1412. * ---------- y-a-t-il une demande sur LAGRANGIEN ?
  1413. 'SI' ('EXISTE' PRECED 'LAGRANGIEN');
  1414. 'SI' ('EGA' preced.'LAGRANGIEN' 'TOTAL');
  1415. TWORK.'LAG_TOT' = 1;
  1416. 'SINON';
  1417. 'SI' ('EGA' preced.'LAGRANGIEN' 'FIN_PAS');
  1418. TWORK.'LAG_TOT' = 2;
  1419. 'SINON';
  1420. 'SI' (('EGA' preced.'LAGRANGIEN' 'REACTUALISE') 'OU'
  1421. ('EGA' preced.'LAGRANGIEN' 'MI_PAS'));
  1422. TWORK.'LAG_TOT' = 3;
  1423. 'SINON';
  1424. 'ERRE' 'Seules les valeurs TOTAL, REACTUALISE (a MI_PAS) et FIN_PAS sont permises';
  1425. 'FINSI';
  1426. 'FINSI';
  1427. 'FINSI';
  1428. 'FINSI';
  1429. *
  1430. * MOdele TOTal si FOR_MECA :
  1431. MO_TOT = TWORK.'MO_TOT' ;
  1432. *--------- initialisation des comportements d'apres le modele
  1433. 'SI' ('EXISTE' MO_TOT 'MATE' 'PLASTIQUE');
  1434. TWORK.'PLASTIQUE' = VRAI;
  1435. TWORK.'IPLAVI' = VRAI;
  1436. 'FINSI';
  1437. 'SI' ('EXISTE' MO_TOT 'MATE' 'PLASTIQUE_ENDOM');
  1438. TWORK.'PLASTIQUE' = VRAI;
  1439. TWORK.'IPLAVI' = VRAI;
  1440. TWORK.'ENDOMMAGEMENT' = VRAI;
  1441. 'FINSI';
  1442. 'SI' (('EXISTE' MO_TOT 'MATE' 'VISCOPLASTIQUE') 'OU'
  1443. ('EXISTE' MO_TOT 'MATE' 'FLUAGE' ));
  1444. TWORK.'VISCOPLASTIQUE' = VRAI;
  1445. TWORK.'IPLAVI' = VRAI;
  1446. 'FINSI';
  1447. 'SI' ('EXISTE' MO_TOT 'MATE' 'VISCODOMMAGE');
  1448. TWORK.'VISCODOMMAGE' = VRAI;
  1449. TWORK.'IPLAVI' = VRAI;
  1450. 'FINSI';
  1451. 'SI' (('EXISTE' MO_TOT 'MATE' 'ENDOMMAGEMENT') 'OU'
  1452. ('EXISTE' MO_TOT 'MATE' 'ENDOMMAGEABLE'));
  1453. TWORK.'ENDOMMAGEMENT' = VRAI;
  1454. TWORK.'IPLAVI' = VRAI;
  1455. 'FINSI';
  1456. NOLIUTIL = faux ;
  1457. 'SI' ('EXISTE' MO_TOT 'MATE' 'NON_LINEAIRE') ;
  1458. TWORK.'NON_LINEAIRE' = VRAI;
  1459. TWORK.'IPLAVI' = VRAI;
  1460. NOLIUTIL = 'EXISTE' MO_TOT 'MATE' 'UTILISATEUR' ;
  1461. 'FINSI';
  1462. 'SI' NOLIUTIL;
  1463. TWORK.'DFGRAD' = 'MOT' 'DFGRAD' ;
  1464. 'FINSI';
  1465. 'SI' ('EXISTE' MO_TOT 'MATE' 'VISCO_EXTERNE') ;
  1466. TWORK.'VISCO_EXTERNE' = VRAI;
  1467. TWORK.'IPLAVI' = VRAI;
  1468. 'FINSI';
  1469. 'SI' ('EXISTE' MO_TOT 'MATE' 'CERAMIQUE');
  1470. TWORK.'CERAMIQUE' = VRAI;
  1471. TWORK.'IPLAVI' = VRAI;
  1472. 'FINSI';
  1473. 'SI' (('EXISTE' MO_TOT 'MATE' 'MODAL') 'OU'
  1474. ('EXISTE' MO_TOT 'MATE' 'STATIQUE' ));
  1475. TWORK.'MODAL' = VRAI;
  1476. TWORK.'IPLAVI' = VRAI;
  1477. 'FINSI';
  1478. 'SI' ('EXISTE' MO_TOT 'MATE' 'IMPEDANCE');
  1479. TWORK.'IMPEDANCE' = VRAI;
  1480. TWORK.'IPLAVI' = VRAI;
  1481. 'FINSI';
  1482. *
  1483. *- existe-t-il un chargement de flux neutronique pour le modele mistral
  1484. *- existe-t-il un chargement de densite de fissions pour gatt_monerie & uo2
  1485. *---- si oui on sort si non on le cree a zero
  1486. 'SI' ('EXIS' MO_TOT 'MATE' 'MISTRAL');
  1487. 'SI' ('NON' ('EXISTE' (TWORK.'CHARGEMENT') 'FI ')) ;
  1488. FIZER = 'MANU' 'CHPO' MAI_TOT 1 'FI ' 0. 'NATURE' 'DIFFUS' ;
  1489. TWORK.'CHARGEMENT' = TWORK.'CHARGEMENT' 'ET' ('CHAR' 'FI' FIZER
  1490. ('EVOL' 'MANU' ('PROG' 0. 10.e10 ) ('PROG' 1. 1.)));
  1491. 'FINSI';
  1492. 'FINSI';
  1493. 'SI' (('EXIS' MO_TOT 'MATE' 'UO2') 'OU'
  1494. ('EXIS' MO_TOT 'MATE' 'GATT_MONERIE') ) ;
  1495. 'SI' ('NON' ('EXISTE' (TWORK.'CHARGEMENT') 'DFIS')) ;
  1496. DFISZER = 'MANU' 'CHPO' MAI_TOT 1 'DFIS' 0. 'NATURE' 'DIFFUS' ;
  1497. TWORK.'CHARGEMENT' = TWORK.'CHARGEMENT' 'ET' ('CHAR' 'DFIS' DFISZER
  1498. ('EVOL' 'MANU' ('PROG' 0. 10.e10 ) ('PROG' 1. 1.))) ;
  1499. 'FINSI';
  1500. 'FINSI';
  1501. *
  1502. MAI_TOT = 'EXTR' MO_TOT 'MAIL' ;
  1503. TWORK.'LDEVA' = 'EXTR' TWORK.'MA_TOT' 'DEVA';
  1504. TWORK.'LPAR0' = 'EXTR' MO_TOT 'PARA' ;
  1505. 'SI' ('NEG' 0 ('DIME' TWORK.'LPAR0')) ;
  1506. TWORK.'PARA_EXTE'=VRAI;
  1507. 'FINSI';
  1508.  
  1509. *--------------y-a-t-il une formulation feFP
  1510. 'SI' ( 'EXISTE' PRECED 'FEFP_FORMULATION' );
  1511. TWORK.'FEFP_FORMULATION' = PRECED.'FEFP_FORMULATION';
  1512. 'FINSI';
  1513. 'SI' TWORK.'FEFP_FORMULATION';
  1514. TWORK.'GRANDS_DEPLACEMENTS' = FAUX ;
  1515. TWORK.'K_SIGMA' = VRAI ;
  1516. TWORK.'K_TANGENT' = VRAI ;
  1517. TWORK.'SUBSTEPPING' = FAUX ;
  1518. TWORK.'RECALCUL' = VRAI ;
  1519. 'FINSI';
  1520. 'SI' ( 'EXISTE' PRECED 'UPDATE_LAGRANGIAN' );
  1521. TWORK.'UPDATE_LAGRANGIAN' = PRECED.'UPDATE_LAGRANGIAN' ;
  1522. 'FINSI';
  1523. *--------- y-a-t-il un sauver automatique des resultats ? ---------
  1524. 'SI' ('EXISTE' PRECED 'AUTORESU');
  1525. TWORK.'NAURES' = PRECED . 'AUTORESU';
  1526. 'FINSI';
  1527. *---------- en cas de pas automatique ?
  1528. 'SI' TWORK.'AUTOMATIQUE' ;
  1529. 'SI' ('EXISTE' PRECED 'AUTOCRIT');
  1530. TWORK.'AUTOCRIT'= PRECED.'AUTOCRIT';
  1531. 'FINSI';
  1532. 'SI' ('EXISTE' PRECED 'AUTOPAS');
  1533. TWORK.'AUTOPAS'= PRECED.'AUTOPAS';
  1534. 'FINSI';
  1535. TWORK.'DELTAITER'=TWORK.'MAXITERATION';
  1536. 'FINSI';
  1537. *------ y-a-t-il un nom de variable interne specifique ?
  1538. 'SI' ('EXISTE' PRECED 'MOVA');
  1539. TWORK.'MOVA' =PRECED.'MOVA';
  1540. 'SINON';
  1541. 'SI'( TWORK.'VISCO_EXTERNE' 'OU' NOLIUTIL);
  1542. TWORK.MOVA = 'MOT' 'RIEN';
  1543. 'FINSI';
  1544. 'SI' ('NON' ('EXISTE' ('EXTR' TWORK.'MODELE' 'VARI') 'EPSE'));
  1545. TWORK.'MOVA' = 'MOT' 'RIEN';
  1546. 'FINSI' ;
  1547. 'FINSI';
  1548. *---------- y-a-t-il des elements de rigidite constante ? --------
  1549. 'SI' ( 'EXISTE' PRECED 'RIGIDITE_CONSTANTE');
  1550. TWORK.'RAIDCONST' =VRAI;
  1551. TWORK.'RIGIDITE_CONSTANTE'=PRECED.'RIGIDITE_CONSTANTE';
  1552. RR= PRECED.'RIGIDITE_CONSTANTE';
  1553. MNOMU = ('EXTR' RR 'MAILLAGE' 'NOMU') 'NBNO';
  1554. MAVMU = ('EXTR' RR 'MAILLAGE' ) 'NBNO';
  1555. 'SI' ( MNOMU 'NEG' MAVMU) ;
  1556. 'ERREUR' 'Il ne faut pas de multiplicateur dans RIGIDITE_CONSTANTE';
  1557. 'FINSI';
  1558. 'FINSI';
  1559. *---------- y-a-t-il des elements de rigidite augmentee ? --------
  1560. 'SI' ('EXISTE' PRECED 'RIGIDITE_AUGMENTEE');
  1561. TWORK.'RAIDAUGM' =VRAI;
  1562. TWORK.'RIGIDITE_AUGMENTEE'=PRECED.'RIGIDITE_AUGMENTEE';
  1563. RR= PRECED.'RIGIDITE_AUGMENTEE';
  1564. MNOMU = ('EXTR' RR 'MAILLAGE' 'NOMU') 'NBNO';
  1565. MAVMU = ('EXTR' RR 'MAILLAGE' ) 'NBNO';
  1566. 'SI' ( MNOMU 'NEG' MAVMU) ;
  1567. 'ERREUR' 'Il ne faut pas de multiplicateur dans RIGIDITE_AUGMENTEE';
  1568. 'FINSI';
  1569. 'SINON';
  1570. 'SI' ('EXISTE' PRECED 'AUGMENTATION_AUTOMATIQUE');
  1571. TWORK.'RIGIDITE_AUGMENTEE'='MASSE' TWORK.'MODELE' TWORK.'CARACTERISTIQUES';
  1572. 'FINSI';
  1573. 'FINSI';
  1574.  
  1575. 'SI' ('EXISTE' PRECED 'AUGMENTATION_AUTOMATIQUE');
  1576. 'SI' PRECED.'AUGMENTATION_AUTOMATIQUE';
  1577. TWORK.'AUTOAUGM' = VRAI;
  1578. TWORK.'STABILITE' = VRAI ;
  1579. *** 'SI' ('NON' TWORK.'RAIDAUGM');
  1580. *** 'ERREUR' 'il faut donner la matrice d augmentation dans RIGIDITE_AUGMENTEE';
  1581. *** 'FINSI';
  1582. 'FINSI';
  1583. 'FINSI';
  1584. *---------- y-a-t-il des elements de masse constante ? ---------
  1585. 'SI' ('EXISTE' PRECED 'MASSE_CONSTANTE');
  1586. TWORK.'MASSE_CONSTANTE'=PRECED.'MASSE_CONSTANTE';
  1587. TWORK.'MASSCONST'=VRAI;
  1588. 'FINSI';
  1589. *---------- y-a-t-il un sous_increment ? ---------
  1590. 'SI' ('EXISTE' PRECED 'SOUS_INCREMENT');
  1591. LOGERR = FAUX ;
  1592. 'SI' ('EXIS' TWORK 'DYNAMIQUE') ;
  1593. 'SI' TWORK.'DYNAMIQUE' ;
  1594. TWORK.'SOUS_INCREMENT'=PRECED.'SOUS_INCREMENT';
  1595. 'SINON' ;
  1596. LOGERR = VRAI ;
  1597. 'FINSI' ;
  1598. 'SINON' ;
  1599. LOGERR = VRAI ;
  1600. 'FINSI' ;
  1601. 'SI' LOGERR ;
  1602. 'MESS' ' Option SOUS_INCREMENT utilisable QUE en DYNAMIQUE ';
  1603. 'MESS' ' Arret de Cast3M';
  1604. 'ERREUR' 5 ;
  1605. 'FINSI' ;
  1606. 'FINSI';
  1607. *------------------- Cas du non local :
  1608. 'SI' TWORK.'NLOC' ;
  1609. 'SI' ( 'EXISTE' PRECED 'CONN' );
  1610. 'MESS' 'On garde les connectivites dans TAB CONN';
  1611. TWORK.'CONN'=PRECED . 'CONN' ;
  1612. 'SINON';
  1613. 'SI' ('EGA' (TWORK.'NON_LOCAL') 'HELM' );
  1614. 'MESS' 'Pas besoin de la connectivite pour Helmholtz';
  1615. 'SINON';
  1616. 'MESS' 'Calcul des connectivites en mode normal.';
  1617. TWORK.'CONN'='CONN' TWORK.'NLOC_MODL'
  1618. ('REDU' TWORK.'MA_TOT' TWORK.'NLOC_MODL') 'NORMAL' ;
  1619. 'FINSI' ;
  1620. 'FINSI' ;
  1621. 'FINSI' ;
  1622. 'FINSI';
  1623. TWORK.'CHARGEMENT_I' = TWORK.'CHARGEMENT';
  1624. ************************************************************************
  1625. * Recapitulatif des options choisies
  1626. ************************************************************************
  1627. 'SAUTER' 1 'LIGNE';
  1628. 'SI' TWORK.'FOR_MECA' ;
  1629. 'SI' TWORK.'FOR_THER';
  1630. 'MESS' 'Couplage THERMIQUE-MECANIQUE';
  1631. 'SINON';
  1632. 'MESS' 'Calcul MECANIQUE';
  1633. 'FINSI';
  1634. 'MESS' ' *** Hypothese calcul des deformations :' ' ' TWORK.'HYPOTHESE_DEFORMATIONS' ' ***';
  1635. 'SI' ('NEG' TWORK.'PREDICTEUR' 'INCONNU');
  1636. 'MESS' ' *** Predicteur :' ' ' TWORK.'PREDICTEUR' ' ***' ;
  1637. 'FINSI';
  1638. 'SI' TWORK.'K_SIGMA';
  1639. 'MESS' ' *** K_SIGMA *** ';
  1640. 'FINSI';
  1641. 'SI' TWORK.'GRANDS_DEPLACEMENTS';
  1642. 'SI' (TWORK.'LAG_TOT' 'EGA' 1) ;
  1643. 'MESS' ' *** Calcul en lagrangien total *** ';
  1644. 'FINSI';
  1645. 'SI' (TWORK.'LAG_TOT' 'EGA' 2) ;
  1646. 'MESS' ' *** Calcul en lagrangien fin pas *** ';
  1647. 'FINSI';
  1648. 'SI' (TWORK.'LAG_TOT' 'EGA' 3) ;
  1649. 'MESS' ' *** Calcul en configuration mi-pas *** ';
  1650. 'FINSI';
  1651. 'FINSI';
  1652. 'SI' TWORK.'STABILITE';
  1653. 'MESS' ' *** Controle de la stabilite *** ';
  1654. 'FINSI';
  1655. 'SI' TWORK.'LINESEARCH';
  1656. 'MESS' ' *** Linesearch *** ';
  1657. 'FINSI';
  1658. 'SI' (non TWORK.'INITIALISATION');
  1659. 'MESS' ' *** Initialisation a partir du pas precedent interdite *** ';
  1660. 'FINSI';
  1661. 'SI' TWORK.'CONVERGENCE_MONOTONE' ;
  1662. 'MESS' ' *** Convergence monotone imposee *** ';
  1663. 'FINSI';
  1664. 'SI' TWORK.'RENORMALISATION' ;
  1665. 'MESS' ' *** Renormalisation des iteres *** ';
  1666. 'FINSI';
  1667. 'SI' TWORK.'POR1';
  1668. 'MESS' ' *** POREUX ***';
  1669. 'FINSI';
  1670. 'SI' TWORK.'DYNAMIQUE' ;
  1671. 'MESS' ' *** DYNAMIQUE PAS A PAS ***';
  1672. 'FINSI' ;
  1673. 'SI' TWORK.'FREQUENTIEL' ;
  1674. 'MESS' ' *** FREQUENTIEL PAS A PAS ***' ;
  1675. 'FINSI' ;
  1676. 'SI' TWORK.'LIAISON_PERSISTANTE' ;
  1677. 'MESS' ' *** LIAISON PERSISTANTE ***';
  1678. 'FINSI' ;
  1679. 'SI' TWORK.'CONSOLIDATION' ;
  1680. 'MESS' ' *** CONSOLIDATION ***';
  1681. 'FINSI' ;
  1682. 'SI' TWORK.'PLASTIQUE' ;
  1683. 'MESS' ' *** PLASTICITE ***';
  1684. 'FINSI';
  1685. 'SI' TWORK.'VISCOPLASTIQUE' ;
  1686. 'MESS' ' *** VISCO - PLASTICITE ***';
  1687. 'FINSI' ;
  1688. 'SI' TWORK.'NON_LINEAIRE';
  1689. 'SI' NOLIUTIL;
  1690. 'MESS' ' *** MODELE DE COMPORTEMENT NON LINEAIRE EXTERNE ***';
  1691. 'SINON';
  1692. 'MESS' ' *** ELASTICITE NON_LINEAIRE ***';
  1693. 'FINSI';
  1694. 'FINSI' ;
  1695. 'SI' TWORK.'VISCO_EXTERNE';
  1696. 'MESS' ' *** VISCO - PLASTICITE, MODELE EXTERNE ***';
  1697. 'FINSI' ;
  1698. 'SI' TWORK.'CHAR_THE';
  1699. 'MESS' ' *** CHARGEMENT THERMIQUE ***';
  1700. 'FINSI';
  1701. 'SI' TWORK.'CHAR_DEFI';
  1702. 'MESS' ' *** CHARGEMENT PAR DES DEFORMATIONS ***';
  1703. 'FINSI';
  1704. 'SI' TWORK.'CHAR_PRES';
  1705. 'MESS' ' *** CHARGEMENT PAR UNE PRESSION SUIVEUSE ***';
  1706. 'FINSI';
  1707. 'SI' TWORK.'CHAR_PILO';
  1708. 'MESS' ' *** CHARGEMENT PAR PILOTAGE INDIRECT ***';
  1709. 'FINSI';
  1710. 'SI' TWORK.'PARA_EXTE';
  1711. 'MESS' ' *** LE MODELE DEPEND DE PARAMETRES EXTERNES ***';
  1712. 'FINSI';
  1713. 'SI' TWORK.'GRANDS_DEPLACEMENTS' ;
  1714. 'MESS' ' *** GRANDS DEPLACEMENTS ***';
  1715. 'SI' ('NEG' TWORK.'HYPOTHESE_DEFORMATIONS' 'QUADRATIQUE');
  1716. 'MESS' ' ATTENTION : l''hypothese de deformations choisie est' ' ' PRECED.'HYPOTHESE_DEFORMATIONS';
  1717. 'MESS' ' on recommande plutot l''hypothese QUADRATIQUE';
  1718. 'FINSI';
  1719. 'FINSI';
  1720. 'SI' TWORK.'CONVERGENCE_FORCEE' ;
  1721. 'MESS' ' *** CONVERGENCE FORCEE ***';
  1722. 'FINSI';
  1723. 'SI' TWORK.'ENDOMMAGEMENT' ;
  1724. 'MESS' ' *** PLASTICITE + ENDOMMAGEMENT ***';
  1725. 'FINSI';
  1726. 'SI' TWORK.'VISCODOMMAGE' ;
  1727. 'MESS' ' *** VISCO-PLASTICITE + ENDOMMAGEMENT ***';
  1728. 'FINSI';
  1729. 'SI' TWORK.'CERAMIQUE' ;
  1730. 'MESS' ' ***CERAMIQUE FLUAGE + ENDOMMAGEMENT ***';
  1731. 'MESS' ' *** +OTTOSEN ***';
  1732. 'FINSI';
  1733. * 'SI' IUO2;
  1734. * 'MESS' ' *** VISCO-PLASTICITE + OTTOSEN ***';
  1735. * 'FINSI';
  1736. 'SI' TWORK.'NLOC' ;
  1737. 'MESS' ' *** EN NON-LOCAL *** ' ;
  1738. 'FINSI';
  1739. 'SI' TWORK.'CONTACT';
  1740. 'MESS' ' *** CONTACT ***';
  1741. 'FINSI';
  1742. 'SI' (TWORK.'SOUS_INCREMENT' > 1);
  1743. 'MESS' ' *** SOUS_INCREMENT :'TWORK.SOUS_INCREMENT;
  1744. 'FINSI';
  1745. 'SI' TWORK.'CAFROTTE';
  1746. 'MESS' ' *** FROTTEMENT ***';
  1747. 'FINSI';
  1748. 'SI' TWORK.'K_TANGENT' ;
  1749. 'SI' TWORK.'K_TANGENT_PERT' ;
  1750. 'MESS' ' *** MATRICE TANGENTE PAR PERTURBATION ***' ;
  1751. 'SINON' ;
  1752. 'MESS' ' *** MATRICE TANGENTE (COHERENTE) ***' ;
  1753. 'FINSI' ;
  1754. 'MESS' ' MATRICE EVALUEE TOUTES LES' TWORK.'NITER_KTANGENT'
  1755. 'ITERATIONS' ;
  1756. 'SI' TWORK.'K_TANGENT_SYME' ;
  1757. 'MESS' ' PARTIE SYMETRIQUE DE LA MATRICE TANGENTE UTILISEE';
  1758. 'FINSI' ;
  1759. 'FINSI';
  1760. 'SI' TWORK.'SUBSTEPPING';
  1761. 'MESS' ' *** SUBSTEPPING *** NUM_MAXI_SUBSTEPS ='TWORK.'NMAXSUBSTEPS' ;
  1762. 'MESS' ' *** SUBSTEPPING *** NUM_ITER_INTERNAS ='TWORK.'NITERINTER_MAX' ;
  1763. 'FINSI';
  1764. 'SI' TWORK.'UPDATE_LAGRANGIAN';
  1765. 'MESS' ' *** UPDATE LAGRANGIAN ***' ;
  1766. 'FINSI';
  1767. 'SI' TWORK.'FEFP_FORMULATION';
  1768. 'MESS' ' *** FORMULATION FeFp ***' ;
  1769. 'FINSI';
  1770. 'FINSI';
  1771. *
  1772. 'SI' TWORK.'FOR_THER';
  1773. 'MESS' 'Calcul THERMIQUE ';
  1774. 'FINSI';
  1775. *
  1776. 'SI' TWORK.'NVSTNL' ;
  1777. 'MESS' 'Calcul NAVIER-STOKES NLIN' ;
  1778. 'FINSI' ;
  1779. 'SAUTER' 1 'LIGNE';
  1780. 'SI' ('EGA' TWORK.'PROCESSEURS' 'MONO_PROCESSEUR') ;
  1781. 'MESS' ' *** Pas de parallelisation ***' ;
  1782. 'SINON' ;
  1783. 'SI' ('EGA' TWORK.'PROCESSEURS' 'COMPORTEMENT') ;
  1784. 'MESS' ' *** Parallelisation du comportement sur ' nbpart ' assistants ***';
  1785. 'SINON' ;
  1786. 'SI' ('EGA' TWORK.'PROCESSEURS' 'AUTOMATIQUE') ;
  1787. 'MESS' ' *** Parallelisation automatique sur ' nbpart ' assistants ***' ;
  1788. 'FINSI' ;
  1789. 'FINSI' ;
  1790. 'FINSI' ;
  1791. 'SAUTER' 1 'LIGNE';
  1792. 'FINPROC' ;
  1793.  
  1794.  

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