reactingEulerFoam: Fail if surface tension model does not exist

The access of the surface tension coefficient has been changed in some
places so that an error is generated rather than returning a default
value of zero. The reciprocal of the surface tension coefficient is
frequently used in sub-models, so returning zero can generate a floating
point exception. A "surface tension model does not exist" warning is
preferable in these cases.

Patch to populationBalanceModel.C contributed by Institute of Fluid
Dynamics, Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
This commit is contained in:
Will Bainbridge
2018-06-18 09:10:15 +01:00
parent ee4ed5d942
commit 4d7f98cd53
2 changed files with 12 additions and 8 deletions

View File

@ -25,6 +25,7 @@ License
#include "phasePair.H" #include "phasePair.H"
#include "phaseSystem.H" #include "phaseSystem.H"
#include "surfaceTensionModel.H"
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
@ -165,7 +166,11 @@ Foam::tmp<Foam::volScalarField> Foam::phasePair::EoH2() const
Foam::tmp<Foam::volScalarField> Foam::phasePair::sigma() const Foam::tmp<Foam::volScalarField> Foam::phasePair::sigma() const
{ {
return phase1().fluid().sigma(phasePair(phase1(), phase2())); return
phase1().fluid().lookupSubModel<surfaceTensionModel>
(
phasePair(phase1(), phase2())
).sigma();
} }

View File

@ -30,6 +30,7 @@ License
#include "driftModel.H" #include "driftModel.H"
#include "nucleationModel.H" #include "nucleationModel.H"
#include "phaseSystem.H" #include "phaseSystem.H"
#include "surfaceTensionModel.H"
#include "fvmDdt.H" #include "fvmDdt.H"
#include "fvcDdt.H" #include "fvcDdt.H"
#include "fvmSup.H" #include "fvmSup.H"
@ -1152,13 +1153,11 @@ Foam::diameterModels::populationBalanceModel::sigmaWithContinuousPhase
const phaseModel& dispersedPhase const phaseModel& dispersedPhase
) const ) const
{ {
const phasePairKey key return
( fluid_.lookupSubModel<surfaceTensionModel>
dispersedPhase.name(), (
continuousPhase_.name() phasePair(dispersedPhase, continuousPhase_)
); ).sigma();
return fluid_.sigma(key);
} }