From f8a8857cae26b10554c05f9f94f0a9245ce8cc56 Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Mon, 4 Sep 2017 16:52:03 +0100 Subject: [PATCH] limitTemperature: added support for multiphase solvers Based on patch contributed by Juho Peltola, VTT Resolves feature request https://bugs.openfoam.org/view.php?id=2572 --- .../reactingMultiphaseEulerFoam/EEqns.H | 1 + .../reactingTwoPhaseEulerFoam/EEqns.H | 2 ++ .../solvers/multiphase/twoPhaseEulerFoam/EEqns.H | 2 ++ .../limitTemperature/limitTemperature.C | 16 +++++++++++----- .../limitTemperature/limitTemperature.H | 4 ++++ 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/EEqns.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/EEqns.H index e4689efee6..dc53815cf4 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/EEqns.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/EEqns.H @@ -31,6 +31,7 @@ for (int Ecorr=0; Ecorrrelax(); fvOptions.constrain(EEqn.ref()); EEqn->solve(); + fvOptions.correct(phase.thermo().he()); } } diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/EEqns.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/EEqns.H index d9f1e85e6f..246bea1fb4 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/EEqns.H +++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/EEqns.H @@ -25,6 +25,7 @@ for (int Ecorr=0; Ecorrrelax(); fvOptions.constrain(E1Eqn.ref()); E1Eqn->solve(); + fvOptions.correct(phase1.thermo().he()); } } @@ -45,6 +46,7 @@ for (int Ecorr=0; Ecorrrelax(); fvOptions.constrain(E2Eqn.ref()); E2Eqn->solve(); + fvOptions.correct(phase2.thermo().he()); } } diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/EEqns.H b/applications/solvers/multiphase/twoPhaseEulerFoam/EEqns.H index 308e7589f9..e6dec13b3f 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/EEqns.H +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/EEqns.H @@ -75,9 +75,11 @@ fvOptions.constrain(E1Eqn); E1Eqn.solve(); + fvOptions.correct(he1); fvOptions.constrain(E2Eqn); E2Eqn.solve(); + fvOptions.correct(he2); thermo1.correct(); Info<< "min " << thermo1.T().name() diff --git a/src/fvOptions/corrections/limitTemperature/limitTemperature.C b/src/fvOptions/corrections/limitTemperature/limitTemperature.C index c5d7eadf5a..ae17c82c66 100644 --- a/src/fvOptions/corrections/limitTemperature/limitTemperature.C +++ b/src/fvOptions/corrections/limitTemperature/limitTemperature.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,13 +57,16 @@ Foam::fv::limitTemperature::limitTemperature : cellSetOption(name, modelType, dict, mesh), Tmin_(readScalar(coeffs_.lookup("min"))), - Tmax_(readScalar(coeffs_.lookup("max"))) + Tmax_(readScalar(coeffs_.lookup("max"))), + phase_(coeffs_.lookupOrDefault("phase", word::null)) { // Set the field name to that of the energy field from which the temperature // is obtained - const basicThermo& thermo = - mesh_.lookupObject(basicThermo::dictName); + mesh_.lookupObject + ( + IOobject::groupName(basicThermo::dictName, phase_) + ); fieldNames_.setSize(1, thermo.he().name()); @@ -92,7 +95,10 @@ bool Foam::fv::limitTemperature::read(const dictionary& dict) void Foam::fv::limitTemperature::correct(volScalarField& he) { const basicThermo& thermo = - mesh_.lookupObject(basicThermo::dictName); + mesh_.lookupObject + ( + IOobject::groupName(basicThermo::dictName, phase_) + ); scalarField Tmin(cells_.size(), Tmin_); scalarField Tmax(cells_.size(), Tmax_); diff --git a/src/fvOptions/corrections/limitTemperature/limitTemperature.H b/src/fvOptions/corrections/limitTemperature/limitTemperature.H index b0657a168d..338a6554d9 100644 --- a/src/fvOptions/corrections/limitTemperature/limitTemperature.H +++ b/src/fvOptions/corrections/limitTemperature/limitTemperature.H @@ -42,6 +42,7 @@ Usage selectionMode all; min 200; max 500; + phase gas; //optional } \endverbatim @@ -81,6 +82,9 @@ protected: //- Maximum temperature limit [K] scalar Tmax_; + //- Optional phase name [K] + word phase_; + private: