Télécharger transit3.procedur

Retour à la liste

Numérotation des lignes :

  1. * TRANSIT3 PROCEDUR FANDEUR 14/10/10 21:15:27 8178
  2. 'DEBPROC' TRANSIT3 ETAB*'TABLE ' ;
  3. *----------------------------------------------------------------------*
  4. * *
  5. * T R A N S I T 3 *
  6. * --------------- *
  7. * *
  8. * RESOLUTION D'UN PROBLEME DE THERMIQUE TRANSITOIRE *
  9. * METHODE A DEUX PAS DE TEMPS ( ALGORITHME DE DUPONT2 ) *
  10. * *
  11. * ETAB, TABLE CONTENANT EN ENTREE : *
  12. * *
  13. * INDICE 'SOUSTYPE' THERMIQUE *
  14. * INDICE 'INITIAL(0)' CHAMP DE TEMPERATURE INITIAL AU PAS 0 *
  15. * INDICE 'INITIAL(1)' CHAMP DE TEMPERATURE INITIAL AU PAS 1 *
  16. * ( LA DONNEE DE CE CHAMP EST FACULTATIVE ) *
  17. * INDICE 'COQUE' TYPE D'ELEMENT COQUE UTILISE *
  18. * INDICE 'EPAI ' EPAISSEUR DE LA COQUE *
  19. * INDICE 'PEAU' PEAU SUR LAQUELLE ECHANGE DE SURFACE *
  20. * S'EFFECTUE DANS LE CAS DES COQUE ('INFE' *
  21. * OU 'SUPE') *
  22. * INDICE 'CONDUCTIVITE' MATRICE DE CONDUCTIVITE *
  23. * OU INDICE 'TABCOND' TABLE DES OBJETS D'EVOLUTION K(T) INDICEE *
  24. * PAR LES OBJETS MMODELS DES SOUS-ZONES *
  25. * INDICE 'CAPACITE' MATRICE DE CAPACITE *
  26. * OU INDICE 'TABCAPA' TABLE DES OBJETS D'EVOLUTION CRHO(T) INDICEE
  27. * PAR LES OBJETS MMODELS DES SOUS-ZONES *
  28. * INDICE 'MODELE' OBJET MODELE DE L'ENSEMBLE *
  29. * INDICE 'IMPOSE' VALEURS IMPOSEES ( CHPOINT OU CHARGEMENT ) *
  30. * INDICE 'BLOCAGE' MATRICE DE BLOCAGE *
  31. * INDICE 'FLUX' CHARGEMENT DES FLUX EQUIVALENTS *
  32. * INDICE 'CONVECTION' TABLE DES TABLES POUR UNE CONDITION *
  33. * DE CONVECTION : *
  34. * 'TABCONV1' TABLE DES COEFFICIENTS D'ECHANGE OU TABLE *
  35. * DES EVOLUTIONS DU COEFFICIENT D'ECHANGE *
  36. * FONCTION DE LA TEMPERATURE H(T) INDICEE *
  37. * PAR LES OBJETS MMODELS CORRESPONDANT AUX *
  38. * DIFFERENTES SURFACES DE CONVECTION *
  39. * 'TABTE1' TABLE DES TEMPERATURES EXTERIEURES *
  40. * ( FLOTTANTS OU CHPOINTS ) OU TABLE DES *
  41. * EVOLUTIONS DE LA TEMPERATURE EXTERIEURE *
  42. * FONCTION DE LA TEMPERATURE DE LA SURFACE *
  43. * DE CONVECTION TE(T) INDICEE PAR LES OBJETS *
  44. * MMODELS CORRESPONDANT AUX DIFFERENTES *
  45. * SURFACES DE CONVECTION *
  46. * OU *
  47. * 'TABCONV2' TABLE DES COEFFICIENTS D'ECHANGE OU TABLE *
  48. * DES EVOLUTIONS DU COEFFICIENT D'ECHANGE *
  49. * FONCTION DU TEMPS H(TEMPS) INDICEE PAR *
  50. * LES OBJETS MMODELS CORRESPONDANT AUX *
  51. * DIFFERENTES SURFACES DE CONVECTION *
  52. * 'TABTE2' TABLE DES TEMPERATURES EXTERIEURES *
  53. * ( FLOTTANTS OU CHPOINTS ) OU TABLE DES *
  54. * DES EVOLUTIONS DE LA TEMPERATURE EXTERIEURE*
  55. * FONCTION DU TEMPS :TE(TEMPS) INDICEE PAR *
  56. * LES OBJETS MMODELS CORRESPONDANT AUX *
  57. * DIFFERENTES SURFACES DE CONVECTION *
  58. * INDICE 'PHASE' TABLE TAB1 POUR L'OPERATEUR CAPACITE *
  59. * INDICE 'TINI' TEMPS INITIAL ( TINI=0. PAR DEFAUT ) *
  60. * INDICE 'PAS' VALEUR DU PAS DE TEMPS *
  61. * INDICE 'NPAS' NOMBRE DE PAS DE CALCUL *
  62. * ( NPAS=1 PAR DEFAUT ) *
  63. * INDICE 'NSOR' ON VEUT UN RESULTAT TOUS LES NSOR PAS *
  64. * ( NSOR=1 PAR DEFAUT ) *
  65. * INDICE 'COEF' VALEUR DU COEFFICIENT DE RELAXATION *
  66. * (VALEUR PAR DEFAUT 0.25) *
  67. * INDICE 'REPRISE' 'OUI' POUR UNE REPRISE DE CALCUL *
  68. * *
  69. * ETAB CONTENANT EN SORTIE : *
  70. * *
  71. * INDICE NUMPAS NUMERO DU PAS DE SORTIE *
  72. * LA TABLE ( ETAB NUMPAS ) CONTENANT : *
  73. * INDICE 'TEMPERATURE' LE CHAMP DE TEMPERATURE *
  74. * INDICE 'INSTANT' L'INSTANT DE SORTIE *
  75. * *
  76. * D.R., LE 29 JUIN 1988. VERSION DU 18 JANVIER 1989. *
  77. * *
  78. *----------------------------------------------------------------------*
  79. 'REPETER' PROC 1 ;
  80. ***
  81. 'SAUTER' 1 'LIGNE' ;
  82. 'MESS' ' Calcul transitoire non linéaire méthode DupontII' ;
  83. ***
  84. *
  85. *--- RECUPERATION DE L'INFORMATION CONTENUE DANS "ETAB"
  86. *
  87. 'SI' ( 'NEG' ( ETAB.'SOUSTYPE' ) 'THERMIQUE' ) ;
  88. 'MESS' 'SOUS TYPAGE DE LA TABLE EN ENTREE INCORRECT|' ;
  89. 'QUITTER' PROC ;
  90. 'FINSI' ;
  91. 'SI' ( 'EXISTE' ETAB 'NIVEAU' ) ;
  92. NIV_MESS = 'ENTIER' ( ETAB.'NIVEAU' ) ;
  93. 'SINON' ;
  94. NIV_MESS = 0 ;
  95. 'FINSI' ;
  96. 'SI' ( NIV_MESS '>EG' 1 ) ;
  97. 'SAUTER' 1 'LIGNE' ;
  98. 'MESS' '*** DEBUT DE LA PROCEDURE "TRANSIT3" ***' ;
  99. 'FINSI' ;
  100. T_REP = 0 ;NREP = 0 ;IREP = 0 ;ITEM = 0 ;
  101. 'SI' ( 'EXISTE' ETAB 'REPRISE' ) ;
  102. 'REPETER' BOUC_REP ;
  103. IREP = IREP + 1 ;
  104. 'SI' ( 'NON' ( 'EXISTE' ETAB IREP ) ) ;
  105. 'QUITTER' BOUC_REP ;
  106. 'FINSI' ;
  107. 'FIN' BOUC_REP ;
  108. NREP = IREP - 1 ;
  109. U0_1 = ETAB . ( NREP - 1 ) . 'TEMPERATURE' ;
  110. U0_0 = ETAB.NREP.'TEMPERATURE' ;
  111. T_REP = ETAB.NREP.'INSTANT' ;
  112. T_INI = T_REP ;
  113. DTREP = T_REP - ETAB.(NREP - 1).'INSTANT';
  114. 'SI' ( ABS(DTREP - (ETAB.'PAS')) >EG 1.e-6 ) ;
  115. 'ERREUR' 'Conditions de reprise impossibles' ;
  116. 'QUITTER' PROC ;
  117. 'FINSI' ;
  118. 'SINON' ;
  119. U0_1 = 'COPIER' ( ETAB.'INITIAL(0)' ) 'GEOM' ;
  120. 'SI' ( 'EXISTE' ETAB 'INITIAL(1)' ) ;
  121. U0_0 = 'COPIER' ( ETAB.'INITIAL(1)' ) 'GEOM' ;
  122. 'SINON' ;
  123. U0_0 = U0_1 ;
  124. 'FINSI' ;
  125. 'SI' ( 'EXISTE' ETAB 'TINI' ) ;
  126. T_INI = ETAB.'TINI' ;
  127. 'SINON' ;
  128. T_INI = 0. ;
  129. 'FINSI' ;
  130. 'FINSI' ;
  131. 'SI' ( 'EXISTE' ETAB 'FLUX' ) ;
  132. TC_TPS = ETAB.'FLUX' ;
  133. 'FINSI' ;
  134. 'SI' ( 'EXISTE' ETAB 'CONDUCTIVITE' ) ;
  135. MAT_COND = ETAB.'CONDUCTIVITE' ;
  136. 'SINON' ;
  137. 'SI' ( 'EXISTE' ETAB 'TABCOND' ) ;
  138. TAB_COND = ETAB.'TABCOND' ;
  139. 'SINON' ;
  140. 'SAUTER' 1 'LIGNE' ;
  141. 'MESS' '*** LA DONNEE DE LA CONDUCTIVITE EST INCORRECTE | ***' ;
  142. 'QUITTER' PROC ;
  143. 'FINSI' ;
  144. 'FINSI' ;
  145. *
  146. 'SI' ( 'EXISTE' ETAB 'PHASE' ) ;
  147. TABP2 = ETAB.'PHASE' ;
  148. 'MESS' ' avec changement de phase' ;
  149. 'FINSI' ;
  150. 'SI' ( 'EXISTE' ETAB 'BLOCAGE' ) ;
  151. MAT_BLOC = ETAB.'BLOCAGE' ;
  152. 'FINSI' ;
  153. 'SI' ( 'EXISTE' ETAB 'IMPOSE' ) ;
  154. VAL_IMP = ETAB.'IMPOSE' ;
  155. 'FINSI' ;
  156. TYP_IMP = 'TYPE' VAL_IMP ;
  157. 'SI' ( 'NEG' TYP_IMP 'CHARGEME' ) ;
  158. VAL_IMPO = VAL_IMP ;
  159. 'FINSI' ;
  160. 'SI' ( 'EXISTE' ETAB 'COEF' ) ;
  161. LAMBDA = ETAB.'COEF' ;
  162. 'SINON' ;
  163. LAMBDA = 0.25 ;
  164. 'FINSI' ;
  165. 'SI' ( 'EXISTE' ETAB 'MODELE' ) ;
  166. OBJ_MOD = ETAB.'MODELE' ;
  167. MOD_CAPA=OBJ_MOD;
  168. 'FINSI' ;
  169. 'SI' ('EXISTE' ETAB 'COQUE') ;
  170. TYP_COQ = ETAB.'COQUE' ;
  171. 'SI' ( 'EXISTE' ETAB 'EPAI' ) ;
  172. EP = ETAB.'EPAI' ;
  173. 'SINON' ;
  174. 'SAUTER' 1 'LIGNE' ;
  175. 'MESS' '*** IL MANQUE L EPAISSEUR DE LA COQUE | *** ';
  176. 'QUITTER' PROC ;
  177. 'FINSI';
  178. 'FINSI' ;
  179. 'SI' ( 'EXISTE' ETAB 'CAPACITE' ) ;
  180. MAT_CAPA = ETAB.'CAPACITE' ;
  181. 'SINON' ;
  182. 'SI' ( 'EXISTE' ETAB 'TABCAPA' ) ;
  183. TAB_CAPA = ETAB.'TABCAPA' ;
  184. 'SINON' ;
  185. 'SAUTER' 1 'LIGNE' ;
  186. 'MESS' '*** LA DONNEE DE LA CAPACITE EST INCORRECTE | ***' ;
  187. 'QUITTER' PROC ;
  188. 'FINSI' ;
  189. 'FINSI' ;
  190. *
  191. *--- GESTION DE LA CONDITION DE CONVECTION FORCEE
  192. *+*
  193. 'SI' ( 'EXISTE' ETAB 'CONVECTION' ) ;
  194. 'SI' ( 'EXISTE' ETAB 'COQUE' ) ;
  195. 'SI' ( 'EXISTE' ETAB 'PEAU' ) ;
  196. PE = ETAB.'PEAU' ;
  197. 'SINON' ;
  198. 'MESS' '*** PRECISER LA PEAU | ***' ;
  199. 'QUITTER' PROC ;
  200. 'FINSI' ;
  201. 'FINSI' ;
  202. CTAB = ETAB.'CONVECTION' ;
  203. 'SI' ('EXISTE' CTAB 'TABCONV1') ;
  204. IT=1 ;
  205. TAB_CON1=CTAB.'TABCONV1' ;
  206. 'SI' ('EXISTE' CTAB 'TABTE1') ;TAB_TE1 = CTAB.'TABTE1' ;
  207. 'SINON' ;TAB_TE1 = TABLE ;FINSI ;
  208. 'SINON' ;
  209. IT=2 ;
  210. 'SI' ('EXISTE' CTAB 'TABTE2') ;TAB_TE2 = CTAB.'TABTE2' ;
  211. 'SINON' ;TAB_TE2 = TABLE ;'FINSI' ;
  212. TAB_CON2 = CTAB.'TABCONV2' ;
  213. 'FINSI' ;
  214. 'FINSI' ;
  215. 'SI' ( 'EXISTE' ETAB 'NPAS' ) ;
  216. NBRE_PAS = 'ENTIER' ( ETAB.'NPAS' ) ;
  217. 'SINON' ;
  218. NBRE_PAS = 1 ;
  219. 'FINSI' ;
  220. 'SI' ( 'EXISTE' ETAB 'NSOR' ) ;
  221. N_SOR = 'ENTIER' ( ETAB.'NSOR' ) ;
  222. 'SINON' ;
  223. N_SOR = 1 ;
  224. 'FINSI' ;
  225. 'SI' ( 'EXISTE' ETAB 'PAS' ) ;
  226. T_PAS = ETAB.'PAS' ;
  227. 'SINON' ;
  228. 'SAUTER' 1 'LIGNE' ;
  229. 'MESS' 'IL MANQUE LE PAS DE TEMPS |' ;
  230. 'OBTENIR' T_PAS*'FLOTTANT' ;
  231. 'FINSI' ;
  232. T0_0 = T_INI ;
  233. 'SI' ( 'EXISTE' ETAB 'FLUX' ) ;
  234. QTPS_0 = 'TIRER' TC_TPS T0_0 ;
  235. 'FINSI' ;
  236. T0_1 = T_INI + T_PAS ;
  237. 'SI' ( 'EXISTE' ETAB 'FLUX' ) ;
  238. QTPS_1 = 'TIRER' TC_TPS T0_1 ;
  239. 'FINSI' ;
  240. *
  241. *--- "ETAB" EST UNE TABLE DE TABLES, INDICEE PAR LE NUMERO DU PAS
  242. *
  243. NUM_PAS = NREP ;
  244. 'SI' ( 'NON' ( 'EXISTE' ETAB REPRISE ) ) ;
  245. STN = 'TABLE' ;
  246. ETAB.NUM_PAS = 'TABLE' STN ;
  247. STN.'INSTANT' = T0_0 ;
  248. STN.'TEMPERATURE' = U0_0 ;
  249. 'SI' ( NIV_MESS '>EG' 1 ) ;
  250. 'SAUTER' 1 'LIGNE' ;
  251. 'MESS' 'Sortie du resultat pour le temps :' T0_0 ;
  252. 'MESS' 'Numéro du pas de sortie :' NUM_PAS ;
  253. 'SI' ( NIV_MESS '>EG' 2 ) ;
  254. 'SAUTER' 1 'LIGNE' ;
  255. 'MESS' 'CHAMP DE TEMPERATURE AU TEMPS :' T0_0 ;
  256. 'LISTE' U0_0 ;
  257. 'FINSI' ;
  258. 'FINSI' ;
  259. NUM_PAS = 1 ;
  260. STN = 'TABLE' ;
  261. ETAB.NUM_PAS = 'TABLE' STN ;
  262. STN.'INSTANT' = T0_1 ;
  263. STN.'TEMPERATURE' = U0_1 ;
  264. 'SI' ( NIV_MESS '>EG' 1 ) ;
  265. 'SAUTER' 1 'LIGNE' ;
  266. 'MESS' 'Sortie du resultat pour le temps :' T0_1 ;
  267. 'MESS' 'Numéro du pas de sortie :' NUM_PAS ;
  268. 'SI' ( NIV_MESS '>EG' 2 ) ;
  269. 'SAUTER' 1 'LIGNE' ;
  270. 'MESS' 'CHAMP DE TEMPERATURE AU TEMPS :' T0_1 ;
  271. 'LISTE' U0_1 ;
  272. 'FINSI' ;
  273. 'FINSI' ;
  274. ITEM = 1 ;
  275. 'FINSI' ;
  276. IPAS = 0 ;
  277. *
  278. *--- BOUCLE SUR LES PAS DE TEMPS
  279. *
  280. 'REPETER' BOUC_SOR ;
  281. *
  282. 'SAUTER' 1 'LIGNE' ;
  283. 'MESS' 'Numéro du pas :' NUM_PAS ;
  284. *
  285. ITEM = ITEM + 1 ;
  286. IPAS = IPAS + 1 ;
  287. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  288. U0_T = 'ENLEVE' U0_1 'LX' ;
  289. 'SINON' ;
  290. U0_T = 'EXCO' 'T' U0_1 'NOID' 'T' ;
  291. 'FINSI' ;
  292. *
  293. *--- TEST SI FIN DE BOUCLE
  294. *
  295. 'SI' ( ITEM '>' NBRE_PAS ) ;
  296. 'QUITTER' BOUC_SOR ;
  297. 'FINSI' ;
  298. T1 = T_INI + ( T_PAS * ITEM ) ;
  299. 'SI' ( 'EXISTE' ETAB 'FLUX' ) ;
  300. FLUX_TPS = 'COLI' QTPS_0 0.5 QTPS_1 0.5 ;
  301. 'FINSI' ;
  302. 'SI' ( 'EGA' TYP_IMP 'CHARGEME' ) ;
  303. VAL_IMPO = 'TIRER' VAL_IMP T1 ;
  304. 'FINSI' ;
  305. 'SI' ( 'EXISTE' ETAB 'TABCOND' ) ;
  306. *
  307. *--- CALCUL DE LA MATRICE DE CONDUCTIVITE
  308. *
  309. U1_CALC = 'COLI' U0_0 1.5 U0_1 -0.5 ;
  310. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  311. UC1_TI = 'EXCO' 'TINF' U1_CALC 'NOID' 'T' ;
  312. UC1_TS = 'EXCO' 'TSUP' U1_CALC 'NOID' 'T' ;
  313. UC1_TM = 'EXCO' 'T ' U1_CALC 'NOID' 'T' ;
  314. UC1_T = (UC1_TI + UC1_TS +UC1_TM )/3.0 ;
  315. 'SINON';
  316. UC1_T = 'EXCO' 'T' U1_CALC 'NOID' 'T' ;
  317. 'FINSI';
  318. IDCOND = 'INDE' TAB_COND ;
  319. ICOND=0 ;
  320. 'REPE' BOUCOND ('DIME' TAB_COND) ;
  321. ICOND = ICOND + 1 ;
  322. MOD1 = IDCOND.ICOND ;
  323. VCOND = TAB_COND.MOD1 ;
  324. TYPC = 'TYPE' VCOND ;
  325. 'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
  326. CC = 'VARI' MOD1 VCOND UC1_T 'NOEUD' ;
  327. CCC = 'EXCO' CC 'SCAL' 'NOID' 'K' ;
  328. 'SINON' ;
  329. CCC = VCOND ;
  330. 'FINSI' ;
  331. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  332. MMM = 'MATE' MOD1 'K' CCC 'EPAI' EP ;
  333. 'SINON' ;
  334. MMM = 'MATE' MOD1 'K' CCC ;
  335. 'FINSI' ;
  336. MI= 'CONDUCTION' MOD1 MMM;
  337. 'SI' (ICOND 'EGA' 1) ;
  338. MAT_COND = MI;
  339. 'SINON' ;
  340. MAT_COND =MAT_COND ET MI ;
  341. 'FINSI' ;
  342. 'FIN' BOUCOND ;
  343. 'FINSI' ;
  344. 'SI' ( 'EXISTE' ETAB 'TABCAPA' ) ;
  345. *
  346. *--- CALCUL DE LA MATRICE DE CAPACITE
  347. *
  348. U2_CALC = 'COLI' U0_0 1.5 U0_1 -0.5 ;
  349. 'SI' ( 'EXISTE' ETAB 'PHASE' ) ;
  350. * initialisation de la table pour le changement de phase
  351. TABP2.'CHAMP THERMIQUE 1' = 'ENLEVER' U0_0 'LX' ;
  352. TABP2.'CHAMP THERMIQUE 2' = 'ENLEVER'
  353. ( COLI 2. U0_0 -1. U0_1)'LX' ;
  354. 'FINSI' ;
  355. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  356. UC2_TI = 'EXCO' 'TINF' U2_CALC 'NOID' 'T' ;
  357. UC2_TS = 'EXCO' 'TSUP' U2_CALC 'NOID' 'T' ;
  358. UC2_TM = 'EXCO' 'T ' U2_CALC 'NOID' 'T' ;
  359. UC2_T = (UC2_TI + UC2_TS + UC2_TM)/0.3 ;
  360. 'SINON';
  361. UC2_T = 'EXCO' 'T' U2_CALC 'NOID' 'T' ;
  362. 'FINSI';
  363. IDCAPA = 'INDE' TAB_CAPA ;
  364. ICAPA=0 ;
  365. 'REPE' BOUCAPA ('DIME' TAB_CAPA) ;
  366. ICAPA = ICAPA + 1 ;
  367. MOD1 = IDCAPA.ICAPA ;
  368. VCAPA = TAB_CAPA.MOD1 ;
  369. TYPC = 'TYPE' VCAPA ;
  370. 'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
  371. CC = 'VARI' MOD1 VCAPA UC2_T 'NOEUD' ;
  372. CCC = 'EXCO' CC 'SCAL' 'NOID' 'C' ;
  373. 'SINON' ;
  374. CCC = VCAPA ;
  375. 'FINSI' ;
  376. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  377. MMM = 'MATE' MOD1 'C' CCC 'RHO' 1. 'EPAI' EP ;
  378. 'SINON' ;
  379. MMM = 'MATE' MOD1 'C' CCC 'RHO' 1.;
  380. 'FINSI' ;
  381. 'SI' ( 'EXISTE' ETAB 'PHASE' ) ;
  382. MI = 'CAPACITE' MOD1 MMM TABP2 ;
  383. 'SINON' ;
  384. MI = 'CAPACITE' MOD1 MMM ;
  385. 'FINSI' ;
  386. 'SI' (ICAPA 'EGA' 1) ;
  387. MAT_CAPA = MI ;
  388. MOD_CAPA=MOD1;
  389. 'SINON' ;
  390. MAT_CAPA = MAT_CAPA ET MI ;
  391. MOD_CAPA=MOD_CAPA ET MOD1;
  392. 'FINSI' ;
  393. 'FIN' BOUCAPA ;
  394. 'FINSI' ;
  395. *
  396. SCA1 = 0.5 + LAMBDA ;
  397. SCA2 = 1. / T_PAS ;
  398. SCA3 = 0.5 - ( 2. * LAMBDA ) ;
  399. SCA4 = ( 2. * LAMBDA ) - 0.5 ;
  400. A2 = MAT_COND * SCA1 ;
  401. A1 = MAT_CAPA * SCA2 ;
  402. MAT_RIGI = A1 'ET' A2 ;
  403. 'SI' ( 'EXISTE' ETAB 'BLOCAGE' ) ;
  404. MAT_RIGI = MAT_RIGI 'ET' MAT_BLOC ;
  405. 'FINSI' ;
  406. B3 = MAT_COND * SCA4 ;
  407. B1 = A1 'ET' B3 ;
  408. B2 = MAT_COND * ( -1 * LAMBDA ) ;
  409. C1 = B1 * U0_0 ;
  410. * Correction DR 1/9/92 U0_0 -> U0_1
  411. C2 = B2 * U0_1 ;
  412. MAT_CHPO = C1 + C2 ;
  413. 'SI' ( 'EXISTE' ETAB 'FLUX' ) ;
  414. MAT_CHPO = MAT_CHPO + FLUX_TPS ;
  415. 'FINSI' ;
  416. 'SI' ( 'EXISTE' ETAB 'IMPOSE' ) ;
  417. MAT_CHPO = MAT_CHPO + VAL_IMPO ;
  418. 'FINSI' ;
  419. 'SI' ( 'EXISTE' ETAB 'CONVECTION' ) ;
  420. *
  421. *--- ON GENERE LES TERMES DE CONVECTION
  422. *
  423. 'SI' ('EGA' IT 1 ) ;
  424. * CORRECTION AM 4/8/92 PERMUTATION U0_0 ET U0_1
  425. CHT_CNV = 'COLI' U0_0 1.5 U0_1 -0.5 ;
  426. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  427. PE =ETAB.'PEAU';
  428. 'SI' ('EGA' PE 'TINF') ;
  429. CHT_CNV = 'EXCO' 'TINF' CHT_CNV 'NOID' 'T' ;
  430. 'FINSI' ;
  431. 'SI' ('EGA' PE 'TSUP') ;
  432. CHT_CNV = 'EXCO' 'TSUP' CHT_CNV 'NOID' 'T' ;
  433. 'FINSI' ;
  434. 'FINSI' ;
  435. IDCONV = 'INDE' TAB_CON1 ;
  436. NCONV = 'DIME' IDCONV ;
  437. NTE = 'DIME' TAB_TE1 ;
  438. 'SI' (NTE 'NEG' 0 ) ;IDTE = 'INDE' TAB_TE1 ;'FINSI' ;
  439. * 'SI' ('NEG' NCONV NTE ) ;
  440. * 'SAUTER' 1 'LIGNE' ;
  441. * 'MESS' '*** LA DONNEE DE LA CONVECTION EST INCORRECTE *** ' ;
  442. * 'QUITTER' PROC ;
  443. * 'FINSI' ;
  444. ICONV = 0 ;
  445. 'REPETE' BOUCONV NCONV ;
  446. ICONV = ICONV + 1 ;
  447. MOD1 = IDCONV.ICONV ;
  448. VCONV = TAB_CON1.MOD1 ;
  449. TYPC = 'TYPE' VCONV ;
  450. 'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
  451. CC = 'VARI' MOD1 VCONV CHT_CNV 'NOEUD' ;
  452. CCC = 'EXCO' CC 'SCAL' 'NOID' 'H' ;
  453. MAT_CONV = 'MATE' MOD1 'H' CCC ;
  454. 'SINON' ;
  455. MAT_CONV = 'MATE' MOD1 'H' VCONV ;
  456. 'FINSI' ;
  457. MOD_CONV = MOD1 ;
  458. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  459. RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV PE ;
  460. 'SINON' ;
  461. RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV ;
  462. 'FINSI' ;
  463. 'SI' ('EGA' ICONV 1 ) ;
  464. RIG_CON1 = RIG_CONV ;
  465. 'SINON' ;
  466. RIG_CON1 = RIG_CONV ET RIG_CON1 ;
  467. 'FINSI' ;
  468. 'FIN' BOUCONV ;
  469. 'SI' (NTE 'NEG' 0 ) ;
  470. ICONV = 0 ;
  471. 'REPETE' BOUCTE NTE ;
  472. ICONV = ICONV + 1 ;
  473. MOD1 = IDTE.ICONV ;
  474. VCONV = TAB_CON1.MOD1 ;
  475. TYPC = 'TYPE' VCONV ;
  476. 'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
  477. CC = 'VARI' MOD1 VCONV CHT_CNV 'NOEUD' ;
  478. CCC = 'EXCO' CC 'SCAL' 'NOID' 'H' ;
  479. MAT_CONV = 'MATE' MOD1 'H' CCC ;
  480. 'SINON' ;
  481. MAT_CONV = 'MATE' MOD1 'H' VCONV ;
  482. 'FINSI' ;
  483. VTE = TAB_TE1.MOD1 ;
  484. TYPC = 'TYPE' VTE ;
  485. 'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
  486. EE = 'VARI' MOD1 VTE CHT_CNV 'NOEUD' ;
  487. VAL_TE = 'CHAN' 'CHPO' MOD1 EE ;
  488. 'SINON' ;
  489. VAL_TE = VTE ;
  490. 'FINSI' ;
  491. MOD_CONV = MOD1 ;
  492. TYP_TE = 'TYPE' VAL_TE ;
  493. 'SI' ( 'NEG' TYP_TE 'CHPOINT ' ) ;
  494. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  495. PE =ETAB.'PEAU';
  496. CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE PE ;
  497. 'SINON' ;
  498. CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE ;
  499. 'FINSI';
  500. 'SINON' ;
  501. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  502. CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV VAL_TE PE ;
  503. 'SINON' ;
  504. CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV VAL_TE ;
  505. 'FINSI';
  506. 'FINSI' ;
  507. 'SI' ('EGA' ICONV 1 ) ;
  508. CHAL_TE1 = CHAL_TEM ;
  509. 'SINON' ;
  510. CHAL_TE1 = CHAL_TEM ET CHAL_TE1 ;
  511. 'FINSI' ;
  512. 'FIN' BOUCTE ;
  513. 'FINSI' ;
  514. 'SINON' ;
  515. IDCONV = 'INDE' TAB_CON2 ;
  516. NCONV = 'DIME' IDCONV ;
  517. NTE = 'DIME' TAB_TE2 ;
  518. 'SI' (NTE 'NEG' 0) ;IDTE = 'INDE' TAB_TE2 ;'FINSI';
  519. * 'SI' ('NEG' NCONV NTE ) ;
  520. * 'SAUTER' 1 'LIGNE' ;
  521. * 'MESS' '*** LA DONNEE DE LA CONVECTION EST INCORRECTE *** ' ;
  522. * 'QUITTER' PROC ;
  523. * 'FINSI' ;
  524. ICONV = 0 ;
  525. 'REPETE' BOUCONV1 NCONV ;
  526. ICONV = ICONV + 1 ;
  527. MOD1 = IDCONV.ICONV ;
  528. VCONV = TAB_CON2.MOD1 ;
  529. TYPC = 'TYPE' VCONV ;
  530. 'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
  531. LIS_TEM = 'EXTR' VCONV 'TEMPS' ;
  532. LIS_H = 'EXTR' VCONV 'H' ;
  533. CC = 'IPOL' T1 LIS_TEM LIS_H ;
  534. MAT_CONV = 'MATE' MOD1 'H' CC ;
  535. 'SINON' ;
  536. MAT_CONV = 'MATE' MOD1 'H' VCONV ;
  537. 'FINSI' ;
  538. MOD_CONV = MOD1 ;
  539. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  540. RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV PE ;
  541. 'SINON' ;
  542. RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV ;
  543. 'FINSI' ;
  544. 'SI' ('EGA' ICONV 1 ) ;
  545. RIG_CON1 = RIG_CONV ;
  546. 'SINON' ;
  547. RIG_CON1 = RIG_CONV ET RIG_CON1 ;
  548. 'FINSI' ;
  549. 'FIN' BOUCONV1 ;
  550. 'SI' (NTE 'NEG' 0 ) ;
  551. ICONV = 0 ;
  552. 'REPETE' BOUCTE1 NTE ;
  553. ICONV = ICONV + 1 ;
  554. MOD1 = IDTE.ICONV ;
  555. VCONV = TAB_CON2.MOD1 ;
  556. TYPC = 'TYPE' VCONV ;
  557. 'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
  558. LIS_TEM = 'EXTR' VCONV 'TEMPS' ;
  559. LIS_H = 'EXTR' VCONV 'H' ;
  560. CC = 'IPOL' T1 LIS_TEM LIS_H ;
  561. MAT_CONV = 'MATE' MOD1 'H' CC ;
  562. 'SINON' ;
  563. MAT_CONV = 'MATE' MOD1 'H' VCONV ;
  564. 'FINSI' ;
  565. VTE = TAB_TE2.MOD1 ;
  566. TYPC = 'TYPE' VTE ;
  567. 'SI' ('EGA' TYPC 'EVOLUTIO' ) ;
  568. LIS_TEM = 'EXTR' VTE 'TEMPS' ;
  569. LIS_TE = 'EXTR' VTE 'TE' ;
  570. VAL_TE = 'IPOL' T1 LIS_TEM LIS_TE ;
  571. 'SINON' ;
  572. VAL_TE = VTE ;
  573. 'FINSI' ;
  574. MOD_CONV = MOD1 ;
  575. TYP_TE = 'TYPE' VAL_TE ;
  576. 'SI' ( 'NEG' TYP_TE 'CHPOINT ' ) ;
  577. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  578. PE =ETAB.'PEAU';
  579. CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE PE ;
  580. 'SINON' ;
  581. CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE ;
  582. 'FINSI';
  583. 'SINON' ;
  584. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  585. CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV VAL_TE PE ;
  586. 'SINON' ;
  587. CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV VAL_TE ;
  588. 'FINSI';
  589. 'FINSI' ;
  590. 'SI' ('EGA' ICONV 1 ) ;
  591. CHAL_TE1 = CHAL_TEM ;
  592. 'SINON' ;
  593. CHAL_TE1 = CHAL_TEM ET CHAL_TE1 ;
  594. 'FINSI' ;
  595. 'FIN' BOUCTE1 ;
  596. 'FINSI' ;
  597. 'FINSI' ;
  598. MAT_RIGI = MAT_RIGI 'ET' RIG_CON1 ;
  599. 'SI' (NTE 'NEG' 0 ) ;MAT_CHPO = MAT_CHPO + CHAL_TE1 ;'FINSI';
  600. 'FINSI' ;
  601. *
  602. *--- CALCUL D'UN PAS
  603. *
  604. U1 = 'RESOUDRE' MAT_RIGI MAT_CHPO ;
  605. U1_LX = 'EXCO' 'LX' U1 'NOID' 'LX' ;
  606. U1_AUX = U1 - U1_LX ;
  607. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  608. U1_T = 'ENLEVE' U1 'LX' ;
  609. 'SINON';
  610. U1_T = 'EXCO' 'T' U1 'NOID' 'T' ;
  611. 'FINSI';
  612. *
  613. *
  614. *--- ARCHIVAGE DES RESULTATS DANS "ETAB"
  615. *
  616. 'SI' ( IPAS 'EGA' N_SOR ) ;
  617. NUM_PAS = NUM_PAS + 1 ;
  618. STN = 'TABLE' ;
  619. ETAB.NUM_PAS = 'TABLE' STN ;
  620. STN.'INSTANT' = T1 ;
  621. STN.'TEMPERATURE' = U1_T ;
  622. IPAS = 0 ;
  623. 'SI' ( NIV_MESS '>EG' 0 ) ;
  624. 'MESS' 'Fin du calcul du temps :' T1 ;
  625. 'SI' ( NIV_MESS '>EG' 2 ) ;
  626. 'SAUTER' 1 'LIGNE' ;
  627. 'MESS' 'CHAMP DE TEMPERATURE AU TEMPS :' T1 ;
  628. 'LISTE' U1_T ;
  629. 'FINSI' ;
  630. 'FINSI' ;
  631. 'FINSI' ;
  632. T0_0 = T1 ;
  633. U0_1 = U0_0 ;
  634. U0_0 = U1_AUX ;
  635. 'SI' ( 'EXISTE' ETAB 'FLUX' ) ;
  636. QTPS_1 = QTPS_0 ;
  637. QTPS_0 = 'TIRER' TC_TPS T0_0 ;
  638. 'FINSI' ;
  639. 'FIN' BOUC_SOR ;
  640. *
  641. *--- ON FAIT LE MENAGE...
  642. *
  643. *'MENAGE' ;
  644. 'SI' ( NIV_MESS '>EG' 1 ) ;
  645. 'SAUTER' 1 'LIGNE' ;
  646. 'MESS' '*** Fin de la procedure "TRANSIT3" ***' ;
  647. 'FINSI' ;
  648. 'FIN' PROC ;
  649. 'FINPROC' ETAB ;
  650.  
  651.  

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