* TRANSIT1 PROCEDUR FANDEUR 14/10/10 21:15:27 8178 *----------------------------------------------------------------------* * * * T R A N S I T 1 * * --------------- * * * * RESOLUTION D'UN PROBLEME DE THERMIQUE NON-LINEAIRE * * EN REGIME PERMANENT,A L'AIDE DE LA METHODE DU POINT FIXE * * * * ETAB, TABLE CONTENANT EN ENTREE : * * * * INDICE 'SOUSTYPE' THERMIQUE * * INDICE 'COQUE' TYPE D'ELEMENT COQUE * * INDICE 'EPAI' EPAISSEUR DE LA COQUE * * INDICE 'PEAU' PEAU SUR LAQUELLE S'EFFECTUE L'ECHANGE * * INDICE 'BLOCAGE' MATRICE DE BLOCAGE (CREEE PAR "BLOQUE") * * INDICE 'IMPOSE' VALEURS IMPOSEES (CREE PAR "DEPI") * * INDICE 'INSTANT(0)' CHAMP DE TEMPERATURE INITIAL * * OU -INDICE 'CONDUC(0)' TABLE DES VALEURS INITIALES DE LA * * I CONDUCTIVITE INDICEE PAR LES MODELES DES * * I SOUS ZONES * * -INDICE 'CONVEC(0)' TABLE DES VALEURS INITIALES DU COEFFICIENT * * I D'ECHANGE DE CONVECTION INDICEE PAR LES * * I MODELES DES PAROIS DE CONVECTION * * -INDICE 'TEMPEX(0)' TABLE DES TEMPERATURES INITIALES INDICEE * * I PAR LES MODELES DES PAROIS DE CONVECTION * * INDICE 'CONDUCTIVITE' MATRICE DE CONDUCTIVITE * * OU -INDICE 'TABCOND' TABLE DES OBJETS D'EVOLUTION K(T) INDICEE * * PAR LES MODELES DES SOUS ZONES * * INDICE 'CONVECTION' TABLE DES TABLES POUR UNE CONDITION DE * * CONVECTION : * * 'TABCONV1' TABLE DES COEFFICIENTS D'ECHANGE OU TABLE * * DES EVOLUTION DU COEFFICIENT D'ECHANGE * * FONCTION DE LA TEMPERATURE INDICEE PAR LES * * MODELES DES SURFACES DE CONVECTION * * 'TABTE1' TABLE DES TEMPERATURES EXTERIEURES OU TABLE* * DES EVOLUTION DES TEMPERATURES EXTERIEURES * * FONCTION DE LA TEMPERATURE DE SURFACE DE * * CONVECTION INDICEE PAR LES MODELES DES * * SURFACES DE CONVECTION * * INDICE 'FLUX' FLUX EQUIVALENTS * * INDICE 'CRITERE' CRITERE DE CONVERGENCE * * (10E-5 PAR DEFAUT) * * INDICE 'NITER' REACTUALISATION DE LA CONDUCTIVITE TOUTES * * LES NITER ITERATIONS (NITER=1 PAR DEFAUT) * * INDICE 'NIVEAU' NIVEAU DE MESSAGES (NIVEAU=0 PAR DEFAUT) * * INDICE 'ITERMAX' NOMBRE D'ITERATIONS MAXIMUM * * (ITERMAX=10 PAR DEFAUT) * * * * ETAB CONTENANT EN SORTIE : * * * * INDICE 'TEMPERATURE' CHAMP DE TEMPERATURE RESULTAT * * * * D.R., LE 7 JUILLET 1988.VERSION DU 18 JANVIER 1989. * * * *----------------------------------------------------------------------* CONVERGE = ( 1 'EGA' 1 ) ; 'REPETER' PROC 1 ; 'SI' ( 'NEG' ( ETAB.'SOUSTYPE' ) 'THERMIQUE' ) ; 'MESS' 'SOUS TYPAGE INCORRECT DE LA TABLE EN ENTREE|' ; 'QUITTER' PROC ; 'FINSI' ; 'SI' ( 'EXISTE' ETAB 'NIVEAU' ) ; NIV_MESS = ETAB.'NIVEAU' ; 'SINON' ; NIV_MESS = 0 ; 'FINSI' ; 'SI' ( NIV_MESS '>EG' 1 ) ; 'SAUTER' 1 'LIGNE' ; 'FINSI' ; * *--- RECUPERATION DE L'INFORMATION CONTENUE DANS "ETAB" * 'SI' ('EXISTE' ETAB 'COQUE') ; TYP_COQ = ETAB.'COQUE' ; 'SI' ( 'EXISTE' ETAB 'EPAI' ) ; EP = ETAB.'EPAI' ; 'SINON' ; 'SAUTER' 1 'LIGNE' ; 'QUITTER' PROC ; 'FINSI' ; 'FINSI' ; * *-- lecture de la conductivite * 'SI' ('EXISTE' ETAB 'CONDUCTIVITE') ; MAT_COND = ETAB.'CONDUCTIVITE' ; 'SINON' ; 'SI' ( 'EXISTE' ETAB 'TABCOND' ) ; TAB_COND = ETAB.TABCOND ; 'SINON' ; 'QUITTER' PROC ; 'FINSI' ; 'FINSI'; * *-- lecture des conditions limites * 'SI' ('EXISTE' ETAB 'BLOCAGE') ; MAT_BLO = ETAB.'BLOCAGE' ; 'FINSI'; 'SI' ('EXISTE' ETAB 'IMPOSE') ; VAL_IMPO = ETAB.'IMPOSE' ; 'FINSI'; 'FINSI'; * *-- lecture des parametres numeriques * 'SI' ( 'EXISTE' ETAB 'CRITERE' ) ; EPSILON = ETAB.'CRITERE' ; 'SINON' ; EPSILON = 1.E-5 ; 'FINSI' ; 'SI' ( 'EXISTE' ETAB 'NITER' ) ; NBRE_ITE = ETAB.'NITER' ; 'SI' ( NIV_MESS '>EG' 1 ) ; 'SAUTER' 1 'LIGNE' ; 'MESS' 'REACTUALISATION DE LA MATRICE DE CONDUCTIVITE TOUTES ' 'LES ' NBRE_ITE 'ITERATIONS' ; 'FINSI' ; 'SINON' ; NBRE_ITE = 1 ; 'FINSI' ; 'SI' ( 'EXISTE' ETAB 'ITERMAX' ) ; ITER_MAX = ETAB.'ITERMAX' ; 'SINON' ; ITER_MAX = 10 ; 'FINSI' ; * *-- gestion de la convection * 'SI' ( 'EXISTE' ETAB 'CONVECTION' ) ; CTAB = ETAB.'CONVECTION' ; 'SI' ( 'EXISTE' CTAB 'TABCONV1' ) ; TAB_CON1 = CTAB.'TABCONV1' ; 'SI' ('EXISTE' CTAB 'TABTE1') ; TAB_TE1 = CTAB.'TABTE1' ; 'SINON' ; TAB_TE1 = TABLE ; 'FINSI' ; 'SINON' ; 'QUITTER' PROC ; 'FINSI' ; 'FINSI' ; * *-- gestion du champ de temperature initial * 'SI' ( 'EXISTE' ETAB 'CONDUC(0)' ) ; TCND0 = ETAB.'CONDUC(0)' ; 'SI' ( 'EXISTE' ETAB 'COQUE' ) ; 'SI' ( 'EXISTE' ETAB 'PEAU' ) ; PE = ETAB.'PEAU' ; 'SINON' ; 'QUITTER' PROC ; 'FINSI' ; 'FINSI' ; * *-- calcul de MAT_CND1 : matrice de conduction * ICOND = 0 ; 'REPETE' BOUCOND NCOND ; ICOND = ICOND + 1 ; MOD1 = IDCOND.ICOND ; VCOND = TCND0.MOD1 ; 'SI' ('EXISTE' ETAB 'COQUE' ) ; 'SINON' ; 'FINSI' ; 'SI' ('EXISTE' ETAB 'COQUE' ) ; RIG_COND = 'CONDUCTIVITE' MOD1 MAT_CON PE ; 'SINON' ; RIG_COND = 'CONDUCTIVITE' MOD1 MAT_CON ; 'FINSI' ; 'SI' ('EGA' ICOND 1 ) ; MAT_CND1 = RIG_COND ; 'SINON' ; MAT_CND1 = MAT_CND1 'ET' RIG_COND ; 'FINSI' ; 'FIN' BOUCOND ; * *-- test d'existance de convec(0) . Calcul de CHAL_TE1 (flux) * et de RIG_CON1 (conductivite) * 'SI' ('EXISTE' ETAB 'CONVEC(0)' ) ; T_CV0 = ETAB.CONVEC(0) ; 'SI' ( 'EXISTE' ETAB 'COQUE' ) ; PE = ETAB.'PEAU' ; 'FINSI' ; 'SI' ('EXISTE' ETAB 'TEMPEX(0)' ) ; T_TE0 = ETAB.TEMPEX(0) ; 'SINON' ; T_TE0 = TABLE ; * 'MESS' '*** LA DONNEE DE LA TEMP. INIT. EST INCORECTE| *** ' ; * 'QUITTER' PROC ; 'FINSI' ; * * 'SI' ('NEG' NCONV NTE ) ; * 'SAUTER' 1 'LIGNE' ; * 'MESS' '*** LA DONNEE DE LA CONVECTION EST INCORECTE| *** ' ; * 'QUITTER' PROC ; * 'FINSI' ; ICONV = 0 ; 'REPETE' BOUCONV NCONV ; ICONV = ICONV + 1 ; MOD1 = IDCONV.ICONV ; VCONV = T_CV0.MOD1 ; 'SI' ('EXISTE' ETAB 'COQUE' ) ; RIG_CONV = 'CONDUCTIVITE' MOD1 MAT_CONV PE ; 'SINON' ; RIG_CONV = 'CONDUCTIVITE' MOD1 MAT_CONV ; 'FINSI' ; 'SI' ('EGA' ICONV 1 ) ; RIG_CON1 = RIG_CONV ; 'SINON' ; RIG_CON1 = RIG_CON1 'ET' RIG_CONV ; 'FINSI' ; 'FIN' BOUCONV ; 'SI' (NTE 'NEG' 0 ) ; ICONV = 0 ; 'REPETE' BOUCTE NTE ; ICONV = ICONV + 1 ; MOD1 = IDTE.ICONV ; VCONV = T_CV0.MOD1 ; VTE = T_TE0.MOD1 ; 'SI' ('EXISTE' ETAB 'COQUE' ) ; CHAL_TEM = 'CONVECTION' MOD1 MAT_CONV 'T' VTE PE ; 'SINON' ; CHAL_TEM = 'CONVECTION' MOD1 MAT_CONV 'T' VTE ; 'FINSI' ; 'SI' ('EGA' ICONV 1 ) ; CHAL_TE1 = CHAL_TEM ; 'SINON' ; CHAL_TE1 = CHAL_TE1 'ET' CHAL_TEM ; 'FINSI' ; 'FIN' BOUCTE ; 'FINSI' ; * *-- assemblage : convection avec le reste * 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ; MAT_CND1 = MAT_CND1 'ET' RIG_CON1 'ET' MAT_BLO ; 'SINON' ; MAT_CND1 = MAT_CND1 'ET' RIG_CON1 ; 'FINSI' ; 'SI' (NTE 'NEG' 0) ; FF1 = CHAL_TE1 ; FF1 = FF1 'ET' QTE_FLUX ; 'FINSI' ; 'SI' ('EXISTE' ETAB 'IMPOSE' ) ; FF1 = FF1 'ET' VAL_IMPO ; 'FINSI' ; 'SINON' ; FF1 = QTE_FLUX ; 'SI' ('EXISTE' ETAB 'IMPOSE') ; FF1 = FF1 'ET' VAL_IMPO ; 'FINSI' ; 'SINON' ; 'SI' ('EXISTE' ETAB 'IMPOSE'); FF1 = VAL_IMPO ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * *-- cas ou il n'y a pas de convection : assemblage sans convection * 'SINON' ; 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ; MAT_CND1 = MAT_CND1 'ET' MAT_BLO ; 'FINSI' ; FF1 = QTE_FLUX ; 'SI' ('EXISTE' ETAB 'IMPOSE') ; FF1 = FF1 'ET' VAL_IMPO ; 'FINSI' ; 'SINON' ; FF1 = VAL_IMPO ; 'FINSI' ; 'FINSI' ; * 'FINSI' ; * *-- resolution : calcul de U1 * U1 = 'RESOUDRE' MAT_CND1 FF1 ; * 'SI' ('EXISTE' ETAB 'COQUE' ) ; U1_T = 'ENLEVE' U1 'LX' ; U1_TM = (U1_T1 + U1_T2 + U1_T3)/3.0 ; 'SINON' ; 'FINSI' ; * 'SI' ( NIV_MESS '>EG' 2) ; 'SAUTER' 1 'LIGNE' ; 'MESS' 'CHAMP THERMIQUE AVANT ITERATION ' ; 'LISTE' U1_T ; 'FINSI' ; * *-- si il n'existe pas CONDUC(0) * 'SINON' ; * *-- lecture de U1 * 'SI' ('EXISTE' ETAB 'INSTANT(0)' ) ; U1_T = ETAB.'INSTANT(0)' ; U1 = U1_T ; 'SI' ('EXISTE' ETAB 'COQUE' ) ; U1_T = 'ENLEVE' U1 'LX' ; U1_TM = (U1_T1 + U1_T2 + U1_T3)/3.0 ; 'FINSI' ; 'SINON' ; 'QUITTER' PROC ; 'FINSI' ; * 'FINSI' ; * *--- ON RECHERCHE LA SOLUTION PAR ITERATIONS SUCCESSIVES... * NUM_ITE = 0 ; IFOIS = 0 ; 'REPETER' BOUC_1 ; NUM_ITE = NUM_ITE + 1 ; IFOIS = IFOIS + 1 ; 'SI' ( NIV_MESS '>EG' 1 ) ; 'SAUTER' 1 'LIGNE' ; 'MESS' 'ITERATION NUMERO :' IFOIS ; 'FINSI' ; * *--calcul des matrices MAT_CND1 et FF1. * *-- conductivite * 'SI' ('EXISTE' ETAB 'CONDUCTIVITE') ; 'SI' ( 'EGA' IFOIS 1 ) ; MAT_CND1 = MAT_COND ; 'FINSI' ; 'SINON' ; ICOND = 0 ; 'REPETE' BOUCOND NCOND ; ICOND = ICOND + 1 ; MOD1 = IDCOND.ICOND ; VCOND = TAB_COND.MOD1 ; 'SI' ('EGA' TYPC 'EVOLUTIO' ) ; 'SI' ('EXISTE' ETAB 'COQUE' ) ; 'SINON' ; 'FINSI' ; 'SINON' ; CCC = VCOND ; 'FINSI' ; 'SI' ('EXISTE' ETAB 'COQUE' ) ; 'SINON' ; 'FINSI' ; MI = 'CONDUCTION' MOD1 MMM ; *-- actualisation de la conductivite 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU' ( IFOIS 'EGA' 1 ) ) ; 'SI' ('EGA' ICOND 1 ) ; MAT_CND1 = MI ; 'SINON' ; MAT_CND1 = MAT_CND1 'ET' MI ; 'FINSI' ; *-- non actualisation 'SINON' ; 'SI' ('EGA' ICOND 1 ) ; MAT_CND2 = MI ; 'SINON' ; MAT_CND2 = MAT_CND2 'ET' MI ; 'FINSI' ; 'FINSI' ; 'FIN' BOUCOND ; 'FINSI' ; * *-- en cas de convection * 'SI' ('EXISTE' ETAB 'CONVECTION' ) ; 'SI' ( 'EXISTE' ETAB 'COQUE' ) ; 'SI' ( 'EXISTE' ETAB 'PEAU' ) ; PE = ETAB.'PEAU' ; 'SINON' ; 'QUITTER' PROC ; 'FINSI' ; CHT_CONV = U1_TM ; 'SI' ('EGA' PE 'TINF') ; 'FINSI' ; 'SI' ('EGA' PE 'TSUP') ; 'FINSI' ; 'SINON' ; CHT_CONV = U1_T ; 'FINSI' ; * 'SI' ('NEG' NCONV NTE ) ; * 'SAUTER' 1 'LIGNE' ; * 'MESS' '*** LA DONNEE DE LA CONVECTION EST INCORECTE| *** ' ; * 'QUITTER' PROC ; * 'FINSI' ; ICONV = 0 ; 'REPETE' BOUCONV NCONV ; ICONV = ICONV + 1 ; MOD1 = IDCONV.ICONV ; VCONV = TAB_CON1.MOD1 ; 'SI' ('EGA' TYPC 'EVOLUTIO') ; 'SINON' ; 'FINSI' ; MOD_CONV = MOD1 ; 'SI' ('EXISTE' ETAB 'COQUE' ) ; RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV PE; 'SINON' ; RIG_CONV = 'CONDUCTIVITE' MOD_CONV MAT_CONV ; 'FINSI' ; * mise a jour de la conductivite 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU' ( IFOIS 'EGA' 1 ) ) ; 'SI' ('EGA' ICONV 1 ) ; RIG_CON1 = RIG_CONV ; 'SINON' ; RIG_CON1 = RIG_CON1 'ET' RIG_CONV ; 'FINSI' ; * non mise a jour 'SINON' ; 'SI' ('EGA' ICONV 1 ) ; RIG_CON2 = RIG_CONV ; 'SINON' ; RIG_CON2 = RIG_CON2 'ET' RIG_CONV ; 'FINSI' ; 'FINSI' ; 'FIN' BOUCONV ; 'SI' (NTE 'NEG' 0) ; ICONV = 0 ; 'REPETE' BOUCTE NTE ; ICONV = ICONV + 1 ; MOD1 = IDTE.ICONV ; VCONV = TAB_CON1.MOD1 ; 'SI' ('EGA' TYPC 'EVOLUTIO') ; 'SINON' ; 'FINSI' ; VTE = TAB_TE1.MOD1 ; 'SI' ('EGA' TYPC 'EVOLUTIO') ; 'SINON' ; VAL_TE = VTE ; 'FINSI' ; MOD_CONV = MOD1 ; 'SI' ( 'NEG' TYP_TE 'CHPOINT ' ) ; 'SI' ('EXISTE' ETAB 'COQUE' ) ; CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE PE; 'SINON' ; CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV 'T' VAL_TE ; 'FINSI' ; 'SINON' ; 'SI' ('EXISTE' ETAB 'COQUE' ) ; CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV VAL_TE PE; 'SINON' ; CHAL_TEM = 'CONVECTION' MOD_CONV MAT_CONV VAL_TE ; 'FINSI' ; 'FINSI' ; * mise a jour du flux 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU' ( IFOIS 'EGA' 1 ) ) ; 'SI' ('EGA' ICONV 1 ) ; CHAL_TE1 = CHAL_TEM ; 'SINON' ; CHAL_TE1 = CHAL_TE1 'ET' CHAL_TEM ; 'FINSI' ; 'FINSI' ; 'FIN' BOUCTE ; 'FINSI' ; * *-- assemblage : convection avec le reste et resolution * 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU' ( IFOIS 'EGA' 1 ) ) ; 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ; MAT_CND1 = MAT_CND1 'ET' RIG_CON1 'ET' MAT_BLO ; 'SINON' ; MAT_CND1 = MAT_CND1 'ET' RIG_CON1 ; 'FINSI' ; 'SI' (NTE 'NEG' 0 ) ; FF1 = CHAL_TE1 ; FF1 = FF1 'ET' QTE_FLUX ; 'FINSI' ; 'SI' ('EXISTE' ETAB 'IMPOSE' ) ; FF1 = FF1 'ET' VAL_IMPO ; 'FINSI' ; 'SINON' ; FF1 = QTE_FLUX ; 'SI' ('EXISTE' ETAB 'IMPOSE') ; FF1 = FF1 'ET' VAL_IMPO ; 'FINSI' ; 'SINON' ; 'SI' ('EXISTE' ETAB 'IMPOSE'); FF1 = VAL_IMPO ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * * resolution U2 = 'RESOUDRE' MAT_CND1 FF1 ; NUM_ITE = 0 ; * non mise a jour 'SINON' ; 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ; MAT_CND2 = MAT_CND2 'ET' RIG_CON2 'ET' MAT_BLO ; 'SINON' ; MAT_CND2 = MAT_CND2 'ET' RIG_CON2 ; 'FINSI' ; FF2 = (MAT_CND1 * U1_T ) - (MAT_CND2 * U1_T ) ; FF3 = FF1 et FF2 ; * resolution U2 = 'RESOUDRE' MAT_CND1 FF3 ; 'FINSI' ; * *-- cas ou il n'y a pas de convection : assemblage et resolution * 'SINON' ; 'SI' ( 'EGA' IFOIS 1 ) ; FF1 = QTE_FLUX ; 'SI' ('EXISTE' ETAB 'IMPOSE') ; FF1 = FF1 'ET' VAL_IMPO ; 'FINSI' ; 'SINON' ; FF1 = VAL_IMPO ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * mise a jour 'SI' ( ( NUM_ITE 'EGA' NBRE_ITE ) 'OU' ( IFOIS 'EGA' 1 ) ) ; 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ; MAT_CND1 = MAT_CND1 'ET' MAT_BLO ; 'FINSI' ; * resolution U2 = 'RESOUDRE' MAT_CND1 FF1 ; NUM_ITE = 0 ; * non mise a jour 'SINON' ; 'SI' ('EXISTE' ETAB 'BLOCAGE' ) ; MAT_CND2 = MAT_CND2 'ET' MAT_BLO ; 'FINSI' ; FF3 = (MAT_CND1 * U1_T ) - (MAT_CND2 * U1_T ) ; FF4 = FF1 et FF3 ; *-- resolution U2 = 'RESOUDRE' MAT_CND1 FF4 ; 'FINSI' ; 'FINSI'; * 'SI' ('EXISTE' ETAB 'COQUE' ) ; U2_T = 'ENLEVE' U2 'LX' ; U2_TM = (U2_T1 + U2_T2 + U2_T3)/3.0 ; 'SINON' ; 'FINSI' ; 'SI' ( NIV_MESS '>EG' 2) ; 'SAUTER' 1 'LIGNE' ; 'MESS' 'CHAMP THERMIQUE A L ITERATION :' IFOIS ; 'LISTE' U2_T ; 'FINSI' ; * MAIL_CHP = 'EXTRAIRE' U1_T 'MAIL' ; * SOM_COMP*'FLOTTANT' = 0. ; NUM_NOE*'ENTIER' = 0 ; IFFFF*'ENTIER' = 0 ; * *--- BOUCLE SUR LES POINTS * 'REPETER' BOUC_POI ; NUM_NOE = NUM_NOE + 1 ; * *--- TEST SI FIN DE BOUCLE * 'SI' ( NUM_NOE '>' NBRE_NOE ) ; 'QUITTER' BOUC_POI ; 'FINSI' ; * 'SI' ('EXISTE' ETAB 'COQUE' ) ; FLO_EX1I = 'EXTRAIRE' U1_T 'TINF' POI_EXTR ; FLO_EX1S = 'EXTRAIRE' U1_T 'TSUP' POI_EXTR ; FLO_EX1M = 'EXTRAIRE' U1_T 'T ' POI_EXTR ; FLO_EXT1 = (FLO_EX1I + FLO_EX1S +FLO_EX1M)/3.0 ; FLO_EX2I = 'EXTRAIRE' U2_T 'TINF' POI_EXTR ; FLO_EX2S = 'EXTRAIRE' U2_T 'TSUP' POI_EXTR ; FLO_EX2M = 'EXTRAIRE' U2_T 'T ' POI_EXTR ; FLO_EXT2 = (FLO_EX2I+ FLO_EX2S +FLO_EX2M)/3.0 ; 'SINON'; FLO_EXT1 = 'EXTRAIRE' U1_T 'T' POI_EXTR ; FLO_EXT2 = 'EXTRAIRE' U2_T 'T' POI_EXTR ; 'FINSI'; DIFF_FLO = FLO_EXT2 - FLO_EXT1 ; ADIF_FLO = 'ABS' DIFF_FLO ; * 'SI' ( ( ADIF_FLO / AFL_EXT1 ) '<' EPSILON ) ; IFFFF = IFFFF + 1 ; 'FINSI' ; 'FIN' BOUC_POI ; * 'SI' ( IFFFF 'EGA' NBRE_NOE ) ; CONVERGE = VRAI ; 'SINON' ; CONVERGE = FAUX ; 'FINSI' ; * *--- LE CRITERE DE CONVERGENCE EST-IL SATISFAIT ? * 'SI' ( CONVERGE ) ; 'SI' ( NIV_MESS '>EG' 1 ) ; 'SAUTER' 1 'LIGNE' ; 'MESS' 'CONVERGENCE A L ITERATION :' IFOIS ; 'MESS' 'CRITERE DE CONVERGENCE :' EPSILON ; 'FINSI' ; 'QUITTER' BOUC_1 ; 'FINSI' ; 'SI' ( 'EXISTE' ETAB 'COQUE' ); U1_TM = U2_TM ; 'FINSI'; U1_T = U2_T ; 'SI' ( IFOIS '>' ITER_MAX ) ; 'SAUTER' 1 'LIGNE' ; 'MESS' 'PAS DE CONVERGENCE A L ITERATION :' ITER_MAX ; 'QUITTER' BOUC_1 ; 'FINSI' ; 'FIN' BOUC_1 ; * *--- ARCHIVAGE DES RESULTATS DANS "STAB" * ETAB.'TEMPERATURE' = U2_T ; * *--- ON FAIT LE MENAGE... * *'MENAGE' ; 'SI' ( NIV_MESS '>EG' 1 ) ; 'SAUTER' 1 'LIGNE' ; 'FINSI' ; 'FIN' PROC ; 'FINPROC' ETAB ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales