applications/solvers/combustion: Moved the inertSpecie functionality into basicSpecieMixture

and renamed defaultSpecie as its mass fraction is derived from the sum of the
mass fractions of all other species and it need not be inert but must be present
everywhere, e.g. N2 in air/fuel combustion which can be involved in the
production of NOx.

The previous name inertSpecie in thermophysicalProperties is supported for
backward compatibility.
This commit is contained in:
Henry Weller
2020-10-26 20:57:01 +00:00
parent 5e3c5a9698
commit 095054d82e
69 changed files with 204 additions and 278 deletions

View File

@ -11,11 +11,10 @@ tmp<fv::convectionScheme<scalar>> mvConvection
{ {
radiation->correct(); radiation->correct();
combustion->correct(); combustion->correct();
volScalarField Yt(0.0*Y[0]);
forAll(Y, i) forAll(Y, i)
{ {
if (i != inertIndex && composition.active(i)) if (composition.solve(i))
{ {
volScalarField& Yi = Y[i]; volScalarField& Yi = Y[i];
@ -38,14 +37,10 @@ tmp<fv::convectionScheme<scalar>> mvConvection
YiEqn.solve("Yi"); YiEqn.solve("Yi");
fvOptions.correct(Yi); fvOptions.correct(Yi);
Yi.max(0.0);
Yt += Yi;
} }
} }
Y[inertIndex] = scalar(1) - Yt; composition.normalise();
Y[inertIndex].max(0.0);
volScalarField& he = thermo.he(); volScalarField& he = thermo.he();

View File

@ -1,4 +1,3 @@
const volScalarField& psi = thermo.psi(); const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T(); const volScalarField& T = thermo.T();
regionModels::surfaceFilmModel& surfaceFilm = tsurfaceFilm(); regionModels::surfaceFilmModel& surfaceFilm = tsurfaceFilm();
const label inertIndex(composition.species()[inertSpecie]);

View File

@ -8,15 +8,6 @@ SLGThermo slgThermo(mesh, thermo);
basicSpecieMixture& composition = thermo.composition(); basicSpecieMixture& composition = thermo.composition();
PtrList<volScalarField>& Y = composition.Y(); PtrList<volScalarField>& Y = composition.Y();
const word inertSpecie(thermo.properties().lookup("inertSpecie"));
if (!composition.species().found(inertSpecie))
{
FatalIOErrorIn(args.executable().c_str(), thermo.properties())
<< "Inert specie " << inertSpecie << " not found in available species "
<< composition.species()
<< exit(FatalIOError);
}
Info<< "Creating field rho\n" << endl; Info<< "Creating field rho\n" << endl;
volScalarField rho volScalarField rho
( (

View File

@ -11,11 +11,10 @@ tmp<fv::convectionScheme<scalar>> mvConvection
{ {
reaction->correct(); reaction->correct();
volScalarField Yt(0.0*Y[0]);
forAll(Y, i) forAll(Y, i)
{ {
if (i != inertIndex && composition.active(i)) if (composition.solve(i))
{ {
volScalarField& Yi = Y[i]; volScalarField& Yi = Y[i];
@ -36,12 +35,8 @@ tmp<fv::convectionScheme<scalar>> mvConvection
YiEqn.solve("Yi"); YiEqn.solve("Yi");
fvOptions.correct(Yi); fvOptions.correct(Yi);
Yi.max(0.0);
Yt += Yi;
} }
} }
Y[inertIndex] = scalar(1) - Yt; composition.normalise();
Y[inertIndex].max(0.0);
} }

View File

@ -1,3 +1,2 @@
const volScalarField& psi = thermo.psi(); const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T(); const volScalarField& T = thermo.T();
const label inertIndex(composition.species()[inertSpecie]);

View File

@ -8,15 +8,6 @@ thermo.validate(args.executable(), "h", "e");
basicSpecieMixture& composition = thermo.composition(); basicSpecieMixture& composition = thermo.composition();
PtrList<volScalarField>& Y = composition.Y(); PtrList<volScalarField>& Y = composition.Y();
const word inertSpecie(thermo.properties().lookup("inertSpecie"));
if (!composition.species().found(inertSpecie))
{
FatalIOErrorIn(args.executable().c_str(), thermo.properties())
<< "Inert specie " << inertSpecie << " not found in available species "
<< composition.species()
<< exit(FatalIOError);
}
volScalarField rho volScalarField rho
( (
IOobject IOobject

View File

@ -1,3 +1,2 @@
const volScalarField& psi = thermo.psi(); const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T(); const volScalarField& T = thermo.T();
const label inertIndex(composition.species()[inertSpecie]);

View File

@ -8,15 +8,6 @@ thermo.validate(args.executable(), "h", "e");
basicSpecieMixture& composition = thermo.composition(); basicSpecieMixture& composition = thermo.composition();
PtrList<volScalarField>& Y = composition.Y(); PtrList<volScalarField>& Y = composition.Y();
const word inertSpecie(thermo.properties().lookup("inertSpecie"));
if (!composition.species().found(inertSpecie))
{
FatalIOErrorIn(args.executable().c_str(), thermo.properties())
<< "Inert specie " << inertSpecie << " not found in available species "
<< composition.species()
<< exit(FatalIOError);
}
volScalarField rho volScalarField rho
( (
IOobject IOobject

View File

@ -111,7 +111,7 @@ License
forAll(Y, i) forAll(Y, i)
{ {
if (i != inertIndex && composition.active(i)) if (composition.solve(i))
{ {
volScalarField& Yi = Y[i]; volScalarField& Yi = Y[i];

View File

@ -1,24 +1,9 @@
{ {
reaction.correct(); reaction.correct();
tmp<volScalarField> Yt(nullptr);
if (Y.size())
{
Yt = tmp<volScalarField>
(
new volScalarField
(
IOobject("Yt", runTime.timeName(), mesh),
mesh,
dimensionedScalar(dimless, 0)
)
);
}
forAll(Y, i) forAll(Y, i)
{ {
if (i != inertIndex && composition.active(i)) if (composition.solve(i))
{ {
volScalarField& Yi = Y[i]; volScalarField& Yi = Y[i];
@ -38,15 +23,8 @@
YiEqn.solve("Yi"); YiEqn.solve("Yi");
fvOptions.correct(Yi); fvOptions.correct(Yi);
Yi.max(0.0);
Yt.ref() += Yi;
} }
} }
if (Y.size()) composition.normalise();
{
Y[inertIndex] = scalar(1) - Yt;
Y[inertIndex].max(0.0);
}
} }

View File

@ -8,21 +8,6 @@
basicSpecieMixture& composition = thermo.composition(); basicSpecieMixture& composition = thermo.composition();
PtrList<volScalarField>& Y = composition.Y(); PtrList<volScalarField>& Y = composition.Y();
label inertIndex = -1;
if (Y.size())
{
const word inertSpecie(thermo.properties().lookup("inertSpecie"));
if (!composition.species().found(inertSpecie))
{
FatalIOErrorIn(args.executable().c_str(), thermo.properties())
<< "Inert specie " << inertSpecie
<< " not found in available species "
<< composition.species()
<< exit(FatalIOError);
}
inertIndex = composition.species()[inertSpecie];
}
volScalarField& rho = rhoFluid[i]; volScalarField& rho = rhoFluid[i];
volVectorField& U = UFluid[i]; volVectorField& U = UFluid[i];
surfaceScalarField& phi = phiFluid[i]; surfaceScalarField& phi = phiFluid[i];

View File

@ -17,24 +17,9 @@ if (Y.size())
{ {
combustion->correct(); combustion->correct();
tmp<volScalarField> Yt(nullptr);
if (Y.size())
{
Yt = tmp<volScalarField>
(
new volScalarField
(
IOobject("Yt", runTime.timeName(), mesh),
mesh,
dimensionedScalar(dimless, 0)
)
);
}
forAll(Y, i) forAll(Y, i)
{ {
if (i != inertIndex && composition.active(i)) if (composition.solve(i))
{ {
volScalarField& Yi = Y[i]; volScalarField& Yi = Y[i];
@ -57,15 +42,8 @@ if (Y.size())
YEqn.solve("Yi"); YEqn.solve("Yi");
fvOptions.correct(Yi); fvOptions.correct(Yi);
Yi.max(0.0);
Yt.ref() += Yi;
} }
} }
if (Y.size()) composition.normalise();
{
Y[inertIndex] = scalar(1) - Yt;
Y[inertIndex].max(0.0);
}
} }

View File

@ -1,18 +1,3 @@
label inertIndex = -1;
if (Y.size())
{
const word inertSpecie(thermo.properties().lookup("inertSpecie"));
if (!composition.species().found(inertSpecie))
{
FatalIOErrorIn(args.executable().c_str(), thermo.properties())
<< "Inert specie " << inertSpecie
<< " not found in available species "
<< composition.species()
<< exit(FatalIOError);
}
inertIndex = composition.species()[inertSpecie];
}
const volScalarField& T = thermo.T(); const volScalarField& T = thermo.T();
const volScalarField& psi = thermo.psi(); const volScalarField& psi = thermo.psi();
regionModels::surfaceFilmModel& surfaceFilm = tsurfaceFilm(); regionModels::surfaceFilmModel& surfaceFilm = tsurfaceFilm();

View File

@ -11,11 +11,10 @@ tmp<fv::convectionScheme<scalar>> mvConvection
{ {
combustion->correct(); combustion->correct();
volScalarField Yt(0.0*Y[0]);
forAll(Y, i) forAll(Y, i)
{ {
if (i != inertIndex && composition.active(i)) if (composition.solve(i))
{ {
volScalarField& Yi = Y[i]; volScalarField& Yi = Y[i];
@ -36,12 +35,8 @@ tmp<fv::convectionScheme<scalar>> mvConvection
YEqn.solve("Yi"); YEqn.solve("Yi");
fvOptions.correct(Yi); fvOptions.correct(Yi);
Yi.max(0.0);
Yt += Yi;
} }
} }
Y[inertIndex] = scalar(1) - Yt; composition.normalise();
Y[inertIndex].max(0.0);
} }

View File

@ -1,3 +1,2 @@
const volScalarField& psi = thermo.psi(); const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T(); const volScalarField& T = thermo.T();
const label inertIndex(composition.species()[inertSpecie]);

View File

@ -10,15 +10,6 @@ SLGThermo slgThermo(mesh, thermo);
basicSpecieMixture& composition = thermo.composition(); basicSpecieMixture& composition = thermo.composition();
PtrList<volScalarField>& Y = composition.Y(); PtrList<volScalarField>& Y = composition.Y();
const word inertSpecie(thermo.properties().lookup("inertSpecie"));
if (!composition.species().found(inertSpecie))
{
FatalIOErrorIn(args.executable().c_str(), thermo.properties())
<< "Inert specie " << inertSpecie << " not found in available species "
<< composition.species()
<< exit(FatalIOError);
}
volScalarField& p = thermo.p(); volScalarField& p = thermo.p();
volScalarField rho volScalarField rho

View File

@ -52,24 +52,13 @@ Foam::MultiComponentPhaseModel<BasePhaseModel>::MultiComponentPhaseModel
"residualAlpha", "residualAlpha",
dimless, dimless,
fluid.mesh().solverDict("Yi") fluid.mesh().solverDict("Yi")
), )
inertIndex_(-1)
{ {
const word inertSpecie
(
this->thermo_->properties().lookupOrDefault("inertSpecie", word::null)
);
if (inertSpecie != word::null)
{
inertIndex_ = this->thermo_->composition().species()[inertSpecie];
}
PtrList<volScalarField>& Y = this->thermo_->composition().Y(); PtrList<volScalarField>& Y = this->thermo_->composition().Y();
forAll(Y, i) forAll(Y, i)
{ {
if (i != inertIndex_ && this->thermo_->composition().active(i)) if (this->thermo_->composition().solve(i))
{ {
const label j = YActive_.size(); const label j = YActive_.size();
YActive_.resize(j + 1); YActive_.resize(j + 1);
@ -91,42 +80,7 @@ Foam::MultiComponentPhaseModel<BasePhaseModel>::~MultiComponentPhaseModel()
template<class BasePhaseModel> template<class BasePhaseModel>
void Foam::MultiComponentPhaseModel<BasePhaseModel>::correctSpecies() void Foam::MultiComponentPhaseModel<BasePhaseModel>::correctSpecies()
{ {
volScalarField Yt this->thermo_->composition().normalise();
(
IOobject
(
IOobject::groupName("Yt", this->name()),
this->fluid().mesh().time().timeName(),
this->fluid().mesh()
),
this->fluid().mesh(),
dimensionedScalar(dimless, 0)
);
PtrList<volScalarField>& Yi = YRef();
forAll(Yi, i)
{
if (i != inertIndex_)
{
Yi[i].max(0);
Yt += Yi[i];
}
}
if (inertIndex_ != -1)
{
Yi[inertIndex_] = scalar(1) - Yt;
Yi[inertIndex_].max(0);
}
else
{
forAll(Yi, i)
{
Yi[i] /= Yt;
}
}
BasePhaseModel::correctSpecies(); BasePhaseModel::correctSpecies();
} }

View File

@ -59,9 +59,6 @@ protected:
//- Residual phase fraction //- Residual phase fraction
dimensionedScalar residualAlpha_; dimensionedScalar residualAlpha_;
//- Inert species index
label inertIndex_;
//- Pointer list to active species //- Pointer list to active species
UPtrList<volScalarField> YActive_; UPtrList<volScalarField> YActive_;

View File

@ -69,8 +69,8 @@ void singleStepCombustion<ThermoType>:: massAndAirStoichRatios()
const scalar Wu = mixture_.specieThermos()[fuelIndex_].W(); const scalar Wu = mixture_.specieThermos()[fuelIndex_].W();
stoicRatio_ = stoicRatio_ =
(mixture_.specieThermos()[inertIndex_].W() (mixture_.specieThermos()[mixture_.defaultSpecie()].W()
* specieStoichCoeffs_[inertIndex_] * specieStoichCoeffs_[mixture_.defaultSpecie()]
+ mixture_.specieThermos()[O2Index].W() + mixture_.specieThermos()[O2Index].W()
* mag(specieStoichCoeffs_[O2Index])) * mag(specieStoichCoeffs_[O2Index]))
/ (Wu*mag(specieStoichCoeffs_[fuelIndex_])); / (Wu*mag(specieStoichCoeffs_[fuelIndex_]));
@ -166,7 +166,6 @@ singleStepCombustion<ThermoType>::singleStepCombustion
specieStoichCoeffs_(mixture_.species().size(), 0.0), specieStoichCoeffs_(mixture_.species().size(), 0.0),
Yprod0_(mixture_.species().size(), 0.0), Yprod0_(mixture_.species().size(), 0.0),
fres_(Yprod0_.size()), fres_(Yprod0_.size()),
inertIndex_(mixture_.species()[thermo.properties().lookup("inertSpecie")]),
fuelIndex_(mixture_.species()[thermo.properties().lookup("fuel")]), fuelIndex_(mixture_.species()[thermo.properties().lookup("fuel")]),
specieProd_(Yprod0_.size(), 1), specieProd_(Yprod0_.size(), 1),
wFuel_ wFuel_
@ -312,7 +311,7 @@ void singleStepCombustion<ThermoType>::fresCorrect()
forAll(reaction.rhs(), i) forAll(reaction.rhs(), i)
{ {
const label speciei = reaction.rhs()[i].index; const label speciei = reaction.rhs()[i].index;
if (speciei != inertIndex_) if (speciei != mixture_.defaultSpecie())
{ {
forAll(fres_[speciei], celli) forAll(fres_[speciei], celli)
{ {

View File

@ -83,9 +83,6 @@ protected:
//- List of components residual //- List of components residual
PtrList<volScalarField> fres_; PtrList<volScalarField> fres_;
//- Inert specie index
label inertIndex_;
//- Fuel specie index //- Fuel specie index
label fuelIndex_; label fuelIndex_;
@ -157,9 +154,6 @@ public:
//- Return the list of components residual //- Return the list of components residual
inline tmp<volScalarField> fres(const label index) const; inline tmp<volScalarField> fres(const label index) const;
//- Return the inert specie index
inline label inertIndex() const;
//- Return the fuel specie index //- Return the fuel specie index
inline label fuelIndex() const; inline label fuelIndex() const;

View File

@ -90,13 +90,6 @@ inline tmp<volScalarField> singleStepCombustion<ThermoType>::fres
} }
template<class ThermoType>
inline label singleStepCombustion<ThermoType>::inertIndex() const
{
return inertIndex_;
}
template<class ThermoType> template<class ThermoType>
inline label singleStepCombustion<ThermoType>::fuelIndex() const inline label singleStepCombustion<ThermoType>::fuelIndex() const
{ {

View File

@ -44,10 +44,37 @@ Foam::basicSpecieMixture::basicSpecieMixture
) )
: :
basicMixture(thermoDict, mesh, phaseName), basicMixture(thermoDict, mesh, phaseName),
phaseName_(phaseName),
species_(specieNames), species_(specieNames),
defaultSpecie_
(
species_.size()
? (
thermoDict.found("inertSpecie")
? thermoDict.lookup("inertSpecie")
: thermoDict.lookup("defaultSpecie")
)
: word("undefined")
),
defaultSpecieIndex_(-1),
active_(species_.size(), true), active_(species_.size(), true),
Y_(species_.size()) Y_(species_.size())
{ {
if (species_.size())
{
if (species_.found(defaultSpecie_))
{
defaultSpecieIndex_ = species_[defaultSpecie_];
}
else
{
FatalIOErrorInFunction(thermoDict)
<< "default specie " << defaultSpecie_
<< " not found in available species " << species_
<< exit(FatalIOError);
}
}
tmp<volScalarField> tYdefault; tmp<volScalarField> tYdefault;
forAll(species_, i) forAll(species_, i)
@ -85,7 +112,10 @@ Foam::basicSpecieMixture::basicSpecieMixture
// Read Ydefault if not already read // Read Ydefault if not already read
if (!tYdefault.valid()) if (!tYdefault.valid())
{ {
word YdefaultName(IOobject::groupName("Ydefault", phaseName)); const word YdefaultName
(
IOobject::groupName("Ydefault", phaseName)
);
IOobject timeIO IOobject timeIO
( (
@ -147,8 +177,72 @@ Foam::basicSpecieMixture::basicSpecieMixture
} }
} }
// Do not enforce constraint of sum of mass fractions to equal 1 here correctMassFractions();
// - not applicable to all models }
void Foam::basicSpecieMixture::correctMassFractions()
{
if (species_.size())
{
tmp<volScalarField> tYt
(
volScalarField::New
(
IOobject::groupName("Yt", phaseName_),
Y_[0],
calculatedFvPatchScalarField::typeName
)
);
volScalarField& Yt = tYt.ref();
for (label i=1; i<Y_.size(); i++)
{
Yt += Y_[i];
}
if (mag(max(Yt).value()) < rootVSmall)
{
FatalErrorInFunction
<< "Sum of mass fractions is zero for species " << species()
<< exit(FatalError);
}
forAll(Y_, i)
{
Y_[i] /= Yt;
}
}
}
void Foam::basicSpecieMixture::normalise()
{
if (species_.size())
{
tmp<volScalarField> tYt
(
volScalarField::New
(
IOobject::groupName("Yt", phaseName_),
Y_[0].mesh(),
dimensionedScalar(dimless, 0)
)
);
volScalarField& Yt = tYt.ref();
forAll(Y_, i)
{
if (solve(i))
{
Y_[i].max(scalar(0));
Yt += Y_[i];
}
}
Y_[defaultSpecieIndex_] = scalar(1) - Yt;
Y_[defaultSpecieIndex_].max(scalar(0));
}
} }

View File

@ -59,9 +59,21 @@ protected:
// Protected data // Protected data
//- Phase-name
const word& phaseName_;
//- Table of specie names //- Table of specie names
speciesTable species_; speciesTable species_;
//- The name of the default specie
// The mass fraction of which is derived from the other species
// rather than solved.
// Also used as the carrier specie in multicomponent diffusion
word defaultSpecie_;
//- The index of the default specie
label defaultSpecieIndex_;
//- List of specie active flags //- List of specie active flags
mutable List<bool> active_; mutable List<bool> active_;
@ -69,6 +81,12 @@ protected:
PtrList<volScalarField> Y_; PtrList<volScalarField> Y_;
// Protected Member Functions
//- Scale the mass fractions to sum to 1
void correctMassFractions();
public: public:
//- Run time type information //- Run time type information
@ -103,6 +121,9 @@ public:
//- Does the mixture include this specie? //- Does the mixture include this specie?
inline bool contains(const word& specieName) const; inline bool contains(const word& specieName) const;
//- Return the index of the default specie
inline label defaultSpecie() const;
//- Return true for active species //- Return true for active species
inline bool active(label speciei) const; inline bool active(label speciei) const;
@ -115,6 +136,10 @@ public:
//- Set speciei inactive //- Set speciei inactive
inline void setInactive(label speciei) const; inline void setInactive(label speciei) const;
//- Return true if the specie should be solved for
// i.e. active and not the default specie
inline bool solve(label speciei) const;
//- Return the mass-fraction fields //- Return the mass-fraction fields
inline PtrList<volScalarField>& Y(); inline PtrList<volScalarField>& Y();
@ -133,6 +158,11 @@ public:
//- Return the const mass-fraction field for a specie given by name //- Return the const mass-fraction field for a specie given by name
inline const volScalarField& Y(const word& specieName) const; inline const volScalarField& Y(const word& specieName) const;
//- Normalise the mass fractions
// by clipping positive
// and deriving the default specie mass fraction from the other species
void normalise();
// Specie properties // Specie properties

View File

@ -35,6 +35,12 @@ inline bool Foam::basicSpecieMixture::contains(const word& specieName) const
} }
inline Foam::label Foam::basicSpecieMixture::defaultSpecie() const
{
return defaultSpecieIndex_;
}
inline bool Foam::basicSpecieMixture::active(label speciei) const inline bool Foam::basicSpecieMixture::active(label speciei) const
{ {
return active_[speciei]; return active_[speciei];
@ -61,6 +67,12 @@ inline void Foam::basicSpecieMixture::setInactive(label speciei) const
} }
inline bool Foam::basicSpecieMixture::solve(label speciei) const
{
return speciei != defaultSpecieIndex_ && active_[speciei];
}
inline Foam::PtrList<Foam::volScalarField>& Foam::basicSpecieMixture::Y() inline Foam::PtrList<Foam::volScalarField>& Foam::basicSpecieMixture::Y()
{ {
return Y_; return Y_;

View File

@ -104,31 +104,6 @@ Foam::multiComponentMixture<ThermoType>::readSpeciesComposition
} }
template<class ThermoType>
void Foam::multiComponentMixture<ThermoType>::correctMassFractions()
{
// Multiplication by 1.0 changes Yt patches to "calculated"
volScalarField Yt("Yt", 1.0*Y_[0]);
for (label n=1; n<Y_.size(); n++)
{
Yt += Y_[n];
}
if (mag(max(Yt).value()) < rootVSmall)
{
FatalErrorInFunction
<< "Sum of mass fractions is zero for species " << this->species()
<< exit(FatalError);
}
forAll(Y_, n)
{
Y_[n] /= Yt;
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
template<class ThermoType> template<class ThermoType>

View File

@ -85,9 +85,6 @@ private:
const speciesTable& speciesTable_ const speciesTable& speciesTable_
) const; ) const;
//- Correct the mass fractions to sum to 1
void correctMassFractions();
public: public:

View File

@ -14,7 +14,7 @@ setInertY()
y=${1%.*} y=${1%.*}
phase=${1#*.} phase=${1#*.}
[ $y != "none" ] && arg="-set $y" || arg="-remove" [ $y != "none" ] && arg="-set $y" || arg="-remove"
runApplication -a foamDictionary -entry inertSpecie $arg \ runApplication -a foamDictionary -entry defaultSpecie $arg \
constant/thermophysicalProperties.$phase constant/thermophysicalProperties.$phase
} }

View File

@ -33,7 +33,7 @@ species
C3H8O C3H8O
); );
inertSpecie air; defaultSpecie air;
air air
{ {

View File

@ -32,7 +32,7 @@ species
C3H8O C3H8O
); );
inertSpecie H2O; defaultSpecie H2O;
H2O H2O
{ {

View File

@ -18,7 +18,7 @@ setInertY()
* ) arg="-set $y";; * ) arg="-set $y";;
esac esac
runApplication -a foamDictionary -entry inertSpecie $arg \ runApplication -a foamDictionary -entry defaultSpecie $arg \
constant/thermophysicalProperties.$phase constant/thermophysicalProperties.$phase
} }

View File

@ -26,7 +26,7 @@ thermoType
energy sensibleInternalEnergy; energy sensibleInternalEnergy;
} }
inertSpecie air; defaultSpecie air;
species species
( (

View File

@ -26,6 +26,8 @@ thermoType
specie specie; specie specie;
} }
defaultSpecie N2;
#include "speciesThermo" #include "speciesThermo"
// ************************************************************************* // // ************************************************************************* //

View File

@ -26,6 +26,8 @@ thermoType
specie specie; specie specie;
} }
defaultSpecie N2;
#include "speciesThermo" #include "speciesThermo"
// ************************************************************************* // // ************************************************************************* //

View File

@ -26,6 +26,8 @@ thermoType
specie specie; specie specie;
} }
defaultSpecie N2;
#include "speciesThermo" #include "speciesThermo"
// ************************************************************************* // // ************************************************************************* //

View File

@ -26,6 +26,8 @@ thermoType
specie specie; specie specie;
} }
defaultSpecie N2;
#include "speciesThermo" #include "speciesThermo"
// ************************************************************************* // // ************************************************************************* //

View File

@ -26,6 +26,8 @@ thermoType
specie specie; specie specie;
} }
defaultSpecie N2;
#include "speciesThermo" #include "speciesThermo"
// ************************************************************************* // // ************************************************************************* //

View File

@ -31,7 +31,7 @@ species
air air
); );
inertSpecie air; defaultSpecie air;
#include "include/thermo.air" #include "include/thermo.air"

View File

@ -26,7 +26,7 @@ thermoType
specie specie; specie specie;
} }
inertSpecie N2; defaultSpecie N2;
fuel CH4; fuel CH4;

View File

@ -26,7 +26,7 @@ thermoType
specie specie; specie specie;
} }
inertSpecie N2; defaultSpecie N2;
fuel CH4; fuel CH4;

View File

@ -27,7 +27,7 @@ thermoType
specie specie; specie specie;
} }
inertSpecie N2; defaultSpecie N2;
#include "thermo.compressibleGasGRI" #include "thermo.compressibleGasGRI"

View File

@ -26,7 +26,7 @@ thermoType
specie specie; specie specie;
} }
inertSpecie N2; defaultSpecie N2;
#include "thermo.compressibleGasGRI" #include "thermo.compressibleGasGRI"

View File

@ -26,7 +26,7 @@ thermoType
specie specie; specie specie;
} }
inertSpecie N2; defaultSpecie N2;
#include "thermo.compressibleGas" #include "thermo.compressibleGas"

View File

@ -26,7 +26,7 @@ thermoType
specie specie; specie specie;
} }
inertSpecie N2; defaultSpecie N2;
#include "thermo.compressibleGas" #include "thermo.compressibleGas"

View File

@ -26,7 +26,7 @@ thermoType
specie specie; specie specie;
} }
inertSpecie N2; defaultSpecie N2;
#include "thermo.compressibleGas" #include "thermo.compressibleGas"

