Télécharger transnon.procedur

Retour à la liste

Numérotation des lignes :

  1. * TRANSNON PROCEDUR FD218221 26/02/13 21:15:33 12462
  2. 'DEBPROC' TRANSNON PRECED*'TABLE';
  3. *--------------------------------------------------------------------------------*
  4. * *
  5. * T R A N S N O N *
  6. * --------------- *
  7. * *
  8. * RESOLUTION D'UN PROBLEME DE THERMIQUE TRANSITOIRE NON-LINEAIRE *
  9. * METHODE A UN PAS DE TEMPS ( THETA SCHEMA ) *
  10. * *
  11. * ETAB, TABLE CONTENANT EN ENTREE : *
  12. * *
  13. * INDICE 'TEMPERATURES' CHAMP DE TEMPERATURE INITIAL AU PAS 0 *
  14. * INDICE 'RAYO' LOGIQUE VALANT VRAI POUR UNE CONDITION *
  15. * DE RAYONNEMENT *
  16. * INDICE 'EMISSIVITE' MCHAML DECRIVANT LES FACTEURS D'EMISSIVITE *
  17. * NOM DE LA COMPOSANTE : EMIS *
  18. * INDICE 'CELSIUS' LOGIQUE VALANT VRAI SI L'UNITE EST LE *
  19. * DEGRE CELSIUS (CAPITAL SI RAYONNEMENT) *
  20. * INDICE 'MOD_THE' OBJET MODELE THERMIQUE *
  21. * INDICE 'MOD_CON' OBJET MODELE CONVECTION *
  22. * INDICE 'BLOCAGES_THERMIQUES' MATRICE DE BLOCAGE *
  23. * INDICE 'MAT_THE' OBJET MATERIAU THERMIQUE. *
  24. * CE CHAMP PEUT AVOIR DES COMPOSANTES DE *
  25. * TYPE FLOTTANT OU EVOLUTION (ABS-ORD). *
  26. * ABS : VARIABLE QUELCONQUE *
  27. * ORD : VALEUR DE LA COMPOSANTE CONCERNE POUR *
  28. * LA VALEUR ABS. *
  29. * INDICE 'MAT_CON' OBJET MATERIAU CONVECTION *
  30. * INDICE 'CHARGEMENT' CHARGEMENT DECRIVANT LES *
  31. * VALEURS DES VARIABLES EXTERNES (EX: TE, *
  32. * FLUX,TEMPERATURES IMPOSEES ,...) *
  33. * INDICE 'PHASE' LOGIQUE VALANT VRAI SI CHGT DE PHASE 'PARFAIT' *
  34. * INDICE 'SOLUBILITE' LOGIQUE VALANT VRAI SI CHGT DE PHASE 'SOLUBILITE' *
  35. * INDICE 'TEM_CALC' LISTREEL : TEMPS DES RESULTATS A CALCULER *
  36. * INDICE 'RELAXATION_THETA' VALEUR DU COEFFICIENT DE RELAXATION *
  37. * (VALEUR PAR DEFAUT 0.5) *
  38. * INDICE 'SOUS_RELAXATION' VALEUR DU COEFF. DE SOUS-RELAXATION *
  39. * (VALEUR PAR DEFAUT 0.5) *
  40. * INDICE 'PRECISION' VALEUR DU CRITERE DE CONVERGENCE *
  41. * (VALEUR PAR DEFAUT 1.E-4) *
  42. * INDICE 'MAXITERATION' NOMBRE MAXIMUM D'ITERATIONS AUTORISEES *
  43. * INDICE 'PROJECTION' LOGIQUE VALANT VRAI SI COUPLAGE ET SI LE *
  44. * MAILLAGE DE LA MECANIQUE ET DE LA THERMIQUE *
  45. * EST DIFFERENT *
  46. * INDICE 'TTOL' PRECISION ABSOLUE pour la THERMIQUE et la DIFFUSION *
  47. * *
  48. * ETAB CONTIENT EN SORTIE *
  49. * *
  50. * INDICE INITIAL(2) DERNIER CHAMP DE TEMPERATURE CALCULE *
  51. * *
  52. * REMARQUE : CERTAINES VARIABLES ONT DES NOMS IMPOSES. *
  53. * LE TEMPS : TEMPS *
  54. * LA TEMPERATURE : T *
  55. * LA TEMPERATURE EXTERIEURE : TE *
  56. * LES TEMPERATURES IMPOSEES : TIMP *
  57. * LES FLUX : Q *
  58. * *
  59. * LE NOM DES AUTRES VARIABLES EST LAISSE AU CHOIX DE *
  60. * L'UTILISATEUR *
  61. * *
  62. **********************************************************************************
  63. * Recuperation de l'information contenue dans ETAB *
  64. **********************************************************************************
  65. ERR_VAL = FAUX ;
  66. STAB ='TABL' ;
  67. ETAB = PRECED.'WTABLE';
  68. CONTI = PRECED.'CONTINUATION';
  69. ESTIM = PRECED.'ESTIMATION';
  70.  
  71. NBPART = ETAB.'NBPART';
  72. LPRIM1 = ETAB.'PRIM_TOT' ;
  73. LDUAL1 = ETAB.'DUAL_TOT' ;
  74. LPRIM2 =('MOTS' 'TEMP') 'ET' LPRIM1 ;
  75. NBDUA1 = 'DIME' LDUAL1 ;
  76.  
  77. * Recuperation des tolerence absolues (Tout est dans l'indice TTOL)
  78. 'SI' ('NEG' ETAB.'TTOL' ('MOT' 'INCONNU')) ;
  79. LOG_TOL = VRAI ;
  80. TTOL = ETAB.'TTOL' ;
  81. 'SINO' ;
  82. LOG_TOL = FAUX ;
  83. 'FINS' ;
  84. XPETI = ('VALE' 'PETIT') / ('VALE' 'PREC') ;
  85.  
  86. * Appel a PAS_MODL :
  87. * Mise a jour des indices de PRECED.WTABLE relatifs aux modeles
  88. * si PRECED.WTABLE.MODELE a ete modifie
  89. PAS_MODL PRECED ;
  90.  
  91. MODMEC = ETAB.'MO_TOT' ; 'COMM' 'Formulation MECANIQUE & POREUX' ;
  92.  
  93. MODTOT = ETAB.'MOD_TOT' ; 'COMM' 'Formulation THERMIQUE & THERMOHYDRIQUE & DIFFUSION & CHANGEMENT_PHASE' ;
  94. MATTOT0 ='REDU' MODTOT ETAB.'MAT_TOT' ;
  95. MAILTOT ='EXTR' MODTOT 'MAIL';
  96.  
  97. * -------------- presence de conduction
  98. ICONDU = ETAB.'CONDUCTION';
  99. 'SI' ICONDU;
  100. MATCOND0=ETAB.'MAT_COND';
  101. MODCOND =ETAB.'MOD_COND';
  102. 'FINS';
  103.  
  104. * -------------- presence de convection
  105. ICONVE= ETAB.'CONVECTION' ;
  106. 'SI' ICONVE;
  107. MATCONV0=ETAB.'MAT_CON';
  108. MODCONV =ETAB.'MOD_CON';
  109. 'FINS';
  110.  
  111. * -------------- presence d'advection
  112. IADVEC=ETAB.'ADVECTION';
  113. 'SI' IADVEC;
  114. MATADV0 = ETAB.'MAT_ADV';
  115. MODADV = ETAB.'MOD_ADV';
  116. 'FINS';
  117.  
  118. * -------------- presence de rayonnement
  119. IRADI = ETAB.'RAYO';
  120. 'SI' IRADI ;
  121. MATRAY0 = ETAB.'MAT_RAY';
  122. MODRAY = ETAB.'MOD_RAY';
  123. 'SI' ('NON' ('EXIS' ETAB 'CTE_STEFAN_BOLTZMANN')) ;
  124. CTE_SB = 5.67037321E-8 ;
  125. 'MESS' 'ATTENTION ! Constante de Stefan-Boltzmann en unites SI' ;
  126. 'MESS' ' soit ' CTE_SB ;
  127. ETAB.'CTE_STEFAN_BOLTZMANN' = CTE_SB ;
  128. 'FINS' ;
  129. 'FINS' ;
  130.  
  131. * -------------- presence de sources de chaleur
  132. ISOURQ = ETAB.'SOURCE_Q';
  133. 'SI' ISOURQ ;
  134. MATSOQ0 = ETAB.'MAT_SOQ';
  135. MODSOQ = ETAB.'MOD_SOQ';
  136. 'FINS';
  137.  
  138. * -------------- presence de changement de phase 'PARFAIT'
  139. IPHASE=ETAB.'PHASE';
  140. 'SI' IPHASE;
  141. MODPHA = ETAB.'MOD_PHA' ;
  142. MATPHA0 = ETAB.'MAT_PHA' ;
  143. BLOPHA = ETAB.'BLO_PHASE';
  144. PROPHA0 = CONTI.'PROPORTIONS_PHASE' ;
  145. PROPHA1 = PROPHA0 ;
  146. 'FINS';
  147.  
  148. * -------------- presence de changement de phase 'SOLUBILITE'
  149. ISOLU=ETAB.'SOLUBILITE';
  150. 'SI' ISOLU;
  151. BLOSOL = ETAB.'BLO_SOL' ;
  152. 'FINS';
  153.  
  154. * -------------- presence Modele Metallurgie (T.L. en juin 2018)
  155. IMETAL = ETAB.'FOR_METALLU' ;
  156. 'SI' IMETAL;
  157. MODMET = ETAB.'MOD_MET' ;
  158. PHA_MET0 = CONTI.'PROPORTIONS_PHASES' ;
  159. CHTPOI0 = ETAB.'T_POINT0' ;
  160. 'FINS';
  161.  
  162. * -------------- presence de thermohydrohydrique
  163. ITHM1=ETAB.'THM1';
  164. 'SI' ITHM1;
  165. MATTHM0 = ETAB.'MAT_THM';
  166. MODTHM = ETAB.'MOD_THM';
  167. 'FINS';
  168.  
  169. * -------------- presence de diffusion
  170. IDIFF=ETAB.'FOR_DIFF';
  171. 'SI' IDIFF;
  172. MATDIF0 = ETAB.'MAT_DIF' ;
  173. MODDIF = ETAB.'MOD_DIF' ;
  174. 'FINS';
  175.  
  176. IRIB = 'NEG' ETAB.'RIBLO_T' 'INCONNU' ;
  177. 'SI' IRIB;
  178. RIBL_VAL = ETAB.'RIBLO_T' ;
  179. LISE_VAL = ETAB.'LISEA_T' ;
  180. 'FINS' ;
  181.  
  182. * Parallelisation automatique des calculs ?
  183. IPARAL = 'EGA' ETAB.'PROCESSEURS' 'AUTOMATIQUE' ;
  184. PARTLOCA = 'EGA' ETAB.'PROCESSEURS' 'COMPORTEMENT' ;
  185. 'OPTI' 'PARA' IPARAL ;
  186.  
  187. 'SI' IPARAL ;
  188.  
  189. MODRTOT ='PART' 'ARLE' MODTOT NBPART ;
  190. MATRTOT0 ='REDU' MATTOT0 MODRTOT ;
  191. 'SI' ICONDU;
  192. MODRCOND='PART' 'ARLE' MODCOND NBPART ;
  193. MATRCOND='REDU' MATCOND0 MODRCOND ;
  194. 'FINS';
  195. 'SI' ICONVE;
  196. MODRCON ='PART' 'ARLE' MODCONV NBPART ;
  197. MATRCON ='REDU' MATCONV0 MODRCON ;
  198. 'FINS';
  199. 'SI' IADVEC;
  200. MODRADV ='PART' 'ARLE' MODADV NBPART ;
  201. MATRADV ='REDU' MATADV0 MODRADV ;
  202. 'FINS' ;
  203. 'SI' IRADI;
  204. MODRRAY ='PART' 'ARLE' MODRAY NBPART ;
  205. MATRRAY ='REDU' MATRAY0 MODRRAY ;
  206. 'FINS';
  207. 'SI' ISOURQ;
  208. MODRSOQ ='PART' 'ARLE' MODSOQ NBPART ;
  209. MATRSOQ ='REDU' MATSOQ0 MODRSOQ ;
  210. 'FINS';
  211. 'SI' IPHASE;
  212. MODRPHA ='PART' 'ARLE' MODPHA NBPART ;
  213. MATRPHA ='REDU' MATPHA0 MODRPHA ;
  214. 'FINS';
  215. 'SI' IMETAL;
  216. MODRMET ='PART' 'ARLE' MODMET NBPART ;
  217. PHA_MET0='REDU' PHA_MET0 MODRMET ;
  218. 'FINS';
  219. 'SI' ITHM1;
  220. MODRTHM ='PART' 'ARLE' MODTHM NBPART ;
  221. MATRTHM ='REDU' MATTHM0 MODRTHM ;
  222. 'FINS' ;
  223. 'SI' IDIFF ;
  224. MODRDIFF='PART' 'ARLE' MODDIF NBPART ;
  225. MATRDIFF='REDU' MATDIF0 MODRDIFF ;
  226. 'FINS' ;
  227.  
  228. 'SINO' ;
  229. MODRTOT = MODTOT ;
  230. MATRTOT0 = MATTOT0 ;
  231. 'SI' ICONDU;
  232. MODRCOND= MODCOND ;
  233. MATRCOND= MATCOND0;
  234. 'FINS';
  235. 'SI' ICONVE;
  236. MODRCON = MODCONV ;
  237. MATRCON = MATCONV0;
  238. 'FINS';
  239. 'SI' IADVEC;
  240. MODRADV = MODADV ;
  241. MATRADV = MATADV0 ;
  242. 'FINS';
  243. 'SI' IRADI;
  244. MODRRAY = MODRAY ;
  245. MATRRAY = MATRAY0 ;
  246. 'FINS';
  247. 'SI' ISOURQ;
  248. MODRSOQ = MODSOQ ;
  249. MATRSOQ = MATSOQ0 ;
  250. 'FINS';
  251. 'SI' IPHASE;
  252. MODRPHA = MODPHA ;
  253. MATRPHA = MATPHA0 ;
  254. 'FINS';
  255. 'SI' IMETAL;
  256. MODRMET = MODMET ;
  257. 'SI' PARTLOCA ;
  258. MODCOMP1 = 'PART' 'ARLE' MODRMET (ETAB.'NBPART') ;
  259. 'FINSI' ;
  260. 'FINS';
  261. 'SI' ITHM1;
  262. MODRTHM = MODTHM ;
  263. MATRTHM = MATTHM0 ;
  264. 'FINS';
  265. 'SI' IDIFF;
  266. MODRDIFF = MODDIF ;
  267. MATRDIFF = MATDIF0 ;
  268. 'FINS' ;
  269. 'FINS' ;
  270.  
  271. *------- Initialisation de la liste des temps a calculer ---------
  272. TE_CALC = ETAB.'TEM_CALC' ;
  273. DCALC ='DIME' TE_CALC ;
  274. ITE_IT = 0 ;
  275.  
  276. *-------------- Calcul du premier pas de calcul -------------------
  277. TEM0 = CONTI.'TEMPS' ;
  278. TEM1 ='EXTR' TE_CALC 1;
  279. T_PAS = TEM1 - TEM0 ;
  280.  
  281. *-------------- modif pour recuperer le temps du dernier pas de calcul
  282. TEM_VAL = TEM1 ;
  283. *-------------- fin de modif -----------------------------------------
  284.  
  285. *---- Initialisation de la valeur du critere de fin d'iteration ---
  286. ZPREC1 = ETAB.'PRECISION' ;
  287.  
  288. *--------- Initialisation du nombre d'iterations autorisees -------
  289. 'SI' ('EXIS' ETAB 'MAXITERATION');
  290. MAX1 = ETAB.'MAXITERATION';
  291. 'SINO';
  292. MAX1 = 150;
  293. 'FINS';
  294.  
  295. *-------- Recherche des variables selon lesquelles varie ----------
  296. *---------------------- le champ de materiau ----------------------
  297. * Si couplage, on regarde les caracteristiques variables du modele complet
  298. 'SI' ETAB.'COUPLAGE' ;
  299. LVAREX = 'EXTR' (ETAB.'CARACTERISTIQUES') 'DEVA';
  300. 'SINON' ;
  301. LVAREX = 'EXTR' MATTOT0 'DEVA';
  302. 'FINSI' ;
  303. ILVA = 'DIME' LVAREX;
  304. IMATCHG = 'EXIS' LVAREX 'TEMP' ;
  305. NONLIN1 = (('EGA' ILVA 1) 'ET' ('NON' IMATCHG))
  306. 'OU' ('>EG' ILVA 2)
  307. 'OU' ETAB.'PROCEDURE_PARATHER' ;
  308. 'SI' (ETAB.'COUPLAGE' et nonlin1) ;
  309. CONTI=PRECED.'CONTINUATION';
  310. *--- Creation du MCHAML contenant tous les parametres mecaniques --
  311. *-------- Ces parametres sont determines au temps TEM0 ------------
  312. *----- Ces parametres sont projetes sur le maillage thermique -----
  313. DEP1 ='CHAN' 'CHAM' CONTI.'DEPLACEMENTS' MODMEC 'NOEUD';
  314. CON1 ='CHAN' 'NOEUD' CONTI.'CONTRAINTES' MODMEC ;
  315. CHAR1_ME = DEP1 'ET' CON1 ;
  316. * 'SI' ('EXIS' CONTI 'VITESSES');
  317. * VIT1 = 'CHAN' 'CHAM' CONTI.'VITESSES' MODMEC 'NOEUD';
  318. * CHAR1_ME = CHAR1_ME 'ET' VIT1;
  319. * 'FINS';
  320. 'SI' ('EXIS' CONTI 'VARIABLES_INTERNES');
  321. VAR1 = CONTI.'VARIABLES_INTERNES' ;
  322. LMOCP1 = extr VAR1 comp ;
  323. VARXX = vide mchaml ;
  324. repe Bvar (dime LMOCP1) ;
  325. MOCPI1 = extr LMOCP1 &Bvar ;
  326. VARXXI1 = exco VAR1 MOCPI1 MOCPI1 ;
  327. VALXXI1 = extr VARXXI1 MOCPI1 1 1 1 ;
  328. si (ega (type VALXXI1) 'FLOTTANT') ;
  329. VARXXI1 = 'CHAN' 'NOEUD' VARXXI1 MODMEC ;
  330. VARXX = VARXX et VARXXI1 ;
  331. fins ;
  332. fin Bvar ;
  333. VAR1 = VARXX ;
  334. CHAR1_ME = CHAR1_ME 'ET' VAR1 ;
  335. * DEF1 ='CHAN' 'NOEUD' ETAB.'DEI_EST' MODMEC ;
  336. * CHAR1_ME = CHAR1_ME 'ET' VAR1 'ET' DEF1;
  337. 'FINS';
  338. * En cas de maillages mecanique/thermique differents,
  339. * on projette les champs mecaniques sur le modele thermique
  340. 'SI' ETAB.'PROJECTION';
  341. CHAR_ME ='CHAN' 'CHAM' ('PROI' MAILTOT CHAR1_ME) MODRTOT 'RIGIDITE';
  342. 'SINO';
  343. CHAR_ME ='CHAN' 'CHAM' ('CHAN' 'CHPO' CHAR1_ME MODMEC) MODRTOT 'RIGIDITE';
  344. 'FINS';
  345. 'FINS';
  346.  
  347. *-----------recherche des composantes de materiau qui varient et initialisation
  348. * --------- des logiques de recalcul des matrices.-------------------
  349. LCOREX = 'EXTR' MATTOT0 'COVA' ;
  350.  
  351. IKDEP =('EXIS' LCOREX 'K ') 'OU' ('EXIS' LCOREX 'K1 ') 'OU' ('EXIS' LCOREX 'K11 ') ;
  352. ICDEP =('EXIS' LCOREX 'RHO ') 'OU' ('EXIS' LCOREX 'C ') 'OU' ('EXIS' LCOREX 'M ') ;
  353. IECDEP = 'EXIS' LCOREX 'H ' ;
  354. IKDDEP =('EXIS' LCOREX 'KD ') 'OU' ('EXIS' LCOREX 'KD1 ') 'OU' ('EXIS' LCOREX 'KD11') ;
  355. ICDDEP = 'EXIS' LCOREX 'CDIF' ;
  356. IKVITE = 'EXIS' LCOREX 'VITE' ;
  357.  
  358. ICPCONS = ETAB.'CAPACONST' ;
  359. IKCONS = ETAB.'CONDCONST' ;
  360.  
  361. 'SI' ITHM1 ;
  362. IKDEP= VRAI ;
  363. ICDEP= VRAI ;
  364. 'FINS' ;
  365.  
  366. *------- Cas particulier ou il n'y a pas de CAPACITE ------------------*
  367. *- Ceci correspond au cas ou, au moins, une des 2 composantes 'C ' -*
  368. *- et/ou 'RHO ' n'est pas definie dans le materiau (facultatives). -*
  369. LCOMPM = 'EXTR' MATTOT0 'COMP' ;
  370.  
  371. ICAPATH = ETAB.'FOR_THER' 'ET' ('EXIS' LCOMPM 'C ') 'ET' (('EXIS' LCOMPM 'RHO ') 'OU' ('EXIS' LCOMPM 'M '));
  372. ICAPADI = IDIFF 'ET' ('EXIS' LCOMPM 'CDIF') ;
  373. ICAPA = ICAPATH 'OU' ICAPADI 'OU' ICPCONS ;
  374. 'SI' ('NON' ICAPATH) ;
  375. ICDEP = FAUX ;
  376. 'FINS' ;
  377. 'SI' ('NON' ICAPADI) ;
  378. ICDDEP = FAUX ;
  379. 'FINS' ;
  380.  
  381. *---------- Prise en compte CAPACITE formulation thermohydrique -----
  382. * Sciume Giuseppe (18-10-2023)
  383. 'SI' ETAB.'THM1' ;
  384. ICAPA = VRAI ;
  385. ICAPATH = VRAI ;
  386. 'FINS' ;
  387.  
  388. *---------- Initialisation de l'unite de temperature --------------
  389. 'SI' ('EXIS' ETAB 'CELSIUS');
  390. ICELS = ETAB.'CELSIUS' 'ET' ETAB.'FOR_THER' ;
  391. 'SINO';
  392. ICELS = FAUX;
  393. 'FINS';
  394.  
  395. *---------- Initialisation de la temperature de reference----------
  396. 'SI' ICELS;
  397. TREF = 273.15 ;
  398. 'SINO';
  399. TREF = 0. ;
  400. 'FINS';
  401. ETAB.'TREF'=TREF;
  402.  
  403. *----------- Initialisation du champ de temperatures ------------
  404. CHTREF ='VIDE' 'CHPOINT' / 'DIFFUS' ;
  405. U0 ='VIDE' 'CHPOINT' / 'DIFFUS' ;
  406. 'SI' ETAB.'FOR_THER' ;
  407. U0 = CONTI.'TEMPERATURES';
  408. 'SI' ICELS ;
  409. CHTREF =(0. * (U0 'ENLE' 'LX')) + TREF ;
  410. 'FINS' ;
  411. INOBLOT = 'EGA' ('DIME' ETAB.'BLOCAGES_THERMIQUES') 0 ;
  412. 'FINS' ;
  413.  
  414. 'SI' IDIFF ;
  415. U0 = U0 'ET' CONTI.'CONCENTRATIONS';
  416. INOBLOD = 'EGA' ('DIME' ETAB.'BLOCAGES_DIFFUSIONS') 0 ;
  417. 'FINS' ;
  418.  
  419. ETAB.'THER_COURANT' = U0 ;
  420. U0MTREF = U0 ;
  421. U0 =(U0 'ENLE' 'LX');
  422. U0 = U0 + CHTREF ;
  423.  
  424. *---------- y-a-t-il definition des coefficients lambda ----------
  425. * En regime stationnaire (sans CAPACITE), ou en presence d'advection on force LAMBDA1 a 1.
  426. * SINO on ne resout pas le bon probleme !
  427. 'SI' (IADVEC 'OU' ('NON' ICAPA)) ;
  428. LAMBDA1 = 1. ;
  429. 'SINO';
  430. 'SI' ( 'EXIS' ETAB 'RELAXATION_THETA' ) ;
  431. LAMBDA1 = ETAB.'RELAXATION_THETA' ;
  432. 'SINO' ;
  433. LAMBDA1 = 1. ;
  434. 'FINS' ;
  435. 'FINS' ;
  436. ETAB.'RELAXATION_THETA' = LAMBDA1 ;
  437.  
  438.  
  439. 'SI' (('ABS' (LAMBDA1 - 1.0)) '<EG' 1.E-6) ;
  440. I_LAMBD1 = 3 ;
  441. 'SINO' ;
  442. 'SI' (('ABS' (LAMBDA1 - 0.5)) '<EG' 1.E-6) ;
  443. I_LAMBD1 = 2 ;
  444. 'SINO' ;
  445. 'SI' (('ABS' LAMBDA1) '<EG' 1.E-6) ;
  446. I_LAMBD1 = 1 ;
  447. 'SINO' ;
  448. I_LAMBD1 = 0 ;
  449. 'FINS' ;
  450. 'FINS' ;
  451. 'FINS' ;
  452.  
  453. *---- En cas de rayonnement : recalcul des facteurs de forme -----------
  454. *---- Si geometrie modifiee ou s'il n'existent pas, --------------
  455. 'SI' IRADI ;
  456. ETAB.'CHMAT' = MATTOT ;
  457. IAPPEL = 2 ;
  458. t_rayo = PAS_RAYO PRECED tem1 IAPPEL ;
  459. t_rayo ='MOT' 'INCONNU' ;
  460. 'FINS' ;
  461.  
  462. ********************************************************************
  463. * Rappel des donnees du probleme *
  464. ********************************************************************
  465. 'SI' ETAB.'MESSTHER' ;
  466. ETAB.'MESSTHER' = FAUX ;
  467. 'SI' ICAPA ;
  468. 'MESS' ' *** Probleme TRANSITOIRE ' ;
  469. 'SINO' ;
  470. 'MESS' ' *** Probleme STATIONNAIRE' ;
  471. 'FINS' ;
  472.  
  473. 'SI' ('EGA' ETAB.'PROCEDURE_THERMIQUE' 'NONLINEAIRE');
  474. 'MESS' ' *** Methode a un pas de temps (theta methode) ' ;
  475. 'SINO';
  476. 'MESS' ' *** Methode a deux pas de temps (DUPONT2) ' ;
  477. 'MESS' ' > Calcul du premier pas par la theta-methode ' ;
  478. 'FINS';
  479.  
  480. 'MESS' ' *** Donnees utilisees du probleme :';
  481. 'MESS' ' > Champ de temperatures a l instant : ' TEM0;
  482. 'SI' NONLIN1;
  483. 'MESS' ' > K,C ou H variables.';
  484. 'SINO';
  485. 'MESS' ' > K,C et H constants.';
  486. 'FINS';
  487.  
  488. 'SI' ICELS;
  489. 'MESS' ' > Unite de temperature utilisee : Celsius.';
  490. 'SINO';
  491. 'MESS' ' > Unite de temperature utilisee : Kelvin.';
  492. 'FINS';
  493.  
  494. 'SI' ('EGA' ETAB.'PROCEDURE_THERMIQUE' 'NONLINEAIRE');
  495. 'MESS' ' > Coefficient de relaxation : ' LAMBDA1;
  496. 'SINO';
  497. 'MESS' ' > Coefficient de relaxation pour la theta-methode : ' LAMBDA1 ;
  498. 'MESS' ' > Coefficient de relaxation pour la methode Dupont2 : ' ETAB.'RELAXATION_DUPONT' ;
  499. 'MESS' ' > Coefficient de sous-relaxation : ' LAMBDA2;
  500. 'FINS';
  501.  
  502. 'SI' (IPHASE 'OU' ISOLU);
  503. 'SI' (IPHASE 'ET' ISOLU) ;
  504. 'MESS' ' > Changement de phase ''PARFAIT'' et ''SOLUBILITE'' prevus.';
  505. 'SINO' ;
  506. 'SI' IPHASE ;
  507. 'MESS' ' > Changement de phase ''PARFAIT'' prevu.';
  508. 'SINO';
  509. 'MESS' ' > Changement de phase ''SOLUBILITE'' prevu.';
  510. 'FINS';
  511. 'FINS' ;
  512. 'SINO';
  513. 'MESS' ' > Pas de changement de phase prevu.';
  514. 'FINS';
  515.  
  516. 'SI' ('NEG' ('DIME' ETAB.'BLOCAGES_THERMIQUES') 0);
  517. 'MESS' ' > Presence de temperatures imposees.';
  518. 'SINO';
  519. 'MESS' ' > Pas de temperatures imposees.';
  520. 'FINS';
  521.  
  522. 'SI' ('NEG' ('DIME' ETAB.'BLOCAGES_DIFFUSIONS') 0);
  523. 'MESS' ' > Presence de concentrations imposees.';
  524. 'SINO';
  525. 'MESS' ' > Pas de concentrations imposees.';
  526. 'FINS';
  527.  
  528. 'SI' ('EXIS' ETAB.'CHARGEMENT' 'Q ');
  529. 'MESS' ' > Presence de flux.';
  530. 'SINO';
  531. 'MESS' ' > Pas de presence de flux.';
  532. 'FINS';
  533.  
  534. 'SI' ICONDU;
  535. 'MESS' ' > Presence de conduction';
  536. 'SINO';
  537. 'MESS' ' > Pas de presence de conduction ';
  538. 'FINS';
  539.  
  540. 'SI' ICONVE;
  541. 'MESS' ' > Presence de convection.';
  542. 'SINO';
  543. 'MESS' ' > Pas de terme de convection.';
  544. 'FINS';
  545.  
  546. 'SI' IRADI;
  547. 'MESS' ' > Presence de rayonnement.';
  548. 'SINO';
  549. 'MESS' ' > Pas de presence de rayonnement.';
  550. 'FINS';
  551.  
  552. 'SI' IADVEC;
  553. 'MESS' ' > Presence d advection.';
  554. 'SINO';
  555. 'MESS' ' > Pas de presence d advection';
  556. 'FINS';
  557.  
  558. 'SI' ICPCONS ;
  559. 'MESS' ' > Presence d une capacite constante.';
  560. 'FINS';
  561.  
  562. 'SI' IKCONS ;
  563. 'MESS' ' > Presence d une conductivite constante.';
  564. 'FINS';
  565. 'MESS' ' ';
  566. 'FINS';
  567.  
  568. ********************************************************************
  569. * Boucle sur les pas de temps *
  570. ********************************************************************
  571. 'REPETER' BOUC_SO ;
  572. ITE3 = &BOUC_SO;
  573. TEMM = (LAMBDA1 * TEM1) + ((1 - LAMBDA1) * TEM0);
  574. TH_COUR = U0MTREF ;
  575. ETAB.'THER_COURANT' = TH_COUR ;
  576.  
  577. 'MESS' ' ';
  578. 'MESS' '---- Calcul du champ de temperature au temps :'TEM1;
  579. 'MESS' ' ';
  580. *---- initialisation du materiau
  581. 'SI' (NONLIN1 'OU' IMATCHG) ;
  582. *-------------- Cas de la temperature et du temps ---------------
  583. CHVAR ='CHAN' 'CHAM' TH_COUR MODRTOT 'RIGIDITE' ;
  584. CHVAR2 ='MANU' 'CHML' MODRTOT 'TEMP' TEMM 'RIGIDITE' ;
  585. CHVAR = CHVAR 'ET' CHVAR2 ;
  586. *-------------- Cas des variables mecaniques --------------------
  587. *---- si il y a couplage on les "rentre" toutes dans CHVAR ------
  588. 'SI' (ETAB.'COUPLAGE' et nonlin1) ;
  589. CHVAR = CHVAR 'ET' CHAR_ME;
  590. 'FINS';
  591. *------------- Ajout cinetique thermique si metallurgie
  592. 'SI' IMETAL ;
  593. * list (maxi CHTPOI0) ;
  594. CHVAR = CHVAR 'ET' ('CHAN' 'CHAM' CHTPOI0 MODRTOT 'RIGIDITE') ;
  595. 'FINSI' ;
  596. *-------------- Mise a jour des variables externes --------------
  597. 'SI' ETAB.'PROCEDURE_PARATHER' ;
  598. PARATHER PRECED TEMM ;
  599.  
  600. * Remise en place des MCHAML sur les bons MMODELS car on suppose
  601. * que l'utilisateur ne connais pas tous les indices de ETAB.
  602. MATRTOT0 ='REDU' ETAB.'MAT_TOT' MODRTOT ;
  603. 'SI' ICONDU;
  604. MATRCOND='REDU' ETAB.'MAT_COND' MODRCOND;
  605. 'FINS';
  606. 'SI' ICONVE;
  607. MATRCON ='REDU' ETAB.'MAT_CON' MODRCON ;
  608. 'FINS';
  609. 'SI' IADVEC;
  610. MATRADV ='REDU' ETAB.'MAT_ADV' MODRADV ;
  611. 'FINS' ;
  612. 'SI' IRADI;
  613. MATRRAY ='REDU' ETAB.'MAT_RAY' MODRRAY ;
  614. 'FINS';
  615. 'SI' IPHASE;
  616. MATRPHA ='REDU' ETAB.'MAT_PHA' MODRPHA ;
  617. 'FINS';
  618. 'SI' ITHM1;
  619. MATRTHM ='REDU' ETAB.'MAT_THM' MODRTHM ;
  620. 'FINS' ;
  621. 'SI' IDIFF ;
  622. MATRDIFF='REDU' ETAB.'MAT_DIF' MODRDIFF;
  623. 'FINS' ;
  624. 'FINS' ;
  625.  
  626. *-------------- Cas des autres variables --------------------
  627. 'REPETER' BOU_NU2 ILVA;
  628. ITE2 = &BOU_NU2;
  629. MOTI = 'EXTR' LVAREX ITE2;
  630. 'SI' ('EXIS' LPRIM2 MOTI) ;
  631. 'ITER' BOU_NU2 ;
  632. 'FINS' ;
  633. 'SI' (ETAB.'COUPLAGE' et nonlin1) ;
  634. 'SI' ('EXIS' CHAR_ME MOTI );
  635. 'SI' ('NEG' LAMBDA1 0.);
  636. 'MESS'
  637. '*** Le materiau thermique depend de parametres mecaniques';
  638. 'ERRE' '*** Il faut initialiser SOUS-RELAXATION a 0.';
  639. 'FINS';
  640. 'ITERER' BOU_NU2;
  641. 'FINS';
  642. 'FINS';
  643. 'SI' IMETAL ;
  644. 'SI' ('EGA' MOTI 'TPOI') ; 'ITER' BOU_NU2 ; 'FINS' ;
  645. 'FINS' ;
  646. 'SI' ('EXIS' ETAB.'CHARGEMENT' MOTI);
  647. CH_1 = 'TIRE' ETAB.'CHARGEMENT' MOTI TEMM;
  648. TYP_1 = 'TYPE' CH_1;
  649.  
  650. * on suppose que les chargements qui ne sont pas d'origine mecanique
  651. * sont appuyes sur le maillage thermique.
  652. 'SI' ('EGA' TYP_1 'CHPOINT');
  653. CHVAR2 = 'CHAN' 'CHAM' CH_1 MODRTOT 'RIGIDITE';
  654. 'SINO';
  655. CHVAR2 = 'CHAN' 'RIGIDITE' CH_1 MODRTOT;
  656. 'FINS';
  657. CHVAR = CHVAR + CHVAR2;
  658. 'SINO';
  659. 'MESS' '*** Il manque une donnee du chargement ***';
  660. 'MESS' '*** Variable concernee : 'MOTI;
  661. 'ERREUR' ' ';
  662. 'FINS';
  663. 'FIN' BOU_NU2;
  664. 'FINS';
  665.  
  666. *----------------- Calcul du champ de materiau a T= U0 -----------------
  667. 'SI' (NONLIN1 'OU' IMATCHG) ;
  668. CHVAR1 ='REDU' CHVAR MODRTOT;
  669. CHMAT ='VARI' 'NUAG' MODRTOT MATRTOT0 CHVAR1 'RIGIDITE';
  670. 'SI' (IDIFF 'OU' ETAB.'THE1') ;
  671. CHMAT1 = 'REDU' CHMAT ETAB.'MOD_THE' ;
  672. 'SI' ITHM1 ;
  673. ma ff0 = @MATETHM MODRTHM TH_COUR ;
  674. CHMAT1 = CHMAT1 'ET' ma ;
  675. 'FINS' ;
  676. 'SINO' ;
  677. 'SI' ITHM1 ;
  678. CHMAT1 ff0 = @MATETHM MODRTHM TH_COUR ;
  679. 'FINS' ;
  680. 'FINS' ;
  681.  
  682. 'SINO';
  683. CHMAT = MATRTOT0 ;
  684. 'SI' (IDIFF 'OU' ETAB.'THE1') ;
  685. CHMAT1 = 'REDU' CHMAT ETAB.'MOD_THE' ;
  686. 'SI' ITHM1 ;
  687. ma ff0 = @MATETHM MODRTHM TH_COUR ;
  688. CHMAT1 = CHMAT1 'ET' ma ;
  689. 'FINS' ;
  690. 'SINO' ;
  691. 'SI' ITHM1 ;
  692. CHMAT1 ff0 = @MATETHM MODRTHM TH_COUR ;
  693. 'FINS' ;
  694. 'FINS' ;
  695. 'FINS';
  696.  
  697. * On conserve le materiau instancie CHMAT dans ETAB (Pour PAS_RAYO...)
  698. ETAB.'CHMAT' ='REDU' CHMAT MODTOT ;
  699.  
  700. MATRTOT ='REDU' CHMAT1 MODRTOT ;
  701. 'SI' ICONDU;
  702. MATRCOND='REDU' CHMAT1 MODRCOND;
  703. 'FINS';
  704. 'SI' ICONVE;
  705. MATRCON ='REDU' CHMAT1 MODRCON;
  706. 'FINS';
  707. 'SI' IRADI;
  708. MATRRAY ='REDU' CHMAT1 MODRRAY;
  709. 'FINS';
  710. 'SI' IADVEC;
  711. MATRADV ='REDU' CHMAT1 MODRADV;
  712. 'FINS' ;
  713. 'SI' ISOURQ ;
  714. MATRSOQ ='REDU' CHMAT1 MODRSOQ ;
  715. 'FINS' ;
  716. 'SI' IPHASE;
  717. MATRPHA ='REDU' CHMAT1 MODRPHA;
  718. 'FINS';
  719. 'SI' ITHM1;
  720. MATRTHM ='REDU' CHMAT1 MODRTHM ;
  721. 'FINS' ;
  722. 'SI' IDIFF ;
  723. MATRDIFF='REDU' CHMAT1 MODRDIFF;
  724. 'FINS' ;
  725.  
  726. *--- Calcul des matrices d'iteration On les recalcule a cause de perso
  727. IKDETO=FAUX;IBCONS=FAUX;
  728. 'SI' ICONDU ;
  729. KDETO ='COND' MODRCOND MATRCOND;
  730. IKDETO= VRAI;
  731. 'FINS';
  732. 'SI' ITHM1;
  733. KDCC ='COND' MODRTHM MATRTHM;
  734. 'SI' IKDETO;
  735. KDETO=KDETO 'ET' KDCC;
  736. 'SINO';
  737. KDETO=KDCC;
  738. IKDETO=VRAI;
  739. 'FINS';
  740. 'FINS';
  741. 'SI' (('NON' IKDEP) 'ET' IKDETO);
  742. BCONS= KDETO;
  743. IBCONS=VRAI;
  744. 'FINS';
  745.  
  746. 'SI' ICONVE;
  747. KDCCG= 'COND' MODRCON MATRCON;
  748. 'SI' IKDETO;
  749. KDETO=KDETO 'ET' KDCCG;
  750. 'SINO';
  751. KDETO=KDCCG;
  752. IKDETO=VRAI;
  753. 'FINS';
  754. 'SI' ('NON' IECDEP);
  755. 'SI' IBCONS ;
  756. BCONS=BCONS 'ET' KDCCG;
  757. 'SINO';
  758. BCONS=KDCCG;
  759. IBCONS=VRAI;
  760. 'FINS';
  761. 'FINS';
  762. 'FINS';
  763.  
  764. 'SI' IADVEC;
  765. * la conduction de du model d'advection est deja calculer grace a icondu
  766. 'SI' ('NON' IKVITE);
  767. KDCC2= 'ADVE' MODRADV MATRADV;
  768. 'SI' IKDETO;
  769. KDETO=KDETO 'ET' KDCC2;
  770. 'SINO';
  771. KDETO= KDCC2 ;
  772. IKDETO=VRAI;
  773. 'FINS';
  774. 'SI' IBCONS;
  775. BCONS = BCONS 'ET' KDCC2;
  776. 'SINO';
  777. BCONS= KDCC2;
  778. IBCONS=VRAI;
  779. 'FINS';
  780. 'FINS';
  781. 'FINS';
  782.  
  783. 'SI' IDIFF;
  784. KDEDI = 'COND' MODRDIFF MATRDIFF ;
  785. 'SI' IKDETO;
  786. KDETO=KDETO 'ET' KDEDI;
  787. 'SINO';
  788. KDETO=KDEDI;
  789. IKDETO=VRAI;
  790. 'FINS';
  791. 'SI' ('NON' IKDDEP);
  792. 'SI' IBCONS;
  793. BCONS=BCONS 'ET' KDEDI;
  794. 'SINO';
  795. BCONS = KDEDI;
  796. IBCONS= VRAI ;
  797. 'FINS';
  798. 'FINS';
  799. 'FINS' ;
  800.  
  801. 'SI' IKCONS ;
  802. 'SI' IKDETO ;
  803. KDETO = KDETO 'ET' ETAB.'CONDUCTIVITE_CONSTANTE' ;
  804. 'SINO' ;
  805. KDETO = ETAB.'CONDUCTIVITE_CONSTANTE' ; KDETO = VRAI ;
  806. 'FINS' ;
  807. 'SI' IBCONS;
  808. BCONS=BCONS 'ET' ETAB.'CONDUCTIVITE_CONSTANTE' ;
  809. 'SINO';
  810. BCONS= ETAB.'CONDUCTIVITE_CONSTANTE' ; IBCONS=VRAI ;
  811. 'FINS';
  812. 'FINS' ;
  813. *
  814. AA = KDETO * LAMBDA1 ;
  815. CCONS = AA ;
  816. BB = KDETO ;
  817. 'SI' ('NON' IBCONS) ;
  818. BCONS = EXTR KDETO 'RIGI' 'MULT'; IBCONS=VRAI;
  819. 'FINS';
  820. *
  821. 'SI' ICAPA ;
  822. ETAB.'CTHE_COURANTE' = 'VIDE' 'RIGIDITE'/'RIGIDITE' ;
  823. ETAB.'CDIF_COURANTE' = 'VIDE' 'RIGIDITE'/'RIGIDITE' ;
  824. 'SI' ICAPATH ;
  825. 'SI' ICONDU;
  826. CDET = 'CAPA' MODRCOND MATRCOND ;
  827. ETAB.'CTHE_COURANTE' = ETAB.'CTHE_COURANTE' et CDET ;
  828. CDET = CDET / T_PAS;
  829. AA = CDET 'ET' AA ;
  830. 'SI' ICDEP ; CCONS = CDET 'ET' CCONS ; 'FINS' ;
  831. 'FINS';
  832. 'SI' ITHM1;
  833. CDET = 'CAPA' MODRTHM MATRTHM ;
  834. ETAB.'CTHE_COURANTE' = ETAB.'CTHE_COURANTE' et CDET ;
  835. CDET = CDET / T_PAS;
  836. AA = CDET 'ET' AA ;
  837. 'SI' ICDEP; CCONS = CDET 'ET' CCONS ; 'FINS' ;
  838. 'FINS';
  839. 'FINS';
  840. 'SI' ICAPADI ;
  841. CDET = 'CAPA' MODRDIFF MATRDIFF ;
  842. ETAB.'CDIF_COURANTE' = ETAB.'CDIF_COURANTE' et CDET ;
  843. CDET = CDET / T_PAS;
  844. AA = CDET 'ET' AA ;
  845. 'SI' ICDDEP ; CCONS = CDET 'ET' CCONS ; 'FINS' ;
  846. 'FINS' ;
  847. ETAB.'CAPA_COURANTE' = ETAB.'CTHE_COURANTE' et ETAB.'CDIF_COURANTE' ;
  848. 'SI' ICPCONS ;
  849. ETAB.'CAPA_COURANTE' = ETAB.'CAPA_COURANTE' et ETAB.'CAPACITE_CONSTANTE' ;
  850. CDET = ETAB.'CAPACITE_CONSTANTE' / T_PAS ;
  851. AA = CDET 'ET' AA ;
  852. 'SI' ICDDEP ; CCONS = CDET 'ET' CCONS ; 'FINS' ;
  853. 'FINS' ;
  854. 'FINS' ;
  855.  
  856. *----------------- y-a-t-il des blocages ---------------------------
  857. * on le laisse ici car perso peut l'avoir modifie de memepour les autres
  858. * matrices
  859. IKBLOC=FAUX;
  860. 'SI' ETAB.'FOR_THER' ;
  861. IKBLOC=VRAI;
  862. MAT_BLOC = ETAB.'BLOCAGES_THERMIQUES' ;
  863. 'SI' INOBLOT ;
  864. MAT_BLOC = 'EXTR' KDETO 'RIGI' 'MULT' ;
  865. 'FINS' ;
  866. MAT_BLTH = MAT_BLOC ;
  867. 'FINS' ;
  868.  
  869. 'SI' IDIFF ;
  870. MAT_BLDI = ETAB.'BLOCAGES_DIFFUSIONS' ;
  871. 'SI' INOBLOD ;
  872. MAT_BLDI = 'EXTR' KDEDI 'RIGI' 'MULT' ;
  873. 'FINS' ;
  874. 'SI' IKBLOC;
  875. MAT_BLOC = MAT_BLOC 'ET' MAT_BLDI;
  876. 'SINO';
  877. MAT_BLOC = MAT_BLDI;
  878. 'FINS';
  879. 'FINS' ;
  880.  
  881. AA = AA 'ET' MAT_BLOC ;
  882. MAT_CHPO = MAT_BLOC * U0 ;
  883. SECON = MAT_CHPO ;
  884.  
  885. *------------------- y-a-t-il des temperatures imposees--------
  886. ICHUIMP=FAUX;
  887. 'SI' ETAB.'FOR_THER' ;
  888. 'SI' ('EXIS' ETAB.'CHARGEMENT' 'TIMP') ;
  889. CH_UIMP = 'TIRE' ETAB.'CHARGEMENT' 'TIMP' TEM1 ;
  890. 'SI' ICELS ;
  891. CH_UIMP = CH_UIMP + TREF ;
  892. 'FINS' ;
  893. ICHUIMP=VRAI;
  894. 'FINS';
  895. 'FINS';
  896. 'SI' IDIFF;
  897. 'SI' ('EXIS' ETAB.'CHARGEMENT' 'CIMP') ;
  898. CH_CI = 'TIRE' ETAB.'CHARGEMENT' 'CIMP' TEM1 ;
  899. 'SI' ICHUIMP;
  900. CH_UIMP= CH_UIMP 'ET' CH_CI;
  901. 'SINO';
  902. CH_UIMP=CH_CI;
  903. 'FINS';
  904. ICHUIMP=VRAI;
  905. 'FINS';
  906. 'FINS';
  907. 'SI' ('NON' ICHUIMP);
  908. CH_UIMP='DEPI' MAT_BLOC 0.;
  909. 'FINS';
  910. MAT_CHPO = CH_UIMP - MAT_CHPO ;
  911. SECON = CH_UIMP - SECON ;
  912.  
  913. *---------- Si convection on cherche TE ------------
  914. *----------calcul convection second membre --------------
  915. 'SI' ICONVE;
  916. 'SI' ('EXIS' ETAB.'CHARGEMENT' 'TECO' ) ;
  917. CH_TEC ='TIRE' ETAB.'CHARGEMENT' 'TECO' TEMM ;
  918. 'SI' ICELS ;
  919. CH_TEC = CH_TEC + TREF ;
  920. 'FINS' ;
  921. CHAL_TEI ='CONV' MODRCON MATRCON CH_TEC ;
  922.  
  923. MAT_CHPO = MAT_CHPO + CHAL_TEI;
  924. 'SI' ('NON' IECDEP) ;
  925. SECON = SECON + CHAL_TEI;
  926. 'FINS' ;
  927. 'SINO' ;
  928. 'SI' ('EXIS' MATRCON 'TC') ;
  929. CH_TEC = 'EXCO' MATRCON 'TC' 'T' ;
  930. CH_TEC = 'CHAN' 'CHPO' MODRCON CH_TEC ;
  931. 'SI' ICELS ;
  932. CH_TEC = CH_TEC + TREF ;
  933. 'FINS' ;
  934. CHAL_TEI ='CONV' MODRCON MATRCON CH_TEC ;
  935. MAT_CHPO = MAT_CHPO + CHAL_TEI;
  936. 'SI' ('NON' IECDEP) ;
  937. SECON = SECON + CHAL_TEI;
  938. 'FINS' ;
  939. 'FINS' ;
  940. 'FINS';
  941. 'FINS';
  942.  
  943. *--------- SI terme de flux -------------------------------
  944.  
  945. 'SI' ITHM1 ;
  946. ma FTGC = @MATETHM MODRTHM TH_COUR ;
  947. MAT_CHPO = MAT_CHPO - FTGC;
  948. * Cas particulier pour le modele BETON_THM (Sciume 2025)
  949. 'SI' ('NON' ('EXIS' PRECED 'VARIABLES_THM')) ;
  950. SECON = SECON - FTGC;
  951. 'FINS';
  952. 'FINS';
  953.  
  954. 'REPE' Boucle NBDUA1 ;
  955. MOTCOMP = 'EXTR' LDUAL1 &Boucle ;
  956. 'SI' ('EXIS' ETAB.'CHARGEMENT' MOTCOMP) ;
  957. CH_DUA = 'TIRE' ETAB.'CHARGEMENT' MOTCOMP TEMM ;
  958. MAT_CHPO = MAT_CHPO + CH_DUA ;
  959. SECON = SECON + CH_DUA ;
  960. 'FINS' ;
  961. 'FIN' Boucle ;
  962.  
  963. *------------- calcul des termes rayonnement --------------------------
  964.  
  965. 'SI' IRADI ;
  966. IAPPEL = 3 ;
  967. t_rayo = PAS_RAYO PRECED TEMM IAPPEL ;
  968. 'SI' ('EXIS' t_rayo 'ADDI_MATRICE') ;
  969. RIG_RAYO = LAMBDA1 '*' t_rayo.'ADDI_MATRICE';
  970. ccons = RIG_RAYO 'ET' ccons ;
  971. aa = RIG_RAYO 'ET' aa ;
  972. bb = t_rayo.'ADDI_MATRICE' 'ET' bb;
  973. 'FINS';
  974. 'SI' ('EXIS' t_rayo 'ADDI_SECOND') ;
  975. MAT_CHPO = MAT_CHPO 'ET' t_rayo.'ADDI_SECOND' ;
  976. 'FINS';
  977. 'SI' ('EXIS' t_rayo 'RAYO_VALEUR');
  978. ETAB.'RAYONNEMENT' = t_rayo.'RAYO_VALEUR' ;
  979. 'FINS';
  980. t_rayo = 'MOT' 'INCONNU' ;
  981. 'FINS';
  982.  
  983. *------------- calcul des sources de chaleur --------------------
  984.  
  985. 'SI' ISOURQ ;
  986. CHQ1 = SOUR MODRSOQ MATRSOQ ;
  987. MAT_CHPO = MAT_CHPO 'ET' CHQ1 ;
  988. SECON = SECON 'ET' CHQ1 ;
  989. 'FINS';
  990.  
  991. *------------- en cas de procedure utilisateur CHARTHER --------------
  992.  
  993. 'SI' etab.'PROCEDURE_CHARTHER' ;
  994. taat = charther preced temm ;
  995. 'SI' ('EXIS' taat 'ADDI_MATRICE') ;
  996. mat_z = lambda1 '*' taat.'ADDI_MATRICE' ;
  997. ccons = mat_z 'ET' ccons ;
  998. aa = mat_z 'ET' aa ;
  999. bb = taat.'ADDI_MATRICE' 'ET' bb ;
  1000. 'FINS';
  1001. 'SI' ('EXIS' taat 'ADDI_SECOND') ;
  1002. MAT_CHPO = MAT_CHPO 'ET' taat.'ADDI_SECOND' ;
  1003. 'FINS';
  1004. oublier taat ;
  1005. 'FINS';
  1006.  
  1007. * Pour le Changement de phase 'PARFAIT' : Blocages et Jeux
  1008. 'SI' IPHASE;
  1009. AA = AA 'ET' BLOPHA ;
  1010. Q_LAT_INT=('SOUR' MODPHA ('EXCO' MATTOT0 'DUAL') MATTOT0 'ELEM') / T_PAS ;
  1011. JEU_PHAS = 'PHAJ' MODTOT MATTOT0 U0MTREF ;
  1012. MAT_CHPO = MAT_CHPO + JEU_PHAS ;
  1013. SECON = SECON + JEU_PHAS ;
  1014. 'FINS';
  1015.  
  1016. * Pour le Changement de phase 'SOLUBILITE' : Blocages et Jeux
  1017. 'SI' ISOLU;
  1018. AA = AA 'ET' BLOSOL ;
  1019. JEU_SOL = 'PHAJ' MODTOT MATRTOT0 U0MTREF ;
  1020. MAT_CHPO = MAT_CHPO + JEU_SOL ;
  1021. SECON = SECON + JEU_SOL ;
  1022. 'FINS';
  1023. *--------------- Calcul du premier residu --------------------------
  1024.  
  1025. B3 = BB * U0 ;
  1026. MAT_CHPO = MAT_CHPO - B3 ;
  1027. ********************************************************************
  1028. * Boucle sur les iterations *
  1029. ********************************************************************
  1030. * on peut mettre n'importe quoi c'est pour
  1031. * ne pas faire de tests dans la boucle
  1032. ZNACCE = 2 ;
  1033. ZITAC = 0 ;
  1034. IT = 0 ;
  1035. ITDEP = 3 ;
  1036. 'SI' IPHASE;
  1037. ITDEP=5;
  1038. 'FINS';
  1039. ITACC = 0 ;
  1040. ACFP1 = MAT_CHPO * 0. ;
  1041. ACFP2 = ACFP1 ;
  1042. MAT_CHPP= ACFP1 ;
  1043. ACFP3 = ACFP1 ;
  1044. ACFEP1 = ACFP1 ;
  1045. ACFEP2 = ACFP1 ;
  1046. CORREC = 0.;
  1047. DU0 ='VIDE' 'CHPOINT' / 'DIFFUS' ;
  1048. DU1 ='VIDE' 'CHPOINT' / 'DIFFUS' ;
  1049. EXCPHA ='VIDE' 'CHPOINT' / 'DISCRET';
  1050.  
  1051. 'REPETER' BOU_IT1;
  1052. * IT est le compteur de BOU_IT1, ITACC doit etre =< 0 pour qu'on accelere
  1053. IT = IT + 1 ;
  1054. ITACC = ITACC - 1 ;
  1055. ZITAC = ZITAC + 1 ;
  1056. ITE_IT = &BOU_IT1;
  1057.  
  1058. * Nombre max d'iteration autorise est-il depasse?
  1059. 'SI' (ITE_IT '>' MAX1);
  1060. 'SAUTER' 1 'LIGNE' ;
  1061. 'MESS' '*** LE CALCUL N A PAS CONVERGE ***';
  1062. ERR_VAL= VRAI;
  1063. 'QUIT' BOUC_SO ;
  1064. 'FINS';
  1065. AUTORISA= VRAI;
  1066. BB = BCONS;CC=CCONS;
  1067. *
  1068. *---------------------------------------------------------------------
  1069. * La force motrice de l'iteration est fixee: RESIDU
  1070. * on va calculer un nouveau champ de deplacement
  1071. *
  1072. * calcul de l'increment de l'increment de deplacement zdep1
  1073. * par resolution lineaire
  1074. *
  1075. *
  1076. * acceleration de convergence
  1077. *
  1078. CORRECP = CORREC;
  1079. CORREC = 0;
  1080. ACFP0 = (MAT_CHPO - MAT_CHPP) 'ENLE' FLX ;
  1081. ACFEP0 = ACFP0;
  1082. ACFEP0 = ACFEP0 - CORRECP ;
  1083. 'SI' ('MULT' IT ZNACCE) ;
  1084. 'SI' (IT > ITDEP);
  1085. CORREC = 'ACT3' ACFEP2 ACFEP1 ACFEP0 ACFP3 ACFP2 ACFP1 ACFP0 ;
  1086. MAT_CHPO = MAT_CHPO - CORREC ;
  1087. 'FINS';
  1088. 'FINS';
  1089. MAT_CHPP=MAT_CHPO ;
  1090.  
  1091. SI (IT > 3);
  1092. 'DETR' ACFP3;
  1093. 'DETR' ACFEP2;
  1094. 'FINS';
  1095. ACFP3 = ACFP2 ; ACFP2 = ACFP1 ; ACFP1 = ACFP0 ;
  1096. ACFEP2 = ACFEP1 ; ACFEP1 = ACFEP0 ;
  1097.  
  1098. MENAGE;
  1099.  
  1100. 'SOUC' 0;
  1101. 'SI' IRIB ;
  1102. 'SI' IPHASE;
  1103. DU1 BID BID BID BID = 'RESO' AA MAT_CHPO 'INIB' RIBL_VAL LISE_VAL EXCPHA ;
  1104. 'SINO';
  1105. DU1 BID BID BID = 'RESO' AA MAT_CHPO 'INIB' RIBL_VAL LISE_VAL ;
  1106. 'FINS';
  1107. 'SINO';
  1108. 'SI' IPHASE;
  1109. DU1 = 'RESO' AA MAT_CHPO EXCPHA ;
  1110. 'SINO';
  1111. DU1 = 'RESO' AA MAT_CHPO ;
  1112. * mess ' ITeration ' it;
  1113. * aaa= extr aa rigi mult ; mess ' aaa ' ; list aaa;
  1114. * mess ' mat_chpo' ; list mat_chpo;
  1115. * mess ' du1 ' ; list du1;
  1116. 'FINS';
  1117. 'FINS';
  1118.  
  1119. ZRAID_T = 'EXTR' AA 'CONT';
  1120. 'SI' ('EXIS' ZRAID_T 'NITER');
  1121. RIBL_VAL = ZRAID_T.7;
  1122. LISE_VAL = ZRAID_T.6;
  1123. IRIB=VRAI;
  1124. 'FINS';
  1125.  
  1126.  
  1127. 'SI' IPHASE;
  1128. * Flux generalises ('LX')
  1129. EXCPHA ='EXCP' MODTOT MATPHA0 PROPHA0 Q_LAT_INT U0MTREF DU1 ;
  1130. 'SOUC' 0;
  1131. PROPHA1 ='PROP' MODTOT PROPHA0 Q_LAT_INT DU1 ;
  1132. AUTORISA=(ITE_IT '>' 1) 'ET' ('NON' ('SOUC')) ;
  1133. 'FINS';
  1134.  
  1135.  
  1136. * 'SI' ISOLU;
  1137. ** Flux generalises ('LX')
  1138. * EXCPHA =('EXCS' MODTOT CHMAT U0MTREF DU1) 'ET' EXCPHA ;
  1139. * AUTORISA=(ITE_IT '>' 1) 'ET' ('NON' ('SOUC')) ;
  1140. * 'FINS';
  1141.  
  1142. U1 = U0 + DU1 ;
  1143.  
  1144. * Si modele BETON_THM, on stocke les resultats (Sciume 2025)
  1145. 'SI' ETAB.'THM1' ;
  1146. ETAB.'HT_SOL1' = U0;
  1147. ETAB.'HT_SOL2' = U1;
  1148. 'FINS';
  1149.  
  1150. *-- Actualisation cinetique thermique si metallurgie
  1151. 'SI' IMETAL ;
  1152. CHTPOI0 = (DU1 'EXCO' 'T' 'TPOI') / T_PAS ;
  1153. 'FINSI' ;
  1154.  
  1155. 'SI' ('EGA' I_LAMBD1 0) ;
  1156. U_BOU1 = (LAMBDA1 * (U1 'ENLE' 'LX')) + ((1 - LAMBDA1) * U0) + ('EXCO' DU1 'LX' 'NOID' 'LX');
  1157. 'SINO' ;
  1158. 'SI' ('EGA' I_LAMBD1 1) ; U_BOU1 = U0 ; 'FINS' ;
  1159. 'SI' ('EGA' I_LAMBD1 2) ; U_BOU1 = (0.5 * (U0 + (U1 'ENLE' 'LX'))) + ('EXCO' DU1 'LX' 'NOID' 'LX') ; 'FINS' ;
  1160. 'SI' ('EGA' I_LAMBD1 3) ; U_BOU1 = U1 ; 'FINS' ;
  1161. 'FINS' ;
  1162.  
  1163. TH_COUR = U_BOU1 - CHTREF;
  1164. ETAB.'THER_COURANT' = TH_COUR ;
  1165.  
  1166.  
  1167. * Calcul des Proportions de Phases (Modele Metallurgique par T.L. en mai 2018)
  1168. 'SI' IMETAL ;
  1169. CHT0 ='CHAN' 'CHAM' ('EXCO' U0 'T' 'T') MODRMET ;
  1170. CHT1 ='CHAN' 'CHAM' ('EXCO' U1 'T' 'T') MODRMET ;
  1171. CHETPS0 ='MANU' 'CHML' MODRMET 'TEMP' tem0 'STRESSES' ;
  1172. CHETPS1 ='MANU' 'CHML' MODRMET 'TEMP' tem1 'STRESSES' ;
  1173. si PARTLOCA ;
  1174. che11 = assi tous redu (PHA_MET0 'ET' CHETPS0 'ET' CHT0 'ET' CHMAT) MODCOMP1 ;
  1175. che22 = assi tous redu ( CHETPS1 'ET' CHT1 'ET' CHMAT) MODCOMP1 ;
  1176. PHA_MET1 = assi tous 'COMP' MODCOMP1 che11 che22 ;
  1177. PHA_MET1 = (etg PHA_MET1) redu MODRMET ;
  1178. che11 che22 = 0 0 ;
  1179. sinon ;
  1180. PHA_MET1 = 'COMP' MODRMET (PHA_MET0 'ET' CHETPS0 'ET' CHT0 'ET' CHMAT)
  1181. ( CHETPS1 'ET' CHT1 'ET' CHMAT ) ;
  1182. finsi ;
  1183. 'FINS' ;
  1184.  
  1185.  
  1186. *-------- Calcul du critere de fin d'iteration -------------------
  1187. DDU_SANS ='EXCO' ('ABS' (DU1 - DU0)) LPRIM1 ;
  1188. 'SI' LOG_TOL ;
  1189. ZPREC3 ='MAXI' DDU_SANS ;
  1190. 'MESS' ' Iteration numero :' ITE_IT/23 ' Critere absolu :' ZPREC3 ;
  1191. CRITABS ='MAXI' ('MASQ' (DDU_SANS - TTOL) 'SUPE' 0.D0) ;
  1192. 'SI' ((CRITABS '&lt;EG' 0.5) 'ET' AUTORISA) ;
  1193. 'QUITTER' BOU_IT1 ;
  1194. 'FINS' ;
  1195.  
  1196. 'SINO' ;
  1197. CHP_CRIT_REL = DDU_SANS * ((('ABS' U1) + XPETI) ** -1) LPRIM1 LPRIM1 LPRIM1 ;
  1198. ZPREC2 = 'MAXI' 'ABS' CHP_CRIT_REL ;
  1199. 'MESS' ' Iteration numero :' ITE_IT/23 ' Critere relatif :'ZPREC2 ;
  1200. 'SI' ((ZPREC2 '&lt;EG' ZPREC1) 'ET' AUTORISA) ;
  1201. 'QUITTER' BOU_IT1 ;
  1202. 'FINS' ;
  1203. 'FINS' ;
  1204.  
  1205. DU0 = DU1 ;
  1206.  
  1207.  
  1208. *****************************************************************
  1209. * CALCUL DU NOUVEAU RESIDU *
  1210. *****************************************************************
  1211. MAT_CHPO = SECON ;
  1212. * Gestion des variables externes *
  1213. *****************************************************************
  1214.  
  1215. 'SI' NONLIN1 ;
  1216.  
  1217. *-------------- Cas de la temperature et du temps ---------------
  1218.  
  1219.  
  1220. CHVAR ='CHAN' 'CHAM' TH_COUR MODRTOT 'RIGIDITE' ;
  1221. CHVAR2 ='MANU' 'CHML' MODRTOT 'TEMP' TEMM 'RIGIDITE' ;
  1222. CHVAR = CHVAR 'ET' CHVAR2 ;
  1223.  
  1224. *-------------- Cas des variables mecaniques --------------------
  1225. *---- si il y a couplage on les "rentre" toutes dans CHVAR ------
  1226.  
  1227. 'SI' (ETAB.'COUPLAGE' et nonlin1) ;
  1228. CHVAR = CHVAR 'ET' CHAR_ME;
  1229. 'FINS';
  1230.  
  1231. *------------- Ajout cinetique thermique si metallurgie
  1232. 'SI' IMETAL ;
  1233. * list (maxi CHTPOI0) ;
  1234. CHVAR = CHVAR 'ET' ('CHAN' 'CHAM' CHTPOI0 MODRTOT 'RIGIDITE') ;
  1235. 'FINSI' ;
  1236.  
  1237. *-------------- Mise a jour des variables externes --------------
  1238. 'SI' ETAB.'PROCEDURE_PARATHER' ;
  1239. PARATHER PRECED TEMM ;
  1240.  
  1241. * Remise en place des MCHAML sur les bons MMODELS car on suppose
  1242. * que l'utilisateur ne connais pas tous les indices de ETAB.
  1243. MATRTOT0 ='REDU' ETAB.'MAT_TOT' MODRTOT ;
  1244. 'SI' ICONDU;
  1245. MATRCOND='REDU' ETAB.'MAT_COND' MODRCOND;
  1246. 'FINS';
  1247. 'SI' ICONVE;
  1248. MATRCON ='REDU' ETAB.'MAT_CON' MODRCON ;
  1249. 'FINS';
  1250. 'SI' IADVEC;
  1251. MATRADV ='REDU' ETAB.'MAT_ADV' MODRADV ;
  1252. 'FINS' ;
  1253. 'SI' IRADI;
  1254. MATRRAY ='REDU' ETAB.'MAT_RAY' MODRRAY ;
  1255. 'FINS';
  1256. 'SI' IPHASE;
  1257. MATRPHA ='REDU' ETAB.'MAT_PHA' MODRPHA ;
  1258. MATPHA ='REDU' ETAB.'MAT_PHA' MODPHA ;
  1259. 'FINS';
  1260. 'SI' ITHM1;
  1261. MATRTHM ='REDU' ETAB.'MAT_THM' MODRTHM ;
  1262. 'FINS' ;
  1263. 'SI' IDIFF ;
  1264. MATRDIFF='REDU' ETAB.'MAT_DIF' MODRDIFF;
  1265. 'FINS' ;
  1266. 'FINS' ;
  1267.  
  1268. *-------------- Cas des autres variables --------------------
  1269. 'REPETER' BOU_NU2 ILVA;
  1270. ITE2 = &BOU_NU2;
  1271. MOTI = 'EXTR' LVAREX ITE2;
  1272. 'SI' ('EXIS' LPRIM2 MOTI) ;
  1273. 'ITER' BOU_NU2 ;
  1274. 'FINS' ;
  1275. 'SI' (ETAB.'COUPLAGE' et nonlin1) ;
  1276. 'SI' ('EXIS' CHAR_ME MOTI );
  1277. 'SI' ('NEG' LAMBDA1 0.);
  1278. 'MESS' '*** Le materiau thermique depend de parametres mecaniques';
  1279. 'ERRE' '*** Il faut initialiser SOUS-RELAXATION a 0.';
  1280. 'FINS';
  1281. 'ITERER' BOU_NU2;
  1282. 'FINS';
  1283. 'FINS';
  1284. 'SI' IMETAL ;
  1285. 'SI' ('EGA' MOTI 'TPOI') ; 'ITER' BOU_NU2 ; 'FINS' ;
  1286. 'FINS' ;
  1287. 'SI' ('EXIS' ETAB.'CHARGEMENT' MOTI);
  1288. CH_1 = 'TIRE' ETAB.'CHARGEMENT' MOTI TEMM;
  1289. TYP_1 = 'TYPE' CH_1;
  1290.  
  1291. * on suppose que les chargements qui ne sont pas d'origine mecanique
  1292. * sont appuyes sur le maillage thermique.
  1293. 'SI' ('EGA' TYP_1 'CHPOINT ');
  1294. CHVAR2 = 'CHAN' 'CHAM' CH_1 MODRTOT 'RIGIDITE';
  1295. 'SINO';
  1296. CHVAR2 = 'CHAN' 'RIGIDITE' CH_1 MODRTOT;
  1297. 'FINS';
  1298. CHVAR = CHVAR + CHVAR2;
  1299. 'SINO';
  1300. 'MESS' '*** Il manque une donnee du chargement ***';
  1301. 'MESS' '*** Variable concernee : 'MOTI;
  1302. 'ERREUR' ' ';
  1303. 'FINS';
  1304. 'FIN' BOU_NU2;
  1305. 'FINS';
  1306.  
  1307. *----------------- Calcul du champ de materiau a T= U_BOU1--------------
  1308. 'SI' NONLIN1 ;
  1309. CHVAR1 = 'REDU' CHVAR MODRTOT;
  1310. CHMAT = 'VARI' 'NUAG' MODRTOT MATRTOT0 CHVAR1 'RIGIDITE';
  1311.  
  1312. 'SI' (IDIFF 'OU' ETAB.'THE1') ;
  1313. CHMAT1 = 'REDU' CHMAT ETAB.'MOD_THE' ;
  1314. 'SI' ITHM1 ;
  1315. ma ff0 = @MATETHM MODRTHM TH_COUR ;
  1316. CHMAT1 = CHMAT1 'ET' ma ;
  1317. 'FINS' ;
  1318. 'SINO' ;
  1319. 'SI' ITHM1 ;
  1320. CHMAT1 ff0 = @MATETHM MODRTHM TH_COUR ;
  1321. 'FINS' ;
  1322. 'FINS' ;
  1323.  
  1324. 'SINO';
  1325. CHMAT = MATRTOT0 ;
  1326. 'SI' (IDIFF 'OU' ETAB.'THE1') ;
  1327. CHMAT1 = 'REDU' MATRTOT ETAB.'MOD_THE' ;
  1328. 'SI' ITHM1 ;
  1329. ma ff0 = @MATETHM MODRTHM TH_COUR ;
  1330. CHMAT1=CHMAT1 'ET' ma ;
  1331. 'FINS' ;
  1332. 'SINO' ;
  1333. 'SI' ITHM1 ;
  1334. CHMAT1 ff0 = @MATETHM MODRTHM TH_COUR ;
  1335. 'FINS' ;
  1336. 'FINS' ;
  1337. 'FINS';
  1338.  
  1339. ETAB.'CHMAT' ='REDU' CHMAT MODTOT ;
  1340.  
  1341. MATRTOT ='REDU' CHMAT1 MODRTOT ;
  1342. 'SI' ICONDU;
  1343. MATRCOND='REDU' CHMAT1 MODRCOND;
  1344. 'FINS';
  1345. 'SI' ICONVE;
  1346. MATRCON ='REDU' CHMAT1 MODRCON ;
  1347. 'FINS';
  1348. 'SI' IRADI;
  1349. MATRRAY ='REDU' CHMAT1 MODRRAY ;
  1350. 'FINS';
  1351. 'SI' IADVEC;
  1352. MATRADV ='REDU' CHMAT1 MODRADV ;
  1353. 'FINS' ;
  1354. 'SI' IPHASE;
  1355. MATRPHA ='REDU' CHMAT1 MODRPHA ;
  1356. MATPHA ='REDU' CHMAT1 MODPHA ;
  1357. 'FINS';
  1358. 'SI' ITHM1;
  1359. MATRTHM ='REDU' CHMAT1 MODRTHM ;
  1360. 'FINS' ;
  1361. 'SI' IDIFF ;
  1362. MATRDIFF='REDU' CHMAT1 MODRDIFF;
  1363. 'FINS' ;
  1364.  
  1365. *-------------- CALCUL matrice de conductivite si besoin --------------
  1366. 'SI' IKDEP ;
  1367. 'SI' ICONDU; BB = ('COND' MODRCOND MATRCOND) 'ET' BB;'FINS';
  1368. 'SI' ITHM1 ; BB = ('COND' MODRTHM MATRTHM ) 'ET' BB;'FINS';
  1369. 'FINS' ;
  1370. 'SI' IECDEP;
  1371. 'SI' ICONVE; BB = ('COND' MODRCON MATRCON ) 'ET' BB;'FINS';
  1372. 'FINS';
  1373. 'SI' IKVITE; BB = ('ADVE' MODRADV MATRADV ) 'ET' BB;'FINS';
  1374. 'SI' IKDDEP ; BB = ('COND' MODRDIFF MATRDIFF) 'ET' BB;'FINS';
  1375.  
  1376. *-------------- CALCUL matrice de capacite si besoin------------------
  1377. XDIV = -1.d0 * T_PAS ;
  1378. 'SI' ICDEP ;
  1379. CDETX = 'VIDE' 'RIGIDITE'/'RIGIDITE' ;
  1380. 'SI' ICONDU ;
  1381. CDETY = 'CAPA' MODRCOND MATRCOND ;
  1382. CC = (CDETY/XDIV) 'ET' CC ;
  1383. CDETX = CDETX et CDETY ;
  1384. 'FINS';
  1385. 'SI' ITHM1 ;
  1386. CDETY = 'CAPA' MODRTHM MATRTHM ;
  1387. CC = (CDETY/XDIV) 'ET' CC ;
  1388. CDETX = CDETX et CDETY ;
  1389. 'FINS';
  1390. ETAB.'CTHE_COURANTE' = CDETX ;
  1391. 'FINS';
  1392. 'SI' ICDDEP ;
  1393. CDETY = 'CAPA' MODRDIFF MATRDIFF ;
  1394. CC = (CDETY/XDIV) 'ET' CC ;
  1395. ETAB.'CDIF_COURANTE' = CDETY ;
  1396. 'FINS';
  1397.  
  1398. *-------------- CALCUL des termes de convection si besoin ---------
  1399. 'SI' ICONVE;
  1400. 'SI' IECDEP;
  1401. 'SI' (('EXIS' ETAB.'CHARGEMENT' 'TECO') 'OU' ('EXIS' MATRCON 'TC')) ;
  1402. CHAL_TE = 'CONV' MODRCON MATRCON CH_TEC ;
  1403. MAT_CHPO = MAT_CHPO + CHAL_TE ;
  1404. 'FINS';
  1405. 'FINS';
  1406. 'FINS';
  1407.  
  1408. *
  1409. *------------- calcul des termes rayonnement --------------------------
  1410. 'SI' IRADI ;
  1411. IAPPEL = 3 ;
  1412. t_rayo = PAS_RAYO PRECED TEM1 IAPPEL ;
  1413. 'SI' ('EXIS' t_rayo 'ADDI_MATRICE') ;
  1414. bb = bb 'ET' t_rayo.'ADDI_MATRICE' ;
  1415. 'FINS';
  1416. 'SI' ('EXIS' t_rayo 'ADDI_SECOND') ;
  1417. MAT_CHPO = MAT_CHPO 'ET' t_rayo.'ADDI_SECOND' ;
  1418. 'FINS';
  1419. 'SI' ('EXIS' t_rayo 'RAYO_VALEUR');
  1420. ETAB.'RAYONNEMENT' = t_rayo.'RAYO_VALEUR';
  1421. 'FINS';
  1422. t_rayo = 'MOT' 'INCONNU' ;
  1423. 'FINS';
  1424.  
  1425. *------------- en cas de procedure utilisateur CHARTHER --------------
  1426.  
  1427. 'SI' etab.'PROCEDURE_CHARTHER' ;
  1428. TAAT = charther preced TEM1 ;
  1429. 'SI' ('EXIS' TAAT 'ADDI_MATRICE') ;
  1430. bb = bb 'ET' taat.'ADDI_MATRICE' ;
  1431. 'FINS';
  1432. 'SI' ('EXIS' taat 'ADDI_SECOND') ;
  1433. MAT_CHPO = MAT_CHPO 'ET' taat.'ADDI_SECOND' ;
  1434. 'FINS';
  1435. oublier taat ;
  1436. 'FINS' ;
  1437.  
  1438. *--------------- calcul K*u1 et (lambda1*k + C/DT) * DDU1
  1439. 'SI' ('EGA' I_LAMBD1 1) ;
  1440. DS = BB * U0 ;
  1441. 'SINO' ;
  1442. 'SI' ('NEG' I_LAMBD1 3) ;
  1443. chp_z = LAMBDA1 * DU1 ;
  1444. 'SINO' ;
  1445. chp_z = DU1 ;
  1446. 'FINS' ;
  1447. DS = BB * ( chp_z + U0 ) ;
  1448. 'FINS' ;
  1449. DS2 = CC * DU1;
  1450. MAT_CHPO = MAT_CHPO + DS2 - DS ;
  1451. 'SI' ITHM1 ;
  1452. ma FTGC = @MATETHM MODRTHM TH_COUR ;
  1453. MAT_CHPO = MAT_CHPO - FTGC ;
  1454. 'FINS';
  1455. 'FIN' BOU_IT1;
  1456.  
  1457. 'SI' IPHASE ;
  1458. * Evolution de la proportion de phase (impossible actuellement en parallele car Non-Local)
  1459. PROPHA1 ='PROP' MODTOT PROPHA0 Q_LAT_INT DU1 ;
  1460. PROPHA0 = PROPHA1 ;
  1461. 'FINS' ;
  1462.  
  1463. TH_COUR = U1 - CHTREF ;
  1464. ETAB.'THER_COURANT' = TH_COUR ;
  1465.  
  1466. *--------------- Appel a la procedure utilisateur PERSO2 ---------------
  1467. 'SI' ETAB.'PROCEDURE_PERSO2';
  1468. * CB215821 : Il serait bien de mettre dans ESTIMATION la solution COURANTE
  1469. * 'SI' ('EXIS' PRECED 'TEMPERATURES' ) ;
  1470. * tab_z = 'INDEX' PRECED.'TEMPERATURES' ;
  1471. * IND0 = tab_z. ('DIME' tab_z) ;
  1472. * ETAB.'TEMI' = PRECED.'TEMPERATURES' . IND0 ;
  1473. * 'SINO';
  1474. * tab_z = 'INDEX' PRECED.'CONCENTRATIONS' ;
  1475. * IND0 = tab_z. ('DIME' tab_z) ;
  1476. * ETAB.'TEMI' = PRECED.'CONCENTRATIONS' . IND0 ;
  1477. * 'FINS' ;
  1478. PERSO2 PRECED ;
  1479. * ETAB = 'ENLEVER' ETAB 'TEMI' ;
  1480. 'SI' ('EXIS' PRECED 'ARRET') ;
  1481. ETAB.'ARRET' = PRECED.'ARRET' ;
  1482. 'FINS' ;
  1483. 'FINS';
  1484.  
  1485. *******************************************************************
  1486. * Reinitialisation des variables en vue du pas suivant *
  1487. *******************************************************************
  1488. 'SI' ((ITE3+1) '&lt;EG' DCALC);
  1489. TEM0 = TEM1;
  1490. TEM1 ='EXTR' TE_CALC (ITE3 + 1);
  1491. T_PAS = TEM1 - TEM0 ;
  1492. U0 = U1 ;
  1493. U0MTREF= U0 - CHTREF ;
  1494.  
  1495. 'SINO';
  1496. 'QUIT' BOUC_SO;
  1497. 'FINS';
  1498.  
  1499. *------------------------ On fait le menage -----------------------
  1500. 'MENA' ;
  1501. 'FIN' BOUC_SO ;
  1502.  
  1503. 'SAUT' 1 'LIGN' ;
  1504.  
  1505. STAB.'ERREUR' = ERR_VAL ;
  1506. 'SI' ETAB.'FOR_THER' ;
  1507. CHTMP ='EXCO' TH_COUR ETAB.'PRIM_T' 'NOID' ;
  1508. STAB.'INITIAL(2)' ='CHAN' 'ATTRIBUT' CHTMP 'NATURE' 'DIFFUS';
  1509. STAB.'CLIT' = MAT_BLTH ;
  1510. ESTIM.'TEMPERATURES' = 'CHAN' 'ATTRIBUT' CHTMP 'NATURE' 'DIFFUS';
  1511. ESTIM.'REACTIONS_THERMIQUES' = 'REAC' MAT_BLTH ESTIM.'TEMPERATURES';
  1512. 'FINS' ;
  1513. 'SI' IDIFF ;
  1514. CHTMP ='EXCO' TH_COUR ETAB.'PRIM_DIF' 'NOID' ;
  1515. STAB.'CO2' ='CHAN' 'ATTRIBUT' CHTMP 'NATURE' 'DIFFUS';
  1516. STAB.'CLID' = MAT_BLDI ;
  1517. ESTIM.'CONCENTRATIONS' = 'CHAN' 'ATTRIBUT' CHTMP 'NATURE' 'DIFFUS';
  1518. ESTIM.'REACTIONS_DIFFUSIONS' = 'REAC' MAT_BLDI ESTIM.'CONCENTRATIONS';
  1519. 'FINS' ;
  1520.  
  1521. 'SI' IRIB ;
  1522. ETAB.'RIBLO_T' = RIBL_VAL ;
  1523. ETAB.'LISEA_T' = LISE_VAL ;
  1524. 'FINS' ;
  1525.  
  1526. 'SI' IPHASE ;
  1527. ESTIM.'PROPORTIONS_PHASE' = PROPHA1 ;
  1528. 'FINS' ;
  1529.  
  1530. *Ecriture des Proportions de Phases en sortie (Modele Metallurgique par T.L. en mai 2018)
  1531. 'SI' IMETAL ;
  1532. ESTIM.'PROPORTIONS_PHASES' = 'REDU' PHA_MET1 ETAB.'MOD_MET' ;
  1533. 'FINS' ;
  1534.  
  1535. * Sauvegarde capacite courante :
  1536. 'SI' ICAPA ;
  1537. ETAB.'CAPA_COURANTE' = ETAB.'CTHE_COURANTE' et ETAB.'CDIF_COURANTE' ;
  1538. 'SI' ICPCONS ;
  1539. ETAB.'CAPA_COURANTE' = ETAB.'CAPA_COURANTE' et ETAB.'CAPACITE_CONSTANTE' ;
  1540. 'FINSI' ;
  1541. 'FINSI' ;
  1542.  
  1543. 'OPTI' 'PARA' FAUX ;
  1544. 'FINPROC' STAB ;
  1545.  
  1546.  
  1547.  

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