Télécharger pas_init.procedur

Retour à la liste

Numérotation des lignes :

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

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