diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C index 4bee6a853a..516c62d482 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C @@ -499,7 +499,7 @@ bool Foam::KinematicCloud::hasWallImpactDistance() const template -void Foam::KinematicCloud::checkParcelProperties +void Foam::KinematicCloud::setParcelThermoProperties ( parcelType& parcel, const scalar lagrangianDt, @@ -510,7 +510,17 @@ void Foam::KinematicCloud::checkParcelProperties { parcel.rho() = constProps_.rho0(); } +} + +template +void Foam::KinematicCloud::checkParcelProperties +( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed +) +{ const scalar carrierDt = mesh_.time().deltaTValue(); parcel.stepFraction() = (carrierDt - lagrangianDt)/carrierDt; parcel.typeId() = constProps_.parcelTypeId(); diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H index 2bf5f06066..4b034d5f08 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H @@ -486,6 +486,14 @@ public: // Cloud evolution functions + //- Set parcel thermo properties + void setParcelThermoProperties + ( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed + ); + //- Check parcel properties void checkParcelProperties ( diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C index c536cd84d6..b30cf74230 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C @@ -224,22 +224,18 @@ Foam::ReactingCloud::~ReactingCloud() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template -void Foam::ReactingCloud::checkParcelProperties +void Foam::ReactingCloud::setParcelThermoProperties ( parcelType& parcel, const scalar lagrangianDt, const bool fullyDescribed ) { - CloudType::checkParcelProperties - ( - parcel, - lagrangianDt, - fullyDescribed - ); + CloudType::setParcelThermoProperties(parcel, lagrangianDt, fullyDescribed); if (!fullyDescribed) { + parcel.pc() = this->thermo().thermo().p()[parcel.cell()]; parcel.Y() = composition().YMixture0(); } else @@ -257,6 +253,18 @@ void Foam::ReactingCloud::checkParcelProperties } +template +void Foam::ReactingCloud::checkParcelProperties +( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed +) +{ + CloudType::checkParcelProperties(parcel, lagrangianDt, fullyDescribed); +} + + template void Foam::ReactingCloud::storeState() { diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H index 324636cca5..c8a6295a32 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H @@ -267,6 +267,14 @@ public: // Cloud evolution functions + //- Set parcel thermo properties + void setParcelThermoProperties + ( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed + ); + //- Check parcel properties void checkParcelProperties ( diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C index 0290eacb7c..45f94d8928 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C @@ -155,19 +155,14 @@ Foam::ReactingMultiphaseCloud::~ReactingMultiphaseCloud() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template -void Foam::ReactingMultiphaseCloud::checkParcelProperties +void Foam::ReactingMultiphaseCloud::setParcelThermoProperties ( parcelType& parcel, const scalar lagrangianDt, const bool fullyDescribed ) { - CloudType::checkParcelProperties - ( - parcel, - lagrangianDt, - fullyDescribed - ); + CloudType::setParcelThermoProperties(parcel, lagrangianDt, fullyDescribed); label idGas = this->composition().idGas(); label idLiquid = this->composition().idLiquid(); @@ -203,6 +198,18 @@ void Foam::ReactingMultiphaseCloud::checkParcelProperties } +template +void Foam::ReactingMultiphaseCloud::checkParcelProperties +( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed +) +{ + CloudType::checkParcelProperties(parcel, lagrangianDt, fullyDescribed); +} + + template void Foam::ReactingMultiphaseCloud::storeState() { diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H index 59e0cc0707..6e9e0ee77a 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H @@ -240,6 +240,14 @@ public: // Cloud evolution functions + //- Set parcel thermo properties + void setParcelThermoProperties + ( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed + ); + //- Check parcel properties void checkParcelProperties ( diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C index 60a4a4c956..4615938187 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C @@ -233,6 +233,24 @@ Foam::ThermoCloud::~ThermoCloud() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template +void Foam::ThermoCloud::setParcelThermoProperties +( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed +) +{ + CloudType::setParcelThermoProperties(parcel, lagrangianDt, fullyDescribed); + + if (!fullyDescribed) + { + parcel.T() = constProps_.T0(); + parcel.Cp() = constProps_.Cp0(); + } +} + + template void Foam::ThermoCloud::checkParcelProperties ( @@ -242,12 +260,6 @@ void Foam::ThermoCloud::checkParcelProperties ) { CloudType::checkParcelProperties(parcel, lagrangianDt, fullyDescribed); - - if (!fullyDescribed) - { - parcel.T() = constProps_.T0(); - parcel.Cp() = constProps_.Cp0(); - } } diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H index bdcfcf46d0..f51ce04c8c 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H @@ -281,6 +281,14 @@ public: // Cloud evolution functions + //- Set parcel thermo properties + void setParcelThermoProperties + ( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed + ); + //- Check parcel properties void checkParcelProperties ( diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C index 08cd60c9d8..559556e8b1 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C @@ -530,6 +530,7 @@ void Foam::InjectionModel::inject(TrackData& td) const scalar time = this->owner().db().time().value(); const scalar trackTime = this->owner().solution().trackTime(); const polyMesh& mesh = this->owner().mesh(); + typename TrackData::cloudType& cloud = td.cloud(); // Prepare for next time step label parcelsAdded = 0; @@ -592,11 +593,14 @@ void Foam::InjectionModel::inject(TrackData& td) ); // Check/set new parcel properties - td.cloud().checkParcelProperties(*pPtr, dt, fullyDescribed()); + cloud.setParcelThermoProperties(*pPtr, dt, fullyDescribed()); // Assign new parcel properties in injection model setProperties(parcelI, newParcels, timeInj, *pPtr); + // Check/set new parcel properties + cloud.checkParcelProperties(*pPtr, dt, fullyDescribed()); + // Apply correction to velocity for 2-D cases meshTools::constrainDirection ( @@ -647,6 +651,7 @@ void Foam::InjectionModel::injectSteadyState } const polyMesh& mesh = this->owner().mesh(); + typename TrackData::cloudType& cloud = td.cloud(); // Reset counters time0_ = 0.0; @@ -696,12 +701,15 @@ void Foam::InjectionModel::injectSteadyState tetPtI ); - // Check new parcel properties - td.cloud().checkParcelProperties(*pPtr, 0.0, fullyDescribed()); + // Check/set new parcel properties + cloud.setParcelThermoProperties(*pPtr, 0.0, fullyDescribed()); // Assign new parcel properties in injection model setProperties(parcelI, newParcels, 0.0, *pPtr); + // Check/set new parcel properties + cloud.checkParcelProperties(*pPtr, 0.0, fullyDescribed()); + // Apply correction to velocity for 2-D cases meshTools::constrainDirection ( diff --git a/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.C b/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.C index fa1eba5b90..6cb30fed26 100644 --- a/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.C +++ b/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.C @@ -157,6 +157,30 @@ Foam::SprayCloud::~SprayCloud() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template +void Foam::SprayCloud::setParcelThermoProperties +( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed +) +{ + CloudType::setParcelThermoProperties(parcel, lagrangianDt, fullyDescribed); + + if (!fullyDescribed) + { + const liquidMixtureProperties& liqMix = this->composition().liquids(); + + const scalarField& Y(parcel.Y()); + scalarField X(liqMix.X(Y)); + + // override rho and Cp from constantProperties + parcel.Cp() = liqMix.Cp(parcel.pc(), parcel.T(), X); + parcel.rho() = liqMix.rho(parcel.pc(), parcel.T(), X); + } +} + + template void Foam::SprayCloud::checkParcelProperties ( @@ -165,21 +189,7 @@ void Foam::SprayCloud::checkParcelProperties const bool fullyDescribed ) { - CloudType::checkParcelProperties - ( - parcel, - lagrangianDt, - fullyDescribed - ); - - const liquidMixtureProperties& liqMix = this->composition().liquids(); - - const scalarField& Y(parcel.Y()); - scalarField X(liqMix.X(Y)); - - // override rho and Cp from constantProperties - parcel.Cp() = liqMix.Cp(parcel.pc(), parcel.T(), X); - parcel.rho() = liqMix.rho(parcel.pc(), parcel.T(), X); + CloudType::checkParcelProperties(parcel, lagrangianDt, fullyDescribed); // store the injection position and initial drop size parcel.position0() = parcel.position(); diff --git a/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.H b/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.H index 21fa515e7b..92f9210c62 100644 --- a/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.H +++ b/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.H @@ -209,6 +209,14 @@ public: // Cloud evolution functions + //- Set parcel thermo properties + void setParcelThermoProperties + ( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed + ); + //- Check parcel properties void checkParcelProperties (