1 : * TRANSLIN PROCEDUR PASCAL 14/01/23 21:15:03 7913 2 : 'DEBPROC' TRANSLIN PRECED*'TABLE'; 3 : 4 : *----------------------------------------------------------------------* 5 : * * 6 : * T R A N S L I N * 7 : * --------------- * 8 : * * 9 : * RESOLUTION D'UN PROBLEME DE THERMIQUE TRANSITOIRE LINEAIRE * 10 : * METHODE A UN PAS DE TEMPS ( THETA SCHEMA ) * 11 : * * 12 : * ETAB, TABLE CONTENANT EN ENTREE : * 13 : * * 14 : * INDICE 'TET1' CHAMP DE TEMPERATURE INITIAL AU PAS 0 * 15 : * INDICE 'MOD_THE' OBJET MODELE THERMIQUE * 16 : * INDICE 'MOD_CON' OBJET MODELE CONVECTION * 17 : * INDICE 'BLOCAGES_THERMIQUES' MATRICE DE BLOCAGE * 18 : * INDICE 'MAT_THE' OBJET MATERIAU THERMIQUE. * 19 : * CE CHAMP PEUT AVOIR DES COMPOSANTES DE * 20 : * TYPE FLOTTANT OU EVOLUTION * 21 : * INDICE 'MAT_CON' OBJET MATERIAU CONVECTION * 22 : * INDICE 'CHARGEMENT' CHARGEMENT DECRIVANT LES : * 23 : * VALEURS DES VARIABLES EXTERNES (EX: TE, * 24 : * FLUX,TEMPERATURES IMPOSEES ,...) * 25 : * VALEURS DES VARIABLES EXTERNES * 26 : * INDICE 'TEMPS0' TEMPS INITIAL (CORRESPOND A INITAL(0) * 27 : * INDICE 'TEM_CALC' LISTREEL : TEMPS DES RESULTATS A CALCULER * 28 : * INDICE 'RELAXATION_THETA' VALEUR DU 1 COEFFICIENT DE RELAXATION * 29 : * (VALEUR PAR DEFAUT 0.5) * 30 : * INDICE 'SOUS-RELAXATION' VALEUR DU 2 COEFFICIENT DE RELAXATION * 31 : * (VALEUR PAR DEFAUT 0.5) * 32 : * * 33 : * REMARQUE : CERTAINES VARIABLES ONT DES NOMS IMPOSES. * 34 : * LE TEMPS : TEMP * 35 : * LA TEMPERATURE : T * 36 : * LES TEMPERATURES IMPOSEES : TIMP * 37 : * LES FLUX : Q * 38 : * * 39 : * LE NOM DES AUTRES VARIABLES EST LAISSE AU CHOIX DE * 40 : * L'UTILISATEUR * 41 : * * 42 : * D.R., LE 29 JUIN 1988. VERSION DU 18 JANVIER 1989. * 43 : * * 44 : *----------------------------------------------------------------------* 45 : 46 : ERR_VAL = FAUX; 47 : 48 : ******************************************************************** 49 : * Recuperation de l'information contenue dans ETAB * 50 : ******************************************************************** 51 : 52 : *------- Initialisation de la liste des temps à calculer --------- 53 : ETAB=PRECED.'WTABLE'; 54 : TE_CALC = ETAB.'TEM_CALC' ; 55 : DCALC = 'DIME' TE_CALC; 56 : 57 : *-------------- Calcul du premier pas de calcul ------------------- 58 : 59 : TEM1 = 'EXTR' TE_CALC 1; 60 : TEM0 = ETAB.'TEMPS0' ; 61 : T_PAS = TEM1 -TEM0; 62 : 63 : *----------- Initialisation du champ de temperatures ------------ 64 : 65 : U0 = ETAB.'TET1' ; 66 : 67 : *---------- y-a-t-il definition des coefficients lambda ---------- 68 : 69 : 'SI' ( 'EXISTE' ETAB 'RELAXATION_THETA' ) ; 70 : LAMBDA1 = ETAB.'RELAXATION_THETA' ; 71 : 'SINON' ; 72 : LAMBDA1 = 1. ; 73 : 'FINSI' ; 74 : 'SI' ( 'EXISTE' ETAB 'SOUS-RELAXATION' ) ; 75 : LAMBDA2 = ETAB.'SOUS-RELAXATION' ; 76 : 'SINON' ; 77 : LAMBDA2 = 1. ; 78 : 'FINSI' ; 79 : 80 : *------- Cas particulier ou il n'y a pas de CAPACITE ------------------* 81 : *- Ceci correspond au cas ou, au moins, une des 2 composantes 'C ' -* 82 : *- et/ou 'RHO ' n'est pas definie dans le materiau (facultatives). -* 83 : 84 : LCOMPM = 'EXTRAIRE' ETAB.'MAT_THE' 'COMP' ; 85 : ICAPA = ('EXISTE' LCOMPM 'C ') 'ET' ('EXISTE' LCOMPM 'RHO ') ; 86 : * En regime stationnaire (sans CAPACITE), on force LAMBDA1 et LAMBDA2 87 : * a 1. Sinon on ne resout pas le bon probleme ! 88 : 'SI' ('NON' ICAPA) ; LAMBDA1 = 1. ; LAMBDA2 = 1. ; 'FINSI' ; 89 : 90 : ******************************************************************** 91 : * Rappel des donnees du probleme * 92 : ******************************************************************** 93 : 94 : 'SI' ('EGA' ETAB.'PAS' 1) ; 95 : 'SAUTER' 1 'LIGNE'; 96 : 'MESS' '---- Probleme de thermique transitoire linéaire ----'; 97 : 'MESS' '---- Méthode à un pas de temps (THETA méthode) ----'; 98 : 'SAUTER' 1 'LIGNE'; 99 : 'MESS' 'Données utilisées du problème :'; 100 : 'SAUTER' 1 'LIGNE'; 101 : 'MESS' ' Champ de températures à l instant : ' TEM0; 102 : 'MESS' ' Coefficient de relaxation : ' LAMBDA1; 103 : 'MESS' ' Coefficient de sous-relaxation : ' LAMBDA2; 104 : 'SI' ('NEG' ETAB.'BLOCAGES_THERMIQUES' 'INCONNU'); 105 : 'MESS' ' Présence de températures imposées.'; 106 : 'SINON'; 107 : 'MESS' ' Pas de températures imposées.'; 108 : 'FINSI'; 109 : 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q '); 110 : 'MESS' ' Présence de flux.'; 111 : 'SINON'; 112 : 'MESS' ' Pas de présence de flux.'; 113 : 'FINSI'; 114 : 'SI' ETAB.'CONVECTION'; 115 : 'MESS' ' Présence de convection.'; 116 : 'SINON'; 117 : 'MESS' ' Pas de terme convectif.'; 118 : 'FINSI'; 119 : 'SI' ('NON' ICAPA) ; 120 : 'MESS' ' Probleme de thermique lineaire stationnaire' ; 121 : 'FINSI' ; 122 : 'MESS' ' '; 123 : 'FINSI'; 124 : 125 : ******************************************************************** 126 : * Boucle sur les pas de temps * 127 : ******************************************************************** 128 : 129 : 'REPETER' BOUC_SO ; 130 : ITE3 = &BOUC_SO; 131 : 132 : *-------------------- Condition de fin de boucle ------------------ 133 : 134 : TEMM = (LAMBDA2 * TEM1) + ((1 - LAMBDA2) * TEM0); 135 : 136 : 'MESS' ' '; 137 : 'MESS' '---- Calcul du champ de température au temps :'TEM1; 138 : 'MESS' ' '; 139 : 140 : ***************************************************************** 141 : * Gestion des variables externes * 142 : ***************************************************************** 143 : 144 : *--------------- Si convection on cherche TE -------------------- 145 : 146 : 'SI' ETAB.'CONVECTION'; 147 : CH_TE = 'TIRE' (ETAB.'CHARGEMENT') 'TECO' TEMM; 148 : 'FINSI'; 149 : 150 : *--------------------- On cherche les flux ----------------------- 151 : 152 : 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q '); 153 : CH_FL = 'TIRE' (ETAB.'CHARGEMENT') 'Q ' TEMM; 154 : 'FINSI'; 155 : 156 : *------------- Calcul de la matrice de conductivité ---------------- 157 : 158 : MAT_COND = 'CONDU' ETAB.'MOD_THE' ETAB.'MAT_THE'; 159 : 160 : *----------------- y-a-t-il des blocages --------------------------- 161 : 162 : 'SI' ('EGA' ETAB.'BLOCAGES_THERMIQUES' 'INCONNU') ; 163 : MAT_BLOC = 'EXTR' MAT_COND 'RIGI' 'MULT'; 164 : 'SINON'; 165 : MAT_BLOC = ETAB.'BLOCAGES_THERMIQUES'; 166 : 'FINSI'; 167 : 'SI' ('NON' ('EXISTE' (ETAB.'CHARGEMENT') 'TIMP')); 168 : CH_TI = 'DEPI' MAT_BLOC 0.; 169 : 'SINON'; 170 : CH_TI = 'TIRE' (ETAB.'CHARGEMENT') 'TIMP' TEM1; 171 : 'FINSI'; 172 : 173 : *----------------- Calcul de la matrice de capacite ----------------- 174 : 175 : 'SI' ICAPA ; 176 : MAT_CAPA = 'CAPACITE' ETAB.'MOD_THE' ETAB.'MAT_THE'; 177 : 'FINSI' ; 178 : 179 : *---------------- Calcul de la matrice regularisee ----------------- 180 : 181 : MAT_RIGI = MAT_COND * LAMBDA1 ; 182 : B1 = MAT_COND * (LAMBDA1 - 1.) ; 183 : 'SI' ICAPA ; 184 : A1 = MAT_CAPA / T_PAS ; 185 : MAT_RIGI = MAT_RIGI 'ET' A1 ; 186 : B1 = B1 'ET' A1 ; 187 : 'FINSI' ; 188 : MAT_RIGI = MAT_RIGI 'ET' MAT_BLOC ; 189 : MAT_CHPO = B1 * U0 ; 190 : 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q '); 191 : MAT_CHPO = MAT_CHPO + CH_FL ; 192 : 'FINSI' ; 193 : MAT_CHPO = MAT_CHPO + CH_TI ; 194 : 195 : ******************************************************************* 196 : * On genere les termes de convection * 197 : ******************************************************************* 198 : 199 : 'SI' ETAB.'CONVECTION'; 200 : * RIG_CON = 'COND' ETAB.'MOD_CON' ETAB.'MAT_CON' ; 201 : CHAL_TE = 'CONV' ETAB.'MOD_CON' ETAB.'MAT_CON' CH_TE ; 202 : * MAT_RIGI = MAT_RIGI 'ET' RIG_CON; 203 : MAT_CHPO = MAT_CHPO + CHAL_TE; 204 : 'FINSI'; 205 : 206 : *--------------------- Calcul d'un pas ---------------------------- 207 : 208 : U1 = 'RESOUDRE' MAT_RIGI MAT_CHPO ; 209 : 210 : *---------------- Appel a une procedure utilisateur ----------------- 211 : 212 : ETAB.'THER_COURANT' = U1 ; 213 : 'SI' (ETAB.'PROCEDURE_PERSO2'); 214 : ETAB.'TEMI' = U1 ; 215 : PERSO2 PRECED ; 216 : ETAB = 'ENLEVER' ETAB 'TEMI' ; 217 : 'SI' ('EXIS' PRECED 'ARRET') ; 218 : ETAB . 'ARRET' = PRECED . 'ARRET' ; 219 : 'FINS' ; 220 : 'FINSI'; 221 : 222 : ******************************************************************* 223 : * Reinitialisation des variables en vue du pas suivant * 224 : ******************************************************************* 225 : 226 : 'SI' ((ITE3 + 1) '<EG' DCALC); 227 : TEM0 = TEM1; 228 : TEM1 = 'EXTR' TE_CALC (ITE3 + 1); 229 : T_PAS = TEM1 - TEM0; 230 : U0 = U1 ; 231 : 'SINON'; 232 : 'QUITTER' BOUC_SO; 233 : 'FINSI'; 234 : 235 : *------------------------ On fait le menage ----------------------- 236 : 237 : 'MENAGE' ; 238 : 239 : 'FIN' BOUC_SO ; 240 : 241 : *---------- Initialisation de ETAB en vue d'une reprise ---------- 242 : 243 : STAB = 'TABLE' ; 244 : STAB.'ERREUR' = ERR_VAL ; 245 : STAB.'INITIAL(2)' = U1 ; 246 : 247 : 'FINPROC' STAB ; 248 : 249 : 250 : 251 : 252 :
© Cast3M 2003 - All rights reserved.
Disclaimer