Télécharger transit1.procedur

Retour à la liste

Numérotation des lignes :

  1. * TRANSIT1 PROCEDUR FANDEUR 14/10/10 21:15:27 8178
  2. 'DEBPROC' TRANSIT1 ETAB*'TABLE ' ;
  3. *----------------------------------------------------------------------*
  4. * *
  5. * T R A N S I T 1 *
  6. * --------------- *
  7. * *
  8. * RESOLUTION D'UN PROBLEME DE THERMIQUE NON-LINEAIRE *
  9. * EN REGIME PERMANENT,A L'AIDE DE LA METHODE DU POINT FIXE *
  10. * *
  11. * ETAB, TABLE CONTENANT EN ENTREE : *
  12. * *
  13. * INDICE 'SOUSTYPE' THERMIQUE *
  14. * INDICE 'COQUE' TYPE D'ELEMENT COQUE *
  15. * INDICE 'EPAI' EPAISSEUR DE LA COQUE *
  16. * INDICE 'PEAU' PEAU SUR LAQUELLE S'EFFECTUE L'ECHANGE *
  17. * INDICE 'BLOCAGE' MATRICE DE BLOCAGE (CREEE PAR "BLOQUE") *
  18. * INDICE 'IMPOSE' VALEURS IMPOSEES (CREE PAR "DEPI") *
  19. * INDICE 'INSTANT(0)' CHAMP DE TEMPERATURE INITIAL *
  20. * OU -INDICE 'CONDUC(0)' TABLE DES VALEURS INITIALES DE LA *
  21. * I CONDUCTIVITE INDICEE PAR LES MODELES DES *
  22. * I SOUS ZONES *
  23. * -INDICE 'CONVEC(0)' TABLE DES VALEURS INITIALES DU COEFFICIENT *
  24. * I D'ECHANGE DE CONVECTION INDICEE PAR LES *
  25. * I MODELES DES PAROIS DE CONVECTION *
  26. * -INDICE 'TEMPEX(0)' TABLE DES TEMPERATURES INITIALES INDICEE *
  27. * I PAR LES MODELES DES PAROIS DE CONVECTION *
  28. * INDICE 'CONDUCTIVITE' MATRICE DE CONDUCTIVITE *
  29. * OU -INDICE 'TABCOND' TABLE DES OBJETS D'EVOLUTION K(T) INDICEE *
  30. * PAR LES MODELES DES SOUS ZONES *
  31. * INDICE 'CONVECTION' TABLE DES TABLES POUR UNE CONDITION DE *
  32. * CONVECTION : *
  33. * 'TABCONV1' TABLE DES COEFFICIENTS D'ECHANGE OU TABLE *
  34. * DES EVOLUTION DU COEFFICIENT D'ECHANGE *
  35. * FONCTION DE LA TEMPERATURE INDICEE PAR LES *
  36. * MODELES DES SURFACES DE CONVECTION *
  37. * 'TABTE1' TABLE DES TEMPERATURES EXTERIEURES OU TABLE*
  38. * DES EVOLUTION DES TEMPERATURES EXTERIEURES *
  39. * FONCTION DE LA TEMPERATURE DE SURFACE DE *
  40. * CONVECTION INDICEE PAR LES MODELES DES *
  41. * SURFACES DE CONVECTION *
  42. * INDICE 'FLUX' FLUX EQUIVALENTS *
  43. * INDICE 'CRITERE' CRITERE DE CONVERGENCE *
  44. * (10E-5 PAR DEFAUT) *
  45. * INDICE 'NITER' REACTUALISATION DE LA CONDUCTIVITE TOUTES *
  46. * LES NITER ITERATIONS (NITER=1 PAR DEFAUT) *
  47. * INDICE 'NIVEAU' NIVEAU DE MESSAGES (NIVEAU=0 PAR DEFAUT) *
  48. * INDICE 'ITERMAX' NOMBRE D'ITERATIONS MAXIMUM *
  49. * (ITERMAX=10 PAR DEFAUT) *
  50. * *
  51. * ETAB CONTENANT EN SORTIE : *
  52. * *
  53. * INDICE 'TEMPERATURE' CHAMP DE TEMPERATURE RESULTAT *
  54. * *
  55. * D.R., LE 7 JUILLET 1988.VERSION DU 18 JANVIER 1989. *
  56. * *
  57. *----------------------------------------------------------------------*
  58. CONVERGE = ( 1 'EGA' 1 ) ;
  59. 'REPETER' PROC 1 ;
  60. 'SI' ( 'NEG' ( ETAB.'SOUSTYPE' ) 'THERMIQUE' ) ;
  61. 'MESS' 'SOUS TYPAGE INCORRECT DE LA TABLE EN ENTREE|' ;
  62. 'QUITTER' PROC ;
  63. 'FINSI' ;
  64. 'SI' ( 'EXISTE' ETAB 'NIVEAU' ) ;
  65. NIV_MESS = ETAB.'NIVEAU' ;
  66. 'SINON' ;
  67. NIV_MESS = 0 ;
  68. 'FINSI' ;
  69. 'SI' ( NIV_MESS '>EG' 1 ) ;
  70. 'SAUTER' 1 'LIGNE' ;
  71. 'MESS' '*** DEBUT DE LA PROCEDURE "TRANSIT1" ***' ;
  72. 'FINSI' ;
  73. *
  74. *--- RECUPERATION DE L'INFORMATION CONTENUE DANS "ETAB"
  75. *
  76. 'SI' ('EXISTE' ETAB 'COQUE') ;
  77. TYP_COQ = ETAB.'COQUE' ;
  78. 'SI' ( 'EXISTE' ETAB 'EPAI' ) ;
  79. EP = ETAB.'EPAI' ;
  80. 'SINON' ;
  81. 'SAUTER' 1 'LIGNE' ;
  82. 'MESS' '*** IL MANQUE L EPAISSEUR DE LA COQUE | *** ';
  83. 'QUITTER' PROC ;
  84. 'FINSI' ;
  85. 'FINSI' ;
  86. *
  87. *-- lecture de la conductivite
  88. *
  89. 'SI' ('EXISTE' ETAB 'CONDUCTIVITE') ;
  90. MAT_COND = ETAB.'CONDUCTIVITE' ;
  91. 'SINON' ;
  92. 'SI' ( 'EXISTE' ETAB 'TABCOND' ) ;
  93. TAB_COND = ETAB.TABCOND ;
  94. 'SINON' ;
  95. 'MESS' '*** LA DONNEE DE LA CONDUCTIVITE EST INCORECTE | *** ';
  96. 'QUITTER' PROC ;
  97. 'FINSI' ;
  98. 'FINSI';
  99. *
  100. *-- lecture des conditions limites
  101. *
  102. 'SI' ('EXISTE' ETAB 'BLOCAGE') ;
  103. MAT_BLO = ETAB.'BLOCAGE' ;
  104. 'FINSI';
  105. 'SI' ('EXISTE' ETAB 'IMPOSE') ;
  106. VAL_IMPO = ETAB.'IMPOSE' ;
  107. 'FINSI';
  108. 'SI' ('EXISTE' ETAB 'FLUX') ;
  109. QTE_FLUX = ETAB.'FLUX' ;
  110. 'FINSI';
  111. *
  112. *-- lecture des parametres numeriques
  113. *
  114. 'SI' ( 'EXISTE' ETAB 'CRITERE' ) ;
  115. EPSILON = ETAB.'CRITERE' ;
  116. 'SINON' ;
  117. EPSILON = 1.E-5 ;
  118. 'FINSI' ;
  119. 'SI' ( 'EXISTE' ETAB 'NITER' ) ;
  120. NBRE_ITE = ETAB.'NITER' ;
  121. 'SI' ( NIV_MESS '>EG' 1 ) ;
  122. 'SAUTER' 1 'LIGNE' ;
  123. 'MESS' 'REACTUALISATION DE LA MATRICE DE CONDUCTIVITE TOUTES '
  124. 'LES ' NBRE_ITE 'ITERATIONS' ;
  125. 'FINSI' ;
  126. 'SINON' ;
  127. NBRE_ITE = 1 ;
  128. 'FINSI' ;
  129. 'SI' ( 'EXISTE' ETAB 'ITERMAX' ) ;
  130. ITER_MAX = ETAB.'ITERMAX' ;
  131. 'SINON' ;
  132. ITER_MAX = 10 ;
  133. 'FINSI' ;
  134. *
  135. *-- gestion de la convection
  136. *
  137. 'SI' ( 'EXISTE' ETAB 'CONVECTION' ) ;
  138. CTAB = ETAB.'CONVECTION' ;
  139. 'SI' ( 'EXISTE' CTAB 'TABCONV1' ) ;
  140. TAB_CON1 = CTAB.'TABCONV1' ;
  141. 'SI' ('EXISTE' CTAB 'TABTE1') ;
  142. TAB_TE1 = CTAB.'TABTE1' ;
  143. 'SINON' ;
  144. TAB_TE1 = TABLE ;
  145. 'FINSI' ;
  146. 'SINON' ;
  147. 'MESS' '*** LA DONNE DE LA CONVECTION EST INCORECTE ***' ;
  148. 'QUITTER' PROC ;
  149. 'FINSI' ;
  150. 'FINSI' ;
  151. *
  152. *-- gestion du champ de temperature initial
  153. *
  154. 'SI' ( 'EXISTE' ETAB 'CONDUC(0)' ) ;
  155. TCND0 = ETAB.'CONDUC(0)' ;
  156. 'SI' ( 'EXISTE' ETAB 'COQUE' ) ;
  157. 'SI' ( 'EXISTE' ETAB 'PEAU' ) ;
  158. PE = ETAB.'PEAU' ;
  159. 'SINON' ;
  160. 'MESS' '*** PRECISER LA PEAU | ***' ;
  161. 'QUITTER' PROC ;
  162. 'FINSI' ;
  163. 'FINSI' ;
  164. *
  165. *-- calcul de MAT_CND1 : matrice de conduction
  166. *
  167. IDCOND = 'INDE' TCND0 ;
  168. NCOND = 'DIME' IDCOND ;
  169. ICOND = 0 ;
  170. 'REPETE' BOUCOND NCOND ;
  171. ICOND = ICOND + 1 ;
  172. MOD1 = IDCOND.ICOND ;
  173. VCOND = TCND0.MOD1 ;
  174. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  175. MAT_CON = 'MATE' MOD1 'K' VCOND 'EPAI' EP;
  176. 'SINON' ;
  177. MAT_CON = 'MATE' MOD1 'K' VCOND ;
  178. 'FINSI' ;
  179. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  180. RIG_COND = 'CONDUCTIVITE' MOD1 MAT_CON PE ;
  181. 'SINON' ;
  182. RIG_COND = 'CONDUCTIVITE' MOD1 MAT_CON ;
  183. 'FINSI' ;
  184. 'SI' ('EGA' ICOND 1 ) ;
  185. MAT_CND1 = RIG_COND ;
  186. 'SINON' ;
  187. MAT_CND1 = MAT_CND1 'ET' RIG_COND ;
  188. 'FINSI' ;
  189. 'FIN' BOUCOND ;
  190. *
  191. *-- test d'existance de convec(0) . Calcul de CHAL_TE1 (flux)
  192. * et de RIG_CON1 (conductivite)
  193. *
  194. 'SI' ('EXISTE' ETAB 'CONVEC(0)' ) ;
  195. T_CV0 = ETAB.CONVEC(0) ;
  196. 'SI' ( 'EXISTE' ETAB 'COQUE' ) ;
  197. PE = ETAB.'PEAU' ;
  198. 'FINSI' ;
  199. 'SI' ('EXISTE' ETAB 'TEMPEX(0)' ) ;
  200. T_TE0 = ETAB.TEMPEX(0) ;
  201. 'SINON' ;
  202. T_TE0 = TABLE ;
  203. * 'MESS' '*** LA DONNEE DE LA TEMP. INIT. EST INCORECTE| *** ' ;
  204. * 'QUITTER' PROC ;
  205. 'FINSI' ;
  206. *
  207. IDCONV = 'INDE' T_CV0 ;
  208. NCONV = 'DIME' IDCONV ;
  209. NTE = 'DIME' T_TE0 ;
  210. 'SI' (NTE 'NEG' 0 ) ;IDTE = 'INDE' T_TE0 ;FINSI ;
  211. * 'SI' ('NEG' NCONV NTE ) ;
  212. * 'SAUTER' 1 'LIGNE' ;
  213. * 'MESS' '*** LA DONNEE DE LA CONVECTION EST INCORECTE| *** ' ;
  214. * 'QUITTER' PROC ;
  215. * 'FINSI' ;
  216. ICONV = 0 ;
  217. 'REPETE' BOUCONV NCONV ;
  218. ICONV = ICONV + 1 ;
  219. MOD1 = IDCONV.ICONV ;
  220. VCONV = T_CV0.MOD1 ;
  221. MAT_CONV = 'MATE' MOD1 'H' VCONV ;
  222. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  223. RIG_CONV = 'CONDUCTIVITE' MOD1 MAT_CONV PE ;
  224. 'SINON' ;
  225. RIG_CONV = 'CONDUCTIVITE' MOD1 MAT_CONV ;
  226. 'FINSI' ;
  227. 'SI' ('EGA' ICONV 1 ) ;
  228. RIG_CON1 = RIG_CONV ;
  229. 'SINON' ;
  230. RIG_CON1 = RIG_CON1 'ET' RIG_CONV ;
  231. 'FINSI' ;
  232. 'FIN' BOUCONV ;
  233. 'SI' (NTE 'NEG' 0 ) ;
  234. ICONV = 0 ;
  235. 'REPETE' BOUCTE NTE ;
  236. ICONV = ICONV + 1 ;
  237. MOD1 = IDTE.ICONV ;
  238. VCONV = T_CV0.MOD1 ;
  239. MAT_CONV = 'MATE' MOD1 'H' VCONV ;
  240. VTE = T_TE0.MOD1 ;
  241. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  242. CHAL_TEM = 'CONVECTION' MOD1 MAT_CONV 'T' VTE PE ;
  243. 'SINON' ;
  244. CHAL_TEM = 'CONVECTION' MOD1 MAT_CONV 'T' VTE ;
  245. 'FINSI' ;
  246. 'SI' ('EGA' ICONV 1 ) ;
  247. CHAL_TE1 = CHAL_TEM ;
  248. 'SINON' ;
  249. CHAL_TE1 = CHAL_TE1 'ET' CHAL_TEM ;
  250. 'FINSI' ;
  251. 'FIN' BOUCTE ;
  252. 'FINSI' ;
  253. *
  254. *-- assemblage : convection avec le reste
  255. *
  256. 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ;
  257. MAT_CND1 = MAT_CND1 'ET' RIG_CON1 'ET' MAT_BLO ;
  258. 'SINON' ;
  259. MAT_CND1 = MAT_CND1 'ET' RIG_CON1 ;
  260. 'FINSI' ;
  261. 'SI' (NTE 'NEG' 0) ;
  262. FF1 = CHAL_TE1 ;
  263. 'SI' ('EXISTE' ETAB 'FLUX' ) ;
  264. FF1 = FF1 'ET' QTE_FLUX ;
  265. 'FINSI' ;
  266. 'SI' ('EXISTE' ETAB 'IMPOSE' ) ;
  267. FF1 = FF1 'ET' VAL_IMPO ;
  268. 'FINSI' ;
  269. 'SINON' ;
  270. 'SI' ('EXISTE' ETAB 'FLUX' ) ;
  271. FF1 = QTE_FLUX ;
  272. 'SI' ('EXISTE' ETAB 'IMPOSE') ;
  273. FF1 = FF1 'ET' VAL_IMPO ;
  274. 'FINSI' ;
  275. 'SINON' ;
  276. 'SI' ('EXISTE' ETAB 'IMPOSE'); FF1 = VAL_IMPO ; 'FINSI' ;
  277. 'FINSI' ;
  278. 'FINSI' ;
  279. *
  280. *-- cas ou il n'y a pas de convection : assemblage sans convection
  281. *
  282. 'SINON' ;
  283. 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ;
  284. MAT_CND1 = MAT_CND1 'ET' MAT_BLO ;
  285. 'FINSI' ;
  286. 'SI' ('EXISTE' ETAB 'FLUX' ) ;
  287. FF1 = QTE_FLUX ;
  288. 'SI' ('EXISTE' ETAB 'IMPOSE') ;
  289. FF1 = FF1 'ET' VAL_IMPO ;
  290. 'FINSI' ;
  291. 'SINON' ;
  292. 'SI' (('EXISTE' ETAB 'IMPOSE')'ET'('NON'('EXISTE' ETAB 'FLUX')));
  293. FF1 = VAL_IMPO ;
  294. 'FINSI' ;
  295. 'FINSI' ;
  296. *
  297. 'FINSI' ;
  298. *
  299. *-- resolution : calcul de U1
  300. *
  301. U1 = 'RESOUDRE' MAT_CND1 FF1 ;
  302. *
  303. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  304. U1_T = 'ENLEVE' U1 'LX' ;
  305. U1_T1= 'EXCO' 'TINF' U1 'NOID' 'T' ;
  306. U1_T2= 'EXCO' 'TSUP' U1 'NOID' 'T' ;
  307. U1_T3= 'EXCO' 'T ' U1 'NOID' 'T' ;
  308. U1_TM = (U1_T1 + U1_T2 + U1_T3)/3.0 ;
  309. 'SINON' ;
  310. U1_T = 'EXCO' U1 'T' 'NOID' 'T' ;
  311. 'FINSI' ;
  312. *
  313. 'SI' ( NIV_MESS '>EG' 2) ;
  314. 'SAUTER' 1 'LIGNE' ;
  315. 'MESS' 'CHAMP THERMIQUE AVANT ITERATION ' ;
  316. 'LISTE' U1_T ;
  317. 'FINSI' ;
  318. *
  319. *-- si il n'existe pas CONDUC(0)
  320. *
  321. 'SINON' ;
  322. *
  323. *-- lecture de U1
  324. *
  325. 'SI' ('EXISTE' ETAB 'INSTANT(0)' ) ;
  326. U1_T = ETAB.'INSTANT(0)' ;
  327. U1 = U1_T ;
  328. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  329. U1_T = 'ENLEVE' U1 'LX' ;
  330. U1_T1= 'EXCO' 'TINF' U1 'NOID' 'T' ;
  331. U1_T2= 'EXCO' 'TSUP' U1 'NOID' 'T' ;
  332. U1_T3= 'EXCO' 'T ' U1 'NOID' 'T' ;
  333. U1_TM = (U1_T1 + U1_T2 + U1_T3)/3.0 ;
  334. 'FINSI' ;
  335. 'SINON' ;
  336. 'MESS' '*** DONNER LE CHAMP DE TEMPERATURE INITIAL| ***' ;
  337. 'QUITTER' PROC ;
  338. 'FINSI' ;
  339. *
  340. 'FINSI' ;
  341.  
  342. *
  343. *--- ON RECHERCHE LA SOLUTION PAR ITERATIONS SUCCESSIVES...
  344. *
  345. NUM_ITE = 0 ;
  346. IFOIS = 0 ;
  347. 'REPETER' BOUC_1 ;
  348. NUM_ITE = NUM_ITE + 1 ;
  349. IFOIS = IFOIS + 1 ;
  350. 'SI' ( NIV_MESS '>EG' 1 ) ;
  351. 'SAUTER' 1 'LIGNE' ;
  352. 'MESS' 'ITERATION NUMERO :' IFOIS ;
  353. 'FINSI' ;
  354. *
  355. *--calcul des matrices MAT_CND1 et FF1.
  356. *
  357. *-- conductivite
  358. *
  359. 'SI' ('EXISTE' ETAB 'CONDUCTIVITE') ;
  360. 'SI' ( 'EGA' IFOIS 1 ) ;
  361. MAT_CND1 = MAT_COND ;
  362. 'FINSI' ;
  363. 'SINON' ;
  364. IDCOND = 'INDE' TAB_COND ;
  365. NCOND = 'DIME' TAB_COND ;
  366. ICOND = 0 ;
  367. 'REPETE' BOUCOND NCOND ;
  368. ICOND = ICOND + 1 ;
  369. MOD1 = IDCOND.ICOND ;
  370. VCOND = TAB_COND.MOD1 ;
  371. TYPC = 'TYPE' VCOND ;
  372. 'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
  373. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  374. CC = 'VARI' MOD1 VCOND U1_TM 'NOEUD' ;
  375. 'SINON' ;
  376. CC = 'VARI' MOD1 VCOND U1_T 'NOEUD' ;
  377. 'FINSI' ;
  378. CCC = 'EXCO' CC 'SCAL' 'NOID' 'K' ;
  379. 'SINON' ;
  380. CCC = VCOND ;
  381. 'FINSI' ;
  382. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  383. MMM = 'MATE' MOD1 'K' CCC 'EPAI' EP;
  384. 'SINON' ;
  385. MMM = 'MATE' MOD1 'K' CCC ;
  386. 'FINSI' ;
  387. MI = 'CONDUCTION' MOD1 MMM ;
  388. *-- actualisation de la conductivite
  389. 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU'
  390. ( IFOIS 'EGA' 1 ) ) ;
  391. 'SI' ('EGA' ICOND 1 ) ;
  392. MAT_CND1 = MI ;
  393. 'SINON' ;
  394. MAT_CND1 = MAT_CND1 'ET' MI ;
  395. 'FINSI' ;
  396. *-- non actualisation
  397. 'SINON' ;
  398. 'SI' ('EGA' ICOND 1 ) ;
  399. MAT_CND2 = MI ;
  400. 'SINON' ;
  401. MAT_CND2 = MAT_CND2 'ET' MI ;
  402. 'FINSI' ;
  403. 'FINSI' ;
  404. 'FIN' BOUCOND ;
  405. 'FINSI' ;
  406. *
  407. *-- en cas de convection
  408. *
  409. 'SI' ('EXISTE' ETAB 'CONVECTION' ) ;
  410. 'SI' ( 'EXISTE' ETAB 'COQUE' ) ;
  411. 'SI' ( 'EXISTE' ETAB 'PEAU' ) ;
  412. PE = ETAB.'PEAU' ;
  413. 'SINON' ;
  414. 'MESS' '*** PRECISER LA PEAU | ***' ;
  415. 'QUITTER' PROC ;
  416. 'FINSI' ;
  417. CHT_CONV = U1_TM ;
  418. 'SI' ('EGA' PE 'TINF') ;
  419. CHT_CONV = 'EXCO' 'TINF' CHT_CONV 'NOID' 'T' ;
  420. 'FINSI' ;
  421. 'SI' ('EGA' PE 'TSUP') ;
  422. CHT_CONV = 'EXCO' 'TSUP' CHT_CONV 'NOID' 'T' ;
  423. 'FINSI' ;
  424. 'SINON' ;
  425. CHT_CONV = U1_T ;
  426. 'FINSI' ;
  427. IDCONV = 'INDE' TAB_CON1 ;
  428. NCONV = 'DIME' IDCONV ;
  429. NTE = 'DIME' TAB_TE1 ;
  430. 'SI' (NTE 'NEG' 0) ;IDTE = 'INDE' TAB_TE1 ;'FINSI' ;
  431. * 'SI' ('NEG' NCONV NTE ) ;
  432. * 'SAUTER' 1 'LIGNE' ;
  433. * 'MESS' '*** LA DONNEE DE LA CONVECTION EST INCORECTE| *** ' ;
  434. * 'QUITTER' PROC ;
  435. * 'FINSI' ;
  436. ICONV = 0 ;
  437. 'REPETE' BOUCONV NCONV ;
  438. ICONV = ICONV + 1 ;
  439. MOD1 = IDCONV.ICONV ;
  440. VCONV = TAB_CON1.MOD1 ;
  441. TYPC = 'TYPE' VCONV ;
  442. 'SI' ('EGA' TYPC 'EVOLUTIO') ;
  443. CC = 'VARI' MOD1 VCONV CHT_CONV 'NOEUD' ;
  444. CCC = 'EXCO' CC 'SCAL' 'NOID' 'H' ;
  445. MAT_CONV = 'MATE' MOD1 'H' CCC ;
  446. 'SINON' ;
  447. MAT_CONV = 'MATE' MOD1 'H' VCONV ;
  448. 'FINSI' ;
  449. MOD_CONV = MOD1 ;
  450. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  451. RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV PE;
  452. 'SINON' ;
  453. RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV ;
  454. 'FINSI' ;
  455. * mise a jour de la conductivite
  456. 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU'
  457. ( IFOIS 'EGA' 1 ) ) ;
  458. 'SI' ('EGA' ICONV 1 ) ;
  459. RIG_CON1 = RIG_CONV ;
  460. 'SINON' ;
  461. RIG_CON1 = RIG_CON1 'ET' RIG_CONV ;
  462. 'FINSI' ;
  463. * non mise a jour
  464. 'SINON' ;
  465. 'SI' ('EGA' ICONV 1 ) ;
  466. RIG_CON2 = RIG_CONV ;
  467. 'SINON' ;
  468. RIG_CON2 = RIG_CON2 'ET' RIG_CONV ;
  469. 'FINSI' ;
  470. 'FINSI' ;
  471. 'FIN' BOUCONV ;
  472. 'SI' (NTE 'NEG' 0) ;
  473. ICONV = 0 ;
  474. 'REPETE' BOUCTE NTE ;
  475. ICONV = ICONV + 1 ;
  476. MOD1 = IDTE.ICONV ;
  477. VCONV = TAB_CON1.MOD1 ;
  478. TYPC = 'TYPE' VCONV ;
  479. 'SI' ('EGA' TYPC 'EVOLUTIO') ;
  480. CC = 'VARI' MOD1 VCONV CHT_CONV 'NOEUD' ;
  481. CCC = 'EXCO' CC 'SCAL' 'NOID' 'H' ;
  482. MAT_CONV = 'MATE' MOD1 'H' CCC ;
  483. 'SINON' ;
  484. MAT_CONV = 'MATE' MOD1 'H' VCONV ;
  485. 'FINSI' ;
  486. VTE = TAB_TE1.MOD1 ;
  487. TYPC = 'TYPE' VTE ;
  488. 'SI' ('EGA' TYPC 'EVOLUTIO') ;
  489. EE = 'VARI' MOD1 VTE CHT_CONV 'NOEUD' ;
  490. VAL_TE = 'CHAN' 'CHPO' MOD1 EE ;
  491. 'SINON' ;
  492. VAL_TE = VTE ;
  493. 'FINSI' ;
  494. MOD_CONV = MOD1 ;
  495. TYP_TE = 'TYPE' VAL_TE ;
  496. 'SI' ( 'NEG' TYP_TE 'CHPOINT ' ) ;
  497. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  498. CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE PE;
  499. 'SINON' ;
  500. CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE ;
  501. 'FINSI' ;
  502. 'SINON' ;
  503. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  504. CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV VAL_TE PE;
  505. 'SINON' ;
  506. CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV VAL_TE ;
  507. 'FINSI' ;
  508. 'FINSI' ;
  509. * mise a jour du flux
  510. 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU'
  511. ( IFOIS 'EGA' 1 ) ) ;
  512. 'SI' ('EGA' ICONV 1 ) ;
  513. CHAL_TE1 = CHAL_TEM ;
  514. 'SINON' ;
  515. CHAL_TE1 = CHAL_TE1 'ET' CHAL_TEM ;
  516. 'FINSI' ;
  517. 'FINSI' ;
  518. 'FIN' BOUCTE ;
  519. 'FINSI' ;
  520. *
  521. *-- assemblage : convection avec le reste et resolution
  522. *
  523. 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU'
  524. ( IFOIS 'EGA' 1 ) ) ;
  525. 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ;
  526. MAT_CND1 = MAT_CND1 'ET' RIG_CON1 'ET' MAT_BLO ;
  527. 'SINON' ;
  528. MAT_CND1 = MAT_CND1 'ET' RIG_CON1 ;
  529. 'FINSI' ;
  530. 'SI' (NTE 'NEG' 0 ) ;
  531. FF1 = CHAL_TE1 ;
  532. 'SI' ('EXISTE' ETAB 'FLUX' ) ;
  533. FF1 = FF1 'ET' QTE_FLUX ;
  534. 'FINSI' ;
  535. 'SI' ('EXISTE' ETAB 'IMPOSE' ) ;
  536. FF1 = FF1 'ET' VAL_IMPO ;
  537. 'FINSI' ;
  538. 'SINON' ;
  539. 'SI' ('EXISTE' ETAB 'FLUX' ) ;
  540. FF1 = QTE_FLUX ;
  541. 'SI' ('EXISTE' ETAB 'IMPOSE') ;
  542. FF1 = FF1 'ET' VAL_IMPO ;
  543. 'FINSI' ;
  544. 'SINON' ;
  545. 'SI' ('EXISTE' ETAB 'IMPOSE'); FF1 = VAL_IMPO ; 'FINSI' ;
  546. 'FINSI' ;
  547. 'FINSI' ;
  548. *
  549. * resolution
  550. U2 = 'RESOUDRE' MAT_CND1 FF1 ;
  551. NUM_ITE = 0 ;
  552. * non mise a jour
  553. 'SINON' ;
  554. 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ;
  555. MAT_CND2 = MAT_CND2 'ET' RIG_CON2 'ET' MAT_BLO ;
  556. 'SINON' ;
  557. MAT_CND2 = MAT_CND2 'ET' RIG_CON2 ;
  558. 'FINSI' ;
  559. FF2 = (MAT_CND1 * U1_T ) - (MAT_CND2 * U1_T ) ;
  560. FF3 = FF1 et FF2 ;
  561. * resolution
  562. U2 = 'RESOUDRE' MAT_CND1 FF3 ;
  563. 'FINSI' ;
  564. *
  565. *-- cas ou il n'y a pas de convection : assemblage et resolution
  566. *
  567. 'SINON' ;
  568. 'SI' ( 'EGA' IFOIS 1 ) ;
  569. 'SI' ('EXISTE' ETAB 'FLUX' ) ;
  570. FF1 = QTE_FLUX ;
  571. 'SI' ('EXISTE' ETAB 'IMPOSE') ;
  572. FF1 = FF1 'ET' VAL_IMPO ;
  573. 'FINSI' ;
  574. 'SINON' ;
  575. 'SI' (('EXISTE' ETAB 'IMPOSE')'ET'('NON'('EXISTE' ETAB 'FLUX')));
  576. FF1 = VAL_IMPO ;
  577. 'FINSI' ;
  578. 'FINSI' ;
  579. 'FINSI' ;
  580. * mise a jour
  581. 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU'
  582. ( IFOIS 'EGA' 1 ) ) ;
  583. 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ;
  584. MAT_CND1 = MAT_CND1 'ET' MAT_BLO ;
  585. 'FINSI' ;
  586. * resolution
  587. U2 = 'RESOUDRE' MAT_CND1 FF1 ;
  588. NUM_ITE = 0 ;
  589. * non mise a jour
  590. 'SINON' ;
  591. 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ;
  592. MAT_CND2 = MAT_CND2 'ET' MAT_BLO ;
  593. 'FINSI' ;
  594. FF3 = (MAT_CND1 * U1_T ) - (MAT_CND2 * U1_T ) ;
  595. FF4 = FF1 et FF3 ;
  596. *-- resolution
  597. U2 = 'RESOUDRE' MAT_CND1 FF4 ;
  598. 'FINSI' ;
  599. 'FINSI';
  600. *
  601. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  602. U2_T = 'ENLEVE' U2 'LX' ;
  603. U2_T1= 'EXCO' 'TINF' U2 'NOID' 'T' ;
  604. U2_T2= 'EXCO' 'TSUP' U2 'NOID' 'T' ;
  605. U2_T3= 'EXCO' 'T ' U2 'NOID' 'T' ;
  606. U2_TM = (U2_T1 + U2_T2 + U2_T3)/3.0 ;
  607. 'SINON' ;
  608. U2_T = 'EXCO' U2 'T' 'NOID' 'T' ;
  609. 'FINSI' ;
  610. 'SI' ( NIV_MESS '>EG' 2) ;
  611. 'SAUTER' 1 'LIGNE' ;
  612. 'MESS' 'CHAMP THERMIQUE A L ITERATION :' IFOIS ;
  613. 'LISTE' U2_T ;
  614. 'FINSI' ;
  615. *
  616. MAIL_CHP = 'EXTRAIRE' U1_T 'MAIL' ;
  617. NBRE_NOE = 'NBNO' MAIL_CHP ;
  618. *
  619. SOM_COMP*'FLOTTANT' = 0. ;
  620. NUM_NOE*'ENTIER' = 0 ;
  621. IFFFF*'ENTIER' = 0 ;
  622. *
  623. *--- BOUCLE SUR LES POINTS
  624. *
  625. 'REPETER' BOUC_POI ;
  626. NUM_NOE = NUM_NOE + 1 ;
  627. *
  628. *--- TEST SI FIN DE BOUCLE
  629. *
  630. 'SI' ( NUM_NOE '>' NBRE_NOE ) ;
  631. 'QUITTER' BOUC_POI ;
  632. 'FINSI' ;
  633. *
  634. POI_EXTR = MAIL_CHP 'POIN' NUM_NOE ;
  635. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  636. FLO_EX1I = 'EXTRAIRE' U1_T 'TINF' POI_EXTR ;
  637. FLO_EX1S = 'EXTRAIRE' U1_T 'TSUP' POI_EXTR ;
  638. FLO_EX1M = 'EXTRAIRE' U1_T 'T ' POI_EXTR ;
  639. FLO_EXT1 = (FLO_EX1I + FLO_EX1S +FLO_EX1M)/3.0 ;
  640. FLO_EX2I = 'EXTRAIRE' U2_T 'TINF' POI_EXTR ;
  641. FLO_EX2S = 'EXTRAIRE' U2_T 'TSUP' POI_EXTR ;
  642. FLO_EX2M = 'EXTRAIRE' U2_T 'T ' POI_EXTR ;
  643. FLO_EXT2 = (FLO_EX2I+ FLO_EX2S +FLO_EX2M)/3.0 ;
  644. 'SINON';
  645. FLO_EXT1 = 'EXTRAIRE' U1_T 'T' POI_EXTR ;
  646. FLO_EXT2 = 'EXTRAIRE' U2_T 'T' POI_EXTR ;
  647. 'FINSI';
  648. DIFF_FLO = FLO_EXT2 - FLO_EXT1 ;
  649. ADIF_FLO = 'ABS' DIFF_FLO ;
  650. AFL_EXT1 = 'MAXI' ( 'PROG' ( 'ABS' FLO_EXT1 ) EPSILON ) ;
  651. *
  652. 'SI' ( ( ADIF_FLO / AFL_EXT1 ) '<' EPSILON ) ;
  653. IFFFF = IFFFF + 1 ;
  654. 'FINSI' ;
  655. 'FIN' BOUC_POI ;
  656. *
  657. 'SI' ( IFFFF 'EGA' NBRE_NOE ) ;
  658. CONVERGE = VRAI ;
  659. 'SINON' ;
  660. CONVERGE = FAUX ;
  661. 'FINSI' ;
  662. *
  663. *--- LE CRITERE DE CONVERGENCE EST-IL SATISFAIT ?
  664. *
  665. 'SI' ( CONVERGE ) ;
  666. 'SI' ( NIV_MESS '>EG' 1 ) ;
  667. 'SAUTER' 1 'LIGNE' ;
  668. 'MESS' 'CONVERGENCE A L ITERATION :' IFOIS ;
  669. 'MESS' 'CRITERE DE CONVERGENCE :' EPSILON ;
  670. 'FINSI' ;
  671. 'QUITTER' BOUC_1 ;
  672. 'FINSI' ;
  673. 'SI' ( 'EXISTE' ETAB 'COQUE' );
  674. U1_TM = U2_TM ;
  675. 'FINSI';
  676. U1_T = U2_T ;
  677. 'SI' ( IFOIS '>' ITER_MAX ) ;
  678. 'SAUTER' 1 'LIGNE' ;
  679. 'MESS' 'PAS DE CONVERGENCE A L ITERATION :' ITER_MAX ;
  680. 'QUITTER' BOUC_1 ;
  681. 'FINSI' ;
  682. 'FIN' BOUC_1 ;
  683. *
  684. *--- ARCHIVAGE DES RESULTATS DANS "STAB"
  685. *
  686. ETAB.'TEMPERATURE' = U2_T ;
  687. *
  688. *--- ON FAIT LE MENAGE...
  689. *
  690. *'MENAGE' ;
  691. 'SI' ( NIV_MESS '>EG' 1 ) ;
  692. 'SAUTER' 1 'LIGNE' ;
  693. 'MESS' '*** FIN DE LA PROCEDURE "TRANSIT1" ***' ;
  694. 'FINSI' ;
  695. 'FIN' PROC ;
  696. 'FINPROC' ETAB ;
  697.  
  698.  
  699.  

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