diff --git a/src/lagrangian/parcel/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/parcel/clouds/Templates/ReactingCloud/ReactingCloud.C index 495dbd8610..7916d70908 100644 --- a/src/lagrangian/parcel/clouds/Templates/ReactingCloud/ReactingCloud.C +++ b/src/lagrangian/parcel/clouds/Templates/ReactingCloud/ReactingCloud.C @@ -32,15 +32,6 @@ License template void Foam::ReactingCloud::setModels() { - compositionModel_.reset - ( - CompositionModel>::New - ( - this->subModelProperties(), - *this - ).ptr() - ); - phaseChangeModel_.reset ( PhaseChangeModel>::New @@ -77,7 +68,6 @@ void Foam::ReactingCloud::cloudReset(ReactingCloud& c) { CloudType::cloudReset(c); - compositionModel_.reset(c.compositionModel_.ptr()); phaseChangeModel_.reset(c.phaseChangeModel_.ptr()); } @@ -98,12 +88,11 @@ Foam::ReactingCloud::ReactingCloud CloudType(cloudName, rho, U, g, carrierThermo, false), cloudCopyPtr_(nullptr), constProps_(this->particleProperties()), - compositionModel_(nullptr), phaseChangeModel_(nullptr) { setModels(); - rhoTrans_.setSize(compositionModel_->carrier().species().size()); + rhoTrans_.setSize(this->composition().carrier().species().size()); if (readFields) { @@ -114,7 +103,7 @@ Foam::ReactingCloud::ReactingCloud // Set storage for mass source fields and initialise to zero forAll(rhoTrans_, i) { - const word& specieName = compositionModel_->carrier().species()[i]; + const word& specieName = this->composition().carrier().species()[i]; rhoTrans_.set ( i, @@ -151,13 +140,12 @@ Foam::ReactingCloud::ReactingCloud CloudType(c, name), cloudCopyPtr_(nullptr), constProps_(c.constProps_), - compositionModel_(c.compositionModel_->clone()), phaseChangeModel_(c.phaseChangeModel_->clone()), rhoTrans_(c.rhoTrans_.size()) { forAll(c.rhoTrans_, i) { - const word& specieName = compositionModel_->carrier().species()[i]; + const word& specieName = this->composition().carrier().species()[i]; rhoTrans_.set ( i, @@ -190,7 +178,6 @@ Foam::ReactingCloud::ReactingCloud CloudType(mesh, name, c), cloudCopyPtr_(nullptr), constProps_(), - compositionModel_(c.compositionModel_->clone()), phaseChangeModel_(nullptr), rhoTrans_(0) {} @@ -214,7 +201,7 @@ void Foam::ReactingCloud::setParcelThermoProperties { CloudType::setParcelThermoProperties(parcel, lagrangianDt); - parcel.Y() = composition().YMixture0(); + parcel.Y() = this->composition().YMixture0(); } @@ -233,7 +220,7 @@ void Foam::ReactingCloud::checkParcelProperties checkSuppliedComposition ( parcel.Y(), - composition().YMixture0(), + this->composition().YMixture0(), "YMixture" ); } @@ -339,14 +326,4 @@ void Foam::ReactingCloud::info() } -template -void Foam::ReactingCloud::writeFields() const -{ - if (compositionModel_.valid()) - { - CloudType::particleType::writeFields(*this, this->composition()); - } -} - - // ************************************************************************* // diff --git a/src/lagrangian/parcel/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/parcel/clouds/Templates/ReactingCloud/ReactingCloud.H index 42268f4082..c9e9736434 100644 --- a/src/lagrangian/parcel/clouds/Templates/ReactingCloud/ReactingCloud.H +++ b/src/lagrangian/parcel/clouds/Templates/ReactingCloud/ReactingCloud.H @@ -54,9 +54,6 @@ namespace Foam // Forward declaration of classes -template -class CompositionModel; - template class PhaseChangeModel; @@ -111,10 +108,6 @@ protected: // References to the cloud sub-models - //- Reacting composition model - autoPtr>> - compositionModel_; - //- Reacting phase change model autoPtr>> phaseChangeModel_; @@ -220,10 +213,6 @@ public: // Sub-models - //- Return const access to reacting composition model - inline const CompositionModel>& - composition() const; - //- Return const access to reacting phase change model inline const PhaseChangeModel>& phaseChange() const; @@ -316,9 +305,6 @@ public: //- Print cloud information void info(); - //- Write the field data for the cloud - virtual void writeFields() const; - // Member Operators diff --git a/src/lagrangian/parcel/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/parcel/clouds/Templates/ReactingCloud/ReactingCloudI.H index 01bb8e1a52..4eac840688 100644 --- a/src/lagrangian/parcel/clouds/Templates/ReactingCloud/ReactingCloudI.H +++ b/src/lagrangian/parcel/clouds/Templates/ReactingCloud/ReactingCloudI.H @@ -51,14 +51,6 @@ Foam::ReactingCloud::constProps() } -template -inline const Foam::CompositionModel>& -Foam::ReactingCloud::composition() const -{ - return compositionModel_; -} - - template inline const Foam::PhaseChangeModel>& Foam::ReactingCloud::phaseChange() const diff --git a/src/lagrangian/parcel/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/parcel/clouds/Templates/ThermoCloud/ThermoCloud.C index 92d1f87c88..af9c73855b 100644 --- a/src/lagrangian/parcel/clouds/Templates/ThermoCloud/ThermoCloud.C +++ b/src/lagrangian/parcel/clouds/Templates/ThermoCloud/ThermoCloud.C @@ -26,6 +26,7 @@ License #include "ThermoCloud.H" #include "integrationScheme.H" #include "HeatTransferModel.H" +#include "CompositionModel.H" // * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // @@ -41,6 +42,15 @@ void Foam::ThermoCloud::setModels() ).ptr() ); + compositionModel_.reset + ( + CompositionModel>::New + ( + this->subModelProperties(), + *this + ).ptr() + ); + TIntegrator_.reset ( integrationScheme::New @@ -117,6 +127,8 @@ void Foam::ThermoCloud::cloudReset(ThermoCloud& c) CloudType::cloudReset(c); heatTransferModel_.reset(c.heatTransferModel_.ptr()); + compositionModel_.reset(c.compositionModel_.ptr()); + TIntegrator_.reset(c.TIntegrator_.ptr()); radiation_ = c.radiation_; @@ -144,6 +156,7 @@ Foam::ThermoCloud::ThermoCloud T_(carrierThermo.T()), p_(carrierThermo.p()), heatTransferModel_(nullptr), + compositionModel_(nullptr), TIntegrator_(nullptr), radiation_(false), radAreaP_(nullptr), @@ -212,6 +225,7 @@ Foam::ThermoCloud::ThermoCloud T_(c.T()), p_(c.p()), heatTransferModel_(c.heatTransferModel_->clone()), + compositionModel_(c.compositionModel_->clone()), TIntegrator_(c.TIntegrator_->clone()), radiation_(c.radiation_), radAreaP_(nullptr), @@ -322,6 +336,7 @@ Foam::ThermoCloud::ThermoCloud T_(c.T()), p_(c.p()), heatTransferModel_(nullptr), + compositionModel_(nullptr), TIntegrator_(nullptr), radiation_(false), radAreaP_(nullptr), @@ -481,4 +496,14 @@ void Foam::ThermoCloud::info() } +template +void Foam::ThermoCloud::writeFields() const +{ + if (compositionModel_.valid()) + { + CloudType::particleType::writeFields(*this, this->composition()); + } +} + + // ************************************************************************* // diff --git a/src/lagrangian/parcel/clouds/Templates/ThermoCloud/ThermoCloud.H b/src/lagrangian/parcel/clouds/Templates/ThermoCloud/ThermoCloud.H index d5e0feb822..1c092f4f01 100644 --- a/src/lagrangian/parcel/clouds/Templates/ThermoCloud/ThermoCloud.H +++ b/src/lagrangian/parcel/clouds/Templates/ThermoCloud/ThermoCloud.H @@ -58,6 +58,9 @@ class integrationScheme; template class HeatTransferModel; +template +class CompositionModel; + /*---------------------------------------------------------------------------*\ Class ThermoCloudName Declaration @@ -127,6 +130,10 @@ protected: autoPtr>> heatTransferModel_; + //- Reacting composition model + autoPtr>> + compositionModel_; + // Reference to the particle integration schemes @@ -257,6 +264,10 @@ public: inline const HeatTransferModel>& heatTransfer() const; + //- Return const access to reacting composition model + inline const CompositionModel>& + composition() const; + // Integration schemes @@ -385,6 +396,9 @@ public: //- Print cloud information void info(); + //- Write the field data for the cloud + virtual void writeFields() const; + // Member Operators diff --git a/src/lagrangian/parcel/clouds/Templates/ThermoCloud/ThermoCloudI.H b/src/lagrangian/parcel/clouds/Templates/ThermoCloud/ThermoCloudI.H index 0fc1c5f54f..df38a84634 100644 --- a/src/lagrangian/parcel/clouds/Templates/ThermoCloud/ThermoCloudI.H +++ b/src/lagrangian/parcel/clouds/Templates/ThermoCloud/ThermoCloudI.H @@ -91,6 +91,14 @@ Foam::ThermoCloud::heatTransfer() const } +template +inline const Foam::CompositionModel>& +Foam::ThermoCloud::composition() const +{ + return compositionModel_; +} + + template inline const Foam::integrationScheme& Foam::ThermoCloud::TIntegrator() const diff --git a/src/lagrangian/parcel/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C b/src/lagrangian/parcel/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C index db99526df1..f5472e4a56 100644 --- a/src/lagrangian/parcel/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C +++ b/src/lagrangian/parcel/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -170,8 +170,8 @@ void Foam::ReactingMultiphaseParcel::calc const scalar dt ) { - typedef typename TrackCloudType::reactingCloudType reactingCloudType; - const CompositionModel& composition = + typedef typename TrackCloudType::thermoCloudType thermoCloudType; + const CompositionModel& composition = cloud.composition(); @@ -547,8 +547,8 @@ void Foam::ReactingMultiphaseParcel::calcDevolatilisation return; } - typedef typename TrackCloudType::reactingCloudType reactingCloudType; - const CompositionModel& composition = + typedef typename TrackCloudType::thermoCloudType thermoCloudType; + const CompositionModel& composition = cloud.composition(); diff --git a/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcel.C index c10984170e..326d674541 100644 --- a/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcel.C +++ b/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcel.C @@ -57,9 +57,11 @@ void Foam::ReactingParcel::calcPhaseChange scalarField& Cs ) { - typedef typename TrackCloudType::reactingCloudType reactingCloudType; - const CompositionModel& composition = + typedef typename TrackCloudType::thermoCloudType thermoCloudType; + const CompositionModel& composition = cloud.composition(); + + typedef typename TrackCloudType::reactingCloudType reactingCloudType; PhaseChangeModel& phaseChange = cloud.phaseChange(); if (YPhase < small) @@ -383,8 +385,8 @@ void Foam::ReactingParcel::calc const scalar dt ) { - typedef typename TrackCloudType::reactingCloudType reactingCloudType; - const CompositionModel& composition = + typedef typename TrackCloudType::thermoCloudType thermoCloudType; + const CompositionModel& composition = cloud.composition(); diff --git a/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcel.H b/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcel.H index 45d8c65bcd..85f6ce438d 100644 --- a/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcel.H +++ b/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcel.H @@ -122,47 +122,8 @@ public: }; - class trackingData - : - public ParcelType::trackingData - { - private: - - // Private Data - - // Interpolators for continuous phase fields - - //- Interpolator for continuous phase pressure field - autoPtr> pInterp_; - - - // Cached continuous phase properties - - //- Pressure [Pa] - scalar pc_; - - - public: - - // Constructors - - //- Construct from components - template - inline trackingData(const TrackCloudType& cloud); - - - // Member Functions - - //- Return const access to the interpolator for continuous phase - // pressure field - inline const interpolation& pInterp() const; - - //- Return the continuous phase pressure - inline scalar pc() const; - - //- Access the continuous phase pressure - inline scalar& pc(); - }; + //- Use base tracking data + typedef typename ParcelType::trackingData trackingData; protected: @@ -407,7 +368,6 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #include "ReactingParcelI.H" -#include "ReactingParcelTrackingDataI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcelTrackingDataI.H b/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcelTrackingDataI.H deleted file mode 100644 index 0a851d6c47..0000000000 --- a/src/lagrangian/parcel/parcels/Templates/ReactingParcel/ReactingParcelTrackingDataI.H +++ /dev/null @@ -1,68 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2020 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 . - -\*---------------------------------------------------------------------------*/ - -template -template -inline Foam::ReactingParcel::trackingData::trackingData -( - const TrackCloudType& cloud -) -: - ParcelType::trackingData(cloud), - pInterp_ - ( - interpolation::New - ( - cloud.solution().interpolationSchemes(), - cloud.p() - ) - ), - pc_(Zero) -{} - - -template -inline const Foam::interpolation& -Foam::ReactingParcel::trackingData::pInterp() const -{ - return pInterp_(); -} - - -template -inline Foam::scalar Foam::ReactingParcel::trackingData::pc() const -{ - return pc_; -} - - -template -inline Foam::scalar& Foam::ReactingParcel::trackingData::pc() -{ - return pc_; -} - - -// ************************************************************************* // diff --git a/src/lagrangian/parcel/parcels/Templates/SprayParcel/SprayParcel.C b/src/lagrangian/parcel/parcels/Templates/SprayParcel/SprayParcel.C index e4d9babe8f..7889809713 100644 --- a/src/lagrangian/parcel/parcels/Templates/SprayParcel/SprayParcel.C +++ b/src/lagrangian/parcel/parcels/Templates/SprayParcel/SprayParcel.C @@ -64,8 +64,8 @@ void Foam::SprayParcel::calc const scalar dt ) { - typedef typename TrackCloudType::reactingCloudType reactingCloudType; - const CompositionModel& composition = + typedef typename TrackCloudType::thermoCloudType thermoCloudType; + const CompositionModel& composition = cloud.composition(); // Check if parcel belongs to liquid core @@ -153,8 +153,8 @@ void Foam::SprayParcel::calcAtomization const scalar dt ) { - typedef typename TrackCloudType::reactingCloudType reactingCloudType; - const CompositionModel& composition = + typedef typename TrackCloudType::thermoCloudType thermoCloudType; + const CompositionModel& composition = cloud.composition(); typedef typename TrackCloudType::sprayCloudType sprayCloudType; @@ -325,8 +325,8 @@ Foam::scalar Foam::SprayParcel::chi { // Modifications to take account of the flash boiling on primary break-up - typedef typename TrackCloudType::reactingCloudType reactingCloudType; - const CompositionModel& composition = + typedef typename TrackCloudType::thermoCloudType thermoCloudType; + const CompositionModel& composition = cloud.composition(); scalar chi = 0.0; diff --git a/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcel.C b/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcel.C index 82abac967d..bbd9f81e8a 100644 --- a/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcel.C +++ b/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -203,6 +203,10 @@ void Foam::ThermoParcel::calc Sph ); + // Update the heat capacity + static const scalarField Y(1, 1); + Cp_ = cloud.composition().Cp(0, Y, td.pc(), T0); + // Motion // ~~~~~~ diff --git a/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcel.H b/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcel.H index 9a66d1840b..7f285c912b 100644 --- a/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcel.H +++ b/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcel.H @@ -174,6 +174,9 @@ public: // Interpolators for continuous phase fields + //- Interpolator for continuous phase pressure field + autoPtr> pInterp_; + //- Temperature field interpolator autoPtr> TInterp_; @@ -189,6 +192,9 @@ public: // Cached continuous phase properties + //- Pressure [Pa] + scalar pc_; + //- Temperature [K] scalar Tc_; @@ -213,6 +219,10 @@ public: //- Return access to the locally stored carrier kappa field inline const volScalarField& kappa() const; + //- Return const access to the interpolator for continuous phase + // pressure field + inline const interpolation& pInterp() const; + //- Return const access to the interpolator for continuous // phase temperature field inline const interpolation& TInterp() const; @@ -229,6 +239,12 @@ public: // radiation field inline const interpolation& GInterp() const; + //- Return the continuous phase pressure + inline scalar pc() const; + + //- Access the continuous phase pressure + inline scalar& pc(); + //- Return the continuous phase temperature inline scalar Tc() const; @@ -428,6 +444,14 @@ public: template static void writeFields(const CloudType& c); + //- Write + template + static void writeFields + ( + const CloudType& c, + const CompositionType& compModel + ); + // Ostream Operator diff --git a/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcelIO.C b/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcelIO.C index 5b172c655a..616b9f3159 100644 --- a/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcelIO.C +++ b/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcelIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -128,6 +128,18 @@ void Foam::ThermoParcel::writeFields(const CloudType& c) } +template +template +void Foam::ThermoParcel::writeFields +( + const CloudType& c, + const CompositionType& compModel +) +{ + ThermoParcel::writeFields(c); +} + + // * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // template diff --git a/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcelTrackingDataI.H b/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcelTrackingDataI.H index 7120122666..c3802fe336 100644 --- a/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcelTrackingDataI.H +++ b/src/lagrangian/parcel/parcels/Templates/ThermoParcel/ThermoParcelTrackingDataI.H @@ -33,6 +33,14 @@ inline Foam::ThermoParcel::trackingData::trackingData ParcelType::trackingData(cloud), Cp_(cloud.carrierThermo().Cp()), kappa_(cloud.carrierThermo().kappa()), + pInterp_ + ( + interpolation::New + ( + cloud.solution().interpolationSchemes(), + cloud.p() + ) + ), TInterp_ ( interpolation::New @@ -58,6 +66,7 @@ inline Foam::ThermoParcel::trackingData::trackingData ) ), GInterp_(nullptr), + pc_(Zero), Tc_(Zero), Cpc_(Zero) { @@ -92,6 +101,14 @@ Foam::ThermoParcel::trackingData::kappa() const } +template +inline const Foam::interpolation& +Foam::ThermoParcel::trackingData::pInterp() const +{ + return pInterp_(); +} + + template inline const Foam::interpolation& Foam::ThermoParcel::trackingData::TInterp() const @@ -131,6 +148,20 @@ Foam::ThermoParcel::trackingData::GInterp() const } +template +inline Foam::scalar Foam::ThermoParcel::trackingData::pc() const +{ + return pc_; +} + + +template +inline Foam::scalar& Foam::ThermoParcel::trackingData::pc() +{ + return pc_; +} + + template inline Foam::scalar Foam::ThermoParcel::trackingData::Tc() const { diff --git a/src/lagrangian/parcel/parcels/derived/reactingParcel/makeReactingParcelSubmodels.C b/src/lagrangian/parcel/parcels/derived/reactingParcel/makeReactingParcelSubmodels.C index f54b4aaec2..481f0af637 100644 --- a/src/lagrangian/parcel/parcels/derived/reactingParcel/makeReactingParcelSubmodels.C +++ b/src/lagrangian/parcel/parcels/derived/reactingParcel/makeReactingParcelSubmodels.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,9 +37,9 @@ License // Thermodynamic #include "makeParcelHeatTransferModels.H" +#include "makeParcelCompositionModels.H" // Reacting -#include "makeReactingParcelCompositionModels.H" #include "makeReactingParcelPhaseChangeModels.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -56,9 +56,9 @@ makeReactingParcelSurfaceFilmModels(reactingCloud); // Thermo sub-models makeParcelHeatTransferModels(reactingCloud); +makeParcelCompositionModels(reactingCloud); // Reacting sub-models -makeReactingParcelCompositionModels(reactingCloud); makeReactingParcelPhaseChangeModels(reactingCloud); diff --git a/src/lagrangian/parcel/parcels/derived/sprayParcel/makeSprayParcelSubmodels.C b/src/lagrangian/parcel/parcels/derived/sprayParcel/makeSprayParcelSubmodels.C index a7e9af2302..58e5fac362 100644 --- a/src/lagrangian/parcel/parcels/derived/sprayParcel/makeSprayParcelSubmodels.C +++ b/src/lagrangian/parcel/parcels/derived/sprayParcel/makeSprayParcelSubmodels.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,9 +36,9 @@ License // Thermodynamic #include "makeParcelHeatTransferModels.H" +#include "makeParcelCompositionModels.H" // Reacting -#include "makeReactingParcelCompositionModels.H" #include "makeReactingParcelPhaseChangeModels.H" #include "makeReactingParcelSurfaceFilmModels.H" @@ -60,9 +60,9 @@ makeSprayParcelStochasticCollisionModels(sprayCloud); // Thermo sub-models makeParcelHeatTransferModels(sprayCloud); +makeParcelCompositionModels(sprayCloud); // Reacting sub-models -makeReactingParcelCompositionModels(sprayCloud); makeReactingParcelPhaseChangeModels(sprayCloud); makeReactingParcelSurfaceFilmModels(sprayCloud); diff --git a/src/lagrangian/parcel/parcels/derived/thermoParcel/makeThermoParcelSubmodels.C b/src/lagrangian/parcel/parcels/derived/thermoParcel/makeThermoParcelSubmodels.C index 91f90ee07f..e5f9989444 100644 --- a/src/lagrangian/parcel/parcels/derived/thermoParcel/makeThermoParcelSubmodels.C +++ b/src/lagrangian/parcel/parcels/derived/thermoParcel/makeThermoParcelSubmodels.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,6 +37,10 @@ License // Thermodynamic #include "makeParcelHeatTransferModels.H" +#include "makeParcelCompositionModels.H" + +#include "NoComposition.H" +#include "SinglePhaseMixture.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -52,6 +56,6 @@ makeParcelSurfaceFilmModels(thermoCloud); // Thermo sub-models makeParcelHeatTransferModels(thermoCloud); - +makeParcelCompositionModels(thermoCloud); // ************************************************************************* // diff --git a/src/lagrangian/parcel/parcels/include/makeReactingParcelCompositionModels.H b/src/lagrangian/parcel/parcels/include/makeParcelCompositionModels.H similarity index 89% rename from src/lagrangian/parcel/parcels/include/makeReactingParcelCompositionModels.H rename to src/lagrangian/parcel/parcels/include/makeParcelCompositionModels.H index 0795292c03..96a8338cbf 100644 --- a/src/lagrangian/parcel/parcels/include/makeReactingParcelCompositionModels.H +++ b/src/lagrangian/parcel/parcels/include/makeParcelCompositionModels.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,8 +23,8 @@ License \*---------------------------------------------------------------------------*/ -#ifndef makeReactingParcelCompositionModels_H -#define makeReactingParcelCompositionModels_H +#ifndef makeParcelCompositionModels_H +#define makeParcelCompositionModels_H // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -33,7 +33,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#define makeReactingParcelCompositionModels(CloudType) \ +#define makeParcelCompositionModels(CloudType) \ \ makeCompositionModel(CloudType); \ makeCompositionModelType(NoComposition, CloudType); \ diff --git a/src/lagrangian/parcel/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H b/src/lagrangian/parcel/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H index 8b89551c88..4f5cb79d18 100644 --- a/src/lagrangian/parcel/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H +++ b/src/lagrangian/parcel/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H @@ -269,17 +269,17 @@ public: #define makeCompositionModel(CloudType) \ \ - typedef Foam::CloudType::reactingCloudType reactingCloudType; \ + typedef Foam::CloudType::thermoCloudType thermoCloudType; \ defineNamedTemplateTypeNameAndDebug \ ( \ - Foam::CompositionModel, \ + Foam::CompositionModel, \ 0 \ ); \ namespace Foam \ { \ defineTemplateRunTimeSelectionTable \ ( \ - CompositionModel, \ + CompositionModel, \ dictionary \ ); \ } @@ -287,12 +287,12 @@ public: #define makeCompositionModelType(SS, CloudType) \ \ - typedef Foam::CloudType::reactingCloudType reactingCloudType; \ - defineNamedTemplateTypeNameAndDebug(Foam::SS, 0); \ + typedef Foam::CloudType::thermoCloudType thermoCloudType; \ + defineNamedTemplateTypeNameAndDebug(Foam::SS, 0); \ \ - Foam::CompositionModel:: \ - adddictionaryConstructorToTable> \ - add##SS##CloudType##reactingCloudType##ConstructorToTable_; + Foam::CompositionModel:: \ + adddictionaryConstructorToTable> \ + add##SS##CloudType##thermoCloudType##ConstructorToTable_; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/lagrangian/reactingParticleFoam/simplifiedSiwek/constant/limestoneCloudProperties b/tutorials/lagrangian/reactingParticleFoam/simplifiedSiwek/constant/limestoneCloudProperties index 91fe93b77f..ba3591d840 100644 --- a/tutorials/lagrangian/reactingParticleFoam/simplifiedSiwek/constant/limestoneCloudProperties +++ b/tutorials/lagrangian/reactingParticleFoam/simplifiedSiwek/constant/limestoneCloudProperties @@ -41,6 +41,7 @@ solution U cellPoint; Cp cell; kappa cell; + p cell; T cell; G cell; } @@ -108,6 +109,8 @@ subModels radiation on; + compositionModel singlePhaseMixture; + standardWallInteractionCoeffs { type rebound; @@ -119,6 +122,17 @@ subModels { BirdCorrection false; } + + singlePhaseMixtureCoeffs + { + phases + ( + solid + { + CaCO3 1; + } + ); + } } diff --git a/tutorials/lagrangian/reactingParticleFoam/simplifiedSiwek/constant/thermophysicalProperties b/tutorials/lagrangian/reactingParticleFoam/simplifiedSiwek/constant/thermophysicalProperties index e1987d78fd..34cd4d86b9 100644 --- a/tutorials/lagrangian/reactingParticleFoam/simplifiedSiwek/constant/thermophysicalProperties +++ b/tutorials/lagrangian/reactingParticleFoam/simplifiedSiwek/constant/thermophysicalProperties @@ -47,6 +47,8 @@ solids } ash; + + CaCO3; }