From 24c7a739fffad2c36b1ae996f889456f19962d5b Mon Sep 17 00:00:00 2001 From: Henry Weller <http://cfd.direct> Date: Wed, 19 Aug 2015 13:45:49 +0100 Subject: [PATCH] reactingTwoPhaseEulerFoam: Improved support for boiling/condensation Includes many contributions from Juho Peltola --- .../reactingTwoPhaseEulerFoam/EEqns.H | 6 + .../RanzMarshall/RanzMarshall.C | 4 +- .../RanzMarshall/RanzMarshall.H | 2 +- .../heatTransferModel/heatTransferModel.C | 9 + .../heatTransferModel/heatTransferModel.H | 8 +- .../sphericalHeatTransfer.C | 7 +- .../sphericalHeatTransfer.H | 2 +- .../BlendedInterfacialModel.C | 60 +++++ .../BlendedInterfacialModel.H | 3 + .../phaseSystems/Make/files | 2 + .../HeatAndMassTransferPhaseSystem.C | 28 ++- .../ThermalPhaseChangePhaseSystem.C | 88 +++++-- .../ThermalPhaseChangePhaseSystem.H | 4 + .../reactionThermo/hRefConstThermos.C | 226 ++++++++++++++++++ 14 files changed, 407 insertions(+), 42 deletions(-) create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H index 588bd7ddf44..ff72d8d94e0 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H @@ -47,3 +47,9 @@ } fluid.correctThermo(); + +Info<< " phase1.thermo().T(): " << min(phase1.thermo().T()).value() + << " - " << max(phase1.thermo().T()).value() << endl; + +Info<< " phase2.thermo().T(): " << min(phase2.thermo().T()).value() + << " - " << max(phase2.thermo().T()).value() << endl; diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C index 7e1693dfed2..9b65bb82f77 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C @@ -60,13 +60,13 @@ Foam::heatTransferModels::RanzMarshall::~RanzMarshall() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // Foam::tmp<Foam::volScalarField> -Foam::heatTransferModels::RanzMarshall::K() const +Foam::heatTransferModels::RanzMarshall::K(const scalar residualAlpha) const { volScalarField Nu(scalar(2) + 0.6*sqrt(pair_.Re())*cbrt(pair_.Pr())); return 6.0 - *max(pair_.dispersed(), residualAlpha_) + *max(pair_.dispersed(), residualAlpha) *pair_.continuous().kappa() *Nu /sqr(pair_.dispersed().d()); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H index c02126528a0..a4987ab0afb 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H @@ -79,7 +79,7 @@ public: // Member Functions //- The heat transfer function K used in the enthalpy equation - tmp<volScalarField> K() const; + tmp<volScalarField> K(const scalar residualAlpha) const; }; diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C index 1621b6be19d..3a75fbf3d1f 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C @@ -65,4 +65,13 @@ Foam::heatTransferModel::~heatTransferModel() {} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::heatTransferModel::K() const +{ + return K(residualAlpha_.value()); +} + + // ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H index 6276e8aee14..130b82198b3 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H @@ -117,7 +117,13 @@ public: //- The heat transfer function K used in the enthalpy equation // ddt(alpha1*rho1*ha) + ... = ... K*(Ta - Tb) // ddt(alpha2*rho2*hb) + ... = ... K*(Tb - Ta) - virtual tmp<volScalarField> K() const = 0; + tmp<volScalarField> K() const; + + //- The heat transfer function K used in the enthalpy equation + // ddt(alpha1*rho1*ha) + ... = ... K*(Ta - Tb) + // ddt(alpha2*rho2*hb) + ... = ... K*(Tb - Ta) + // with a specified residual volume fraction + virtual tmp<volScalarField> K(const scalar residualAlpha) const = 0; }; diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C index 4eec6de0283..0672f16ef8a 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C @@ -65,11 +65,14 @@ Foam::heatTransferModels::sphericalHeatTransfer::~sphericalHeatTransfer() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // Foam::tmp<Foam::volScalarField> -Foam::heatTransferModels::sphericalHeatTransfer::K() const +Foam::heatTransferModels::sphericalHeatTransfer::K +( + const scalar residualAlpha +) const { return 60.0 - *max(pair_.dispersed(), residualAlpha_) + *max(pair_.dispersed(), residualAlpha) *pair_.continuous().kappa() /sqr(pair_.dispersed().d()); } diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H index 88d098668fa..f3164df9bd8 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H @@ -79,7 +79,7 @@ public: // Member Functions //- The heat transfer function K used in the enthalpy equation - tmp<volScalarField> K() const; + tmp<volScalarField> K(const scalar residualAlpha) const; }; diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C index da6c62ade59..36e31630a49 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C @@ -223,6 +223,66 @@ Foam::BlendedInterfacialModel<ModelType>::K() const } +template<class ModelType> +Foam::tmp<Foam::volScalarField> +Foam::BlendedInterfacialModel<ModelType>::K(const scalar residualAlpha) const +{ + tmp<volScalarField> f1, f2; + + if (model_.valid() || model1In2_.valid()) + { + f1 = blending_.f1(phase1_, phase2_); + } + + if (model_.valid() || model2In1_.valid()) + { + f2 = blending_.f2(phase1_, phase2_); + } + + tmp<volScalarField> x + ( + new volScalarField + ( + IOobject + ( + ModelType::typeName + ":K", + phase1_.mesh().time().timeName(), + phase1_.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + phase1_.mesh(), + dimensionedScalar("zero", ModelType::dimK, 0) + ) + ); + + if (model_.valid()) + { + x() += model_->K(residualAlpha)*(scalar(1) - f1() - f2()); + } + if (model1In2_.valid()) + { + x() += model1In2_->K(residualAlpha)*f1; + } + if (model2In1_.valid()) + { + x() += model2In1_->K(residualAlpha)*f2; + } + + if + ( + correctFixedFluxBCs_ + && (model_.valid() || model1In2_.valid() || model2In1_.valid()) + ) + { + correctFixedFluxBCs(x()); + } + + return x; +} + + template<class ModelType> Foam::tmp<Foam::surfaceScalarField> Foam::BlendedInterfacialModel<ModelType>::Kf() const diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H index bd2ec602356..4be8f0b347e 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H @@ -136,6 +136,9 @@ public: //- Return the blended force coefficient tmp<volScalarField> K() const; + //- Return the blended force coefficient with a specified residual alpha + tmp<volScalarField> K(const scalar residualAlpha) const; + //- Return the face blended force coefficient tmp<surfaceScalarField> Kf() const; diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files index 538bd7d6371..9f8f4f1fdb4 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files @@ -29,4 +29,6 @@ twoPhaseSystem/twoPhaseSystem.C twoPhaseSystem/newTwoPhaseSystem.C twoPhaseSystem/twoPhaseSystems.C +reactionThermo/hRefConstThermos.C + LIB = $(FOAM_LIBBIN)/libreactingTwoPhaseSystem diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C index ff4fb10e9dd..8b2bbdb99e2 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C @@ -192,11 +192,11 @@ Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::momentumTransfer() const const volVectorField& U2(pair.phase2().U()); const volScalarField dmdt(this->dmdt(pair)); - const volScalarField dmdt12(posPart(dmdt)); - const volScalarField dmdt21(negPart(dmdt)); + const volScalarField dmdt21(posPart(dmdt)); + const volScalarField dmdt12(negPart(dmdt)); - *eqns[pair.phase1().name()] += fvm::Sp(dmdt21, U1) - dmdt21*U2; - *eqns[pair.phase2().name()] += dmdt12*U1 - fvm::Sp(dmdt12, U2); + *eqns[pair.phase1().name()] += dmdt21*U2 - fvm::Sp(dmdt21, U1); + *eqns[pair.phase2().name()] -= dmdt12*U1 - fvm::Sp(dmdt12, U2); } return eqnsPtr; @@ -283,7 +283,7 @@ Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const } } - // Source term due to mass trasfer + // Source term due to mass transfer forAllConstIter ( phaseSystem::phasePairTable, @@ -308,17 +308,19 @@ Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const const volScalarField& K2(phase2.K()); const volScalarField dmdt(this->dmdt(pair)); - const volScalarField dmdt12(posPart(dmdt)); - const volScalarField dmdt21(negPart(dmdt)); + const volScalarField dmdt21(posPart(dmdt)); + const volScalarField dmdt12(negPart(dmdt)); const volScalarField& Tf(*Tf_[pair]); *eqns[phase1.name()] += - fvm::Sp(dmdt21, he1) + dmdt21*K1 - - dmdt21*(phase2.thermo().he(phase2.thermo().p(), Tf) + K2); - - *eqns[phase2.name()] += - dmdt12*(phase1.thermo().he(phase1.thermo().p(), Tf) + K1) - - fvm::Sp(dmdt12, he2) - dmdt12*K2; + dmdt21*(phase1.thermo().he(phase1.thermo().p(), Tf)) + - fvm::Sp(dmdt21, he1) + + dmdt21*(K2 - K1); + + *eqns[phase2.name()] -= + dmdt12*(phase2.thermo().he(phase2.thermo().p(), Tf)) + - fvm::Sp(dmdt12, he2) + + dmdt12*(K1 - K2); } return eqnsPtr; diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C index bbce1962a12..ffdb41326e1 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C @@ -24,6 +24,7 @@ License \*---------------------------------------------------------------------------*/ #include "ThermalPhaseChangePhaseSystem.H" +#include "fvCFD.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -36,7 +37,8 @@ ThermalPhaseChangePhaseSystem : HeatAndMassTransferPhaseSystem<BasePhaseSystem>(mesh), volatile_(this->lookup("volatile")), - saturationModel_(saturationModel::New(this->subDict("saturationModel"))) + saturationModel_(saturationModel::New(this->subDict("saturationModel"))), + massTransfer_(this->lookup("massTransfer")) {} @@ -143,37 +145,79 @@ void Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::correctThermo() const phaseModel& phase1 = pair.phase1(); const phaseModel& phase2 = pair.phase2(); - volScalarField& Tf = *this->Tf_[pair]; - Tf = saturationModel_->Tsat(phase1.thermo().p()); - - Info<< "Tf." << pair.name() - << ": min = " << min(Tf.internalField()) - << ", mean = " << average(Tf.internalField()) - << ", max = " << max(Tf.internalField()) - << endl; - - volScalarField& dmdt(*this->dmdt_[pair]); - - volScalarField H1(this->heatTransferModels_[pair][pair.first()]->K()); - volScalarField H2(this->heatTransferModels_[pair][pair.second()]->K()); - const volScalarField& T1(phase1.thermo().T()); const volScalarField& T2(phase2.thermo().T()); const volScalarField& he1(phase1.thermo().he()); const volScalarField& he2(phase2.thermo().he()); - volScalarField hef2(phase2.thermo().he(phase2.thermo().p(), Tf)); + volScalarField& dmdt(*this->dmdt_[pair]); + + volScalarField& Tf = *this->Tf_[pair]; + volScalarField hef1(phase1.thermo().he(phase1.thermo().p(), Tf)); + volScalarField hef2(phase2.thermo().he(phase2.thermo().p(), Tf)); - dmdt = - (H2*(Tf - T1) + H1*(Tf - T2)) - /min + if (massTransfer_ ) + { + volScalarField H1 ( - (pos(dmdt)*he2 + neg(dmdt)*hef2) - - (neg(dmdt)*he1 + pos(dmdt)*hef1), - 0.3*(hef1 - hef2) + this->heatTransferModels_[pair][pair.first()]->K(0) ); + + volScalarField H2 + ( + this->heatTransferModels_[pair][pair.second()]->K(0) + ); + + Tf = saturationModel_->Tsat(phase1.thermo().p()); + + dmdt = + (H1*(Tf - T1) + H2*(Tf - T2)) + /min + ( + (pos(dmdt)*he2 + neg(dmdt)*hef2) + - (neg(dmdt)*he1 + pos(dmdt)*hef1), + 0.3*mag(hef2 - hef1) + ); + + Info<< "dmdt." << pair.name() + << ": min = " << min(dmdt.internalField()) + << ", mean = " << average(dmdt.internalField()) + << ", max = " << max(dmdt.internalField()) + << ", integral = " << fvc::domainIntegrate(dmdt).value() + << endl; + } + else + { + dmdt == dimensionedScalar("0", dmdt.dimensions(), 0); + } + + volScalarField H1(this->heatTransferModels_[pair][pair.first()]->K()); + volScalarField H2(this->heatTransferModels_[pair][pair.second()]->K()); + + // Limit the H[12] boundary field to avoid /0 + const scalar HLimit = 1e-4; + H1.boundaryField() = + max(H1.boundaryField(), phase1.boundaryField()*HLimit); + H2.boundaryField() = + max(H2.boundaryField(), phase2.boundaryField()*HLimit); + + volScalarField mDotL + ( + dmdt* + ( + (pos(dmdt)*he2 + neg(dmdt)*hef2) + - (neg(dmdt)*he1 + pos(dmdt)*hef1) + ) + ); + Tf = (H1*T1 + H2*T2 + mDotL)/(H1 + H2); + + Info<< "Tf." << pair.name() + << ": min = " << min(Tf.internalField()) + << ", mean = " << average(Tf.internalField()) + << ", max = " << max(Tf.internalField()) + << endl; } } diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.H index 9a0a0d109a4..edae5a6ff62 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.H +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.H @@ -43,6 +43,7 @@ SourceFiles #include "HeatAndMassTransferPhaseSystem.H" #include "saturationModel.H" +#include "Switch.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -69,6 +70,9 @@ protected: //- The saturation model used to evaluate Tsat = Tf autoPtr<saturationModel> saturationModel_; + // Mass transfer enabled + Switch massTransfer_; + public: diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C new file mode 100644 index 00000000000..25bc49fd489 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C @@ -0,0 +1,226 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "makeReactionThermo.H" +#include "makeThermo.H" + +#include "rhoReactionThermo.H" +#include "heRhoThermo.H" + +#include "specie.H" +#include "perfectGas.H" +#include "perfectFluid.H" +#include "rhoConst.H" +#include "incompressiblePerfectGas.H" +#include "hConstThermo.H" +#include "janafThermo.H" +#include "sensibleEnthalpy.H" +#include "absoluteEnthalpy.H" +#include "absoluteInternalEnergy.H" +#include "thermo.H" + +#include "constTransport.H" +#include "sutherlandTransport.H" + +#include "pureMixture.H" +#include "homogeneousMixture.H" +#include "inhomogeneousMixture.H" +#include "veryInhomogeneousMixture.H" +#include "multiComponentMixture.H" +#include "reactingMixture.H" +#include "singleStepReactingMixture.H" + +#include "thermoPhysicsTypes.H" + +#include "hRefConstThermo.H" + + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Thermo type typedefs: + +typedef +constTransport +< + species::thermo + < + hRefConstThermo + < + perfectGas<specie> + >, + sensibleEnthalpy + > +> constRefGasHThermoPhysics; + +typedef +constTransport +< + species::thermo + < + hRefConstThermo + < + perfectFluid<specie> + >, + sensibleEnthalpy + > +> constRefFluidHThermoPhysics; + +typedef +constTransport +< + species::thermo + < + hRefConstThermo + < + perfectGas<specie> + >, + sensibleInternalEnergy + > +> constRefGasEThermoPhysics; + +typedef +constTransport +< + species::thermo + < + hRefConstThermo + < + perfectFluid<specie> + >, + sensibleInternalEnergy + > +> constRefFluidEThermoPhysics; + + +// pureMixture, sensibleEnthalpy: + +makeThermo +( + rhoThermo, + heRhoThermo, + pureMixture, + constTransport, + sensibleEnthalpy, + hRefConstThermo, + perfectGas, + specie +); + +makeThermo +( + rhoThermo, + heRhoThermo, + pureMixture, + constTransport, + sensibleEnthalpy, + hRefConstThermo, + perfectFluid, + specie +); + +makeThermo +( + rhoThermo, + heRhoThermo, + pureMixture, + constTransport, + sensibleEnthalpy, + hRefConstThermo, + rhoConst, + specie +); + + +// pureMixture, sensibleInternalEnergy: + +makeThermo +( + rhoThermo, + heRhoThermo, + pureMixture, + constTransport, + sensibleInternalEnergy, + hRefConstThermo, + perfectGas, + specie +); + +makeThermo +( + rhoThermo, + heRhoThermo, + pureMixture, + constTransport, + sensibleInternalEnergy, + hRefConstThermo, + perfectFluid, + specie +); + +makeThermo +( + rhoThermo, + heRhoThermo, + pureMixture, + constTransport, + sensibleInternalEnergy, + hRefConstThermo, + rhoConst, + specie +); + + +// multiComponentMixture, sensibleInternalEnergy: + +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + multiComponentMixture, + constRefGasEThermoPhysics +); + +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + multiComponentMixture, + constRefFluidEThermoPhysics +); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // -- GitLab