* fichier : flamcat.dgibi
*****************************************
* COMBUSTION CATALYTIQUE DE L'HYDROGENE *
* on teste l'operateur FLAM *
* H.PAILLERE/TTMF 97 *
*****************************************
DEBP FILTREKE ;
ARGU RX*TABLE ;
rv=rx.'EQEX' ;
rvp=rv.'PRESSION' ;
* Filtre sur K et Epsilon
* K > 0 Epsilon tel que l'echelle de longueur reste inférieure
* à L0 diamètre enceinte
rv=rx.'EQEX' ;
iarg=rx.'IARG' ;
si( non ( ega iarg 3)) ;
mess 'Procedure FILTREKE : nombre d arguments incorrect ' iarg ;
quitter FILTREKE ;
finsi ;
si ( ega ('TYPE' rx.'ARG1') 'MOT ') ;
U1=rv.'INCO'.(rx.'ARG1') ;
sinon ;
si ( ega ('TYPE' (rx.'ARG1')) 'CHPOINT') ;
U1=rx.'ARG1' ;
sinon ;
mess 'Procedure FILTREKE : type argument 1 invalide ' ;
quitter FILTREKE ;
finsi ;
finsi ;
si ( ega ('TYPE' rx.'ARG2') 'MOT ') ;
L0=rv.'INCO'.(rx.'ARG2') ;
sinon ;
si ( ega ('TYPE' (rx.'ARG2')) 'FLOTTANT') ;
L0=rx.'ARG2' ;
sinon ;
mess 'Procedure FILTREKE : type argument 2 invalide ' ;
quitter FILTREKE ;
finsi ;
finsi ;
si ( ega ('TYPE' rx.'ARG3') 'MOT ') ;
NU=rv.'INCO'.(rx.'ARG3') ;
sinon ;
si ( ega ('TYPE' (rx.'ARG3')) 'FLOTTANT') ;
NU=rx.'ARG3' ;
sinon ;
mess 'Procedure FILTREKE : type argument 3 invalide ' ;
quitter FILTREKE ;
finsi ;
finsi ;
nic=dime (rx.'LISTINCO') ;
si( non ( ega nic 2)) ;
mess 'Procedure FILTREKE : nombre d inconnues incorrect ' nic ;
quitter FILTREKE ;
finsi ;
nomi1=extr 1 (rx.'LISTINCO');
nomi2=extr 2 (rx.'LISTINCO');
nom1= mot (text (chai nomi1)) ;
nom2= mot (text (chai nomi2)) ;
en=rv.'INCO'.nom2 ;
kn=rv.'INCO'.nom1 ;
Rec=100.;
k0 = 1.e-10 ;
mdu=kops u1 'PSCA' u1 ;
mdu=mdu ** 0.5 ;
Re=kops (kops (kops mdu '*' L0) '/' nu) '+' (Rec / 10.) ;
a= exp (kops Rec '/' Re ) ;
kn=kops kn '|<' k0 ;
E0= kops (kops kn '**' 1.5) '*' (a / L0) ;
en=kops en '|<' E0 ;
rv.'INCO'.'EN'=en ;
rv.'INCO'.'KN'=kn ;
finproc ;
*********************************************************************
* PROCEDURE RECOMBINEUR
*********************************************************************
DEBPROC RECOMB ;
ARGU RVX*'TABLE' ;
RV = RVX.'EQEX' ;
$MT = RV.'DOMAINE' ;
Dt = RV.PASDETPS.'DELTAT' ;
Dt = Dt * RV.'ALFA' ;
YH2e = KCHT $ENTREE SCAL SOMMET RV.INCO.'YH2' ;
YO2e = KCHT $ENTREE SCAL SOMMET RV.INCO.'YO2' ;
YN2e = KCHT $ENTREE SCAL SOMMET RV.INCO.'YN2' ;
YH2Oe = KCHT $ENTREE SCAL SOMMET RV.INCO.'YH2O' ;
SENTR1 = 'SOMT' ('DOMA' $ENTREE 'XXDIAGSI') ;
YH2e = 'SOMT' (YH2e * ('DOMA' $ENTREE 'XXDIAGSI')) / SENTR1 ;
YO2e = 'SOMT' (YO2e * ('DOMA' $ENTREE 'XXDIAGSI')) / SENTR1 ;
YN2e = 'SOMT' (YN2e * ('DOMA' $ENTREE 'XXDIAGSI')) / SENTR1 ;
YH2Oe = 'SOMT' (YH2Oe* ('DOMA' $ENTREE 'XXDIAGSI')) / SENTR1 ;
YHEe = 0.D0 ;
YCO2e = 0.D0 ;
YCOe = 0.D0 ;
Te = KCHT $ENTREE SCAL SOMMET RV.INCO.'TN' ;
Te = 'SOMT' (Te* ('DOMA' $ENTREE 'XXDIAGSI')) / SENTR1 ;
Pe = RV.INCO.'PM' ;
Tp = RV.INCO.'TPLAQUE' ;
AA1 = RV . 'INCO' . 'A' ;
BB1 = RV . 'INCO' . 'B' ;
XH2ON = RV . 'INCO' . 'XH2ON' ;
XH2OFF = RV . 'INCO' . 'XH2OFF' ;
BETAI = RV . 'INCO' . 'BETA' ;
*IKALP = 1 ;
YH2s YO2s YN2s YH2Os YHEs YCO2s YCOs Ts TP DEB EFF XH2ONF
= 'FLAM' 'RECOMBIN'
YH2e YO2e YN2e YH2Oe YHEe YCO2e YCOe
Te TP Pe Dt 1 'SIEMENS' AA1 BB1 XH2ON XH2OFF BETAI ;
* Te TP Pe Dt IKALP 'SIEMENS' AA1 BB1 XH2ON XH2OFF BETAI ;
*YH2s YO2s YN2s YH2Os TS TP DEB EFF XH2ONF
*= 'FLAM' 'RECOMBIN'
*YH2e YO2e YN2e YH2Oe Te TP Pe Dt 1
*'SIEMENS' AA1 BB1 XH2ON XH2OFF BETAI ;
RV . 'INCO' . 'XH2ON' = XH2ONF ;
DD = RV.PASDETPS.'NUPASDT' ;
NN = DD/20 ;
LO = (DD-(20*NN)) EGA 0 ;
SI ( LO ) ;
P_TP = PROG TP ;
RV.INCO.'TP' = RV.INCO.'TP' ET P_TP ;
P_DEB = PROG DEB ;
RV.INCO.'DEBIT' = RV.INCO.'DEBIT' ET P_DEB ;
P_EFF = PROG EFF ;
RV.INCO.'EFFIC' = RV.INCO.'EFFIC' ET P_EFF ;
P_TS = PROG TS ;
RV.INCO.'TS' = RV.INCO.'TS' ET P_TS ;
P_PM = PROG Pe ;
RV.INCO.'PRESSION' = RV.INCO.'PRESSION' ET P_PM ;
MAST = SOMT (KOPS RV.INCO.'RHOM' '*' VOL) ;
P_MAST = PROG MAST ;
RV.INCO.'MASSETOT' = RV.INCO.'MASSETOT' ET P_MAST ;
FINSI ;
R = (YH2s*RH2)+(YO2s*RO2)+(YN2s*RN2)+(YH2Os*RH2O);
PSIs = R*TS ;
RV.INCO.'TPLAQUE' = TP ;
DD = RV.PASDETPS.'NUPASDT' ;
NN = DD/20 ;
LO = (DD-(20*NN)) EGA 0 ;
SI ( LO ) ;
MESSAGE 'TEMPERATURE PLAQUE EN K = ' TP ;
MESSAGE 'TEMPERATURE GAZ SORTIE EN K = ' TS ;
MESSAGE 'EFFICACITE RECOMBINEUR EN % = ' EFF ;
MESSAGE 'DEBIT EN KG/S = ' DEB ;
FINSI ;
* MODIFICATION DES CONDITIONS LIMITES
cl_YH2 = 'EXCO' 'YH2' RV.'CLIM' 'YH2' ;
cl_YO2 = 'EXCO' 'YO2' RV.'CLIM' 'YO2' ;
cl_YH2O= 'EXCO' 'YH2O' RV.'CLIM' 'YH2O' ;
cl_GNX = 'EXCO' '1GN' RV.'CLIM' '1GN' ;
cl_GNY = 'EXCO' '2GN' RV.'CLIM' '2GN' ;
cl_KN = 'EXCO' 'KN' RV.'CLIM' 'KN' ;
cl_EN = 'EXCO' 'EN' RV.'CLIM' 'EN' ;
cl_PSI = 'EXCO' 'PSIN' RV.'CLIM' 'PSIN' ;
cl_YH2 = 0.D0 * cl_YH2 + YH2s ;
cl_YO2 = 0.D0 * cl_YO2 + YO2s ;
cl_YH2O = 0.D0 * cl_YH2O + YH2Os ;
cl_PSI = 0.D0 * cl_PSI + PSIs ;
cl_GNYm = MANU 'CHPO' (MUR_HOR) 1 '2GN' 0. ;
cl_GNXm = MANU 'CHPO' (MUR_VER) 1 '1GN' 0. ;
cl_GNYe = MANU 'CHPO' (ENTREE) 1 '2GN' (DEB*length) ;
cl_GNXs = MANU 'CHPO' (SORTIE) 1 '1GN' (DEB*length*SIGN) ;
cl_GNX = 0.D0 * cl_GNX + cl_GNXm + cl_GNXs ;
cl_GNY = 0.D0 * cl_GNY + cl_GNYm + cl_GNYe ;
RV.'CLIM' = cl_YH2 + cl_YO2 + cl_YH2O + cl_GNX + cl_GNY +
cl_KN + cl_EN + cl_PSI ;
detr cl_YH2 ;
detr cl_YO2 ;
detr cl_YH2O ;
detr cl_GNX ;
detr cl_GNY ;
detr cl_KN ;
detr cl_EN ;
detr cl_PSI ;
detr cl_GNYm ;
detr cl_GNXm ;
detr cl_GNYe ;
detr cl_GNXs ;
FINPROC ;
*********************************************************************
* PROCEDURE CALCUL1
*********************************************************************
DEBPROC CALCUL1 ;
ARGU RVX*'TABLE' ;
RV = RVX.'EQEX' ;
RVP = RV.'PRESSION' ;
$MT = RV.'DOMAINE' ;
RV.PASDETPS.'DELTAT' = 0.5 ;
* filtres sur fractions massiques et calcul de la fraction massique d'azote
YH2 = RV.INCO.'YH2' ;
YO2 = RV.INCO.'YO2' ;
YH2O = RV.INCO.'YH2O' ;
YH2 = KOPS YH2 '|<' 0. ;
YO2 = KOPS YO2 '|<' 0. ;
YH2O = KOPS YH2O '|<' 0. ;
RV.INCO.'YH2' = YH2 ;
RV.INCO.'YO2' = YO2 ;
RV.INCO.'YH2O' = YH2O ;
RV.INCO.'YN2' = KOPS 1.0 '-' RV.INCO.'YH2O' ;
RV.INCO.'YN2' = KOPS RV.INCO.'YN2' '-' RV.INCO.'YH2' ;
RV.INCO.'YN2' = KOPS RV.INCO.'YN2' '-' RV.INCO.'YO2' ;
* calcul de la constante des gaz et de la temperature
R = KOPS (KOPS YH2 '*' RH2) '+' (KOPS YO2 '*' RO2) ;
R = KOPS R '+' (KOPS RV.INCO.'YN2' '*' RN2) ;
R = KOPS R '+' (KOPS YH2O '*' RH2O) ;
RV.INCO.'R' = KCHT $MT 'SCAL' 'SOMMET' R ;
T = KOPS RV.INCO.'PSIN' '/' R ;
RV.INCO.'TN' = KCHT $MT 'SCAL' 'SOMMET' T ;
* calcul des concentrations max et min d'hydrogène
DD = RV.PASDETPS.'NUPASDT' ;
NN = DD/20 ;
LO = (DD-(20*NN)) EGA 0 ;
SI ( LO ) ;
M = KOPS Rg '/' RV.INCO.'R' ;
XH2 = KOPS RV.INCO.'YH2' '*' M ;
XH2 = XH2/MH2 ;
XH2 = XH2*100. ;
XH2MAX = MAXI XH2 ;
XH2MIN = MINI XH2 ;
P_XH2MAX = PROG XH2MAX ;
P_XH2MIN = PROG XH2MIN ;
RV.INCO.'XH2MAX' = RV.INCO.'XH2MAX' ET P_XH2MAX ;
RV.INCO.'XH2MIN' = RV.INCO.'XH2MIN' ET P_XH2MIN ;
FINSI ;
* calcul de rho à partir de la loi d'état des gaz parfaits
RV.INCO.'RHO' = KOPS (RV.INCO.'PM') '/' (RV.INCO.'PSIN') ;
RV.INCO.'RHOC' = NOEL $MT RV.INCO.'RHO' ;
RV.INCO.'RHOC' = KCHT $MT 'SCAL' 'CENTRE' (RV.INCO.'RHOC') ;
RHOM = (SOMT (KOPS RV.INCO.'RHOC' '*' VOL))/VOLT ;
RV.INCO.'RHOM' = RHOM ;
* calcul du terme (rho-rhom)*g de la QDM
DRHO = KOPS (RV.INCO.'RHOC') '-' (RV.INCO.'RHOM') ;
rogx = KCHT (RV.'DOMAINE') SCAL CENTRE 0. ;
rogy = KCHT (RV.'DOMAINE') SCAL CENTRE (-9.81*DRHO) ;
rogx = nomc 'UX' rogx 'NATU' 'DISCRET' ;
rogy = nomc 'UY' rogy 'NATU' 'DISCRET' ;
RV.INCO.'ROG' = KCHT (RV.'DOMAINE') VECT CENTRE (rogx ET rogy) ;
* calcul la vitesse à partir de la qdm
GN = RV.INCO.'GN' ;
gnx= kcht (rv.'DOMAINE') scal sommet (exco 'UX' gn) ;
gny= kcht (rv.'DOMAINE') scal sommet (exco 'UY' gn) ;
unx = kops gnx '/' RV.INCO.'RHO' ;
uny = kops gny '/' RV.INCO.'RHO' ;
unx = nomc 'UX' unx 'NATU' 'DISCRET' ;
uny = nomc 'UY' uny 'NATU' 'DISCRET' ;
un = kcht (RV.'DOMAINE') vect sommet (unx et uny) ;
RV.INCO.'UN' = un ;
* calcul de nut à partir de mut et de rho
RV.INCO.'NUT' = KOPS (RV.INCO.'MUT') '/' (RV.INCO.'RHOC') ;
FINPROC ;
*********************************************************************
* PROCEDURE CALCUL2
*********************************************************************
DEBPROC CALCUL2 ;
ARGU RVX*'TABLE' ;
RV = RVX.'EQEX' ;
RVP = RV.'PRESSION' ;
$MT = RV.'DOMAINE' ;
* on récupère le pas de temps
Dt = RV.PASDETPS.'DELTAT' ;
Dt = Dt * RV.'ALFA' ;
DD = RV.PASDETPS.'NUPASDT' ;
NN = DD/20 ;
LO = (DD-(20*NN)) EGA 0 ;
SI ( LO ) ;
P_TEMPS = PROG RV.PASDETPS.'TPS' ;
RV.INCO.'TEMPS' = RV.INCO.'TEMPS' ET P_TEMPS ;
FINSI ;
* calcul l'intégrale se trouvant dans le terme Dp/Dt.
ZT = KOPS (RV.INCO.'PSIN') '-' (RV.INCO.'PSI1') ;
ZT = KOPS ZT '/' Dt ;
ZT = KOPS ZT '/' (RV.INCO.'PSIN') ;
ZZ = KOPS ZT '*' RV.INCO.'RHO' ;
ZZ = NOEL $MT ZZ ;
ZZ = KCHT $MT 'SCAL' 'CENTRE' ZZ ;
ZZT = SOMT ( KOPS ZZ '*' VOL ) ;
RV.INCO.'PSI1' = KCHT $MT 'SCAL' 'SOMMET' (RV.INCO.'PSIN') ;
* calcul de dPdt
q0 = 'DBIT' RV.INCO.'GN' $SORTIE ;
q1 = 'DBIT' RV.INCO.'GN' $ENTREE ;
q0 = q0+q1 ;
dPdt = ZZT + q0 ;
dPdt = dPdt*(RV.INCO.'PM')/VOLT/RV.INCO.'RHOM' ;
* terme source de l'équation d'énergie
zuzu = (gamma-1.)/gamma ;
QC = NOEL $MT RV.INCO.'Q' ;
QC = KCHT $MT 'SCAL' 'CENTRE' QC ;
TOTO = KOPS QC '+' dPdt ;
TOTO = KOPS TOTO '/' RV.INCO.'RHOC' ;
TOTO = KOPS TOTO '*' zuzu ;
RV.INCO.'S' = KCHT $MT 'SCAL' 'CENTRE' TOTO ;
* terme source équation de Poisson
Z1 = dPdt/RV.INCO.'PM' ;
ZP = KOPS RV.INCO.'RHOC' '*' Z1 ;
ZS = KOPS ZP '-' ZZ ;
ZZS = KOPS ZS '*' VOL ;
ZZS = ZZS * (-1.0) ;
RV.INCO.'ZS' = KCHT $MT 'SCAL' 'CENTRE' ZZS ;
* calcul de l'évolution de la pression
RV.INCO.'PM' = RV.INCO.'PM' + (dPdt*dt) ;
* affichage informations toutes les 20 iterations
DD = RV.PASDETPS.'NUPASDT' ;
NN = DD/20 ;
LO = (DD-(20*NN)) EGA 0 ;
SI ( LO ) ;
MESSAGE '==========================================================' ;
MESSAGE 'TEMPS = ' RV.PASDETPS.'TPS' ' PRESSION = ' RV.INCO.'PM' ;
FINSI ;
FINPROC ;
***************************************************************
* JEU DE DONNEES NURETH-8 : CALCUL DE DISTRIBUTION/COMBUSTION *
* ALGORITHME 'COMPRESSIBLE FAIBLE MACH' SEMI-IMPLICITE *
* === DISTRIBUTION === *
***************************************************************
opti dime 2 ;
opti elem qua8 ;
*========================================================*
* GENERATION DU MAILLAGE *
*========================================================*
L = 1. ;
H = 2. ;
height= 1. ;
depth = 0.3 ;
length= 0.2 ;
* position du recombineur
XR = 0.2 ;
YR = 0.2 ;
epsi = 0.01 ;
SREC = 'D' ;
DINJ = depth ;
A1 = 0.0 0.0 ;
A2 = L 0.0 ;
A3 = L H ;
A4 = 0.0 H ;
R1 = XR YR ;
R2 = (XR+depth) YR ;
R3 = (XR+depth) (YR+height-depth) ;
R4 = (XR+depth) (YR+height) ;
R5 = XR (YR+height) ;
R6 = XR (YR+height-depth) ;
C1 = XR 0.0 ;
C2 = (XR+depth) 0.0 ;
C3 = L YR ;
C4 = L (YR+height-depth) ;
C5 = L (YR+height) ;
C6 = (XR+depth) H ;
C7 = XR H ;
C8 = 0.0 (YR+height) ;
C9 = 0.0 (YR+height-depth) ;
C10 = 0.0 YR ;
DE1 = 1.2 ;
DE2 = 0.8 ;
DE3 = 0.2 ;
SI (EGA SREC 'G') ;
DE4 = DE3 ;
DE5 = DE3 ;
SINON ;
DE4 = DE3 ;
DE5 = DE3 ;
FINSI ;
A1C1 = 'DROI' A1 C1 'DINI' DE1 'DFIN' DE4 ;
C1R1 = 'DROI' C1 R1 'DINI' DE2 'DFIN' DE3 ;
R1C10 = 'DROI' R1 C10 'DINI' DE4 'DFIN' DE1 ;
C10A1 = 'DROI' C10 A1 'DINI' DE3 'DFIN' DE2 ;
C1C2 = 'DROI' C1 C2 'DINI' DE3 'DFIN' DE3 ;
C2R2 = 'DROI' C2 R2 'DINI' DE2 'DFIN' DE3 ;
R2R1 = 'DROI' R2 R1 'DINI' DE3 'DFIN' DE3 ;
R1C1 = 'DROI' R1 C1 'DINI' DE3 'DFIN' DE2 ;
C2A2 = 'DROI' C2 A2 'DINI' DE5 'DFIN' DE1 ;
A2C3 = 'DROI' A2 C3 'DINI' DE2 'DFIN' DE3 ;
C3R2 = 'DROI' C3 R2 'DINI' DE1 'DFIN' DE5 ;
R2C2 = 'DROI' R2 C2 'DINI' DE3 'DFIN' DE2 ;
R2C3 = 'DROI' R2 C3 'DINI' DE5 'DFIN' DE1 ;
C3C4 = 'DROI' C3 C4 'DINI' DE3 'DFIN' DE3 ;
C4R3 = 'DROI' C4 R3 'DINI' DE1 'DFIN' DE5 ;
R3R2 = 'DROI' R3 R2 'DINI' DE3 'DFIN' DE3 ;
R3C4 = 'DROI' R3 C4 'DINI' DE5 'DFIN' DE1 ;
C4C5 = 'DROI' C4 C5 'DINI' DE3 'DFIN' DE3 ;
C5R4 = 'DROI' C5 R4 'DINI' DE1 'DFIN' DE5 ;
R4R3 = 'DROI' R4 R3 'DINI' DE3 'DFIN' DE3 ;
R4C5 = 'DROI' R4 C5 'DINI' DE5 'DFIN' DE1 ;
C5A3 = 'DROI' C5 A3 'DINI' DE3 'DFIN' DE1 ;
A3C6 = 'DROI' A3 C6 'DINI' DE1 'DFIN' DE5 ;
C6R4 = 'DROI' C6 R4 'DINI' DE1 'DFIN' DE3 ;
R5R4 = 'DROI' R5 R4 'DINI' DE3 'DFIN' DE3 ;
R4C6 = 'DROI' R4 C6 'DINI' DE3 'DFIN' DE1 ;
C6C7 = 'DROI' C6 C7 'DINI' DE3 'DFIN' DE3 ;
C7R5 = 'DROI' C7 R5 'DINI' DE1 'DFIN' DE3 ;
C8R5 = 'DROI' C8 R5 'DINI' DE1 'DFIN' DE4 ;
R5C7 = 'DROI' R5 C7 'DINI' DE3 'DFIN' DE1 ;
C7A4 = 'DROI' C7 A4 'DINI' DE4 'DFIN' DE1 ;
A4C8 = 'DROI' A4 C8 'DINI' DE1 'DFIN' DE3 ;
C9R6 = 'DROI' C9 R6 'DINI' DE1 'DFIN' DE4 ;
R6R5 = 'DROI' R6 R5 'DINI' DE3 'DFIN' DE3 ;
R5C8 = 'DROI' R5 C8 'DINI' DE4 'DFIN' DE1 ;
C8C9 = 'DROI' C8 C9 'DINI' DE3 'DFIN' DE3 ;
C10R1 = 'DROI' C10 R1 'DINI' DE1 'DFIN' DE4 ;
R1R6 = 'DROI' R1 R6 'DINI' DE3 'DFIN' DE3 ;
R6C9 = 'DROI' R6 C9 'DINI' DE4 'DFIN' DE1 ;
C9C10 = 'DROI' C9 C10 'DINI' DE3 'DFIN' DE3 ;
COMPA = 'DALLER' A1C1 C1R1 R1C10 C10A1 'PLAN' ;
COMPB = 'DALLER' C1C2 C2R2 R2R1 R1C1 'PLAN' ;
COMPC = 'DALLER' C2A2 A2C3 C3R2 R2C2 'PLAN' ;
COMPD = 'DALLER' R2C3 C3C4 C4R3 R3R2 'PLAN' ;
COMPE = 'DALLER' R3C4 C4C5 C5R4 R4R3 'PLAN' ;
COMPF = 'DALLER' R4C5 C5A3 A3C6 C6R4 'PLAN' ;
COMPG = 'DALLER' R5R4 R4C6 C6C7 C7R5 'PLAN' ;
COMPH = 'DALLER' C8R5 R5C7 C7A4 A4C8 'PLAN' ;
COMPI = 'DALLER' C9R6 R6R5 R5C8 C8C9 'PLAN' ;
COMPJ = 'DALLER' C10R1 R1R6 R6C9 C9C10 'PLAN' ;
COMPA = 'COUL' COMPA 'ROUG' ;
COMPB = 'COUL' COMPB 'BLEU' ;
COMPC = 'COUL' COMPC 'JAUN' ;
COMPD = 'COUL' COMPD 'TURQ' ;
COMPE = 'COUL' COMPE 'BLAN' ;
COMPF = 'COUL' COMPF 'ROUG' ;
COMPG = 'COUL' COMPG 'VERT' ;
COMPH = 'COUL' COMPH 'BLAN' ;
COMPI = 'COUL' COMPI 'ROUG' ;
COMPJ = 'COUL' COMPJ 'BLEU' ;
MT = COMPA ET COMPB ET COMPC ET
COMPD ET COMPE ET COMPF ET COMPG ET COMPH ET COMPI ET COMPJ ;
'ELIM' epsi MT ;
WALL = A1C1 ET C1C2 ET C2A2 ET A2C3 ET C3C4 ET C4C5 ET C5A3 ET
A3C6 ET C6C7 ET C7A4 ET A4C8 ET C8C9 ET C9C10 ET C10A1 ;
$MT = 'DOMA' MT 'MACRO' ;
MT = $MT.MAILLAGE ;
CNT = CONT MT ;
ENTREE = R2R1 ;
$ENTREE = 'DOMA' ENTREE 'MACRO' 'INCL' $MT epsi ;
SI (EGA SREC 'G') ;
SORTIE = R6R5 ;
BOUCHEE = R4R3 ;
SIGN = -1.0 ;
SINON ;
SORTIE = R4R3 ;
BOUCHEE = R6R5 ;
SIGN = 1.0 ;
FINSI ;
$SORTIE = 'DOMA' SORTIE 'MACRO' 'INCL' $MT epsi ;
$WALL = 'DOMA' WALL 'MACRO' 'INCL' $MT epsi ;
VOL = 'DOMA' $MT 'VOLUME' ;
VOLT = 'SOMT' VOL ;
VOL = KCHT $MT 'SCAL' 'CENTRE' VOL ;
'MESSAGE' 'VOLUME TOTAL = ' VOLT ;
******************************************
* FRONTIERES POUR CONDITIONS AUX LIMITES *
******************************************
MUR_HOR = A1C1 ET C1C2 ET C2A2 ET A3C6 ET C6C7 ET C7A4 ET R5R4 ;
MUR_VER = A2C3 ET C3C4 ET C4C5 ET C5A3 ET A4C8 ET C8C9
ET C9C10 ET C10A1 ET R3R2 ET R1R6 ET BOUCHEE ;
*========================================================*
* DONNEES DU CALCUL DE DISTRIBUTION *
*========================================================*
*--------------------------------------
* temperature et pression de saturation
*--------------------------------------
T = 373.0 ;
ZZ = 7000.*(-1.)/T ;
PSAT = 1.055E21/(T ** 5.)* (EXP ZZ) ;
PSAT = PSAT*101325.0 ;
*--------------------------------------
* masses molaires et constantes des gaz
*--------------------------------------
MH2 = 2.0E-3 ;
MO2 = 32.0E-3 ;
MN2 = 28.0E-3 ;
MH2O = 18.0E-3 ;
Rg = 8.313 ;
RH2 = Rg/MH2 ;
RO2 = Rg/MO2 ;
RN2 = Rg/MN2 ;
RH2O = Rg/MH2O ;
*-------------------
* conditions air sec
*-------------------
P1 = 1.E5 ;
T1 = 273.0 ;
XH2_SEC = 0.1 ;
XAIR_SEC = 1.0 - XH2_SEC ;
*-----------------------------
* pressions partielles des gaz
* fractions volumiques
*-----------------------------
PVAP = PSAT ;
PAIR = (XAIR_SEC*P1)*(T/T1) ;
PH2 = (XH2_SEC*P1)*(T/T1) ;
P = PVAP + PAIR + PH2 ;
XH2 = PH2/P ;
XAIR = PAIR/P ;
XH2O = PVAP/P ;
XO2 = 0.21*XAIR ;
XN2 = 1.0 - XH2 -XH2O - XO2 ;
*---------------------------------------------
* masse molaire du melange et constante du gaz
*---------------------------------------------
M = (XH2*MH2) + (XO2*MO2) + (XN2*MN2) + (XH2O*MH2O) ;
R = Rg/M ;
*------------------------------------------------------------
* densite du melange (loi d'etat GP)
*------------------------------------------------------------
PSI = R*T ;
RHO = P/PSI ;
*------------------------
* Caractéristiques du jet
*------------------------
XH2Jet = 0.0 ;
XH2OJet = 0.0 ;
XO2Jet = 0.21*( 1.0 - XH2Jet - XH2OJet ) ;
XN2Jet = 1.0 - XH2Jet - XH2OJet - XO2Jet ;
MJet = (XH2Jet*MH2) + (XH2OJet*MH2O) + (XO2Jet*MO2) +
(XN2Jet*MN2) ;
RJet = Rg/MJet ;
TJet = 650.0 ;
PSIJet = Rjet*Tjet ;
RhoJet = P/PSIJet ;
GJet = 2.5 ;
GJetabs= GJet ;
UJet = GJet/RhoJet ;
KJet = 0.05*UJet*UJet ;
EJet = 0.02*(UJet**3.)/DINJ ;
Gjet = Gjet*SIGN ;
*------------------------------------------------
* fractions massiques des differents constituants
*------------------------------------------------
YH2 = XH2*MH2/M ;
YO2 = XO2*MO2/M ;
YN2 = XN2*MN2/M ;
YH2O = XH2O*MH2O/M ;
YH2Jet = XH2Jet*MH2/MJet ;
YH2OJet =XH2OJet*MH2O/MJet ;
YO2Jet = XO2Jet*MO2/MJet ;
YN2Jet =XN2Jet*MN2/MJet ;
*------------------------------------------------------------------
* Cp des différents constituants et du mélange (supposés constants)
*------------------------------------------------------------------
CPH2 = 13514.04 + (1.684537*T) ;
CPH2O = 1715.632 + (0.552805*T) ;
CPN2 = 1006.15 + (0.1387166*T) ;
CPO2 = 907.580 + (0.1420522*T) ;
CP = (YH2*CPH2) + (YH2O*CPH2O) + (YO2*CPO2) + (YN2*CPN2) ;
gamma = CP/(CP-R) ;
*----------------------------------------------------
* calcul d'une vitesse de référence (pour les tracés)
*----------------------------------------------------
uref = gamma*R*T ;
uref = uref**0.5 ;
uref = 0.01*uref ;
ampl = 1./uref ;
*------------------------------------------------------------------------
* Prandtl, Schmidt, viscosité (loi de Sutherland), conductivité thermique
* coefficients de diffusion moléculaire
*------------------------------------------------------------------------
Pr = 0.7 ;
Prt = 1.0 ;
Sct = 1.0 ;
Mu = 1.716E-5*((T/273.0)**1.5)*(273.0+110.5)/(T+110.5) ;
Nu = Mu/RHO ;
Lambda = Mu*CP/Pr ;
alpha = Lambda/RHO/CP ;
DH2O = 2.55E-5 ;
DH2 = 7.12E-5 ;
DO2 = 2.06E-5 ;
PSIWALL = T*R ;
h = 10. ;
U0 = 1.0D0 ;
L0 = 1.0D0 ;
*==============================================================
* TABLE EQEX CONTENANT LES EQUATIONS A RESOUDRE :
* 0) FILTRE K-E
* 1) QUANTITE DE MOUVEMENT --- OPERATEUR NSKE
* 2) EQUATION DE L'ENERGIE --- OPERATEUR TSCAL
* 3) TRANSPORT DES ESPECES --- OPERATEUR TSCAL
* AINSI QUE 2 PROCEDURES (CALCUL1 ET CALCUL2) POUR L'ALGORITHME
* 'FAIBLE MACH'
* 4) CONDITIONS AUX LIMITES
*==============================================================
RV = 'EQEX' $MT 'ITMA' 100 'TFINAL' 10. 'ALFA' 0.8
'ZONE' $MT 'OPER' 'CALCUL1'
'ZONE' $MT 'OPER' 'FILTREKE' 'UN' L0 NU 'INCO' 'KN' 'EN'
'OPTI' 'CONS'
'ZONE' $MT 'OPER' 'NSKE' 'RHOC' MU 'MUT' 'UN' 'ROG'
'INCO' 'GN' 'KN' 'EN'
'OPTI' 'NOCONS'
'ZONE' $MT 'OPER' 'TSCAL' alpha 'UN' 'S' 'NUT' Prt
'INCO' 'PSIN'
'OPTI' 'EFM1' 'EXPL'
'ZONE' $WALL 'OPER' 'ECHI' h PSIWALL 'INCO' 'PSIN' ;
RV = 'EQEX' RV
'ZONE' $MT 'OPER' 'TSCAL' DH2 'UN' 0.0 'NUT' SCT
'INCO' 'YH2'
'ZONE' $MT 'OPER' 'TSCAL' DO2 'UN' 0.0 'NUT' SCT
'INCO' 'YO2'
'ZONE' $MT 'OPER' 'TSCAL' DH2O 'UN' 0.0 'NUT' SCT
'INCO' 'YH2O'
'ZONE' $MT 'OPER' 'CALCUL2'
'ZONE' $MT 'OPER' 'RECOMB' ;
RV = 'EQEX' RV
'CLIM' 'GN' 'UIMP' MUR_VER 0.0
'GN' 'VIMP' MUR_HOR 0.0
'GN' 'UIMP' SORTIE GJet
'GN' 'VIMP' SORTIE 0.0
'GN' 'UIMP' ENTREE 0.0
'GN' 'VIMP' ENTREE GJetabs ;
RV = 'EQEX' RV
'CLIM' 'PSIN' 'TIMP' SORTIE PSIJet
'YH2' 'TIMP' SORTIE YH2Jet
'YO2' 'TIMP' SORTIE YO2Jet
'YH2O' 'TIMP' SORTIE YH2OJet
'KN' 'TIMP' SORTIE KJet
'EN' 'TIMP' SORTIE EJet ;
*===========================================================
* TABLE EQPR POUR L'EQUATION DE POISSON (SOLVEUR ELLIPTIQUE)
*===========================================================
RVP = 'EQPR' $MT KTYPI 1
'ZONE' $MT 'OPER' 'PRESSION' 'ZS'
'PIMP' 0. ;
*==========================================================
* TABLE INCO CONTENANT LES INCONNUES ET DONNEES DU PROBLEME
*==========================================================
RV.'PRESSION' = RVP ;
RV.'NOMVI' = 'GN' ;
RV.'INCO' = 'TABLE' 'INCO' ;
RVP.'INCO' = RV.'INCO' ;
* vitesse et quantité de mouvement
RV.INCO.'UN' = kcht $MT VECT SOMMET (0. 0.);
RV.INCO.'GN' = kcht $MT VECT SOMMET (0. 0.);
* température
RV.INCO.'PSIN' = kcht $MT SCAL SOMMET PSI ;
RV.INCO.'PSI1' = kcht $MT SCAL SOMMET PSI ;
RV.INCO.'TN' = kcht $MT SCAL SOMMET T ;
RV.INCO.'TPLAQUE' = T ;
* variables modèle de turbulence
RV.INCO.'EN' = kcht $MT SCAL SOMMET 1.E-5 ;
RV.INCO.'KN' = kcht $MT SCAL SOMMET 1.E-5 ;
RV.INCO.'MUT' = kcht $MT SCAL CENTRE Mu ;
RV.INCO.'NUT' = kcht $MT SCAL CENTRE Nu ;
* masse volumique
RV.INCO.'RHO' = kcht $MT SCAL SOMMET RHO ;
RV.INCO.'RHOC'= kcht $MT SCAL CENTRE RHO ;
RV.INCO.'RHOM'= RHO ;
* fractions massiques
RV.INCO.'YH2' = kcht $MT SCAL SOMMET YH2 ;
RV.INCO.'YO2' = kcht $MT SCAL SOMMET YO2 ;
RV.INCO.'YN2' = kcht $MT SCAL SOMMET YN2 ;
RV.INCO.'YH2O'= kcht $MT SCAL SOMMET YH2O ;
* termes sources (Poisson/énergie/QDM)
RV.INCO.'S'=kcht $MT SCAL CENTRE 0. ;
RV.INCO.'Q'=kcht $MT SCAL SOMMET 0. ;
RV.INCO.'ROG'=kcht $MT VECT CENTRE (0. 0.) ;
RV.INCO.'ZS' = KCHT $MT SCAL CENTRE 0.0 ;
* pression
RV.INCO.'PM' = P ;
* progressions
RV.INCO.'TEMPS' = PROG 0. ;
RV.INCO.'XH2MAX' = PROG XH2 ;
RV.INCO.'XH2MIN' = PROG XH2 ;
RV.INCO.'TP' = PROG RV.INCO.'TPLAQUE' ;
RV.INCO.'DEBIT' = PROG 0. ;
RV.INCO.'EFFIC' = PROG 0. ;
RV.INCO.'TS' = PROG T ;
MASINI = KOPS RV.INCO.'RHOC' '*' VOL ;
MASINI = SOMT MASINI ;
RV.INCO.'PRESSION' = PROG P ;
RV.INCO.'MASSETOT' = PROG MASINI ;
RV . 'INCO' . 'A' = 0.48D-8 ;
RV . 'INCO' . 'B' = 0.58D-3 ;
RV . 'INCO' . 'XH2ON' = 0.005 ;
RV . 'INCO' . 'XH2OFF' = 0.005 ;
RV . 'INCO' . 'BETA' = 0.2 ;
exec rv ;
SI (RV.PASDETPS.'TPS' < 8.0) ;
ERREUR 5 ;
FINSI ;
SI (MAXI(RV.INCO.'DEBIT') < 4.9D-2);
ERREUR 5 ;
FINSI ;
SI (MAXI(RV.INCO.'TP') < 690.D0);
ERREUR 5 ;
FINSI ;
SI (MAXI(RV.INCO.'TN') < 550.D0);
ERREUR 5 ;
FINSI ;
FIN ;
© Cast3M 2003 - All rights reserved.
Disclaimer