SLFMFoam selecting species to postprocess #2
5 changed files with 30 additions and 13 deletions
|
|
@ -15,7 +15,7 @@ FoamFile
|
||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
postSpeciesN 2; //number of species for post-processing
|
postSpecieNames (CO OH); //names of species for post-processing
|
||||||
stoiMF 0.351; //stoichiometric mixture fraction
|
stoiMF 0.351; //stoichiometric mixture fraction
|
||||||
stretchFactor 1.05;
|
stretchFactor 1.05;
|
||||||
lowerN 20; //number of eta-space under stoichiometric value
|
lowerN 20; //number of eta-space under stoichiometric value
|
||||||
|
|
|
||||||
|
|
@ -90,12 +90,14 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
turbulence->correct();
|
turbulence->correct();
|
||||||
|
|
||||||
|
#include "updateYi.H" //update species
|
||||||
if(runTime.write() == true)
|
if(runTime.write() == true)
|
||||||
{
|
{
|
||||||
rho.write();
|
rho.write();
|
||||||
#include "updateYi.H" //update species
|
#include "updateYi.H" //update species
|
||||||
for(label y=0 ; y<postSpeciesN ; y++)
|
forAll(postSpecieIndices, yi)
|
||||||
{
|
{
|
||||||
|
const label y = postSpecieIndices[yi];
|
||||||
Y[y].write();
|
Y[y].write();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,10 @@ thermo.validate(args.executable(), "h", "e");
|
||||||
|
|
||||||
basicSpecieMixture& composition = thermo.composition();
|
basicSpecieMixture& composition = thermo.composition();
|
||||||
PtrList<volScalarField>& Y = composition.Y();
|
PtrList<volScalarField>& Y = composition.Y();
|
||||||
|
forAll (Y, i)
|
||||||
|
{
|
||||||
|
Y[i].writeOpt() = IOobject::NO_WRITE;
|
||||||
|
}
|
||||||
|
|
||||||
word inertSpecie(thermo.lookup("inertSpecie"));
|
word inertSpecie(thermo.lookup("inertSpecie"));
|
||||||
|
|
||||||
|
|
@ -291,7 +295,15 @@ IOdictionary SLFMdict //SLFM properties dictionary
|
||||||
);
|
);
|
||||||
|
|
||||||
label Ysize = Y.size();
|
label Ysize = Y.size();
|
||||||
scalar postSpeciesN(readScalar(SLFMdict.lookup("postSpeciesN")));
|
wordList postSpecieNames(SLFMdict.lookup("postSpecieNames"));
|
||||||
|
labelList postSpecieIndices(postSpecieNames.size(),-1);
|
||||||
|
forAll(postSpecieNames, i)
|
||||||
|
{
|
||||||
|
const word &spName (postSpecieNames[i]);
|
||||||
|
const label spI (composition.species()[spName]);
|
||||||
|
postSpecieIndices[i] = spI;
|
||||||
|
Y[spI].writeOpt() = IOobject::AUTO_WRITE;
|
||||||
|
}
|
||||||
scalar stoiMF(readScalar(SLFMdict.lookup("stoiMF")));
|
scalar stoiMF(readScalar(SLFMdict.lookup("stoiMF")));
|
||||||
scalar stretchFac(readScalar(SLFMdict.lookup("stretchFactor")));
|
scalar stretchFac(readScalar(SLFMdict.lookup("stretchFactor")));
|
||||||
scalar lowerN(readScalar(SLFMdict.lookup("lowerN")));
|
scalar lowerN(readScalar(SLFMdict.lookup("lowerN")));
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,9 @@ scalarFieldArray2d Rtable
|
||||||
|
|
||||||
scalarFieldArray3d Ytable
|
scalarFieldArray3d Ytable
|
||||||
(
|
(
|
||||||
postSpeciesN,
|
postSpecieNames.size(),
|
||||||
scalarFieldArray2d
|
scalarFieldArray2d
|
||||||
(
|
(
|
||||||
etamax+1,
|
etamax+1,
|
||||||
scalarFieldArray1d
|
scalarFieldArray1d
|
||||||
(
|
(
|
||||||
|
|
@ -55,9 +55,10 @@ for(label j=0 ; j<=etamax ; j++)
|
||||||
{
|
{
|
||||||
Ttable[j][v][n] = bpdf.evaluate(mf, mfVar, etaValue, Y_SLFM[n][Ysize]);
|
Ttable[j][v][n] = bpdf.evaluate(mf, mfVar, etaValue, Y_SLFM[n][Ysize]);
|
||||||
Rtable[j][v][n] = bpdf.evaluate(mf, mfVar, etaValue, Rgas_SLFM[n]);
|
Rtable[j][v][n] = bpdf.evaluate(mf, mfVar, etaValue, Rgas_SLFM[n]);
|
||||||
for(label y=0 ; y<postSpeciesN ; y++)
|
forAll(postSpecieIndices, yi)
|
||||||
{
|
{
|
||||||
Ytable[y][j][v][n] = bpdf.evaluate(mf, mfVar, etaValue, Y_SLFM[n][y]);
|
const label y = postSpecieIndices[yi];
|
||||||
|
Ytable[yi][j][v][n] = bpdf.evaluate(mf, mfVar, etaValue, Y_SLFM[n][y]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,12 +31,13 @@ forAll(rho, cellI)
|
||||||
scalar jfac = jfc[cellI], vfac = vfc[cellI], nfac = nfc[cellI];
|
scalar jfac = jfc[cellI], vfac = vfc[cellI], nfac = nfc[cellI];
|
||||||
|
|
||||||
|
|
||||||
for(label y=0 ; y<postSpeciesN ; y++)
|
forAll(postSpecieIndices, yi)
|
||||||
{
|
{
|
||||||
scalar y00 = Ytable[y][jl][vl][nl]*(1-jfac)+Ytable[y][jh][vl][nl]*jfac;
|
const label y = postSpecieIndices[yi];
|
||||||
scalar y01 = Ytable[y][jl][vl][nh]*(1-jfac)+Ytable[y][jh][vl][nh]*jfac;
|
scalar y00 = Ytable[yi][jl][vl][nl]*(1-jfac)+Ytable[yi][jh][vl][nl]*jfac;
|
||||||
scalar y10 = Ytable[y][jl][vh][nl]*(1-jfac)+Ytable[y][jh][vh][nl]*jfac;
|
scalar y01 = Ytable[yi][jl][vl][nh]*(1-jfac)+Ytable[yi][jh][vl][nh]*jfac;
|
||||||
scalar y11 = Ytable[y][jl][vh][nh]*(1-jfac)+Ytable[y][jh][vh][nh]*jfac;
|
scalar y10 = Ytable[yi][jl][vh][nl]*(1-jfac)+Ytable[yi][jh][vh][nl]*jfac;
|
||||||
|
scalar y11 = Ytable[yi][jl][vh][nh]*(1-jfac)+Ytable[yi][jh][vh][nh]*jfac;
|
||||||
|
|
||||||
scalar y0 = y00*(1-vfac)+y10*vfac;
|
scalar y0 = y00*(1-vfac)+y10*vfac;
|
||||||
scalar y1 = y01*(1-vfac)+y11*vfac;
|
scalar y1 = y01*(1-vfac)+y11*vfac;
|
||||||
|
|
@ -48,8 +49,9 @@ forAll(rho, cellI)
|
||||||
}
|
}
|
||||||
|
|
||||||
//correct processor boundary value of T and rho
|
//correct processor boundary value of T and rho
|
||||||
for(label y=0 ; y<postSpeciesN ; y++)
|
forAll(postSpecieIndices, yi)
|
||||||
{
|
{
|
||||||
|
const label y = postSpecieIndices[yi];
|
||||||
Y[y].correctBoundaryConditions();
|
Y[y].correctBoundaryConditions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue