Download carre3D_therper_scalpass.dgibi
* fichier : carre3D_therper_scalpass.dgibi
******************************************************************
* CALCUL DU CUBE A CHOC *
* Modele: gaz mono-espece "thermally perfect" *
* Gaz mono-espece "thermally perfect" *
* Splitting de scalaire passifs *
* Controle de la symetrie *
* *
* A. BECCANTINI, DRN/DMT/SEMT/LTMF, FEVRIER 2000 *
*Modif, 10/07/01, syntaxe de PENT changée *
*Modif, 25/09/02, syntaxe de KONV changée *
******************************************************************
'OPTION' 'DIME' 3 'ELEM' 'CUB8' 'ISOV' 'SULI' 'ECHO' 1
'TRAC' 'X';
GRAPH = FAUX ;
* GRAPH = VRAI ;
*
*** Methodes possibles :
*
* 'VLH', 'SS'
*
METO = 'VLH' ;
* SAFFAC = safety facton on the CFL
SAFFAC = 0.5 ;
* LOGSO = second order reconstruction
LOGSO = VRAI ;
TFINAL = 10. ;
NITER = 1 ;
ZERO = 1.0D-12 ;
************
* MAILLAGE *
************
A1 = 0.0 0.0 0.0 ;
A2 = 0.0 0.0 5.0 ;
LAT12 = A1 'DROIT' 5 A2 ;
SUR1 = LAT12 'TRANSLATION' 5 (0.0 5.0 0.0) ;
DOMTOT = 'VOLUME' SUR1 'TRANSLATION' 5 (5.0 0.0 0.0) ;
MDNS = 'EULER' ;
$DOMTOT = 'MODE' DOMTOT MDNS ;
TABM = 'DOMA' $DOMTOT 'VF' ;
MDOMTOT = TABM . 'QUAF' ;
'ELIM' MDOMTOT 1.E-5 ;
* Element au centre
PCEN = ('DOMA' $DOMTOT 'CENTRE') 'POIN' 'PROC' (2.5 2.5 2.5);
DCEN = DOMTOT 'ELEM' 'CONTENANT' PCEN ;
'ELIMINATION' 1.D-4 DCEN DOMTOT ;
$DCEN = 'MODE' DCEN MDNS ;
TABCEN = 'DOMA' $DCEN 'VF' ;
MDCEN = TABCEN . 'QUAF' ;
'ELIM' (MDOMTOT 'ET' MDCEN) 1.E-5 ;
'SI' GRAPH ;
'TRACER' ('DOMA' $DOMTOT 'MAILLAGE') 'TITRE' ('CHAINE' 'Maillage ');
'FINSI' ;
***********************
**** LA TABLE PGAZ ****
***********************
PGAZ = 'TABLE' ;
*
**** Ordre des polynoms
*
PGAZ . 'NORD' = 4 ;
*
**** Especes qui sont dans les equations d'Euler
*
PGAZ . 'ESPEULE' = 'MOTS' 'H2 ' 'O2 ' 'H2O ' ;
*
**** Espece qui n'y est pas
*
PGAZ . 'ESPNEULE' = 'N2 ';
*
PGAZ . 'H2 ' = 'TABLE' ;
PGAZ . 'H2O ' = 'TABLE' ;
PGAZ . 'N2 ' = 'TABLE' ;
PGAZ . 'O2 ' = 'TABLE' ;
*
**** R (J/Kg/K)
*
PGAZ . 'H2 ' . 'R' = 4130.0 ;
PGAZ . 'H2O ' . 'R' = 461.4 ;
PGAZ . 'N2 ' . 'R' = 296.8 ;
PGAZ . 'O2 ' . 'R' = 259.8 ;
*
**** Regressions polynomials
*
PGAZ . 'H2 ' . 'A' = 'PROG' 9834.91866 0.54273926 0.000862203836
-2.37281455E-07 1.84701105E-11 ;
PGAZ . 'H2O ' . 'A' = 'PROG' 1155.95625 0.768331151 -5.73129958E-05
-1.82753232E-08 2.44485692E-12 ;
PGAZ . 'N2 ' . 'A' = 'PROG' 652.940766 0.288239099 -7.80442298E-05
8.78233606E-09 -3.05514485E-13 ;
PGAZ . 'O2 ' . 'A' = 'PROG' 575.012333 0.350522002 -0.000128294865
2.33636971E-08 -1.53304905E-12;
*
**** "Enthalpies" (ou energies) de formations a OK (J/Kg)
*
PGAZ . 'H2 ' . 'H0K' = -4.195D6 ;
PGAZ . 'H2O ' . 'H0K' = -1.395D7 ;
PGAZ . 'N2 ' . 'H0K' = -2.953D5 ;
PGAZ . 'O2 ' . 'H0K' = -2.634D5 ;
* Scalaires passives
PGAZ . 'SCALPASS' = 'MOTS' 'TAU ' 'EPS ' ;
*
*** Fin PGAZ
*
*
**** ETAT CENTRE
*
rog = 1.0 ;
retg = .4291145555695540D+04 ;
yh2g = 0.01 ;
yo2g = 0.2 ;
yh2og = 0.3 ;
taug = 1.0 ;
epsg = 2.0 ;
rouxg = 0.0 ;
rouyg = 0.0 ;
rouzg = 0.0 ;
ROC1 = KCHT $DCEN 'SCAL' 'CENTRE' rog ;
ROVC1 = KCHT $DCEN 'VECT' 'CENTRE' (rouxg rouyg rouzg);
RETC1 = KCHT $DCEN 'SCAL' 'CENTRE' retg ;
RYH2C1 = KCHT $DCEN 'SCAL' 'CENTRE' 'COMP' 'H2 ' (rog*yh2g) ;
RYO2C1 = KCHT $DCEN 'SCAL' 'CENTRE' 'COMP' 'O2 ' (rog*yo2g) ;
RYH2OC1 = KCHT $DCEN 'SCAL' 'CENTRE' 'COMP' 'H2O ' (rog*yh2og) ;
RSCAC11 = 'KCHT' $DCEN 'SCAL' 'CENTRE' 'COMP' 'TAU' (rog*taug) ;
RSCAC12 = 'KCHT' $DCEN 'SCAL' 'CENTRE' 'COMP' 'EPS' (rog*epsg) ;
*
*** Le reste
*
rod = 1.250D-1 ;
retd = .3598345082089522D+01 ;
yh2d = 0.2 ;
yo2d = 0.4 ;
yh2od = 0.1 ;
taud = 11.0 ;
epsd = 21.01 ;
rouxd = 0.0 ;
rouyd = 0.0 ;
rouzd = 0.0 ;
ROC2 = KCHT $DOMTOT 'SCAL' 'CENTRE' rod ;
ROVC2 = KCHT $DOMTOT 'VECT' 'CENTRE' (rouxd rouyd rouzd) ;
RETC2 = KCHT $DOMTOT 'SCAL' 'CENTRE' retd ;
RYH2C2 = KCHT $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'H2 ' (rod * yh2d) ;
RYO2C2 = KCHT $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'O2 ' (rod * yo2d) ;
RYH2OC2 = KCHT $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'H2O ' (rod * yh2od) ;
RSCAC21 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'TAU' (rod*taud) ;
RSCAC22 = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'EPS' (rod*epsd) ;
RN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' ROC2 ROC1 ;
GN = 'KCHT' $DOMTOT 'VECT' 'CENTRE' ROVC2 ROVC1 ;
RETN = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' RETC2 RETC1 ;
RSCAN = ('KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'TAU' RSCAC21 RSCAC11)
'ET' ('KCHT' $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'EPS' RSCAC22 RSCAC12) ;
RYH2 = KCHT $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'H2 ' RYH2C2 RYH2C1 ;
RYO2 = KCHT $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'O2 ' RYO2C2 RYO2C1 ;
RYH2O = KCHT $DOMTOT 'SCAL' 'CENTRE' 'COMP' 'H2O ' RYH2OC2 RYH2OC1 ;
RYN = RYH2 'ET' RYO2 'ET' RYH2O ;
********************************************************
*** CREATION DE 'MODE' POUR GRAPHIQUER LE CHAMELEM ***
********************************************************
MOD1 = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
*
*** GRAPHIQUE DES C.I.
*
'SI' GRAPH ;
* 'SI' FAUX ;
*
*** CREATION DE CHAMELEM
*
CHM_RN = 'KCHA' $DOMTOT 'CHAM' RN ;
CHM_GN = 'KCHA' $DOMTOT 'CHAM' GN ;
CHM_RETN = 'KCHA' $DOMTOT 'CHAM' RETN ;
CHM_RYN = 'KCHA' $DOMTOT 'CHAM' RYN ;
CHM_RSN = 'KCHA' $DOMTOT 'CHAM' RSCAN ;
TRAC CHM_RN MOD1 'TITR' ('CHAINE' 'RN at t=' 0.0);
TRAC CHM_GN MOD1 'TITR' ('CHAINE' 'GN at t=' 0.0);
TRAC CHM_RETN MOD1 'TITR' ('CHAINE' 'ROET at t=' 0.0);
TRAC CHM_RYN MOD1 'TITR' ('CHAINE' 'RYN at t=' 0.0);
TRAC CHM_RSN MOD1 'TITR' ('CHAINE' 'RSCAN at t=' 0.0);
'FINSI' ;
RN0 = 'COPIER' RN ;
GN0 = 'COPIER' GN ;
RETN0 = 'COPIER' RETN ;
RYN0 = 'COPIER' RYN ;
RSCAN0 = 'COPIER' RSCAN ;
*
**** Parameter for the time loop
*
* Names of the residuum components
LISTINCO = 'MOTS' 'RN' 'RUX' 'RUY' 'RUZ' 'RETN' 'H2' 'O2' 'H2O'
'TAU' 'EPS' ;
NOMRN = 'MOTS' 'SCAL' ;
NOMVN = 'MOTS' 'UX' 'UY' 'UZ' ;
NOMY = 'MOTS' 'H2' 'O2' 'H2O' ;
NOMT = 'MOTS' 'TAU' 'EPS' ;
*
**** Geometrical coefficient to compute gradients
*
GRADR CACCA COEFSCAL = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'NOLIMITE'
NOMRN RN ;
GRADV CACCA COEFVECT = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'NOLIMITE'
NOMVN GN ;
TPS = 0.0 ;
*
**** Temporal loop
*
'MESSAGE' ;
'MESSAGE' ('CHAINE' 'Methode = ' METO) ;
'MESSAGE' ('CHAINE' 'SAFFAC = ' SAFFAC) ;
'MESSAGE' ;
VN PN TN YN SN GAMMAN = 'PRIM' 'PERFTEMP' PGAZ RN GN RETN RYN RSCAN ;
TNM1 = 'COPIER' TN ;
'TEMPS' 'ZERO' ;
'REPETER' BL1 NITER ;
*
**** Primitive variables
*
VN PN TN YN SN GAMMAN = 'PRIM' 'PERFTEMP' PGAZ RN GN RETN RYN RSCAN
TNM1 ;
TNM1 = 'COPIER' TN ;
'SI' LOGSO ;
GRADR ALR = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
NOMRN RN 'GRADGEO' COEFSCAL ;
GRADP ALP = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
NOMRN PN 'GRADGEO' COEFSCAL ;
GRADV ALV = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'LIMITEUR'
NOMVN VN 'GRADGEO' COEFVECT ;
GRADY ALY = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
NOMY YN 'GRADGEO' COEFSCAL ;
GRADS ALS = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
NOMT SN 'GRADGEO' COEFSCAL ;
ROF VITF PF YF SF = 'PRET' 'PERFTEMP' 2 1
$DOMTOT PGAZ
RN GRADR ALR
VN GRADV ALV
PN GRADP ALP
YN GRADY ALY
SN GRADS ALS
;
'SINON' ;
ROF VITF PF YF SF = 'PRET' 'PERFTEMP' 1 1
$DOMTOT PGAZ
RN
VN
PN
YN
SN ;
'FINSI' ;
RESIDU DELTAT = 'KONV' 'VF' 'PERFTEMP' 'RESI' METO
$DOMTOT PGAZ LISTINCO ROF VITF PF YF SF ;
DT_CON = SAFFAC '*' DELTAT ;
*
**** The time step linked to tps
*
DTTPS = (TFINAL '-' TPS) * (1. '+' ZERO) ;
*
**** Total time step
*
DTMIN = 'MINIMUM' ('PROG' DT_CON DTTPS) ;
*
**** Increment of the variables (convection)
*
RESIDU = DTMIN '*' RESIDU ;
DRN = 'EXCO' 'RN' RESIDU 'SCAL' ;
DGN = 'EXCO' ('MOTS' 'RUX' 'RUY' 'RUZ') RESIDU
('MOTS' 'UX' 'UY' 'UZ') ;
DRETN = 'EXCO' 'RETN' RESIDU 'SCAL' ;
DRYN = 'EXCO' ('MOTS' 'H2' 'O2' 'H2O') RESIDU
('MOTS' 'H2' 'O2' 'H2O') ;
DRSN = 'EXCO' ('MOTS' 'TAU' 'EPS') RESIDU
('MOTS' 'TAU' 'EPS') ;
TPS = TPS '+' DTMIN ;
RN = RN '+' DRN ;
GN = GN '+' DGN ;
RETN = RETN '+' DRETN ;
RYN = RYN '+' DRYN ;
RSCAN = RSCAN '+' DRSN ;
'SI' (((&BL1 '/' 20) '*' 20) 'EGA' &BL1) ;
'MESSAGE' ('CHAINE' 'ITER =' &BL1 ' TPS =' TPS) ;
'FINSI' ;
'SI' (TPS > TFINAL) ;
'QUITTER' BL1 ;
'FINSI' ;
'FIN' BL1 ;
'TEMPS' ;
*
**** Les variables primitives
*
VN PN TN YN SN GAMN = 'PRIM' 'PERFTEMP' PGAZ
RN GN RETN RYN RSCAN ;
CN = (GAMN * (PN / RN)) '**' 0.5 ;
*
*** GRAPHIQUE DES SOLUTIONS
*
'SI' GRAPH ;
*
*** CREATION DE CHAMELEM
*
CHM_RN = 'KCHA' $DOMTOT 'CHAM' RN ;
CHM_GN = 'KCHA' $DOMTOT 'CHAM' GN ;
CHM_RETN = 'KCHA' $DOMTOT 'CHAM' RETN ;
CHM_RYN = 'KCHA' $DOMTOT 'CHAM' RYN ;
TRAC CHM_RN MOD1 'TITR' ('CHAINE' 'RO at t=' TFIN);
TRAC CHM_GN MOD1 'TITR' ('CHAINE' 'GN at t=' TFIN);
TRAC CHM_RETN MOD1 'TITR' ('CHAINE' 'ROET at t=' TFIN);
TRAC CHM_RYN MOD1 'TITR' ('CHAINE' 'RYN at t=' TFIN);
'FINSI' ;
* Tests: invariance par rotation
RN1 = 'COPIER' RN ;
GN1 = 'COPIER' GN ;
RETN1 = 'COPIER' RETN ;
RYN1 = 'COPIER' RYN ;
RSCAN1 = 'COPIER' RSCAN ;
MAIL0 = 'EXTRAIRE' RN 'MAILLAGE' ;
* Axe de rotation: PCEN = 2.5 2.5 2.5 '+' VECX ;
VECX = 1.0 0.0 0.0 ;
'REPETER' BL1 3 ;
RN1 = RN1 'TOURNER' 90 PCEN (PCEN 'PLUS' VECX) ;
GN1 = GN1 'TOURNER' 90 PCEN (PCEN 'PLUS' VECX) ;
RETN1 = RETN1 'TOURNER' 90 PCEN (PCEN 'PLUS' VECX) ;
RYN1 = RYN1 'TOURNER' 90 PCEN (PCEN 'PLUS' VECX) ;
RSCAN1 = RSCAN1 'TOURNER' 90 PCEN (PCEN 'PLUS' VECX) ;
MAIL1 = 'EXTRAIRE' RN1 'MAILLAGE' ;
'ELIMINATION' 0.001 MAIL0 MAIL1 ;
ERR1 = 'MAXIMUM' ((RN1 '-' RN) / RN) 'ABS' ;
'SI' (ERR1 > 1.0D-10);
'ERREUR' 5;
'FINSI' ;
MAIL1 = 'EXTRAIRE' GN1 'MAILLAGE' ;
'ELIMINATION' 0.001 MAIL0 MAIL1 ;
ERR1 = 'MAXIMUM' ((GN1 '-' GN) / (RN * CN)) 'ABS' ;
'SI' (ERR1 > 1.0D-10);
'ERREUR' 5;
'FINSI' ;
MAIL1 = 'EXTRAIRE' RETN1 'MAILLAGE' ;
'ELIMINATION' 0.001 MAIL0 MAIL1 ;
ERR1 = 'MAXIMUM' ((RETN1 '-' RETN) / RETN) 'ABS' ;
'SI' (ERR1 > 1.0D-10);
'ERREUR' 5;
'FINSI' ;
MAIL1 = 'EXTRAIRE' RYN1 'MAILLAGE' ;
'ELIMINATION' 0.001 MAIL0 MAIL1 ;
ERR1 = 'MAXIMUM' ((RYN1 '-' RYN) / RN) 'ABS' ;
'SI' (ERR1 > 1.0D-10);
'ERREUR' 5;
'FINSI' ;
MAIL1 = 'EXTRAIRE' RSCAN1 'MAILLAGE' ;
'ELIMINATION' 0.001 MAIL0 MAIL1 ;
ERR1 = 'MAXIMUM' ((RSCAN1 '-' RSCAN) / RN) 'ABS' ;
'SI' (ERR1 > 1.0D-10);
'ERREUR' 5;
'FINSI' ;
'FIN' BL1 ;
VECX = 0.0 0.0 1.0 ;
'REPETER' BL1 3 ;
RN1 = RN1 'TOURNER' 90 PCEN (PCEN 'PLUS' VECX) ;
GN1 = GN1 'TOURNER' 90 PCEN (PCEN 'PLUS' VECX) ;
RETN1 = RETN1 'TOURNER' 90 PCEN (PCEN 'PLUS' VECX) ;
RYN1 = RYN1 'TOURNER' 90 PCEN (PCEN 'PLUS' VECX) ;
RSCAN1 = RSCAN1 'TOURNER' 90 PCEN (PCEN 'PLUS' VECX) ;
MAIL1 = 'EXTRAIRE' RN1 'MAILLAGE' ;
'ELIMINATION' 0.001 MAIL0 MAIL1 ;
ERR1 = 'MAXIMUM' ((RN1 '-' RN) / RN) 'ABS' ;
'SI' (ERR1 > 1.0D-10);
'ERREUR' 5;
'FINSI' ;
MAIL1 = 'EXTRAIRE' GN1 'MAILLAGE' ;
'ELIMINATION' 0.001 MAIL0 MAIL1 ;
ERR1 = 'MAXIMUM' ((GN1 '-' GN) / (RN * CN)) 'ABS' ;
'SI' (ERR1 > 1.0D-10);
'ERREUR' 5;
'FINSI' ;
MAIL1 = 'EXTRAIRE' RETN1 'MAILLAGE' ;
'ELIMINATION' 0.001 MAIL0 MAIL1 ;
ERR1 = 'MAXIMUM' ((RETN1 '-' RETN) / RETN) 'ABS' ;
'SI' (ERR1 > 1.0D-10);
'ERREUR' 5;
'FINSI' ;
MAIL1 = 'EXTRAIRE' RYN1 'MAILLAGE' ;
'ELIMINATION' 0.001 MAIL0 MAIL1 ;
ERR1 = 'MAXIMUM' ((RYN1 '-' RYN) / RN) 'ABS' ;
'SI' (ERR1 > 1.0D-10);
'ERREUR' 5;
'FINSI' ;
MAIL1 = 'EXTRAIRE' RSCAN1 'MAILLAGE' ;
'ELIMINATION' 0.001 MAIL0 MAIL1 ;
ERR1 = 'MAXIMUM' ((RSCAN1 '-' RSCAN) / RN) 'ABS' ;
'SI' (ERR1 > 1.0D-10);
'ERREUR' 5;
'FINSI' ;
'FIN' BL1 ;
* Symetrie
MAIL1 RN1 = MAIL0 RN 'SYMETRIE'
'PLAN' (2.5 2.5 2.5) ((2.5 2.5 2.5) 'PLUS' (0.0 1.0 0.0))
((2.5 2.5 2.5) 'PLUS' (0.0 0.0 1.0)) ;
'ELIMINATION' 0.001 MAIL0 MAIL1 ;
ERR1 = 'MAXIMUM' ((RN1 - RN) / RN) 'ABS' ;
'SI' (ERR1 > 1.0D-10);
'ERREUR' 5;
'FINSI' ;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer