diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C index 0ea66723b0..4bee6a853a 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C @@ -126,17 +126,6 @@ void Foam::KinematicCloud::solve(TrackData& td) } -template -void Foam::KinematicCloud::preEvolve() -{ - Info<< "\nSolving cloud " << this->name() << endl; - - this->dispersion().cacheFields(true); - forces_.cacheFields(true); - updateCellOccupancy(); -} - - template void Foam::KinematicCloud::buildCellOccupancy() { @@ -310,6 +299,7 @@ Foam::KinematicCloud::KinematicCloud U_(U), mu_(mu), g_(g), + pAmbient_(0.0), forces_ ( *this, @@ -403,6 +393,7 @@ Foam::KinematicCloud::KinematicCloud U_(c.U_), mu_(c.mu_), g_(c.g_), + pAmbient_(c.pAmbient_), forces_(c.forces_), functions_(c.functions_), dispersionModel_(c.dispersionModel_->clone()), @@ -478,6 +469,7 @@ Foam::KinematicCloud::KinematicCloud U_(c.U_), mu_(c.mu_), g_(c.g_), + pAmbient_(c.pAmbient_), forces_(*this, mesh), functions_(*this), dispersionModel_(NULL), @@ -600,6 +592,20 @@ void Foam::KinematicCloud::scaleSources() } +template +void Foam::KinematicCloud::preEvolve() +{ + Info<< "\nSolving cloud " << this->name() << endl; + + this->dispersion().cacheFields(true); + forces_.cacheFields(true); + updateCellOccupancy(); + + pAmbient_ = constProps_.dict().template + lookupOrDefault("pAmbient", pAmbient_); +} + + template void Foam::KinematicCloud::evolve() { diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H index dcd6157226..e284299f32 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H @@ -176,6 +176,9 @@ protected: //- Gravity const dimensionedVector& g_; + //- Averaged ambient domain pressure + scalar pAmbient_; + //- Optional particle forces forceType forces_; @@ -230,9 +233,6 @@ protected: template void solve(TrackData& td); - //- Pre-evolve - void preEvolve(); - //- Build the cellOccupancy void buildCellOccupancy(); @@ -367,6 +367,12 @@ public: //- Gravity inline const dimensionedVector& g() const; + //- Return const-access to the ambient pressure + inline scalar pAmbient() const; + + //- Return reference to the ambient pressure + inline scalar& pAmbient(); + //- Optional particle forces // inline const typename parcelType::forceType& forces() const; @@ -514,6 +520,9 @@ public: //- Apply scaling to (transient) cloud sources void scaleSources(); + //- Pre-evolve + void preEvolve(); + //- Evolve the cloud void evolve(); diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H index b317fbcc73..6522aa2cad 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H @@ -109,6 +109,20 @@ inline const Foam::dimensionedVector& Foam::KinematicCloud::g() const } +template +inline Foam::scalar Foam::KinematicCloud::pAmbient() const +{ + return pAmbient_; +} + + +template +inline Foam::scalar& Foam::KinematicCloud::pAmbient() +{ + return pAmbient_; +} + + template //inline const typename CloudType::parcelType::forceType& inline const typename Foam::KinematicCloud::forceType& diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C index 91cb53aff0..60a4a4c956 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C @@ -304,6 +304,15 @@ void Foam::ThermoCloud::scaleSources() } +template +void Foam::ThermoCloud::preEvolve() +{ + CloudType::preEvolve(); + + this->pAmbient() = thermo_.thermo().p().average().value(); +} + + template void Foam::ThermoCloud::evolve() { diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H index f725dca73e..bdcfcf46d0 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H @@ -304,6 +304,9 @@ public: //- Apply scaling to (transient) cloud sources void scaleSources(); + //- Pre-evolve + void preEvolve(); + //- Evolve the cloud void evolve();