Télécharger pas_defa.procedur

Retour à la liste

Numérotation des lignes :

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

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