* fichier : konv_ther_cons.dgibi
***********************************************************
**** APPROCHE VF "Cell-Centred Formulation" pour la ****
**** solution des ****
**** Equations d'Euler pour un gaz parfait ****
**** OPERATEURS PRET, KONV ****
**** ****
**** Cas gaz monoespece "thermally perfect" ****
**** Transport de scalaires passifs ****
**** Consistence ****
**** ****
**** Methodes: VLH, Colella-Glaz ****
**** ****
**** A. BECCANTINI DRN/DMT/SEMT/TTMF FEVRIER 2000 ****
***********************************************************
'OPTION' 'DIME' 2 ;
'OPTION' 'ELEM' QUA4 ;
'OPTION' 'ECHO' 0 ;
'OPTION' 'TRAC' 'X' ;
*
*** GRAPH
*
GRAPH = FAUX ;
* GRAPH = VRAI ;
**** Cas monoespece : la table proprieté de gaz
PGAZ = 'TABLE' ;
PGAZ2 = 'TABLE' ;
*
**** Ordre des polynoms cv_i
*
PGAZ . 'NORD' = 4 ;
PGAZ2 . 'NORD' = 4 ;
*
**** Especes qui sont dans les equations d'Euler (rien)
*
*
**** Espece qui n'y est pas
*
PGAZ . 'ESPNEULE' = 'H2 ';
PGAZ2 . 'ESPNEULE' = 'H2 ';
*
PGAZ . 'H2 ' = 'TABLE' ;
PGAZ2 . 'H2 ' = 'TABLE' ;
*
**** R (J/Kg/K)
*
PGAZ . 'H2 ' . 'R' = 4130.0 ;
PGAZ2 . 'H2 ' . 'R' = 4130.0 ;
*
**** Regressions polynomials
*
PGAZ . 'H2 ' . 'A' = 'PROG' 9834.91866 0.54273926 0.000862203836
-2.37281455E-07 1.84701105E-11 ;
PGAZ2 . 'H2 ' . 'A' = 'PROG' 9834.91866 0.54273926 0.000862203836
-2.37281455E-07 1.84701105E-11 ;
*
**** "Enthalpies" (ou energies) de formations a OK (J/Kg)
* Note: ce sont des entites numeriques
*
PGAZ . 'H2 ' . 'H0K' = -4.195D6 ;
PGAZ2 . 'H2 ' . 'H0K' = -4.195D6 ;
* PGAZ2: transport de scalaires passifs
PGAZ2 . 'SCALPASS' = 'MOTS' 'TUTU' 'TATA' ;
***************************
***** DOMAINE SPATIAL ****
***************************
A1 = 0.0D0 0.0D0;
A2 = 1.0D0 0.0D0;
A3 = 2.0D0 0.0D0;
A4 = 2.0D0 1.0D0;
A5 = 1.0D0 1.0D0;
A6 = 0.0D0 1.0D0;
L12 = A1 'DROIT' 1 A2;
L23 = A2 'DROIT' 1 A3;
L34 = A3 'DROIT' 1 A4;
L45 = A4 'DROIT' 1 A5;
L56 = A5 'DROIT' 1 A6;
L61 = A6 'DROIT' 1 A1;
L25 = A2 'DROIT' 1 A5;
DOM10 = 'DALL' L12 L25 L56 L61
'PLANE';
DOM20 = 'DALL' L23 L34 L45 ('INVERSE' L25)
'PLANE';
*
*** Point ou on controlle la consistence
*
P10 = 1.0 0.5;
*
*** Etats gauche et droite
*
rogd = 1.412 ;
pgd = 1.17D6 ;
ungd = 8.34 ;
utgd = 18.2 ;
tutugd = 14.9 ;
tatagd = 23.8 ;
*
**** tg
*
tgd = pgd '/' (rogd * (PGAZ . 'H2 ' . 'R')) ;
*
**** gamg, gamd , htg , htd
*
*
A0H2 = 'EXTRAIRE' (PGAZ . 'H2 ' . 'A') 1 ;
A1H2 = 'EXTRAIRE' (PGAZ . 'H2 ' . 'A') 2 ;
A2H2 = 'EXTRAIRE' (PGAZ . 'H2 ' . 'A') 3 ;
A3H2 = 'EXTRAIRE' (PGAZ . 'H2 ' . 'A') 4 ;
A4H2 = 'EXTRAIRE' (PGAZ . 'H2 ' . 'A') 5 ;
T = tgd ;
T2 = T * T ;
T3 = T2 * T ;
T4 = T3 * T ;
T5 = T4 * T ;
cvgd = A0H2 '+' (A1H2 * T) '+' (A2H2 * T2) '+' (A3H2 * T3) '+'
(A4H2 * T4) ;
ETGd = (A0H2 * T) '+' (A1H2 * T2 '/' 2) '+' (A2H2 * T3 '/' 3) '+'
(A3H2 * T4 '/' 4) '+' (A4H2 * T5 '/' 5) ;
ecingd = 0.5D0 '*' ((ungd '*' ungd) '+' (utgd '*' utgd));
retgd = rogd '*' (ETGd '+' ecingd) ;
gamgd = (cvgd '+' (PGAZ . 'H2 ' . 'R')) '/' cvgd ;
*
*** flux en (n,t)
*
f1gd = ungd '*' rogd ;
f2gd = (rogd '*' (ungd '*' ungd)) '+' pgd ;
f3gd = rogd '*' ungd '*' utgd ;
f4gd = ungd '*' (retgd '+' pgd);
ftutugd = ungd '*' rogd '*' tutugd ;
ftatagd = ungd '*' rogd '*' tatagd ;
****************************************************
****************************************************
******** Boucle sur les angles *********
****************************************************
****************************************************
DANGLE = 360 '/' 7.15;
ANGLE = 11.3 ;
'REPETER' BLOC 8;
*
*** Rotation
*
ANGLE = ANGLE '+' DANGLE;
ORIG = 0.0D0 0.0D0;
MESSAGE;
MESSAGE (CHAIN 'Angle de rotation= ' ANGLE);
MESSAGE;
DOM1 = DOM10 'TOURNER' ANGLE ORIG;
DOM2 = DOM20 'TOURNER' ANGLE ORIG;
P1 = P10 'TOURNER' ANGLE ORIG;
'ELIMINATION' (DOM1 ET DOM2) 1D-6;
DOMTOT = DOM1 ET DOM2;
$DOMTOT = 'MODELISER' DOMTOT 'EULER';
$DOM1 = 'MODELISER' DOM1 'EULER';
$DOM2 = 'MODELISER' DOM2 'EULER';
TDOMTOT = 'DOMA' $DOMTOT 'VF';
TDOM1 = 'DOMA' $DOM1 'VF';
TDOM2 = 'DOMA' $DOM2 'VF';
MDOM1 = TDOM1 . 'QUAF' ;
MDOM2 = TDOM2 . 'QUAF' ;
MDOMTOT = TDOMTOT . 'QUAF' ;
'ELIM' (MDOMTOT 'ET' MDOM1 'ET' MDOM2) 1.E-6 ;
'SI' GRAPH;
'TRACER' (('DOMA' $DOMTOT 'MAILLAGE' ) 'ET'
('DOMA' $DOMTOT 'FACEL') 'ET' P1) 'TITRE' 'Domaine et FACEL';
'FINSI' ;
*
**** Redefinition de P1 dans $DOMTOT 'FACE'
*
P1 = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' P1;
***********************
**** Les CHPOINTs ****
***********************
uxgd = (ungd '*' ('COS' ANGLE)) '-' (utgd '*' ('SIN' ANGLE));
uygd = (ungd '*' ('SIN' ANGLE)) '+' (utgd '*' ('COS' ANGLE));
RN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' rogd;
RN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' rogd;;
RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (RN1 'ET' RN2);
VN1 = 'KCHT' $DOM1 'VECT' 'CENTRE' (uxgd uygd);
VN2 = 'KCHT' $DOM2 'VECT' 'CENTRE' (uxgd uygd);
VN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' (VN1 'ET' VN2);
PN1 = 'KCHT' $DOM1 'SCAL' 'CENTRE' pgd;
PN2 = 'KCHT' $DOM2 'SCAL' 'CENTRE' pgd;
PN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' (PN1 'ET' PN2);
SCAN1 = 'KCHT' $DOM1 'VECT' 'CENTRE'
'COMP' (PGAZ2 . 'SCALPASS') (tutugd tatagd) ;
SCAN2 = 'KCHT' $DOM2 'VECT' 'CENTRE'
'COMP' (PGAZ2 . 'SCALPASS') (tutugd tatagd) ;
SCAN = 'KCHT' $DOMTOT 'VECT' 'CENTRE'
'COMP' (PGAZ2 . 'SCALPASS') (SCAN1 'ET' SCAN2);
***************************
**** L'operateur PRET****
***************************
ORDESP = 1;
ORDTEM = 1;
ROF VITF PF = 'PRET' 'PERFTEMP' ORDESP ORDTEM
$DOMTOT PGAZ RN VN PN ;
ROF2 VITF2 PF2 SCAF = 'PRET' 'PERFTEMP' ORDESP ORDTEM
$DOMTOT PGAZ2 RN VN PN SCAN ;
GEOP1 = ('DOMA' $DOMTOT 'FACEL') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
GEOP2 = ('DOMA' $DOMTOT 'FACE') 'ELEM' 'APPUYE' 'LARGEMENT' P1;
REFGEOP1 = 'REDU' VITF GEOP2;
*
**** Orientation de la normal n de castem par raport a la
* notre; t est par consequence
*
NCOS = 'EXTRAIRE' REFGEOP1 'NX' 1 1 1;
NSIN = 'EXTRAIRE' REFGEOP1 'NY' 1 1 1;
'SI' (('ABS' NCOS) > ('ABS' NSIN));
ORIENT = ('COS' ANGLE) '/' NCOS;
'SINON';
ORIENT = ('SIN' ANGLE) '/' NSIN;
'FINSI' ;
ORIENT = 'SIGNE' 'FLOTTANT' ORIENT;
**************************
**** 'KONV', TEST VLH ****
**************************
TFLUX DT = 'KONV' 'VF' 'PERFTEMP' 'FLUX' 'VLH'
$DOMTOT PGAZ ('MOTS' 'RN' 'RUX' 'RUY' 'RETN') ROF VITF PF ;
*
**** Les flux aux interfaces sont dans de
* CHPOINT FACE
*
FLUX1 = 'EXCO' TFLUX 'RN';
FLUX2X = 'EXCO' TFLUX 'RUX';
FLUX2Y = 'EXCO' TFLUX 'RUY';
FLUX3 = 'EXCO' TFLUX 'RETN';
FLUX2N = (FLUX2X '*' ('COS' ANGLE)) '+' (FLUX2Y * ('SIN' ANGLE)) ;
FLUX2T = (FLUX2Y '*' ('COS' ANGLE)) '-' (FLUX2X * ('SIN' ANGLE)) ;
*
**** Test 'KONV'
*
f1 = 'EXTRAIRE' FLUX1 'SCAL' P1;
ERRO = 'ABS' (1D-12 '*' f1gd);
LOGI1 = ('ABS' ((f1 '*' ORIENT) '-' f1gd)) < ERRO;
f2 = 'EXTRAIRE' FLUX2N 'SCAL' P1;
ERRO = 'ABS' (1D-12 '*' f2gd);
LOGI2 = ('ABS' ((f2 '*' ORIENT) '-' f2gd)) < ERRO;
LOGI1 = LOGI1 'ET' LOGI2;
f3 = 'EXTRAIRE' FLUX2T 'SCAL' P1;
ERRO = 'ABS' (1D-11 '*' f3gd) ;
LOGI2 = ('ABS' ((f3 '*' ORIENT) '-' f3gd)) < ERRO;
LOGI1 = LOGI1 'ET' LOGI2;
f4 = 'EXTRAIRE' FLUX3 'SCAL' P1;
ERRO = 'ABS' (1D-12 '*' f4gd) ;
LOGI2 = ('ABS' ((f4 '*' ORIENT) '-' f4gd)) < ERRO;
LOGI1 = LOGI1 'ET' LOGI2;
'SI' ('NON' LOGI1);
'MESSAGE' ;
'MESSAGE' 'OPERATEUR KONV';
'MESSAGE' ('CHAINE' METO);
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'df1 ' ('ABS' (f1gd '-' (ORIENT '*'f1)))
' f1 ' f1);
'MESSAGE' ('CHAINE' 'df2 ' ('ABS' (f2gd '-' (ORIENT '*'f2)))
' f2 ' f2);
'MESSAGE' ('CHAINE' 'df3 ' ('ABS' (f3gd '-' (ORIENT '*'f3)))
' f3 ' f3);
'MESSAGE' ('CHAINE' 'df4 ' ('ABS' (f4gd '-' (ORIENT '*'f4)))
' f4 ' f4);
'ERREUR' 5;
'FINSI' ;
************************************************
***** Splitting des scalaires passifs **********
************************************************
TFLUX2 DT = 'KONV' 'VF' 'PERFTEMP' 'FLUX' 'VLH'
$DOMTOT PGAZ2 ('MOTS' 'RN' 'RUX' 'RUY' 'RETN' 'TUTU' 'TATA')
ROF VITF PF SCAF ;
ERRO = ( 'MAXIMUM' (TFLUX '-'
('EXCO' ('MOTS' 'RN' 'RUX' 'RUY' 'RETN') TFLUX2)) 'ABS') ;
'SI' (ERRO > 1.0D-15);
'MESSAGE' 'Probleme dans les transport de scalaires passifs' ;
'ERREUR' 5;
'FINSI' ;
*
**** Test 'KONV'
*
fceltutu = 'EXTRAIRE' TFLUX2 'TUTU' P1;
LOGI1 = ('ABS' ((fceltutu '*' ORIENT) '-' ftutugd)) <
('ABS' (1.0D-12 * fceltutu)) ;
fceltata = 'EXTRAIRE' TFLUX2 'TATA' P1;
LOGI2 = ('ABS' ((fceltata '*' ORIENT) '-' ftatagd)) <
('ABS' (1.0D-12 * fceltata)) ;
LOGI1 = LOGI1 'ET' LOGI2;
'SI' ('NON' LOGI1);
'MESSAGE' ;
'MESSAGE' 'OPERATEUR KONV';
'MESSAGE' 'Transport de scalaires passifs' ;
'ERREUR' 5;
'FINSI' ;
**************************
**** 'KONV', TEST SS ****
**************************
TFLUX DT = 'KONV' 'VF' 'PERFTEMP' 'FLUX' 'SS'
$DOMTOT PGAZ ('MOTS' 'RN' 'RUX' 'RUY' 'RETN') ROF VITF PF ;
*
**** Les flux aux interfaces sont dans de
* CHPOINT FACE
*
FLUX1 = 'EXCO' TFLUX 'RN';
FLUX2X = 'EXCO' TFLUX 'RUX';
FLUX2Y = 'EXCO' TFLUX 'RUY';
FLUX3 = 'EXCO' TFLUX 'RETN';
FLUX2N = (FLUX2X '*' ('COS' ANGLE)) '+' (FLUX2Y * ('SIN' ANGLE)) ;
FLUX2T = (FLUX2Y '*' ('COS' ANGLE)) '-' (FLUX2X * ('SIN' ANGLE)) ;
*
**** Test 'KONV'
*
f1 = 'EXTRAIRE' FLUX1 'SCAL' P1;
ERRO = 'ABS' (1D-12 '*' f1gd);
LOGI1 = ('ABS' ((f1 '*' ORIENT) '-' f1gd)) < ERRO;
f2 = 'EXTRAIRE' FLUX2N 'SCAL' P1;
ERRO = 'ABS' (1D-12 '*' f2gd);
LOGI2 = ('ABS' ((f2 '*' ORIENT) '-' f2gd)) < ERRO;
LOGI1 = LOGI1 'ET' LOGI2;
f3 = 'EXTRAIRE' FLUX2T 'SCAL' P1;
ERRO = 'ABS' (1D-11 '*' f3gd) ;
LOGI2 = ('ABS' ((f3 '*' ORIENT) '-' f3gd)) < ERRO;
LOGI1 = LOGI1 'ET' LOGI2;
f4 = 'EXTRAIRE' FLUX3 'SCAL' P1;
ERRO = 'ABS' (1D-12 '*' f4gd) ;
LOGI2 = ('ABS' ((f4 '*' ORIENT) '-' f4gd)) < ERRO;
LOGI1 = LOGI1 'ET' LOGI2;
'SI' ('NON' LOGI1);
'MESSAGE' ;
'MESSAGE' 'OPERATEUR KONV';
'MESSAGE' ('CHAINE' METO);
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'df1 ' ('ABS' (f1gd '-' (ORIENT '*'f1)))
' f1 ' f1);
'MESSAGE' ('CHAINE' 'df2 ' ('ABS' (f2gd '-' (ORIENT '*'f2)))
' f2 ' f2);
'MESSAGE' ('CHAINE' 'df3 ' ('ABS' (f3gd '-' (ORIENT '*'f3)))
' f3 ' f3);
'MESSAGE' ('CHAINE' 'df4 ' ('ABS' (f4gd '-' (ORIENT '*'f4)))
' f4 ' f4);
'ERREUR' 5;
'FINSI' ;
************************************************
***** Splitting des scalaires passifs **********
************************************************
TFLUX2 DT = 'KONV' 'VF' 'PERFTEMP' 'FLUX' 'SS'
$DOMTOT PGAZ2 ('MOTS' 'RN' 'RUX' 'RUY' 'RETN' 'TUTU' 'TATA')
ROF VITF PF SCAF ;
ERRO = ( 'MAXIMUM' (TFLUX '-'
('EXCO' ('MOTS' 'RN' 'RUX' 'RUY' 'RETN') TFLUX2)) 'ABS') ;
'SI' (ERRO > 1.0D-15);
'MESSAGE' 'Probleme dans les transport de scalaires passifs' ;
'ERREUR' 5;
'FINSI' ;
*
**** Test 'KONV'
*
fceltutu = 'EXTRAIRE' TFLUX2 'TUTU' P1;
LOGI1 = ('ABS' ((fceltutu '*' ORIENT) '-' ftutugd)) <
('ABS' (1.0D-12 * fceltutu)) ;
fceltata = 'EXTRAIRE' TFLUX2 'TATA' P1;
LOGI2 = ('ABS' ((fceltata '*' ORIENT) '-' ftatagd)) <
('ABS' (1.0D-12 * fceltata)) ;
LOGI1 = LOGI1 'ET' LOGI2;
'SI' ('NON' LOGI1);
'MESSAGE' ;
'MESSAGE' 'OPERATEUR KONV';
'MESSAGE' 'Transport de scalaires passifs' ;
'ERREUR' 5;
'FINSI' ;
****************************************************
****************************************************
******** Fin boucle sur les angles *********
****************************************************
****************************************************
'FIN' BLOC;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer