canteraTransport calculateDiffusivities exception handling for pure composition (Xi = 1.0)

This commit is contained in:
ignis 2016-10-13 17:07:12 +09:00
parent bfdf807537
commit e4fb1fc545
3 changed files with 31 additions and 1 deletions

View file

@ -70,6 +70,7 @@ Foam::canteraTransport<Thermo>::canteraTransport(Istream& is)
:
Thermo(is),
temp_(cm_.nCanteraSp()),
Dij_(cm_.nCanteraSp()*cm_.nCanteraSp()),
X_(cm_.nCanteraSp(), 0.0)
{
is.check("canteraTransport<Thermo>::canteraTransport(Istream&)");
@ -81,6 +82,7 @@ Foam::canteraTransport<Thermo>::canteraTransport(const dictionary& dict)
:
Thermo(dict),
temp_(cm_.nCanteraSp()),
Dij_(cm_.nCanteraSp()*cm_.nCanteraSp()),
X_(cm_.nCanteraSp(), 0.0)
{
label si = cm_.gas()->speciesIndex(this->specie::name());
@ -156,7 +158,30 @@ void Foam::canteraTransport<Thermo>::calculateDiffusivities
) const
{
cm_.gas()->setState_TPX(T, p, X_.cdata());
cm_.tr()->getMixDiffCoeffsMass(temp_.data());
// check for singular case (Xi = 1)
label idxFracOne = -1;
scalar sumX = sum(X_);
forAll (X_, i)
{
if (X_[i]/sumX == 1.0) idxFracOne = i;
}
if (idxFracOne < 0)
{
cm_.tr()->getMixDiffCoeffsMass(temp_.data());
}
else
{
label nSp = cm_.nCanteraSp();
cm_.tr()->getBinaryDiffCoeffs(nSp, Dij_.data());
forAll(temp_, i)
{
temp_[i] = Dij_[nSp*idxFracOne+i] / p;
}
}
return;
}

View file

@ -132,6 +132,8 @@ class canteraTransport
mutable scalarField temp_;
mutable scalarField Dij_;
static canteraManager cm_;

View file

@ -40,6 +40,7 @@ inline Foam::canteraTransport<Thermo>::canteraTransport
:
Thermo(t),
temp_(cm_.nCanteraSp()),
Dij_(cm_.nCanteraSp()*cm_.nCanteraSp()),
X_(X)
{}
@ -54,6 +55,7 @@ inline Foam::canteraTransport<Thermo>::canteraTransport
:
Thermo(t),
temp_(cm_.nCanteraSp()),
Dij_(cm_.nCanteraSp()*cm_.nCanteraSp()),
X_(cm_.nCanteraSp())
{
}
@ -68,6 +70,7 @@ inline Foam::canteraTransport<Thermo>::canteraTransport
:
Thermo(name, st),
temp_(cm_.nCanteraSp()),
Dij_(cm_.nCanteraSp()*cm_.nCanteraSp()),
X_(st.X_)
{}