$$$$ TRANSLIN * TRANSLIN PROCEDUR MB234859 24/02/29 21:15:04 11849 'DEBPROC' TRANSLIN PRECED*'TABLE'; *----------------------------------------------------------------------* * * * T R A N S L I N * * --------------- * * * * RESOLUTION D'UN PROBLEME DE THERMIQUE TRANSITOIRE LINEAIRE * * METHODE A UN PAS DE TEMPS ( THETA SCHEMA ) * * * * ETAB, TABLE CONTENANT EN ENTREE : * * * * INDICE 'TEMPERATURES' CHAMP DE TEMPERATURE INITIAL AU PAS 0 * * INDICE 'MOD_THE' OBJET MODELE THERMIQUE * * INDICE 'MOD_CON' OBJET MODELE CONVECTION * * INDICE 'BLOCAGES_THERMIQUES' MATRICE DE BLOCAGE * * INDICE 'MAT_THE' OBJET MATERIAU THERMIQUE. * * CE CHAMP PEUT AVOIR DES COMPOSANTES DE * * TYPE FLOTTANT OU EVOLUTION * * INDICE 'MAT_CON' OBJET MATERIAU CONVECTION * * INDICE 'CHARGEMENT' CHARGEMENT DECRIVANT LES : * * VALEURS DES VARIABLES EXTERNES (EX: TE, * * FLUX,TEMPERATURES IMPOSEES ,...) * * VALEURS DES VARIABLES EXTERNES * * INDICE 'TEMPS0' TEMPS INITIAL (CORRESPOND A INITAL(0) * * INDICE 'TEM_CALC' LISTREEL : TEMPS DES RESULTATS A CALCULER * * INDICE 'RELAXATION_THETA' VALEUR DU 1 COEFFICIENT DE RELAXATION * * (VALEUR PAR DEFAUT 0.5) * * INDICE 'SOUS-RELAXATION' VALEUR DU 2 COEFFICIENT DE RELAXATION * * (VALEUR PAR DEFAUT 0.5) * * * * REMARQUE : CERTAINES VARIABLES ONT DES NOMS IMPOSES. * * LE TEMPS : TEMP * * LA TEMPERATURE : T * * LES TEMPERATURES IMPOSEES : TIMP * * LES FLUX : Q * * * * LE NOM DES AUTRES VARIABLES EST LAISSE AU CHOIX DE * * L'UTILISATEUR * * * * D.R., LE 29 JUIN 1988. VERSION DU 18 JANVIER 1989. * * * *----------------------------------------------------------------------* ERR_VAL = FAUX; ******************************************************************** * Recuperation de l'information contenue dans ETAB * ******************************************************************** *------- Initialisation de la liste des temps à calculer --------- ETAB = PRECED.'WTABLE'; CONTI = PRECED.'CONTINUATION'; ESTIM = PRECED.'ESTIMATION'; * TE_CALC = ETAB.'TEM_CALC' ; DCALC = 'DIME' TE_CALC; *-------------- Calcul du premier pas de calcul ------------------- TEM1 = 'EXTR' TE_CALC 1; TEM0 = ETAB.'TEMPS0' ; T_PAS = TEM1 -TEM0; *----------- Initialisation du champ de temperatures ------------ U0 = CONTI.'TEMPERATURES' ; *---------- y-a-t-il definition des coefficients lambda ---------- 'SI' ( 'EXISTE' ETAB 'RELAXATION_THETA' ) ; LAMBDA1 = ETAB.'RELAXATION_THETA' ; 'SINON' ; LAMBDA1 = 1. ; 'FINSI' ; 'SI' ( 'EXISTE' ETAB 'SOUS-RELAXATION' ) ; LAMBDA2 = ETAB.'SOUS-RELAXATION' ; 'SINON' ; LAMBDA2 = 1. ; 'FINSI' ; *------- Cas particulier ou il n'y a pas de CAPACITE ------------------* *- Ceci correspond au cas ou, au moins, une des 2 composantes 'C ' -* *- et/ou 'RHO ' n'est pas definie dans le materiau (facultatives). -* ICPCONS = WTAB.'CAPACONST' ; IKCONS = WTAB.'CONDCONST' ; LCOMPM = 'EXTRAIRE' ETAB.'MAT_THE' 'COMP' ; ICAPA = ('EXISTE' LCOMPM 'C ') 'ET' ('EXISTE' LCOMPM 'RHO ') ; ICAPA = ICAPA 'OU' ICPCONS ; * En regime stationnaire (sans CAPACITE), on force LAMBDA1 et LAMBDA2 * a 1. Sinon on ne resout pas le bon probleme ! 'SI' ('NON' ICAPA) ; LAMBDA1 = 1. ; LAMBDA2 = 1. ; 'FINSI' ; ******************************************************************** * Rappel des donnees du probleme * ******************************************************************** 'SI' ('EGA' ETAB.'PAS' 1) ; 'SAUTER' 1 'LIGNE'; 'MESS' '---- Probleme de thermique transitoire linéaire ----'; 'MESS' '---- Méthode à un pas de temps (THETA méthode) ----'; 'SAUTER' 1 'LIGNE'; 'MESS' 'Données utilisées du problème :'; 'SAUTER' 1 'LIGNE'; 'MESS' ' Champ de températures à l instant : ' TEM0; 'MESS' ' Coefficient de relaxation : ' LAMBDA1; 'MESS' ' Coefficient de sous-relaxation : ' LAMBDA2; 'SI' ('NEG' ('DIME' ETAB.'BLOCAGES_THERMIQUES') 0); 'MESS' ' Présence de températures imposées.'; 'SINON'; 'MESS' ' Pas de températures imposées.'; 'FINSI'; 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q '); 'MESS' ' Présence de flux.'; 'SINON'; 'MESS' ' Pas de présence de flux.'; 'FINSI'; 'SI' ETAB.'CONVECTION'; 'MESS' ' Présence de convection.'; 'SINON'; 'MESS' ' Pas de terme convectif.'; 'FINSI'; 'SI' ('NON' ICAPA) ; 'MESS' ' Probleme de thermique lineaire stationnaire' ; 'FINSI' ; 'SI' ICPCONS ; 'MESS' ' Présence d une capacite constante.'; 'FINSI'; 'SI' IKCONS ; 'MESS' ' Présence d une conductivite constante.'; 'FINSI'; 'MESS' ' '; 'FINSI'; ******************************************************************** * Boucle sur les pas de temps * ******************************************************************** INOBLOT = 'EGA' ('DIME' ETAB.'BLOCAGES_THERMIQUES') 0 ; 'REPETER' BOUC_SO ; ITE3 = &BOUC_SO; *-------------------- Condition de fin de boucle ------------------ TEMM = (LAMBDA2 * TEM1) + ((1 - LAMBDA2) * TEM0); 'MESS' ' '; 'MESS' '---- Calcul du champ de température au temps :'TEM1; 'MESS' ' '; ***************************************************************** * Gestion des variables externes * ***************************************************************** *--------------- Si convection on cherche TE -------------------- 'SI' ETAB.'CONVECTION'; CH_TE = 'TIRE' (ETAB.'CHARGEMENT') 'TECO' TEMM; 'FINSI'; *--------------------- On cherche les flux ----------------------- 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q '); CH_FL = 'TIRE' (ETAB.'CHARGEMENT') 'Q ' TEMM; 'FINSI'; *------------- Calcul de la matrice de conductivité ---------------- MAT_COND = 'CONDU' ETAB.'MOD_THE' ETAB.'MAT_THE'; 'SI' IKCONS ; MAT_COND = MAT_COND 'ET' ETAB.'CONDUCTIVITE_CONSTANTE' ; 'FINS' ; *----------------- y-a-t-il des blocages --------------------------- 'SI' INOBLOT ; MAT_BLOC = 'EXTR' MAT_COND 'RIGI' 'MULT'; 'SINON'; MAT_BLOC = ETAB.'BLOCAGES_THERMIQUES'; 'FINSI'; 'SI' ('NON' ('EXISTE' (ETAB.'CHARGEMENT') 'TIMP')); CH_TI = 'DEPI' MAT_BLOC 0.; 'SINON'; CH_TI = 'TIRE' (ETAB.'CHARGEMENT') 'TIMP' TEM1; 'FINSI'; *----------------- Calcul de la matrice de capacite ----------------- 'SI' ICAPA ; MAT_CAPA = 'CAPACITE' ETAB.'MOD_THE' ETAB.'MAT_THE'; ETAB.'CAPA_COURANTE' = MAT_CAPA ; 'FINSI' ; 'SI' ICPCONS ; MAT_CAPA = MAT_CAPA 'ET' ETAB.'CAPACITE_CONSTANTE' ; ETAB.'CAPA_COURANTE' = MAT_CAPA ; 'FINSI' ; *---------------- Calcul de la matrice regularisee ----------------- MAT_RIGI = MAT_COND * LAMBDA1 ; B1 = MAT_COND * (LAMBDA1 - 1.) ; 'SI' ICAPA ; A1 = MAT_CAPA / T_PAS ; MAT_RIGI = MAT_RIGI 'ET' A1 ; B1 = B1 'ET' A1 ; 'FINSI' ; MAT_RIGI = MAT_RIGI 'ET' MAT_BLOC ; MAT_CHPO = B1 * U0 ; 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q '); MAT_CHPO = MAT_CHPO + CH_FL ; 'FINSI' ; MAT_CHPO = MAT_CHPO + CH_TI ; ******************************************************************* * On genere les termes de convection * ******************************************************************* 'SI' ETAB.'CONVECTION'; * RIG_CON = 'COND' ETAB.'MOD_CON' ETAB.'MAT_CON' ; CHAL_TE = 'CONV' ETAB.'MOD_CON' ETAB.'MAT_CON' CH_TE ; * MAT_RIGI = MAT_RIGI 'ET' RIG_CON; MAT_CHPO = MAT_CHPO + CHAL_TE; 'FINSI'; *--------------------- Calcul d'un pas ---------------------------- U1 = 'RESOUDRE' MAT_RIGI MAT_CHPO ; *---------------- Appel a une procedure utilisateur ----------------- ETAB.'THER_COURANT' = U1 ; 'SI' (ETAB.'PROCEDURE_PERSO2'); ETAB.'TEMI' = U1 ; PERSO2 PRECED ; ETAB = 'ENLEVER' ETAB 'TEMI' ; 'SI' ('EXIS' PRECED 'ARRET') ; ETAB . 'ARRET' = PRECED . 'ARRET' ; 'FINS' ; 'FINSI'; ******************************************************************* * Reinitialisation des variables en vue du pas suivant * ******************************************************************* 'SI' ((ITE3 + 1) '