Télécharger pas_init.procedur

Retour à la liste

Numérotation des lignes :

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

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