From 9b950c5eab1acd5e70c3472628ed60fe688508ec Mon Sep 17 00:00:00 2001 From: andy Date: Mon, 15 Jun 2009 19:13:36 +0100 Subject: [PATCH] thermo updates - now create cloud using basicThermo instead of hCombustionThermo --- .../coalCombustion/CoalCloud/CoalCloud.C | 2 +- .../coalCombustion/CoalCloud/CoalCloud.H | 2 +- .../COxidationDiffusionLimitedRate.C | 9 ++--- .../COxidationKineticDiffusionLimitedRate.C | 9 ++--- .../COxidationMurphyShaddix.C | 10 ++--- .../Templates/ReactingCloud/ReactingCloud.C | 35 +++++------------- .../Templates/ReactingCloud/ReactingCloud.H | 25 +++++-------- .../Templates/ReactingCloud/ReactingCloudI.H | 20 +++------- .../ReactingMultiphaseCloud.C | 2 +- .../ReactingMultiphaseCloud.H | 2 +- .../Templates/ThermoCloud/ThermoCloud.H | 4 +- .../BasicReactingCloud/BasicReactingCloud.C | 2 +- .../BasicReactingCloud/BasicReactingCloud.H | 2 +- .../BasicReactingMultiphaseCloud.C | 6 +-- .../BasicReactingMultiphaseCloud.H | 3 +- .../BasicTrackedReactingCloud.C | 2 +- .../BasicTrackedReactingCloud.H | 2 +- .../ReactingMultiphaseParcel.C | 18 ++++++--- .../Templates/ReactingParcel/ReactingParcel.C | 19 ++++------ .../CompositionModel/CompositionModel.C | 37 +++++++------------ .../CompositionModel/CompositionModel.H | 16 +++----- .../LiquidEvaporation/LiquidEvaporation.C | 12 +++--- .../hCombustionThermo/newhCombustionThermo.C | 13 ++++++- .../hReactionThermo/newhReactionThermo.C | 13 ++++++- .../simplifiedSiwek/0/epsilon | 2 +- .../coalChemistryFoam/simplifiedSiwek/0/k | 2 +- .../constant/chemistryProperties | 6 ++- .../constant/thermophysicalProperties | 2 +- 28 files changed, 125 insertions(+), 152 deletions(-) diff --git a/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.C b/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.C index 873b82d170..a4d249d265 100644 --- a/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.C +++ b/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.C @@ -35,7 +35,7 @@ Foam::CoalCloud::CoalCloud const volScalarField& rho, const volVectorField& U, const dimensionedVector& g, - hCombustionThermo& thermo + basicThermo& thermo ) : ReactingMultiphaseCloud > diff --git a/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.H b/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.H index 91a0289f0f..36e3b4e03e 100644 --- a/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.H +++ b/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.H @@ -76,7 +76,7 @@ public: const volScalarField& rho, const volVectorField& U, const dimensionedVector& g, - hCombustionThermo& thermo + basicThermo& thermo ); diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C index 6c44dc9da8..2e252fbf59 100644 --- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C +++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C @@ -50,10 +50,10 @@ Foam::COxidationDiffusionLimitedRate::COxidationDiffusionLimitedRate CsLocalId_ = owner.composition().localId(idSolid, "C"); // Set local copies of thermo properties - WO2_ = owner.composition().carrierSpecies()[O2GlobalId_].W(); - scalar WCO2 = owner.composition().carrierSpecies()[CO2GlobalId_].W(); + WO2_ = owner.mcCarrierThermo().speciesData()[O2GlobalId_].W(); + scalar WCO2 = owner.mcCarrierThermo().speciesData()[CO2GlobalId_].W(); WC_ = WCO2 - WO2_; - HcCO2_ = owner.composition().carrierSpecies()[CO2GlobalId_].Hc(); + HcCO2_ = owner.mcCarrierThermo().speciesData()[CO2GlobalId_].Hc(); if (Sb_ < 0) { @@ -120,8 +120,7 @@ Foam::scalar Foam::COxidationDiffusionLimitedRate::calculate } // Local mass fraction of O2 in the carrier phase - const scalar YO2 = - this->owner().carrierThermo().composition().Y(O2GlobalId_)[cellI]; + const scalar YO2 = this->owner().mcCarrierThermo().Y(O2GlobalId_)[cellI]; // Change in C mass [kg] scalar dmC = diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C index d21efd77e8..682bac3ec6 100644 --- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C +++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C @@ -58,10 +58,10 @@ COxidationKineticDiffusionLimitedRate CsLocalId_ = owner.composition().localId(idSolid, "C"); // Set local copies of thermo properties - WO2_ = owner.composition().carrierSpecies()[O2GlobalId_].W(); - scalar WCO2 = owner.composition().carrierSpecies()[CO2GlobalId_].W(); + WO2_ = owner.mcCarrierThermo().speciesData()[O2GlobalId_].W(); + scalar WCO2 = owner.mcCarrierThermo().speciesData()[CO2GlobalId_].W(); WC_ = WCO2 - WO2_; - HcCO2_ = owner.composition().carrierSpecies()[CO2GlobalId_].Hc(); + HcCO2_ = owner.mcCarrierThermo().speciesData()[CO2GlobalId_].Hc(); if (Sb_ < 0) { @@ -128,8 +128,7 @@ Foam::scalar Foam::COxidationKineticDiffusionLimitedRate::calculate } // Local mass fraction of O2 in the carrier phase - const scalar YO2 = - this->owner().carrierThermo().composition().Y(O2GlobalId_)[cellI]; + const scalar YO2 = this->owner().mcCarrierThermo().Y(O2GlobalId_)[cellI]; // Diffusion rate coefficient const scalar D0 = C1_/d*pow(0.5*(T + Tc), 0.75); diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C index c7c8dd7955..e2a1c68700 100644 --- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C +++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C @@ -69,8 +69,8 @@ Foam::COxidationMurphyShaddix::COxidationMurphyShaddix CsLocalId_ = owner.composition().localId(idSolid, "C"); // Set local copies of thermo properties - WO2_ = owner.composition().carrierSpecies()[O2GlobalId_].W(); - scalar WCO2 = owner.composition().carrierSpecies()[CO2GlobalId_].W(); + WO2_ = owner.mcCarrierThermo().speciesData()[O2GlobalId_].W(); + scalar WCO2 = owner.mcCarrierThermo().speciesData()[CO2GlobalId_].W(); WC_ = WCO2 - WO2_; } @@ -125,7 +125,7 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate // Cell carrier phase O2 species density [kg/m^3] const scalar rhoO2 = - rhoc*this->owner().carrierThermo().composition().Y(O2GlobalId_)[cellI]; + rhoc*this->owner().mcCarrierThermo().Y(O2GlobalId_)[cellI]; if (rhoO2 < SMALL) { @@ -211,9 +211,9 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate this->owner().composition().solids().properties()[CsLocalId_].Hf() + this->owner().composition().solids().properties()[CsLocalId_].cp()*T; const scalar HCO2 = - this->owner().composition().carrierSpecies()[CO2GlobalId_].H(T); + this->owner().mcCarrierThermo().speciesData()[CO2GlobalId_].H(T); const scalar HO2 = - this->owner().composition().carrierSpecies()[O2GlobalId_].H(T); + this->owner().mcCarrierThermo().speciesData()[O2GlobalId_].H(T); // Heat of reaction return dOmega*(WC_*HC + WO2_*HO2 - (WC_ + WO2_)*HCO2); diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C index bebeab25a0..d4f4f10c9a 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C @@ -28,7 +28,6 @@ License #include "CompositionModel.H" #include "PhaseChangeModel.H" -#include "multiComponentMixture.H" // * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * // @@ -68,14 +67,16 @@ Foam::ReactingCloud::ReactingCloud const volScalarField& rho, const volVectorField& U, const dimensionedVector& g, - hCombustionThermo& thermo + basicThermo& thermo ) : ThermoCloud(cloudName, rho, U, g, thermo), reactingCloud(), constProps_(this->particleProperties()), - carrierThermo_(thermo), - carrierSpecies_(thermo.composition().Y().size()), + mcCarrierThermo_ + ( + dynamic_cast&>(thermo) + ), compositionModel_ ( CompositionModel >::New @@ -92,23 +93,9 @@ Foam::ReactingCloud::ReactingCloud *this ) ), - rhoTrans_(thermo.composition().Y().size()), + rhoTrans_(mcCarrierThermo_.species().size()), dMassPhaseChange_(0.0) { - // Create the carrier species - forAll(carrierSpecies_, specieI) - { - carrierSpecies_.set - ( - specieI, - new thermoType - ( - dynamic_cast&> - (thermo).speciesData()[specieI] - ) - ); - } - // Set storage for mass source fields and initialise to zero forAll(rhoTrans_, i) { @@ -119,9 +106,7 @@ Foam::ReactingCloud::ReactingCloud ( IOobject ( - this->name() - + "rhoTrans_" - + thermo.composition().Y()[i].name(), + this->name() + "rhoTrans_" + mcCarrierThermo_.species()[i], this->db().time().timeName(), this->db(), IOobject::NO_READ, @@ -193,9 +178,9 @@ void Foam::ReactingCloud::resetSourceTerms() template void Foam::ReactingCloud::evolve() { - const volScalarField& T = carrierThermo_.T(); - const volScalarField cp = carrierThermo_.Cp(); - const volScalarField& p = carrierThermo_.p(); + const volScalarField& T = this->carrierThermo().T(); + const volScalarField cp = this->carrierThermo().Cp(); + const volScalarField& p = this->carrierThermo().p(); autoPtr > rhoInterp = interpolation::New ( diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H index da346d64ff..4a79c03b6f 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H @@ -41,11 +41,9 @@ SourceFiles #ifndef ReactingCloud_H #define ReactingCloud_H -#include "autoPtr.H" -#include "hCombustionThermo.H" - #include "ThermoCloud.H" #include "reactingCloud.H" +#include "multiComponentMixture.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -94,11 +92,8 @@ protected: //- Parcel constant properties typename ParcelType::constantProperties constProps_; - //- Thermodynamics package (combustion) - hCombustionThermo& carrierThermo_; - - //- Gas phase properties - PtrList carrierSpecies_; + //- Multi-component carrier phase thermo + multiComponentMixture& mcCarrierThermo_; // References to the cloud sub-models @@ -148,7 +143,7 @@ public: const volScalarField& rho, const volVectorField& U, const dimensionedVector& g, - hCombustionThermo& thermo + basicThermo& thermo ); @@ -168,14 +163,12 @@ public: inline const typename ParcelType::constantProperties& constProps() const; - //- Return const access to carrier phase thermo package - inline const hCombustionThermo& carrierThermo() const; + //- Return const access to multi-component carrier phase thermo + inline const multiComponentMixture& + mcCarrierThermo() const; - //- Return access to carrier phase thermo package - inline hCombustionThermo& carrierThermo(); - - //- Gas phase properties - inline const PtrList& carrierSpecies() const; + //- Return access to multi-component carrier phase thermo + inline multiComponentMixture& mcCarrierThermo(); // Sub-models diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H index 8dbaf52bbc..b596864827 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H @@ -35,26 +35,18 @@ Foam::ReactingCloud::constProps() const template -inline const Foam::hCombustionThermo& -Foam::ReactingCloud::carrierThermo() const +inline const Foam::multiComponentMixture& +Foam::ReactingCloud::mcCarrierThermo() const { - return carrierThermo_; + return mcCarrierThermo_; } template -inline Foam::hCombustionThermo& -Foam::ReactingCloud::carrierThermo() +inline Foam::multiComponentMixture& +Foam::ReactingCloud::mcCarrierThermo() { - return carrierThermo_; -} - - -template -inline const Foam::PtrList& -Foam::ReactingCloud::carrierSpecies() const -{ - return carrierSpecies_; + return mcCarrierThermo_; } diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C index 36521105b5..d07db7ed62 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C @@ -38,7 +38,7 @@ Foam::ReactingMultiphaseCloud::ReactingMultiphaseCloud const volScalarField& rho, const volVectorField& U, const dimensionedVector& g, - hCombustionThermo& thermo + basicThermo& thermo ) : ReactingCloud(cloudName, rho, U, g, thermo), diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H index e99375cf23..525b03983c 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H @@ -123,7 +123,7 @@ public: const volScalarField& rho, const volVectorField& U, const dimensionedVector& g, - hCombustionThermo& thermo + basicThermo& thermo ); diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H index aaebdff80c..cc8f0fadc8 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H @@ -40,11 +40,9 @@ SourceFiles #ifndef ThermoCloud_H #define ThermoCloud_H -#include "autoPtr.H" -#include "hCombustionThermo.H" - #include "KinematicCloud.H" #include "thermoCloud.H" +#include "basicThermo.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C index 1a639b5820..e59ca18ecf 100644 --- a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C +++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C @@ -35,7 +35,7 @@ Foam::BasicReactingCloud::BasicReactingCloud const volScalarField& rho, const volVectorField& U, const dimensionedVector& g, - hCombustionThermo& thermo + basicThermo& thermo ) : ReactingCloud > diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H index aa3048e666..49a51a230e 100644 --- a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H +++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H @@ -81,7 +81,7 @@ public: const volScalarField& rho, const volVectorField& U, const dimensionedVector& g, - hCombustionThermo& thermo + basicThermo& thermo ); diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C index 07cb83587e..6f08db2016 100644 --- a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C +++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C @@ -35,8 +35,7 @@ Foam::BasicReactingMultiphaseCloud::BasicReactingMultiphaseCloud const volScalarField& rho, const volVectorField& U, const dimensionedVector& g, - hCombustionThermo& thermo, - PtrList& carrierSpecies + basicThermo& thermo ) : ReactingMultiphaseCloud > @@ -45,8 +44,7 @@ Foam::BasicReactingMultiphaseCloud::BasicReactingMultiphaseCloud rho, U, g, - thermo, - carrierSpecies + thermo ) { BasicReactingMultiphaseParcel::readFields(*this); diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H index 7b093c529c..ac0853823f 100644 --- a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H +++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H @@ -81,8 +81,7 @@ public: const volScalarField& rho, const volVectorField& U, const dimensionedVector& g, - hCombustionThermo& thermo, - PtrList& carrierSpecies + basicThermo& thermo ); diff --git a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C index 4b94788812..15b7774a0b 100644 --- a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C +++ b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C @@ -35,7 +35,7 @@ Foam::BasicTrackedReactingCloud::BasicTrackedReactingCloud const volScalarField& rho, const volVectorField& U, const dimensionedVector& g, - hCombustionThermo& thermo + basicThermo& thermo ) : ReactingCloud > diff --git a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H index 5c3cd8148f..bb2b0bde1e 100644 --- a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H +++ b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H @@ -81,7 +81,7 @@ public: const volScalarField& rho, const volVectorField& U, const dimensionedVector& g, - hCombustionThermo& thermo + basicThermo& thermo ); diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C index 695ff95a8e..682cad335a 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C @@ -168,7 +168,8 @@ void Foam::ReactingMultiphaseParcel::cellValueSourceCorrection forAll(td.cloud().rhoTrans(), i) { scalar Y = td.cloud().rhoTrans(i)[cellI]/addedMass; - cpEff += Y*td.cloud().carrierSpecies()[i].Cp(this->Tc_); + cpEff += + Y*td.cloud().mcCarrierThermo().speciesData()[i].Cp(this->Tc_); } } const scalar cpc = td.cpInterp().psi()[cellI]; @@ -248,7 +249,12 @@ void Foam::ReactingMultiphaseParcel::calc scalarField dMassSRGas(YGas_.size(), 0.0); scalarField dMassSRLiquid(YLiquid_.size(), 0.0); scalarField dMassSRSolid(YSolid_.size(), 0.0); - scalarField dMassSRCarrier(td.cloud().carrierSpecies().size(), 0.0); + scalarField + dMassSRCarrier + ( + td.cloud().mcCarrierThermo().species().size(), + 0.0 + ); // Clac mass and enthalpy transfer due to surface reactions calcSurfaceReactions @@ -340,7 +346,7 @@ void Foam::ReactingMultiphaseParcel::calc td.cloud().hcTrans()[cellI] += np0 *dMassGas[i] - *td.cloud().composition().carrierSpecies()[gid].H(T0); + *td.cloud().mcCarrierThermo().speciesData()[gid].H(T0); } forAll(YLiquid_, i) { @@ -349,7 +355,7 @@ void Foam::ReactingMultiphaseParcel::calc td.cloud().hcTrans()[cellI] += np0 *dMassLiquid[i] - *td.cloud().composition().carrierSpecies()[gid].H(T0); + *td.cloud().mcCarrierThermo().speciesData()[gid].H(T0); } /* // No mapping between solid components and carrier phase @@ -360,7 +366,7 @@ void Foam::ReactingMultiphaseParcel::calc td.cloud().hcTrans()[cellI] += np0 *dMassSolid[i] - *td.cloud().composition().carrierSpecies()[gid].H(T0); + *td.cloud().mcCarrierThermo().speciesData()[gid].H(T0); } */ forAll(dMassSRCarrier, i) @@ -369,7 +375,7 @@ void Foam::ReactingMultiphaseParcel::calc td.cloud().hcTrans()[cellI] += np0 *dMassSRCarrier[i] - *td.cloud().composition().carrierSpecies()[i].H(T0); + *td.cloud().mcCarrierThermo().speciesData()[i].H(T0); } // Update momentum transfer diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C index b52bfeef29..e4137e90dc 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C @@ -86,7 +86,8 @@ void Foam::ReactingParcel::cellValueSourceCorrection forAll(td.cloud().rhoTrans(), i) { scalar Y = td.cloud().rhoTrans(i)[cellI]/addedMass; - cpEff += Y*td.cloud().carrierSpecies()[i].Cp(this->Tc_); + cpEff += + Y*td.cloud().mcCarrierThermo().speciesData()[i].Cp(this->Tc_); } } const scalar cpc = td.cpInterp().psi()[cellI]; @@ -190,9 +191,6 @@ void Foam::ReactingParcel::calc // Motion // ~~~~~~ - // No additional forces - vector Fx = vector::zero; - // Calculate new particle velocity vector U1 = calcVelocity(td, dt, cellI, d0, U0, rho0, mass0, Su, dUTrans); @@ -210,7 +208,7 @@ void Foam::ReactingParcel::calc td.cloud().hcTrans()[cellI] += np0 *dMassPC[i] - *td.cloud().composition().carrierSpecies()[gid].H(T0); + *td.cloud().mcCarrierThermo().speciesData()[gid].H(T0); } // Update momentum transfer @@ -317,16 +315,15 @@ void Foam::ReactingParcel::calcPhaseChange td.cloud().addToMassPhaseChange(this->nParticle_*dMassTot); // Enthalphy transfer to carrier phase + label id; forAll(YComponents, i) { - label gid; + id = td.cloud().composition().localToGlobalCarrierId(idPhase, i); + const scalar hv = td.cloud().mcCarrierThermo().speciesData()[id].H(T); - gid = td.cloud().composition().localToGlobalCarrierId(idPhase, i); - const scalar hv = td.cloud().composition().carrierSpecies()[gid].H(T); - - gid = td.cloud().composition().globalIds(idPhase)[i]; + id = td.cloud().composition().globalIds(idPhase)[i]; const scalar hl = - td.cloud().composition().liquids().properties()[gid].h(pc_, T); + td.cloud().composition().liquids().properties()[id].h(pc_, T); Sh += dMassPC[i]*(hl - hv)/dt; } diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C index 9ae0111604..6ae3dabb6f 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C +++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C @@ -39,15 +39,14 @@ Foam::CompositionModel::CompositionModel dict_(dict), owner_(owner), coeffDict_(dict.subDict(type + "Coeffs")), - carrierThermo_(owner.carrierThermo()), - carrierSpecies_(owner.carrierSpecies()), + mcCarrierThermo_(owner.mcCarrierThermo()), liquids_ ( liquidMixture::New ( owner.mesh().objectRegistry::lookupObject ( - carrierThermo_.name() + owner.carrierThermo().name() ) ) ), @@ -57,14 +56,14 @@ Foam::CompositionModel::CompositionModel ( owner.mesh().objectRegistry::lookupObject ( - carrierThermo_.name() + owner.carrierThermo().name() ) ) ), phaseProps_ ( coeffDict_.lookup("phases"), - carrierThermo_.composition().species(), + mcCarrierThermo_.species(), liquids_().components(), solids_().components() ) @@ -102,18 +101,10 @@ const Foam::dictionary& Foam::CompositionModel::coeffDict() const template -const Foam::hCombustionThermo& -Foam::CompositionModel::carrierThermo() const +const Foam::multiComponentMixture& +Foam::CompositionModel::mcCarrierThermo() const { - return carrierThermo_; -} - - -template -const Foam::PtrList& -Foam::CompositionModel::carrierSpecies() const -{ - return carrierSpecies_; + return mcCarrierThermo_; } @@ -184,11 +175,9 @@ Foam::label Foam::CompositionModel::globalCarrierId const word& cmptName ) const { - forAll(carrierThermo_.composition().species(), i) + forAll(mcCarrierThermo_.species(), i) { - const word& carrierSpecieName = - carrierThermo_.composition().species()[i]; - if (cmptName == carrierSpecieName) + if (cmptName == mcCarrierThermo_.species()[i]) { return i; } @@ -324,8 +313,8 @@ Foam::scalarField Foam::CompositionModel::X forAll(Y, i) { label gid = props.globalIds()[i]; - WInv += Y[i]/this->carrierSpecies()[gid].W(); - X[i] = Y[i]/this->carrierSpecies()[gid].W(); + WInv += Y[i]/mcCarrierThermo_.speciesData()[gid].W(); + X[i] = Y[i]/mcCarrierThermo_.speciesData()[gid].W(); } break; } @@ -375,7 +364,7 @@ Foam::scalar Foam::CompositionModel::H forAll(Y, i) { label gid = props.globalIds()[i]; - HMixture += Y[i]*this->carrierSpecies()[gid].H(T); + HMixture += Y[i]*mcCarrierThermo_.speciesData()[gid].H(T); } break; } @@ -439,7 +428,7 @@ Foam::scalar Foam::CompositionModel::cp forAll(Y, i) { label gid = props.globalIds()[i]; - cpMixture += Y[i]*this->carrierSpecies()[gid].Cp(T); + cpMixture += Y[i]*mcCarrierThermo_.speciesData()[gid].Cp(T); } break; } diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H index 1e0b800b45..b3f0949def 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H +++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H @@ -44,7 +44,7 @@ SourceFiles #include "runTimeSelectionTables.H" #include "PtrList.H" -#include "hCombustionThermo.H" +#include "multiComponentMixture.H" #include "liquidMixture.H" #include "solidMixture.H" @@ -74,11 +74,8 @@ class CompositionModel //- The coefficients dictionary const dictionary& coeffDict_; - //- Reference to the carrier phase thermo package - hCombustionThermo& carrierThermo_; - - //- Reference to the carrier phase species - const PtrList& carrierSpecies_; + //- Reference to the multi-component carrier phase thermo + multiComponentMixture& mcCarrierThermo_; //- Global (additional) liquid properties data autoPtr liquids_; @@ -146,15 +143,12 @@ public: const dictionary& coeffDict() const; //- Return the carrier phase thermo package - const hCombustionThermo& carrierThermo() const; + const multiComponentMixture& + mcCarrierThermo() const; // Composition lists - //- Return the carrier species - const PtrList& - carrierSpecies() const; - //- Return the global (additional) liquids const liquidMixture& liquids() const; diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C index b7caef3652..c486ccaa00 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C +++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C @@ -35,14 +35,14 @@ Foam::scalarField Foam::LiquidEvaporation::calcXc const label cellI ) const { - scalarField Xc(this->owner().carrierThermo().composition().Y().size()); + scalarField Xc(this->owner().mcCarrierThermo().Y().size()); scalar Winv = 0.0; forAll(Xc, i) { - scalar Y = this->owner().carrierThermo().composition().Y()[i][cellI]; - Winv += Y/this->owner().carrierSpecies()[i].W(); - Xc[i] = Y/this->owner().carrierSpecies()[i].W(); + scalar Y = this->owner().mcCarrierThermo().Y()[i][cellI]; + Winv += Y/this->owner().mcCarrierThermo().speciesData()[i].W(); + Xc[i] = Y/this->owner().mcCarrierThermo().speciesData()[i].W(); } return Xc/Winv; @@ -76,7 +76,7 @@ Foam::LiquidEvaporation::LiquidEvaporation ( owner.mesh().objectRegistry::lookupObject ( - owner.carrierThermo().name() + "thermophysicalProperties" ) ) ), @@ -104,7 +104,7 @@ Foam::LiquidEvaporation::LiquidEvaporation owner.composition().globalCarrierId(activeLiquids_[i]); } - // Determine mapping between local and global liquids + // Determine mapping between model active liquids and global liquids label idLiquid = owner.composition().idLiquid(); forAll(activeLiquids_, i) { diff --git a/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/newhCombustionThermo.C b/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/newhCombustionThermo.C index 175c7d4756..788a298d0d 100644 --- a/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/newhCombustionThermo.C +++ b/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/newhCombustionThermo.C @@ -103,6 +103,16 @@ Foam::autoPtr Foam::hCombustionThermo::NewType if (hCombustionThermoTypeName.find(thermoType) == string::npos) { + wordList allModels = fvMeshConstructorTablePtr_->toc(); + DynamicList validModels; + forAll(allModels, i) + { + if (allModels[i].find(thermoType) != string::npos) + { + validModels.append(allModels[i]); + } + } + FatalErrorIn ( "autoPtr hCombustionThermo::NewType" @@ -112,7 +122,8 @@ Foam::autoPtr Foam::hCombustionThermo::NewType ")" ) << "Inconsistent thermo package selected:" << nl << nl << hCombustionThermoTypeName << nl << nl << "Please select a " - << "thermo package based on " << thermoType << nl << nl + << "thermo package based on " << thermoType + << ". Valid options include:" << nl << validModels << nl << exit(FatalError); } } diff --git a/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/newhReactionThermo.C b/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/newhReactionThermo.C index ceeba89225..688b37b6d2 100644 --- a/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/newhReactionThermo.C +++ b/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/newhReactionThermo.C @@ -103,6 +103,16 @@ Foam::autoPtr Foam::hReactionThermo::NewType if (hReactionThermoTypeName.find(thermoType) == string::npos) { + wordList allModels = fvMeshConstructorTablePtr_->toc(); + DynamicList validModels; + forAll(allModels, i) + { + if (allModels[i].find(thermoType) != string::npos) + { + validModels.append(allModels[i]); + } + } + FatalErrorIn ( "autoPtr hReactionThermo::NewType" @@ -112,7 +122,8 @@ Foam::autoPtr Foam::hReactionThermo::NewType ")" ) << "Inconsistent thermo package selected:" << nl << nl << hReactionThermoTypeName << nl << nl << "Please select a " - << "thermo package based on " << thermoType << nl << nl + << "thermo package based on " << thermoType + << ". Valid options include:" << nl << validModels << nl << exit(FatalError); } } diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/epsilon b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/epsilon index e5ed472a8b..9fcf588c0c 100644 --- a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/epsilon +++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/epsilon @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 1.5.x | +| \\ / O peration | Version: dev | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/k b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/k index 1d9c0d007f..9abb57fdb0 100644 --- a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/k +++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/k @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 1.5.x | +| \\ / O peration | Version: dev | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/chemistryProperties b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/chemistryProperties index 53a5860d33..cbffc12e84 100644 --- a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/chemistryProperties +++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/chemistryProperties @@ -15,11 +15,13 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +psiChemistryModel ODEChemistryModel; + chemistry off; turbulentReaction off; -chemistrySolver ODE; +chemistrySolver ode; initialChemicalTimeStep 1e-07; @@ -34,7 +36,7 @@ EulerImplicitCoeffs equilibriumRateLimiter off; } -ODECoeffs +odeCoeffs { ODESolver RK; eps 0.05; diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/thermophysicalProperties b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/thermophysicalProperties index 04b13b12cf..8b80f059a3 100644 --- a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/thermophysicalProperties +++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/thermophysicalProperties @@ -15,7 +15,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -thermoType hMixtureThermo; +thermoType hPsiMixtureThermo>; chemistryReader foamChemistryReader;