View File

@ -26,7 +26,7 @@ thermoType
specie specie; specie specie;
} }
inertSpecie N2; defaultSpecie N2;
#include "thermo.compressibleGasGRI" #include "thermo.compressibleGasGRI"

View File

@ -26,7 +26,7 @@ thermoType
specie specie; specie specie;
} }
inertSpecie N2; defaultSpecie N2;
#include "thermo.compressibleGasGRI" #include "thermo.compressibleGasGRI"

View File

@ -26,7 +26,7 @@ thermoType
specie specie; specie specie;
} }
inertSpecie N2; defaultSpecie N2;
#include "thermo.compressibleGasGRI" #include "thermo.compressibleGasGRI"

View File

@ -26,7 +26,7 @@ thermoType
energy sensibleEnthalpy; energy sensibleEnthalpy;
} }
inertSpecie N2; defaultSpecie N2;
#include "thermo.compressibleGas" #include "thermo.compressibleGas"

View File

@ -28,7 +28,7 @@ thermoType
#include "speciesThermo" #include "speciesThermo"
inertSpecie N2; defaultSpecie N2;
liquids liquids
{ {

View File

@ -28,7 +28,7 @@ thermoType
#include "speciesThermo" #include "speciesThermo"
inertSpecie N2; defaultSpecie N2;
liquids liquids
{ {

View File

@ -28,7 +28,7 @@ thermoType
#include "speciesThermo" #include "speciesThermo"
inertSpecie N2; defaultSpecie N2;
liquids liquids
{ {

View File

@ -28,7 +28,7 @@ thermoType
#include "speciesThermo" #include "speciesThermo"
inertSpecie N2; defaultSpecie N2;
liquids liquids
{ {

View File

@ -30,7 +30,7 @@ thermoType
newFormat yes; newFormat yes;
inertSpecie N2; defaultSpecie N2;
liquids liquids
{ {

View File

@ -26,7 +26,7 @@ thermoType
specie specie; specie specie;
} }
inertSpecie N2; defaultSpecie N2;
#include "thermo.compressibleGas" #include "thermo.compressibleGas"

View File

@ -28,7 +28,7 @@ thermoType
#include "speciesThermo" #include "speciesThermo"
inertSpecie N2; defaultSpecie N2;
liquids liquids
{ {

View File

@ -28,7 +28,7 @@ thermoType
#include "speciesThermo" #include "speciesThermo"
inertSpecie air; defaultSpecie air;
liquids liquids
{ {

View File

@ -28,7 +28,7 @@ thermoType
#include "speciesThermo" #include "speciesThermo"
inertSpecie N2; defaultSpecie N2;
liquids liquids
{ {

View File

@ -28,7 +28,7 @@ thermoType
#include "speciesThermo" #include "speciesThermo"
inertSpecie air; defaultSpecie air;
liquids liquids
{ {

View File

@ -28,7 +28,7 @@ thermoType
#include "speciesThermo" #include "speciesThermo"
inertSpecie air; defaultSpecie air;
liquids liquids
{ {

View File

@ -28,7 +28,7 @@ thermoType
#include "speciesThermo" #include "speciesThermo"
inertSpecie air; defaultSpecie air;
liquids liquids
{ {

View File

@ -26,7 +26,7 @@ thermoType
energy sensibleInternalEnergy; energy sensibleInternalEnergy;
} }
inertSpecie AIR; defaultSpecie AIR;
#include "thermo.gas" #include "thermo.gas"

View File

@ -26,7 +26,7 @@ thermoType
energy sensibleInternalEnergy; energy sensibleInternalEnergy;
} }
inertSpecie air; defaultSpecie air;
species species
( (

View File

@ -32,7 +32,7 @@ species
H2O H2O
); );
inertSpecie H2O; defaultSpecie H2O;
"(mixture|H2O)" "(mixture|H2O)"
{ {

View File

@ -32,7 +32,7 @@ species
water water
); );
inertSpecie air; defaultSpecie air;
"(mixture|air)" "(mixture|air)"
{ {

View File

@ -32,7 +32,7 @@ species
water water
); );
inertSpecie water; defaultSpecie water;
"(mixture|water)" "(mixture|water)"
{ {

View File

@ -28,7 +28,7 @@ thermoType
species (TiO2); species (TiO2);
inertSpecie TiO2; defaultSpecie TiO2;
TiO2 TiO2
{ {

View File

@ -26,7 +26,7 @@ thermoType
energy sensibleEnthalpy; energy sensibleEnthalpy;
} }
inertSpecie Ar; defaultSpecie Ar;
#include "$FOAM_CASE/constant/thermo.vapor" #include "$FOAM_CASE/constant/thermo.vapor"

View File

@ -28,7 +28,7 @@ thermoType
species (TiO2 TiO2_s); species (TiO2 TiO2_s);
inertSpecie TiO2; defaultSpecie TiO2;
TiO2 TiO2
{ {

View File

@ -26,7 +26,7 @@ thermoType
energy sensibleEnthalpy; energy sensibleEnthalpy;
} }
inertSpecie Ar; defaultSpecie Ar;
#include "$FOAM_CASE/constant/thermo.vapor" #include "$FOAM_CASE/constant/thermo.vapor"