Télécharger pas_init.procedur

Retour à la liste

Numérotation des lignes :

  1. * PAS_INIT PROCEDUR MB234859 24/02/26 21:15:03 11849
  2. 'DEBPROC' PAS_INIT PRECED*'TABLE' ;
  3. ************************************************************************
  4. * cette procedure cree l'etat initial des inconnues, le met dans conti.
  5. * initialise au passage les tables de sorties en mettant l'etat
  6. * initial sous l'indice 0
  7. * on fait complique car on veut pouvoir continuer des
  8. * calculs sauvegardes avant que la table de continuation n'existe
  9. ************************************************************************
  10. WTAB = PRECED.'WTABLE';
  11. TABSAUV = WTAB.'TABSAUV';
  12. inouv = 'NON' ('EXIS' PRECED 'CONTINUATION') ;
  13. 'SI' inouv ;
  14. PRECED.'CONTINUATION' = 'TABL';
  15. 'FINSI';
  16. conti = PRECED.'CONTINUATION';
  17. ************************************************************************
  18. * Initialisations de l'instant de calcul
  19. ************************************************************************
  20. 'SI' ('EXIS' PRECED 'TEMPS') ;
  21. NSOR= ('DIME' (PRECED . 'TEMPS' )) - 1;
  22. WTAB.'NSOR' = NSOR;
  23. 'SI' inouv ;
  24. TEMP0 = PRECED.'TEMPS' . NSOR;
  25. WTAB.'TEMPS0' = TEMP0;
  26. 'SINON';
  27. WTAB.'TEMPS0' = conti.'TEMPS';
  28. TEMP0 = WTAB.'TEMPS0';
  29. 'FINSI';
  30. 'SINON';
  31. NSOR = 0;
  32. 'SI' WTAB.'FREQUENTIEL' ;
  33. TEMP0 = WTAB.'TEMPS0' ;
  34. 'SINON' ;
  35. TEMP0 = 0.D0 ;
  36. 'FINSI' ;
  37. PRECED.'TEMPS' = 'TABLE';
  38. PRECED.'TEMPS' . 0 = TEMP0 ;
  39. WTAB.'TEMPS0' = TEMP0;
  40. WTAB.'NSOR' = NSOR;
  41. 'FINSI';
  42. conti.'TEMPS' = WTAB.'TEMPS0';
  43. ************************************************************************
  44. * Initialisation pour les MODELEs passe dans un CHARGEMENT
  45. ************************************************************************
  46. 'SI' WTAB.'CHAR_MODE' ;
  47. 'SI' ('NON' ('EXIS' PRECED 'MODELES')) ;
  48. PRECED.'MODELES' = 'TABLE' ;
  49. PRECED.'MODELES' . 0 = WTAB.'MODELE' ;
  50. * PRECED.'MAILLAGES' = 'TABLE' ;
  51. * PRECED.'MAILLAGES' . 0 = 'EXTR' (PRECED.'MODELES' . 0) 'MAIL' ;
  52. 'FINSI' ;
  53. 'SI' inouv ;
  54. conti.'MODELES' = PRECED.'MODELES'. NSOR ;
  55. * conti.'MAILLAGES' = PRECED.'MAILLAGES' . NSOR ;
  56. 'FINSI' ;
  57. 'FINSI' ;
  58. ************************************************************************
  59. * Initialisations pour la MECANIQUE
  60. ************************************************************************
  61. 'SI' WTAB.'FOR_MECA' ;
  62. MO_TOT=WTAB.'MO_TOT';
  63. *
  64. * - Initialisation du deplacement
  65. 'SI' ('NON' ('EXIS' PRECED 'DEPLACEMENTS'));
  66. DDDD = 'ZERO' MO_TOT 'DEPLACEM';
  67. DEP_COUR = 'CHANGER' 'CHPO' MO_TOT DDDD;
  68. 'DETRUIRE' DDDD;
  69. PRECED.'DEPLACEMENTS' = 'TABLE';
  70. PRECED.'DEPLACEMENTS'. 0 = DEP_COUR;
  71. 'FINSI';
  72. 'SI' inouv;
  73. conti.'DEPLACEMENTS' = PRECED.'DEPLACEMENTS'. NSOR;
  74. 'FINS';
  75. *
  76. * - Initialisation des contraintes
  77. 'SI' ('NON' ('EXIS' PRECED 'CONTRAINTES'));
  78. SIG_COUR = 'ZERO' MO_TOT 'CONTRAIN';
  79. PRECED.'CONTRAINTES' = 'TABLE';
  80. PRECED.'CONTRAINTES'. 0 = SIG_COUR;
  81. 'FINSI';
  82. 'SI' inouv;
  83. conti.'CONTRAINTES' = PRECED.'CONTRAINTES'. NSOR;
  84. 'FINS';
  85. *
  86. * - Initialisation des vitesses
  87. 'SI' (WTAB.'DYNAMIQUE' 'OU' ('EXISTE' WTAB 'MOD_LIA'));
  88. 'SI' ('EXISTE' PRECED 'VITESSES') ;
  89. TABINT=INDEX (PRECED.'VITESSES');
  90. IND0=TABINT.('DIME' TABINT);
  91. VIT_COUR=PRECED.'VITESSES' . IND0;
  92. 'SINON';
  93. DDDD = 'ZERO' MO_TOT 'DEPLACEMENTS';
  94. VIT_COUR = 'CHANGER' 'CHPO' MO_TOT DDDD;
  95. 'DETRUIRE' DDDD;
  96. PRECED.'VITESSES'=TABLE;
  97. PRECED.'VITESSES'. 0 = VIT_COUR;
  98. 'FINSI';
  99. 'SI' inouv;
  100. conti.'VITESSES' = VIT_COUR;
  101. 'FINS';
  102. 'FINSI';
  103. *
  104. * - Initialisation des accelerations
  105. 'SI' WTAB.'DYNAMIQUE';
  106. 'SI' ('EXISTE' PRECED 'ACCELERATIONS') ;
  107. TABINT=INDEX (PRECED.'ACCELERATIONS') ;
  108. IND0=TABINT.('DIME' TABINT);
  109. ACC_COUR=PRECED.'ACCELERATIONS' . IND0;
  110. 'SINON';
  111. DDDD = 'ZERO' MO_TOT 'DEPLACEMENTS';
  112. ACC_COUR = 'CHANGER' 'CHPO' MO_TOT DDDD;
  113. 'DETRUIRE' DDDD;
  114. PRECED.'ACCELERATIONS'=TABLE;
  115. PRECED.'ACCELERATIONS'. 0 = ACC_COUR;
  116. 'FINSI';
  117. 'SI' inouv;
  118. conti.'ACCELERATIONS' = ACC_COUR;
  119. 'FINS';
  120. 'FINSI';
  121. *
  122. * - Initialisation des reactions
  123. 'SI' ('NON' ('EXIS' PRECED 'REACTIONS'));
  124. 'SI' WTAB.'CHAR_BLOM' ;
  125. BLOMECA = 'TIRE' WTAB.'BLOCAGES_MECANIQUES' 'BLOM' TEMP0 ;
  126. 'SINON' ;
  127. BLOMECA = WTAB.'BLOCAGES_MECANIQUES' ;
  128. 'FINSI' ;
  129. REA_COUR = 'REAC' BLOMECA conti.'DEPLACEMENTS';
  130. PRECED.'REACTIONS' = TABLE;
  131. PRECED.'REACTIONS' . 0 = REA_COUR;
  132. 'FINSI';
  133. 'SI' inouv;
  134. conti.'REACTIONS' = PRECED.'REACTIONS'. NSOR;
  135. 'FINS';
  136. *
  137. * - Initialisation des variables internes
  138. 'SI' WTAB.'IPLAVI';
  139. 'SI' ('EXIS' PRECED 'VARIABLES_INTERNES' );
  140. TABINT =INDEX (PRECED.'VARIABLES_INTERNES');
  141. IND0 =TABINT.('DIME' TABINT) ;
  142. VAR_COUR=PRECED.'VARIABLES_INTERNES' . IND0;
  143. 'SINON';
  144. VAR_COUR='ZERO' MO_TOT 'VARINTER';
  145. PRECED.'VARIABLES_INTERNES' = 'TABL';
  146. PRECED.'VARIABLES_INTERNES'. 0 = VAR_COUR;
  147. 'FINSI';
  148. 'SI' inouv;
  149. conti.'VARIABLES_INTERNES' = VAR_COUR;
  150. 'FINS';
  151. 'FINSI';
  152. *
  153. * - Initialisation des deformations inelastiques
  154. 'SI' ('EXISTE' PRECED 'DEFORMATIONS_INELASTIQUES');
  155. TABINT = INDEX (PRECED.'DEFORMATIONS_INELASTIQUES');
  156. IND0 = TABINT. ('DIME' TABINT);
  157. DEI_COUR = PRECED.'DEFORMATIONS_INELASTIQUES' . IND0;
  158. 'SINON';
  159. DEI_COUR = 'ZERO' MO_TOT 'DEFINELA';
  160. 'SI' ('EXIS' TABSAUV 'DEFIN');
  161. 'SI' TABSAUV.'DEFIN';
  162. PRECED.'DEFORMATIONS_INELASTIQUES' = 'TABLE';
  163. PRECED.'DEFORMATIONS_INELASTIQUES'. 0 = DEI_COUR;
  164. 'FINSI';
  165. 'FINSI';
  166. 'FINSI';
  167. 'SI' inouv;
  168. conti.'DEFORMATIONS_INELASTIQUES'=DEI_COUR;
  169. 'FINS';
  170. *
  171. * - Initialisation des deformations totales
  172. 'SI' ('EXISTE' PRECED 'DEFORMATIONS');
  173. TABINT=INDEX (PRECED.'DEFORMATIONS');
  174. IND0=TABINT.('DIME' TABINT);
  175. DEF_COUR=PRECED.'DEFORMATIONS' . IND0;
  176. 'SINON';
  177. DEF_COUR = 'ZERO' MO_TOT 'DEFORMATIONS';
  178. 'SI' ('EXIS' TABSAUV 'DEFTO');
  179. 'SI' TABSAUV.'DEFTO';
  180. PRECED.'DEFORMATIONS' = 'TABLE';
  181. PRECED.'DEFORMATIONS' . 0 = DEF_COUR;
  182. 'FINSI';
  183. 'FINSI';
  184. 'FINSI';
  185. 'SI' inouv;
  186. conti.'DEFORMATIONS'=DEF_COUR;
  187. 'FINS';
  188. *
  189. * - Initialisation pour un tracking
  190. 'SI' ('EXIS' WTAB.'MODELE' 'MATE' 'EFEM');
  191. 'SI' ('EXIS' PRECED 'TRACKING');
  192. 'SI' PRECED.'TRACKING' ;
  193. 'SI' ('NON' ('EXIS' PRECED 'PROOTS'));
  194. PRECED.'PROOTS' = 'TABLE';
  195. PRECED.'PROOTS'. 0 = 0.;
  196. 'FINSI';
  197. * 'SI' inouv; conti.'PROOTS' = PRECED.'PROOTS'.NSOR;'FINS';
  198. 'SI' ('NON' ('EXIS' PRECED 'EROOTS'));
  199. PRECED.'EROOTS' = 'TABLE';
  200. PRECED.'EROOTS'. 0 = 0.;
  201. 'FINSI';
  202. * 'SI' inouv; conti.'PROOTS' = PRECED.'PROOTS'.NSOR;'FINS';
  203. 'SI' ('NON' ('EXIS' PRECED 'NROOTS'));
  204. PRECED.'NROOTS' = 0;
  205. 'FINSI';
  206. * 'SI' inouv; conti.'EROOTS' = PRECED.'EROOTS'.NSOR;'FINS';
  207. 'SI' ('NON' ('EXIS' PRECED 'TABISO'));
  208. PRECED.'TABISO' = 'TABLE';
  209. PRECED.'TABISO'. 0 = 0.;
  210. 'FINSI';
  211. * 'SI' inouv; conti.'TABISO' = PRECED.'TABISO'.NSOR;'FINS';
  212. 'SI' ('NON' ('EXIS' PRECED 'RESTH'));
  213. PRECED.'RESTH' = 'TABLE';
  214. PRECED.'RESTH'. 0 = 0.;
  215. 'FINSI';
  216. * 'SI' inouv; conti.'RESTH' = PRECED.'RESTH'.NSOR;'FINS';
  217. 'SI' ('NON' ('EXIS' PRECED 'ISOTEST'));
  218. PRECED.'ISOTEST' = 'TABLE';
  219. PRECED.'ISOTEST'. 0 = 0.;
  220. 'FINSI';
  221. * 'SI' inouv; conti.'ISOTEST' = PRECED.'ISOTEST'.NSOR;'FINS';
  222. 'SI' ('NON' ('EXIS' PRECED 'ISOTOT'));
  223. PRECED.'ISOTOT' = 'TABLE';
  224. PRECED.'ISOTOT'. 0 = 0.;
  225. 'FINSI';
  226. * 'SI' inouv; conti.'ISOTOT' = PRECED.'ISOTOT'.NSOR;'FINS';
  227. 'SI' ('NON' ('EXIS' PRECED 'MESH_ISO'));
  228. PRECED.'MESH_ISO' = 'TABLE';
  229. PRECED.'MESH_ISO'. 0 = 0.;
  230. 'FINSI';
  231. * 'SI' inouv; conti.'MESH_ISO' = PRECED.'MESH_ISO'.NSOR;'FINS';
  232. 'SI' ('NON' ('EXIS' PRECED 'MESH'));
  233. PRECED.'MESH' = 'TABLE';
  234. PRECED.'MESH'. 0 = 0.;
  235. 'FINSI';
  236. * 'SI' inouv; conti.'MESH' = PRECED.'MESH'.NSOR;'FINS';
  237. 'FINSI';
  238. 'FINSI';
  239. 'FINSI';
  240. *
  241. * - Initialisation pour le non-local HELM
  242. 'SI' WTAB.'NLOC' ;
  243. 'SI' ('EGA' WTAB.'NON_LOCAL' 'HELM');
  244. WTAB.'HELMHOLTZ' = 'TABLE' ;
  245. MOLVIA = 'EXTR' WTAB.'NLOC_MODL' 'NLOC' ;
  246. NHELM = 'DIME' MOLVIA ;
  247. WTAB.'HELMHOLTZ' . 'N_VARI_NL'= NHELM ;
  248. GEOHELM = 'EXTR' WTAB.'NLOC_MODL' 'MAIL' ;
  249. MAHELM = 'REDU' WTAB.'CARACTERISTIQUES' WTAB.'NLOC_MODL' ;
  250. * liste des parametres variables
  251. DDVA = 'EXTR' MAHELM 'COVA' ;
  252. WTAB.'HELMHOLTZ' . 'NLOC_COVA'= DDVA ;
  253. 'REPE' BH NHELM ;
  254. WTAB.'HELMHOLTZ'. &BH = 'TABLE' ;
  255. LEMO = 'EXTR' MOLVIA &BH ;
  256. chaih1=chai 'pas_init: Helmholtz pour :' LEMO;
  257. * mess chaih1;
  258. WTAB.'HELMHOLTZ'. &BH. 'NOM' = LEMO ;
  259. 'SI' ('EXIS' DDVA LEMO) ;
  260. WTAB.'HELMHOLTZ'. &BH. 'CTE' = FAUX ;
  261. 'SINON' ;
  262. WTAB.'HELMHOLTZ'. &BH. 'CTE' = VRAI ;
  263. 'FINSI' ;
  264. LEMOD = 'MODE' GEOHELM 'THERMIQUE' 'ANISOTROPE' ;
  265. WTAB.'HELMHOLTZ'. &BH . 'H_MODELE' = LEMOD ;
  266. * non linearite par defaut des helmholtz (sellier )
  267. WTAB.'HELMHOLTZ'. &BH . 'LINEAIRE' = FAUX ;
  268. 'FIN' BH ;
  269. 'FINSI';
  270. 'FINSI';
  271. *
  272. * en cas de chargement thermique initialisation de wtab.tet1 et wtab.tet2
  273. 'SI' WTAB.'CHAR_THE';
  274. WTAB.'TET1' = 'TIRE' WTAB.'CHARGEMENT' 'T' TEMP0;
  275. WTAB.'TET2' = WTAB.'TET1';
  276. 'FINSI';
  277. *
  278. * en cas de chargement de deformations initiales initialisation de defor1 et defor2
  279. 'SI' WTAB.'CHAR_DEFI';
  280. WTAB.'DEFOR1' = 'TIRE' WTAB.'CHARGEMENT' 'DEFI' TEMP0 ;
  281. 'FINSI';
  282. *
  283. * En presence de THERMIQUE (CHARGEMENT ou FORMULATION) initialisation de TEMPERATURE_REFERENCE
  284. 'SI' WTAB.'ITHER' ;
  285. * On prend la temperature de reference dans le MATERIAU
  286. 'SI' ('EXIS' WTAB.'MA_TOT' 'TREF');
  287. TREF = 'ZERO' WTAB.'MO_TOT' 'TEMPERAT' ;
  288. TSZ = 'EXTR' WTAB.'MO_TOT' 'ZONE' ;
  289. ISZ = 1 ;
  290. 'REPE' BSZ (('DIME' TSZ) / 2) ;
  291. MOSZI = TSZ . ISZ ;
  292. MOTSTEMP = 'EXTR' MOSZI 'TEMP' ;
  293. 'REPE' BMO ('DIME' MOTSTEMP) ;
  294. MOTEMPI = 'EXTR' MOTSTEMP &BMO ;
  295. TREFI = 'CHAN' 'STRESSES' MOSZI ('EXCO' ('REDU' WTAB.'MA_TOT' MOSZI) 'TREF' MOTEMPI) ;
  296. TREF = TREF + TREFI ;
  297. 'FIN' BMO ;
  298. ISZ = ISZ + 2 ;
  299. 'FIN' BSZ ;
  300. WTAB.'TEMPERATURE_REFERENCE' = 'CHAN' 'TYPE' TREF 'TEMPERATURES' ;
  301. 'SINO';
  302. ERREUR 77 'AVEC' ('MOT' 'TREF') ('MOT' 'de MATERIAU');
  303. 'FINS';
  304. *
  305. *** Desormias initialise dans PASAPAS, au meme endroit que ETREF
  306. *** 'SI' ('EGA' WTAB.'ETHER1' 'INCONNU');
  307. *** On initialise les deformations thermiques a ZERO
  308. *** WTAB.'ETHER1' = 'ZERO' MO_TOT 'DEFORMATIONS' ;
  309. *** CB215821 : Pour une reprise propre, il faudrait mettre DEFORMATION_THERMIQUE dans CONTI
  310. *** 'FINS' ;
  311. 'FINS';
  312. 'FINS';
  313. ************************************************************************
  314. * Initialisation des differentes configurations (reference, debut pas)
  315. ************************************************************************
  316. WTAB.'FOR0' = 'FORM' ;
  317. WTAB.'GE0_DEB' = WTAB.'FOR0';
  318. 'SI' WTAB.'FOR_MECA' ;
  319. 'SI'(WTAB.'GRANDS_DEPLACEMENTS' 'OU' WTAB.'FEFP_FORMULATION');
  320. WTAB.'GE0_DEB' = 'FORM' conti.'DEPLACEMENTS';
  321. 'FINS';
  322. 'FORM' WTAB.'FOR0' ;
  323. 'FINS';
  324. ************************************************************************
  325. * Initialisations pour la MECANIQUE DES FLUIDES
  326. ************************************************************************
  327. 'SI' WTAB.'NVSTNL' ;
  328. 'SI' ('EXISTE' PRECED 'VITESSES_FLUIDE') ;
  329. TABINT=INDEX (PRECED.'VITESSES_FLUIDE');
  330. IND0=TABINT.('DIME' TABINT) ;
  331. VFL_COUR=PRECED.'VITESSES_FLUIDE' . IND0;
  332. 'SINON' ;
  333. DDDD = 'ZERO' WTAB.'MOD_NSL' 'DEPLACEMENTS' ;
  334. VFL_COUR = 'CHANGER' 'CHPO' WTAB.'MOD_NSL' DDDD ;
  335. 'DETRUIRE' DDDD ;
  336. TABSAUV.'VITESSES_FLUIDE' = 'TABLE' ;
  337. TABSAUV.'VITESSES_FLUIDE'. 0 = VFL_COUR ;
  338. 'FINSI' ;
  339. 'SI' inouv ;
  340. conti.'VITESSES_FLUIDE' = VFL_COUR ;
  341. 'FINSI' ;
  342. 'FINSI' ;
  343. ************************************************************************
  344. * Initialisations pour la THERMIQUE
  345. ************************************************************************
  346. 'SI' WTAB.'FOR_THER';
  347. *
  348. * - Initialisation de la temperature
  349. 'SI' ('EXISTE' PRECED 'TEMPERATURES');
  350. TABINT = INDEX (PRECED.'TEMPERATURES');
  351. IND0 = TABINT.('DIME' TABINT );
  352. TH_COUR = PRECED.'TEMPERATURES' . IND0;
  353. 'SI' (IND0 '>EG' 2) ;
  354. WTAB.'TET0' = PRECED.'TEMPERATURES'. (IND0 - 2);
  355. 'FINSI';
  356. 'SINON';
  357. 'SI' ('EXIS' WTAB.'MAT_T' 'TINI') ;
  358. MOTSTEMP = 'EXTR' WTAB.'MOD_T' 'DEPL' ;
  359. DDDD = VIDE 'MCHAML' ;
  360. 'REPE' BMO ('DIME' MOTSTEMP) ;
  361. MOTEMPI = 'EXTR' MOTSTEMP &BMO ;
  362. DDDD = DDDD ET ('EXCO' WTAB.'MAT_T' 'TINI' MOTEMPI) ;
  363. 'FIN' BMO ;
  364. 'SINO' ;
  365. DDDD = 'ZERO' WTAB.'MOD_T' 'TEMPERAT' ;
  366. 'FINS' ;
  367. TH_COUR = 'CHANGER' 'CHPO' WTAB.'MOD_T' DDDD;
  368. PRECED.'TEMPERATURES' = 'TABL';
  369. PRECED.'TEMPERATURES'. 0 = TH_COUR;
  370. 'FINSI';
  371. 'SI' INOUV ;
  372. CONTI.'TEMPERATURES' ='CHAN' 'ATTRIBUT' TH_COUR 'NATURE' 'DIFFUS';
  373. 'FINS';
  374. WTAB.'TET1' = TH_COUR;
  375. WTAB.'TET2' = TH_COUR;
  376. *
  377. * - Initialisation des reactions
  378. 'SI' ('NON' ('EXIS' PRECED 'REACTIONS_THERMIQUES')) ;
  379. 'SI' WTAB.'CHAR_BLOT' ;
  380. BLOTHER = 'TIRE' WTAB.'BLOCAGES_THERMIQUES' 'BLOT' TEMP0 ;
  381. 'SINON' ;
  382. BLOTHER = WTAB.'BLOCAGES_THERMIQUES' ;
  383. 'FINSI' ;
  384. QTH_COUR = 'REAC' BLOTHER TH_COUR ;
  385. PRECED.'REACTIONS_THERMIQUES' = 'TABL' ;
  386. PRECED.'REACTIONS_THERMIQUES' . 0 = QTH_COUR ;
  387. 'FINS' ;
  388. 'SI' inouv;
  389. conti.'REACTIONS_THERMIQUES' = PRECED.'REACTIONS_THERMIQUES'. NSOR ;
  390. 'FINS';
  391. 'FINS';
  392. ************************************************************************
  393. * Initialisations pour la METALLURGIE (T.L. en juin 2018)
  394. ************************************************************************
  395. 'SI' WTAB.'FOR_METALLU' ;
  396. *
  397. * - Initialisation des proportions de phase
  398. 'SI' ('EXIS' PRECED 'PROPORTIONS_PHASES') ;
  399. TAB_PROP ='INDE' (PRECED.'PROPORTIONS_PHASES'); 'COMM' 'TAB_PROP est une table dan le quel on range les NOMS des indexs de la table PRECED.PROPORTIONS_PHASES';
  400. IND0 = TAB_PROP. ('DIME' TAB_PROP) ; 'COMM' 'IND0 = le nom du dernier index de la table PRECED.PROPORTIONS_PHASES';
  401. CHMET0 = PRECED.'PROPORTIONS_PHASES'.IND0 ; 'COMM' 'CHMET0= la valeur du dernier indice de PRECED.PROPORTIONS_PHASES';
  402. 'SINO' ;
  403. * Valeurs par defaut : ZERO pour toutes les phases sauf la premiere : 1.D0
  404. CHMET0 ='ZERO' WTAB.'MOD_MET' 'VARINTER';
  405. LISCO ='EXTR' WTAB.'MOD_MET' 'VARI';
  406. CMP1 ='EXCO' CHMET0 ('EXTR' LISCO 1) ('EXTR' LISCO 1);
  407. CHMET0 = CHMET0 + (CMP1 + 1.D0);
  408. PRECED.'PROPORTIONS_PHASES' ='TABL' ;
  409. PRECED.'PROPORTIONS_PHASES'. 0 = CHMET0;
  410. 'FINS' ;
  411. CHTPOI0 = ('ZERO' WTAB.'MOD_MET' 'TEMPERATURES') 'NOMC' 'TPOI' ;
  412. CHTPOI0 = 'CHAN' 'CHPO' WTAB.'MOD_MET' CHTPOI0 ;
  413. WTAB . 'T_POINT0' = CHTPOI0 ;
  414. * 'SI' ('EXIS' PRECED 'T_POINT') ;
  415. * TAB_TPOI = 'INDE' (PRECED.'T_POINT') ;
  416. * IND0 = TAB_TPOI. ('DIME' TAB_TPOI) ;
  417. * CHTPOI0 = PRECED.'T_POINT'.IND0 ;
  418. * 'SINO' ;
  419. * CHTPOI0 = ('ZERO' WTAB.'MOD_MET' 'TEMPERATURES') 'NOMC' 'TPOI' ;
  420. * CHTPOI0 = 'CHAN' 'CHPO' WTAB.'MOD_MET' CHTPOI0 ;
  421. * PRECED.'T_POINT' = 'TABLE' ;
  422. * PRECED.'T_POINT' . 0 = CHTPOI0 ;
  423. * 'FINS' ;
  424. 'SI' INOUV ;
  425. conti . 'PROPORTIONS_PHASES' = CHMET0 ;
  426. * conti . 'T_POINT' = CHTPOI0 ;
  427. 'FINS' ;
  428. 'FINSI' ;
  429. ************************************************************************
  430. * Initialisations pour la DIFFUSION
  431. ************************************************************************
  432. 'SI' WTAB.'FOR_DIFF' ;
  433. *
  434. * - Initialisation des concentrations
  435. 'SI' ('EXIS' PRECED 'CONCENTRATIONS') ;
  436. TABIND0 = 'INDE' (PRECED.'CONCENTRATIONS') ;
  437. IND0 = TABIND0 . ('DIME' TABIND0) ;
  438. CHCO0 = PRECED. 'CONCENTRATIONS' . IND0 ;
  439. 'SINO' ;
  440. CHCO0 = 'ZERO' WTAB. 'MOD_DIF' 'DEPLACEMENTS' ;
  441. CHCO0 = 'CHAN' 'CHPO' WTAB. 'MOD_DIF' CHCO0 ;
  442. PRECED.'CONCENTRATIONS' = 'TABL' ;
  443. PRECED.'CONCENTRATIONS'. 0 = CHCO0 ;
  444. 'FINS' ;
  445. 'SI' INOUV ;
  446. CONTI . 'CONCENTRATIONS' ='CHAN' 'ATTRIBUT' CHCO0 'NATURE' 'DIFFUS';
  447. 'FINS' ;
  448. WTAB.'CO1' = CHCO0 ;
  449. WTAB.'CO2' = CHCO0 ;
  450. *
  451. * - Initialisation des reactions
  452. 'SI' ('NON' ('EXIS' PRECED 'REACTIONS_DIFFUSIONS')) ;
  453. 'SI' WTAB.'CHAR_BLOD' ;
  454. BLODIFF = 'TIRE' WTAB.'BLOCAGES_DIFFUSIONS' 'BLOD' TEMP0 ;
  455. 'SINON' ;
  456. BLODIFF = WTAB.'BLOCAGES_DIFFUSIONS' ;
  457. 'FINSI' ;
  458. QDI_COUR = 'REAC' BLODIFF CHCO0 ;
  459. PRECED.'REACTIONS_DIFFUSIONS' = 'TABL' ;
  460. PRECED.'REACTIONS_DIFFUSIONS' . 0 = QDI_COUR ;
  461. 'FINS' ;
  462. 'SI' INOUV ;
  463. CONTI.'REACTIONS_DIFFUSIONS' = PRECED.'REACTIONS_DIFFUSIONS'. NSOR ;
  464. 'FINS' ;
  465. 'FINS' ;
  466. ************************************************************************
  467. * Initialisations pour le CHANGEMENT DE PHASE (CB@!%*@! 2019)
  468. *-----------Doit etre place en dernier car peut necessiter les autres
  469. *-----------champs
  470. ************************************************************************
  471. 'SI' WTAB.'PHASE';
  472. *
  473. MO_COVA ='EXTR' WTAB.'MAT_PHA' 'COVA';
  474. 'SI' (('DIME' MO_COVA) > 0);
  475. CHAI1 ='CHAI' ' Le materiau du modele CHANGEMENT_PHASE ne peut pas varier';
  476. 'ERRE' CHAI1 ;
  477. 'FINS';
  478.  
  479. 'SI' ( 'EXISTE' PRECED 'PROPORTIONS_PHASE') ;
  480. TABINT = INDEX (PRECED.'PROPORTIONS_PHASE');
  481. IND0 = TABINT.('DIME' TABINT) ;
  482. CHPHA0 ='REDU' WTAB.'MOD_PHA' PRECED.'PROPORTIONS_PHASE'.IND0 ;
  483. 'SINON';
  484. * On met un etat qui a du sens physique pour la proportion de phases
  485. TABPHA ='EXTR' WTAB.'MOD_PHA' 'ZONE';
  486. CHPHA0 ='VIDE' 'MCHAML';
  487. 'REPE' SURi (('DIME' TABPHA) / 2);
  488. * Boucle sur les modeles CHANGEMENT_PHASE
  489. MODEi = TABPHA.((&SURi-1)*2 + 1) ;
  490. MATEi =('REDU' MODEi WTAB.'MAT_PHA' ) 'EXCO' 'PRIM';
  491. LMOPRIM='EXTR' MODEi 'DEPL';
  492. MOPRIM ='EXTR' LMOPRIM 1;
  493. 'SI' ('EXIS' WTAB.'CHARGEMENT' MOPRIM);
  494. * On regarde dans le CHARGEMENT si la PRIMALE existe
  495. CHPRIM ='TIRE' WTAB.'CHARGEMENT' MOPRIM TEMP0;
  496. 'SI' ('EXIS' ('EXTR' CHPRIM 'COMP') MOPRIM);
  497. CHPRIM='CHAN' 'CHAM' CHPRIM MODEi 'NOEUD';
  498. CHPRIM= CHPRIM 'NOMC' 'PRIM';
  499. CHPHAi=('MASQ' (MATEi-CHPRIM) 'EGINFE' 0.D0) 'NOMC' 'PPHA';
  500. CHPHA0= CHPHAi 'ET' CHPHA0;
  501. 'ITER' SURi ;
  502. 'FINS';
  503. 'FINS';
  504.  
  505. * On regarde dans les indices connus de la TABLE PRECED
  506. 'SI' ('EXIS' PRECED 'TEMPERATURES');
  507. CHPRIM = TH_COUR;
  508. 'SI' ('EXIS' ('EXTR' CHPRIM 'COMP') MOPRIM);
  509. CHPRIM='CHAN' 'CHAM' CHPRIM MODEi 'NOEUD';
  510. CHPRIM= CHPRIM 'NOMC' 'PRIM';
  511. CHPHAi=('MASQ' (MATEi-CHPRIM) 'EGINFE' 0.D0) 'NOMC' 'PPHA';
  512. CHPHA0= CHPHAi 'ET' CHPHA0;
  513. 'ITER' SURi ;
  514. 'FINS';
  515. 'FINS';
  516.  
  517. 'SI' ('EXIS' PRECED 'CONCENTRATIONS');
  518. CHPRIM = CHCO0;
  519. 'SI' ('EXIS' ('EXTR' CHPRIM 'COMP') MOPRIM);
  520. CHPRIM='CHAN' 'CHAM' CHPRIM MODEi 'NOEUD';
  521. CHPRIM= CHPRIM 'NOMC' 'PRIM';
  522. CHPHAi=('MASQ' (MATEi-CHPRIM) 'EGINFE' 0.D0) 'NOMC' 'PPHA';
  523. CHPHA0= CHPHAi 'ET' CHPHA0;
  524. 'ITER' SURi ;
  525. 'FINS';
  526. 'FINS';
  527.  
  528. * Si on arrive ici c'est qu'on n'a pas trouve le champ primal : on met zero
  529. CHPHAi='ZERO' MODEi 'VARINTER';
  530. CHPHA0= CHPHAi 'ET' CHPHA0;
  531. 'FIN' SURi;
  532.  
  533. PRECED.'PROPORTIONS_PHASE' ='TABL' ;
  534. PRECED.'PROPORTIONS_PHASE' . 0 = CHPHA0;
  535. 'FINSI';
  536.  
  537. 'SI' INOUV;
  538. conti.'PROPORTIONS_PHASE'=CHPHA0;
  539. 'FINS';
  540. WTAB.'PROPPHAS' = CHPHA0 ;
  541. WTAB.'BLO_PHASE'='PMAT' WTAB.'MOD_PHA' ;
  542. 'FINSI';
  543. *
  544. 'SI' WTAB.'SOLUBILITE';
  545. WTAB.'BLO_SOL'='PMAT' WTAB.'MOD_SOL' ;
  546. 'FINSI';
  547. *
  548. PRECED.'ESTIMATION'='COPIER' conti;
  549. 'FINP';
  550.  
  551.  

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