constTransport: Avoid /0 in + and - operators averaging 1/Pr when the number of moles = 0

Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1348
This commit is contained in:
Henry
2015-02-13 12:41:34 +00:00
parent f913a7ecd6
commit bea3a7a9e2

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -203,15 +203,27 @@ inline Foam::constTransport<Thermo> Foam::operator+
static_cast<const Thermo&>(ct1) + static_cast<const Thermo&>(ct2)
);
scalar molr1 = ct1.nMoles()/t.nMoles();
scalar molr2 = ct2.nMoles()/t.nMoles();
if (mag(ct1.nMoles()) + mag(ct2.nMoles()) < SMALL)
{
return constTransport<Thermo>
(
t,
0,
ct1.rPr_
);
}
else
{
scalar molr1 = ct1.nMoles()/t.nMoles();
scalar molr2 = ct2.nMoles()/t.nMoles();
return constTransport<Thermo>
(
t,
molr1*ct1.mu_ + molr2*ct2.mu_,
1.0/(molr1/ct1.rPr_ + molr2/ct2.rPr_)
);
return constTransport<Thermo>
(
t,
molr1*ct1.mu_ + molr2*ct2.mu_,
1.0/(molr1/ct1.rPr_ + molr2/ct2.rPr_)
);
}
}
@ -227,15 +239,27 @@ inline Foam::constTransport<Thermo> Foam::operator-
static_cast<const Thermo&>(ct1) - static_cast<const Thermo&>(ct2)
);
scalar molr1 = ct1.nMoles()/t.nMoles();
scalar molr2 = ct2.nMoles()/t.nMoles();
if (mag(ct1.nMoles()) + mag(ct2.nMoles()) < SMALL)
{
return constTransport<Thermo>
(
t,
0,
ct1.rPr_
);
}
else
{
scalar molr1 = ct1.nMoles()/t.nMoles();
scalar molr2 = ct2.nMoles()/t.nMoles();
return constTransport<Thermo>
(
t,
molr1*ct1.mu_ - molr2*ct2.mu_,
1.0/(molr1/ct1.rPr_ - molr2/ct2.rPr_)
);
return constTransport<Thermo>
(
t,
molr1*ct1.mu_ - molr2*ct2.mu_,
1.0/(molr1/ct1.rPr_ - molr2/ct2.rPr_)
);
}
}