Télécharger transit1.procedur

Retour à la liste

Numérotation des lignes :

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

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