From 8811d390e75a0e9ff2b825d52b75b11393a582ed Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Fri, 8 Sep 2023 09:08:16 +0100 Subject: [PATCH] CloudFunctionObjects: VolumeFraction: Register field This means the field can be used by other run-time post-processing functions; e.g., with '#includeFunc volIntegrate(cloud:alpha)'. --- .../ParticleErosion/ParticleErosion.C | 2 +- .../SizeDistribution/SizeDistribution.C | 2 +- .../VolumeFraction/VolumeFraction.C | 33 ++++++++++++++++--- .../VolumeFraction/VolumeFraction.H | 15 +++++++++ .../injectionChannel/constant/cloudProperties | 5 +++ .../injectionChannel/system/controlDict | 1 + 6 files changed, 52 insertions(+), 6 deletions(-) diff --git a/src/lagrangian/parcel/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.C b/src/lagrangian/parcel/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.C index e617150510..f505553dc1 100644 --- a/src/lagrangian/parcel/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.C +++ b/src/lagrangian/parcel/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.C @@ -28,7 +28,7 @@ License using namespace Foam::constant; -// * * * * * * * * * * * * * Protectd Member Functions * * * * * * * * * * * // +// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // template Foam::label Foam::ParticleErosion::applyToPatch diff --git a/src/lagrangian/parcel/submodels/CloudFunctionObjects/SizeDistribution/SizeDistribution.C b/src/lagrangian/parcel/submodels/CloudFunctionObjects/SizeDistribution/SizeDistribution.C index 522eb5397d..919e8929b2 100644 --- a/src/lagrangian/parcel/submodels/CloudFunctionObjects/SizeDistribution/SizeDistribution.C +++ b/src/lagrangian/parcel/submodels/CloudFunctionObjects/SizeDistribution/SizeDistribution.C @@ -27,7 +27,7 @@ License #include "OSspecific.H" #include "setWriter.H" -// * * * * * * * * * * * * * Protectd Member Functions * * * * * * * * * * * // +// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // template void Foam::SizeDistribution::write() diff --git a/src/lagrangian/parcel/submodels/CloudFunctionObjects/VolumeFraction/VolumeFraction.C b/src/lagrangian/parcel/submodels/CloudFunctionObjects/VolumeFraction/VolumeFraction.C index f5b7435606..e15a80de36 100644 --- a/src/lagrangian/parcel/submodels/CloudFunctionObjects/VolumeFraction/VolumeFraction.C +++ b/src/lagrangian/parcel/submodels/CloudFunctionObjects/VolumeFraction/VolumeFraction.C @@ -25,12 +25,12 @@ License #include "VolumeFraction.H" -// * * * * * * * * * * * * * Protectd Member Functions * * * * * * * * * * * // +// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // template void Foam::VolumeFraction::write() { - this->owner().alpha()->write(); + alpha_.write(); } @@ -44,7 +44,20 @@ Foam::VolumeFraction::VolumeFraction const word& modelName ) : - CloudFunctionObject(dict, owner, modelName, typeName) + CloudFunctionObject(dict, owner, modelName, typeName), + alpha_ + ( + IOobject + ( + this->owner().name() + ":alpha", + this->owner().mesh().time().name(), + this->owner().mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + this->owner().mesh(), + dimensionedScalar(dimless, 0) + ) {} @@ -54,7 +67,8 @@ Foam::VolumeFraction::VolumeFraction const VolumeFraction& vf ) : - CloudFunctionObject(vf) + CloudFunctionObject(vf), + alpha_(this->owner().name() + ":alpha", vf.alpha_) {} @@ -65,4 +79,15 @@ Foam::VolumeFraction::~VolumeFraction() {} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template +void Foam::VolumeFraction::postEvolve() +{ + alpha_ = this->owner().alpha(); + + CloudFunctionObject::postEvolve(); +} + + // ************************************************************************* // diff --git a/src/lagrangian/parcel/submodels/CloudFunctionObjects/VolumeFraction/VolumeFraction.H b/src/lagrangian/parcel/submodels/CloudFunctionObjects/VolumeFraction/VolumeFraction.H index a9f6dd9a18..8320d5ac5a 100644 --- a/src/lagrangian/parcel/submodels/CloudFunctionObjects/VolumeFraction/VolumeFraction.H +++ b/src/lagrangian/parcel/submodels/CloudFunctionObjects/VolumeFraction/VolumeFraction.H @@ -36,6 +36,7 @@ SourceFiles #define VolumeFraction_H #include "CloudFunctionObject.H" +#include "volFields.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -53,6 +54,12 @@ class VolumeFraction { protected: + // Private Data + + //- Volume fraction field + volScalarField alpha_; + + // Protected Member Functions //- Write post-processing info @@ -90,6 +97,14 @@ public: //- Destructor virtual ~VolumeFraction(); + + + // Member Functions + + // Evaluation + + //- Post-evolve hook + virtual void postEvolve(); }; diff --git a/tutorials/incompressibleDenseParticleFluid/injectionChannel/constant/cloudProperties b/tutorials/incompressibleDenseParticleFluid/injectionChannel/constant/cloudProperties index 6d1ee88736..c8f82ea240 100644 --- a/tutorials/incompressibleDenseParticleFluid/injectionChannel/constant/cloudProperties +++ b/tutorials/incompressibleDenseParticleFluid/injectionChannel/constant/cloudProperties @@ -158,6 +158,11 @@ subModels cloudFunctions { + volumeFraction1 + { + type volumeFraction; + } + massFlux1 { type massFlux; diff --git a/tutorials/incompressibleDenseParticleFluid/injectionChannel/system/controlDict b/tutorials/incompressibleDenseParticleFluid/injectionChannel/system/controlDict index 3c4ab205a5..6bd68145f8 100644 --- a/tutorials/incompressibleDenseParticleFluid/injectionChannel/system/controlDict +++ b/tutorials/incompressibleDenseParticleFluid/injectionChannel/system/controlDict @@ -48,6 +48,7 @@ runTimeModifiable yes; functions { + #includeFunc volIntegrate(cloud:alpha) #includeFunc patchFlowRate(patch=lowerInlet, cloud:massFlux) #includeFunc patchFlowRate(patch=upperInlet, cloud:massFlux) #includeFunc faceZoneFlowRate(faceZone=mid, cloud:massFlux)