Télécharger transit2.procedur

Retour à la liste

Numérotation des lignes :

  1. * TRANSIT2 PROCEDUR JEANV 94/10/10 21:50:57 1285
  2. 'DEBPROC' TRANSIT2 ETAB*'TABLE ' ;
  3. *----------------------------------------------------------------------*
  4. * *
  5. * T R A N S I T 2 *
  6. * --------------- *
  7. * *
  8. * RESOLUTION D'UN PROBLEME DE THERMIQUE TRANSITOIRE LINEAIRE *
  9. * METHODE A UN PAS DE TEMPS *
  10. * *
  11. * ETAB, TABLE CONTENANT EN ENTREE : *
  12. * *
  13. * INDICE 'SOUSTYPE' THERMIQUE *
  14. * INDICE 'INITIAL' CHAMP DE TEMPERATURE INITIAL *
  15. * INDICE 'IMPOSE' VALEURS IMPOSEES ( CHPOINT OU CHARGEMENT ) *
  16. * INDICE 'BLOCAGE' MATRICE DE BLOCAGE *
  17. * INDICE 'FLUX' CHARGEMENT DE FLUX EN FONCTION DU TEMPS *
  18. * INDICE 'CONDUCTIVITE' MATRICE DE CONDUCTIVITE *
  19. * INDICE 'CAPACITE' MATRICE DE CAPACITE *
  20. * INDICE 'TINI' TEMPS INITIAL (TINI=0. PAR DEFAUT) *
  21. * INDICE 'PAS' VALEUR DU PAS DE TEMPS *
  22. * INDICE 'NPAS' NOMBRE DE PAS DE CALCUL (NPAS=1 PAR DEFAUT)*
  23. * INDICE 'NSOR' ON VEUT UN RESULTAT TOUS LES NSOR PAS *
  24. * (NSOR=1 PAR DEFAUT) *
  25. * INDICE 'COEF' VALEUR DU COEFFICIENT DE RELAXATION *
  26. * (0.55 PAR DEFAUT ) *
  27. * INDICE 'COE2' VALEUR DU SECOND COEFFICIENT *
  28. * (0.5 PAR DEFAUT) *
  29. * INDICE 'NIVEAU' NIVEAUX DE MESSAGES (0 PAR DEFAUT) *
  30. * INDICE 'REPRISE' 'OUI' POUR UNE REPRISE DE CALCUL *
  31. * *
  32. * ETAB CONTENANT EN SORTIE : *
  33. * *
  34. * INDICE NUMPAS NUMERO DU PAS DE SORTIE *
  35. * LA TABLE ( ETAB NUMPAS ) CONTENANT : *
  36. * INDICE 'TEMPERATURE' LE CHAMP DE TEMPERATURE *
  37. * INDICE 'INSTANT' L'INSTANT DE SORTIE *
  38. * *
  39. * D.R., LE 20 DECEMBRE 1988. VERSION DU 18 JANVIER 1989. *
  40. * CONDITION DE TEMPERATURE IMPOSEE FACULTATIVE, D.R. LE 30/05/89 *
  41. * *
  42. *----------------------------------------------------------------------*
  43. 'REPETER' PROC 1 ;
  44. 'SI' ( 'NEG' ( ETAB.'SOUSTYPE' ) 'THERMIQUE' ) ;
  45. 'MESS' 'SOUS TYPAGE INCORRECT DE LA TABLE EN ENTREE|' ;
  46. 'QUITTER' PROC ;
  47. 'FINSI' ;
  48. 'SI' ( 'EXISTE' ETAB 'NIVEAU' ) ;
  49. NIV_MESS = 'ENTIER' ( ETAB.'NIVEAU' ) ;
  50. 'SINON' ;
  51. NIV_MESS = 0 ;
  52. 'FINSI' ;
  53. 'SI' ( NIV_MESS '>EG' 1 ) ;
  54. 'SAUTER' 1 'LIGNE' ;
  55. 'MESS' '*** DEBUT DE LA PROCEDURE "TRANSIT2" ***' ;
  56. 'FINSI' ;
  57. *
  58. *--- RECUPERATION DE L'INFORMATION CONTENUE DANS "ETAB"
  59. *
  60. U0 = 'COPIER' ( ETAB.'INITIAL' ) 'GEOM' ;
  61. T_REP = 0. ;NREP = 0 ;IREP = 0 ;
  62. 'SI' ( 'EXISTE' ETAB 'REPRISE' ) ;
  63. 'REPETER' BOUC_REP ;
  64. IREP = IREP + 1 ;
  65. 'SI' ( 'NON' ( 'EXISTE' ETAB IREP ) ) ;
  66. 'QUITTER' BOUC_REP ;
  67. 'FINSI' ;
  68. 'FIN' BOUC_REP ;
  69. NREP = IREP - 1 ;
  70. U0 = ETAB.NREP.'TEMPERATURE' ;
  71. T_REP = ETAB.NREP.'INSTANT' ;
  72. 'FINSI' ;
  73. TAB_FLUX = ETAB.'FLUX' ;
  74. MAT_COND = ETAB.'CONDUCTIVITE' ;
  75. MAT_CAPA = ETAB.'CAPACITE' ;
  76. 'SI' ( 'EXISTE' ETAB 'BLOCAGE' ) ;
  77. MAT_BLOC = ETAB.'BLOCAGE' ;
  78. 'SI' ( 'EXISTE' ETAB 'IMPOSE' ) ;
  79. VAL_IMP = ETAB.'IMPOSE' ;
  80. TYP_IMP = 'TYPE' VAL_IMP ;
  81. 'SI' ( 'NEG' TYP_IMP 'CHARGEME' ) ;
  82. VAL_IMPO = VAL_IMP ;
  83. 'FINSI' ;
  84. 'FINSI' ;
  85. 'FINSI' ;
  86. 'SI' ( 'EXISTE' ETAB 'COEF' ) ;
  87. LAMBDA = ETAB.'COEF' ;
  88. 'SINON' ;
  89. LAMBDA = 0.55 ;
  90. 'FINSI' ;
  91. 'SI' ( 'EXISTE' ETAB 'COE2' ) ;
  92. LAMBDA2 = ETAB.'COE2' ;
  93. 'SINON' ;
  94. LAMBDA2 = 0.5 ;
  95. 'FINSI' ;
  96. 'SI' ( 'EXISTE' ETAB 'TINI' ) ;
  97. T_INI = ETAB.'TINI' ;
  98. 'SINON' ;
  99. T_INI = 0. ;
  100. 'FINSI' ;
  101. T_INI = T_INI + T_REP ;
  102. 'SI' ( 'EXISTE' ETAB 'NPAS' ) ;
  103. NBRE_PAS = 'ENTIER' ( ETAB.'NPAS' ) ;
  104. 'SINON' ;
  105. NBRE_PAS = 1 ;
  106. 'FINSI' ;
  107. 'SI' ( 'EXISTE' ETAB 'NSOR' ) ;
  108. N_SOR = 'ENTIER' ( ETAB.'NSOR' ) ;
  109. 'SINON' ;
  110. N_SOR = 1 ;
  111. 'FINSI' ;
  112. 'SI' ( 'EXISTE' ETAB 'PAS' ) ;
  113. T_PAS = ETAB.'PAS' ;
  114. 'SINON' ;
  115. 'SAUTER' 1 'LIGNE' ;
  116. 'MESS' 'IL MANQUE LE PAS DE TEMPS |' ;
  117. 'QUITTER' PROC ;
  118. 'FINSI' ;
  119. T0 = T_INI ;
  120. Q0 = 'TIRER' TAB_FLUX T0 ;
  121. *
  122. *--- "ETAB" EST UNE TABLE DE TABLES, INDICEE PAR LE NUMERO DU PAS
  123. *
  124. NUM_PAS = NREP ;
  125. 'SI' ( 'NON' ( 'EXISTE' ETAB 'REPRISE' ) ) ;
  126. STN = 'TABLE' ;
  127. ETAB.NUM_PAS = 'TABLE' STN ;
  128. STN.'INSTANT' = T0 ;
  129. STN.'TEMPERATURE' = U0 ;
  130. 'SI' ( NIV_MESS '>EG' 1 ) ;
  131. 'SAUTER' 1 'LIGNE' ;
  132. 'MESS' 'SORTIE D UN RESULTAT POUR LE TEMPS :' T0 ;
  133. 'MESS' 'NUMERO DU PAS DE SORTIE :' NUM_PAS ;
  134. 'SI' ( NIV_MESS '>EG' 2 ) ;
  135. 'SAUTER' 1 'LIGNE' ;
  136. 'MESS' 'CHAMP DE TEMPERATURE AU TEMPS :' T0 ;
  137. 'LISTE' U0 ;
  138. 'FINSI' ;
  139. 'FINSI' ;
  140. 'FINSI' ;
  141. SCA1 = 1. - LAMBDA ;
  142. SCA2 = 1. / T_PAS ;
  143. A1 = MAT_COND * LAMBDA ;
  144. A2 = MAT_CAPA * SCA2 ;
  145. A3 = MAT_COND * ( LAMBDA - 1 ) ;
  146. B2 = A2 'ET' A3 ;
  147. MAT_RIGI = A1 'ET' A2 ;
  148. 'SI' ( 'EXISTE' ETAB 'BLOCAGE' ) ;
  149. MAT_RIGI = MAT_RIGI 'ET' MAT_BLOC ;
  150. 'FINSI' ;
  151. IPAS = 0 ;ITEM = 0 ;
  152. *
  153. *--- BOUCLE SUR LES PAS DE TEMPS
  154. *
  155. 'REPETER' BOUC_SOR ;
  156. ITEM = ITEM + 1 ;
  157. IPAS = IPAS + 1 ;
  158. *
  159. *--- TEST SI FIN DE BOUCLE
  160. *
  161. 'SI' ( ITEM '>' NBRE_PAS ) ;
  162. 'QUITTER' BOUC_SOR ;
  163. 'FINSI' ;
  164. T1 = T_INI + ( ITEM * T_PAS ) ;
  165. Q1 = 'TIRER' TAB_FLUX T1 ;
  166. B1 = 'COLI' Q0 (1. - LAMBDA2) Q1 LAMBDA2 ;
  167. B3 = B2 * U0 ;
  168. MAT_CHPO = B1 + B3 ;
  169. 'SI' ( 'EXISTE' ETAB 'IMPOSE' ) ;
  170. 'SI' ( 'EGA' TYP_IMP 'CHARGEME' ) ;
  171. VAL_IMPO = 'TIRER' VAL_IMP T1 ;
  172. 'FINSI' ;
  173. MAT_CHPO = MAT_CHPO + VAL_IMPO ;
  174. 'FINSI' ;
  175. *
  176. *--- CALCUL D'UN PAS
  177. *
  178. U1 = 'RESOUDRE' MAT_RIGI MAT_CHPO ;
  179. U1_LX = 'EXCO' 'LX' U1 'NOID' 'LX' ;
  180. U1_AUX = U1 - U1_LX ;
  181. U1_T = 'ENLEVE' U1 'LX' ;
  182. *
  183. *--- ARCHIVAGE DES RESULTATS DANS "ETAB"
  184. *
  185. 'SI' ( IPAS 'EGA' N_SOR ) ;
  186. NUM_PAS = NUM_PAS + 1 ;
  187. STN = 'TABLE' ;
  188. ETAB.NUM_PAS = 'TABLE' STN ;
  189. STN.'INSTANT' = T1 ;
  190. STN.'TEMPERATURE' = U1_T ;
  191. 'SI' ( NIV_MESS '>EG' 1 ) ;
  192. 'SAUTER' 1 'LIGNE' ;
  193. 'MESS' 'SORTIE D UN RESULTAT POUR LE TEMPS :' T1 ;
  194. 'MESS' 'NUMERO DU PAS DE SORTIE :' NUM_PAS ;
  195. 'SI' ( NIV_MESS '>EG' 2 ) ;
  196. 'SAUTER' 1 'LIGNE' ;
  197. 'MESS' 'CHAMP DE TEMPERATURE AU TEMPS :' T1 ;
  198. 'LISTE' U1 ;
  199. 'FINSI' ;
  200. 'FINSI' ;
  201. IPAS = 0 ;
  202. 'FINSI' ;
  203. T0 = T1 ;
  204. U0 = U1_AUX ;
  205. Q0 = Q1 ;
  206. 'FIN' BOUC_SOR ;
  207. *
  208. *--- ON FAIT LE MENAGE |
  209. *
  210. 'MENAGE' ;
  211. *
  212. 'SI' ( NIV_MESS '>EG' 1 ) ;
  213. 'SAUTER' 1 'LIGNE' ;
  214. 'MESS' '*** FIN DE LA PROCEDURE "TRANSIT2" ***' ;
  215. 'FINSI' ;
  216. 'FIN' PROC ;
  217. 'FINPROC' ETAB ;
  218.  

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