From 490f1ca5f2632469251d9bba9b693fd5dd4718c9 Mon Sep 17 00:00:00 2001 From: andy <andy> Date: Fri, 27 May 2011 11:22:20 +0100 Subject: [PATCH] ENH: Split parcel initialisation into 2 parts around injection --- .../Templates/KinematicCloud/KinematicCloud.C | 12 ++++++- .../Templates/KinematicCloud/KinematicCloud.H | 8 +++++ .../Templates/ReactingCloud/ReactingCloud.C | 22 ++++++++---- .../Templates/ReactingCloud/ReactingCloud.H | 8 +++++ .../ReactingMultiphaseCloud.C | 21 +++++++---- .../ReactingMultiphaseCloud.H | 8 +++++ .../Templates/ThermoCloud/ThermoCloud.C | 16 +++++++-- .../Templates/ThermoCloud/ThermoCloud.H | 8 +++++ .../InjectionModel/InjectionModel.C | 14 ++++++-- .../clouds/Templates/SprayCloud/SprayCloud.C | 36 ++++++++++++------- .../clouds/Templates/SprayCloud/SprayCloud.H | 8 +++++ 11 files changed, 128 insertions(+), 33 deletions(-) diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C index 4bee6a853a7..516c62d4820 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<CloudType>::hasWallImpactDistance() const template<class CloudType> -void Foam::KinematicCloud<CloudType>::checkParcelProperties +void Foam::KinematicCloud<CloudType>::setParcelThermoProperties ( parcelType& parcel, const scalar lagrangianDt, @@ -510,7 +510,17 @@ void Foam::KinematicCloud<CloudType>::checkParcelProperties { parcel.rho() = constProps_.rho0(); } +} + +template<class CloudType> +void Foam::KinematicCloud<CloudType>::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 2bf5f06066d..4b034d5f086 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 c536cd84d67..b30cf742302 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<CloudType>::~ReactingCloud() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class CloudType> -void Foam::ReactingCloud<CloudType>::checkParcelProperties +void Foam::ReactingCloud<CloudType>::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<CloudType>::checkParcelProperties } +template<class CloudType> +void Foam::ReactingCloud<CloudType>::checkParcelProperties +( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed +) +{ + CloudType::checkParcelProperties(parcel, lagrangianDt, fullyDescribed); +} + + template<class CloudType> void Foam::ReactingCloud<CloudType>::storeState() { diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H index 324636cca53..c8a6295a320 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 0290eacb7c2..45f94d89280 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<CloudType>::~ReactingMultiphaseCloud() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class CloudType> -void Foam::ReactingMultiphaseCloud<CloudType>::checkParcelProperties +void Foam::ReactingMultiphaseCloud<CloudType>::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<CloudType>::checkParcelProperties } +template<class CloudType> +void Foam::ReactingMultiphaseCloud<CloudType>::checkParcelProperties +( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed +) +{ + CloudType::checkParcelProperties(parcel, lagrangianDt, fullyDescribed); +} + + template<class CloudType> void Foam::ReactingMultiphaseCloud<CloudType>::storeState() { diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H index 59e0cc0707d..6e9e0ee77ac 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 60a4a4c9563..4615938187f 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C @@ -234,14 +234,14 @@ Foam::ThermoCloud<CloudType>::~ThermoCloud() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class CloudType> -void Foam::ThermoCloud<CloudType>::checkParcelProperties +void Foam::ThermoCloud<CloudType>::setParcelThermoProperties ( parcelType& parcel, const scalar lagrangianDt, const bool fullyDescribed ) { - CloudType::checkParcelProperties(parcel, lagrangianDt, fullyDescribed); + CloudType::setParcelThermoProperties(parcel, lagrangianDt, fullyDescribed); if (!fullyDescribed) { @@ -251,6 +251,18 @@ void Foam::ThermoCloud<CloudType>::checkParcelProperties } +template<class CloudType> +void Foam::ThermoCloud<CloudType>::checkParcelProperties +( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed +) +{ + CloudType::checkParcelProperties(parcel, lagrangianDt, fullyDescribed); +} + + template<class CloudType> void Foam::ThermoCloud<CloudType>::storeState() { diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H index bdcfcf46d0d..f51ce04c8c7 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 08cd60c9d8f..559556e8b11 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<CloudType>::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<CloudType>::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<CloudType>::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<CloudType>::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 fa1eba5b90a..6cb30fed269 100644 --- a/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.C +++ b/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.C @@ -158,28 +158,38 @@ Foam::SprayCloud<CloudType>::~SprayCloud() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class CloudType> -void Foam::SprayCloud<CloudType>::checkParcelProperties +void Foam::SprayCloud<CloudType>::setParcelThermoProperties ( parcelType& parcel, const scalar lagrangianDt, const bool fullyDescribed ) { - CloudType::checkParcelProperties - ( - parcel, - lagrangianDt, - fullyDescribed - ); + CloudType::setParcelThermoProperties(parcel, lagrangianDt, fullyDescribed); - const liquidMixtureProperties& liqMix = this->composition().liquids(); + 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); + } +} - 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<class CloudType> +void Foam::SprayCloud<CloudType>::checkParcelProperties +( + parcelType& parcel, + const scalar lagrangianDt, + const bool fullyDescribed +) +{ + 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 21fa515e7b6..92f9210c627 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 ( -- GitLab