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 ;
© Cast3M 2003 - All rights reserved.
Disclaimer