Télécharger pas_defa.procedur

Retour à la liste

Numérotation des lignes :

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

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