Commit bea3a7a9 authored by Henry's avatar Henry
Browse files

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
parent f913a7ec
......@@ -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();
return constTransport<Thermo>
(
t,
molr1*ct1.mu_ + molr2*ct2.mu_,
1.0/(molr1/ct1.rPr_ + molr2/ct2.rPr_)
);
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_)
);
}
}
......@@ -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();
return constTransport<Thermo>
(
t,
molr1*ct1.mu_ - molr2*ct2.mu_,
1.0/(molr1/ct1.rPr_ - molr2/ct2.rPr_)
);
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_)
);
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment