From 8d50450b0f3f8297193e550250884b7aea8c5a47 Mon Sep 17 00:00:00 2001 From: andy <andy> Date: Tue, 24 May 2011 18:19:09 +0100 Subject: [PATCH] ENH: made functions public + added new average marcel mass calc --- .../CellZoneInjection/CellZoneInjection.C | 76 +++--- .../CellZoneInjection/CellZoneInjection.H | 25 +- .../ConeInjection/ConeInjection.C | 92 ++++--- .../ConeInjection/ConeInjection.H | 18 +- .../FieldActivatedInjection.C | 75 +++--- .../FieldActivatedInjection.H | 20 +- .../InflationInjection/InflationInjection.C | 248 +++++++++--------- .../InflationInjection/InflationInjection.H | 17 +- .../InjectionModel/InjectionModel.C | 88 ++++--- .../InjectionModel/InjectionModel.H | 24 +- .../KinematicLookupTableInjection.C | 78 +++--- .../KinematicLookupTableInjection.H | 17 +- .../ManualInjection/ManualInjection.C | 76 +++--- .../ManualInjection/ManualInjection.H | 17 +- .../InjectionModel/NoInjection/NoInjection.C | 46 ++-- .../InjectionModel/NoInjection/NoInjection.H | 16 +- .../PatchInjection/PatchInjection.C | 114 ++++---- .../PatchInjection/PatchInjection.H | 17 +- .../ReactingLookupTableInjection.C | 78 +++--- .../ReactingLookupTableInjection.H | 18 +- .../ReactingMultiphaseLookupTableInjection.C | 82 +++--- .../ReactingMultiphaseLookupTableInjection.H | 17 +- .../ThermoLookupTableInjection.C | 78 +++--- .../ThermoLookupTableInjection.H | 18 +- 24 files changed, 642 insertions(+), 713 deletions(-) diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C index 008b7a117df..7e7c83806d8 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C @@ -158,45 +158,6 @@ void Foam::CellZoneInjection<CloudType>::setPositions } -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -template<class CloudType> -Foam::label Foam::CellZoneInjection<CloudType>::parcelsToInject -( - const scalar time0, - const scalar time1 -) -{ - if ((0.0 >= time0) && (0.0 < time1)) - { - return positions_.size(); - } - else - { - return 0; - } -} - - -template<class CloudType> -Foam::scalar Foam::CellZoneInjection<CloudType>::volumeToInject -( - const scalar time0, - const scalar time1 -) -{ - // All parcels introduced at SOI - if ((0.0 >= time0) && (0.0 < time1)) - { - return this->volumeTotal_; - } - else - { - return 0.0; - } -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class CloudType> @@ -316,6 +277,43 @@ Foam::scalar Foam::CellZoneInjection<CloudType>::timeEnd() const } +template<class CloudType> +Foam::label Foam::CellZoneInjection<CloudType>::parcelsToInject +( + const scalar time0, + const scalar time1 +) +{ + if ((0.0 >= time0) && (0.0 < time1)) + { + return positions_.size(); + } + else + { + return 0; + } +} + + +template<class CloudType> +Foam::scalar Foam::CellZoneInjection<CloudType>::volumeToInject +( + const scalar time0, + const scalar time1 +) +{ + // All parcels introduced at SOI + if ((0.0 >= time0) && (0.0 < time1)) + { + return this->volumeTotal_; + } + else + { + return 0.0; + } +} + + template<class CloudType> void Foam::CellZoneInjection<CloudType>::setPositionAndCell ( diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.H index 03e90795849..ebc3bf764a2 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.H @@ -95,25 +95,6 @@ class CellZoneInjection void setPositions(const labelList& cellZoneCells); -protected: - - // Protected member functions - - //- Number of parcels to introduce over the time step relative to SOI - label parcelsToInject - ( - const scalar time0, - const scalar time1 - ); - - //- Volume of parcels to introduce over the time step relative to SOI - scalar volumeToInject - ( - const scalar time0, - const scalar time1 - ); - - public: //- Runtime type information @@ -147,6 +128,12 @@ public: //- Return the end-of-injection time scalar timeEnd() const; + //- Number of parcels to introduce relative to SOI + label parcelsToInject(const scalar time0, const scalar time1); + + //- Volume of parcels to introduce relative to SOI + scalar volumeToInject(const scalar time0, const scalar time1); + // Injection geometry diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.C index 439989e88b1..c38494a08db 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.C @@ -30,53 +30,6 @@ License using namespace Foam::constant::mathematical; -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -template<class CloudType> -Foam::label Foam::ConeInjection<CloudType>::parcelsToInject -( - const scalar time0, - const scalar time1 -) -{ - if ((time0 >= 0.0) && (time0 < duration_)) - { - const scalar targetVolume = flowRateProfile_().integrate(0, time1); - - const label targetParcels = - parcelsPerInjector_*targetVolume/this->volumeTotal_; - - const label nToInject = targetParcels - nInjected_; - - nInjected_ += nToInject; - - return positionAxis_.size()*nToInject; - } - else - { - return 0; - } -} - - -template<class CloudType> -Foam::scalar Foam::ConeInjection<CloudType>::volumeToInject -( - const scalar time0, - const scalar time1 -) -{ - if ((time0 >= 0.0) && (time0 < duration_)) - { - return flowRateProfile_().integrate(time0, time1); - } - else - { - return 0.0; - } -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class CloudType> @@ -195,6 +148,51 @@ Foam::scalar Foam::ConeInjection<CloudType>::timeEnd() const } +template<class CloudType> +Foam::label Foam::ConeInjection<CloudType>::parcelsToInject +( + const scalar time0, + const scalar time1 +) +{ + if ((time0 >= 0.0) && (time0 < duration_)) + { + const scalar targetVolume = flowRateProfile_().integrate(0, time1); + + const label targetParcels = + parcelsPerInjector_*targetVolume/this->volumeTotal_; + + const label nToInject = targetParcels - nInjected_; + + nInjected_ += nToInject; + + return positionAxis_.size()*nToInject; + } + else + { + return 0; + } +} + + +template<class CloudType> +Foam::scalar Foam::ConeInjection<CloudType>::volumeToInject +( + const scalar time0, + const scalar time1 +) +{ + if ((time0 >= 0.0) && (time0 < duration_)) + { + return flowRateProfile_().integrate(time0, time1); + } + else + { + return 0.0; + } +} + + template<class CloudType> void Foam::ConeInjection<CloudType>::setPositionAndCell ( diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H index 7feabc946ef..a8771e5b30c 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H @@ -113,17 +113,6 @@ class ConeInjection vectorList tanVec2_; -protected: - - // Protected Member Functions - - //- Number of parcels to introduce over the time step relative to SOI - virtual label parcelsToInject(const scalar time0, const scalar time1); - - //- Volume of parcels to introduce over the time step relative to SOI - virtual scalar volumeToInject(const scalar time0, const scalar time1); - - public: //- Runtime type information @@ -157,6 +146,13 @@ public: //- Return the end-of-injection time scalar timeEnd() const; + //- Number of parcels to introduce relative to SOI + virtual label parcelsToInject(const scalar time0, const scalar time1); + + //- Volume of parcels to introduce relative to SOI + virtual scalar volumeToInject(const scalar time0, const scalar time1); + + // Injection geometry diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C index 03fe941dab4..abe77e41f6f 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C @@ -29,44 +29,6 @@ License using namespace Foam::constant::mathematical; -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -template<class CloudType> -Foam::label Foam::FieldActivatedInjection<CloudType>::parcelsToInject -( - const scalar time0, - const scalar time1 -) -{ - if (sum(nParcelsInjected_) < nParcelsPerInjector_*positions_.size()) - { - return positions_.size(); - } - else - { - return 0; - } -} - - -template<class CloudType> -Foam::scalar Foam::FieldActivatedInjection<CloudType>::volumeToInject -( - const scalar time0, - const scalar time1 -) -{ - if (sum(nParcelsInjected_) < nParcelsPerInjector_*positions_.size()) - { - return this->volumeTotal_/nParcelsPerInjector_; - } - else - { - return 0; - } -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class CloudType> @@ -180,16 +142,45 @@ Foam::FieldActivatedInjection<CloudType>::~FieldActivatedInjection() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class CloudType> -bool Foam::FieldActivatedInjection<CloudType>::active() const +Foam::scalar Foam::FieldActivatedInjection<CloudType>::timeEnd() const { - return true; + return GREAT; } template<class CloudType> -Foam::scalar Foam::FieldActivatedInjection<CloudType>::timeEnd() const +Foam::label Foam::FieldActivatedInjection<CloudType>::parcelsToInject +( + const scalar time0, + const scalar time1 +) { - return GREAT; + if (sum(nParcelsInjected_) < nParcelsPerInjector_*positions_.size()) + { + return positions_.size(); + } + else + { + return 0; + } +} + + +template<class CloudType> +Foam::scalar Foam::FieldActivatedInjection<CloudType>::volumeToInject +( + const scalar time0, + const scalar time1 +) +{ + if (sum(nParcelsInjected_) < nParcelsPerInjector_*positions_.size()) + { + return this->volumeTotal_/nParcelsPerInjector_; + } + else + { + return 0; + } } diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.H index d98f3f427b7..d8a403e08a7 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.H @@ -115,17 +115,6 @@ class FieldActivatedInjection sizeDistribution_; -protected: - - // Protected Member Functions - - //- Number of parcels to introduce over the time step relative to SOI - virtual label parcelsToInject(const scalar time0, const scalar time1); - - //- Volume of parcels to introduce over the time step relative to SOI - virtual scalar volumeToInject(const scalar time0, const scalar time1); - - public: //- Runtime type information @@ -156,12 +145,15 @@ public: // Member Functions - //- Flag to indicate whether model activates injection model - bool active() const; - //- Return the end-of-injection time scalar timeEnd() const; + //- Number of parcels to introduce relative to SOI + virtual label parcelsToInject(const scalar time0, const scalar time1); + + //- Volume of parcels to introduce relative to SOI + virtual scalar volumeToInject(const scalar time0, const scalar time1); + // Injection geometry diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.C index 8930fa85e8b..0a7996df43b 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.C @@ -31,7 +31,129 @@ License using namespace Foam::constant::mathematical; -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class CloudType> +Foam::InflationInjection<CloudType>::InflationInjection +( + const dictionary& dict, + CloudType& owner +) +: + InjectionModel<CloudType>(dict, owner, typeName), + generationSetName_(this->coeffDict().lookup("generationCellSet")), + inflationSetName_(this->coeffDict().lookup("inflationCellSet")), + generationCells_(), + inflationCells_(), + duration_(readScalar(this->coeffDict().lookup("duration"))), + flowRateProfile_ + ( + DataEntry<scalar>::New + ( + "flowRateProfile", + this->coeffDict() + ) + ), + growthRate_ + ( + DataEntry<scalar>::New + ( + "growthRate", + this->coeffDict() + ) + ), + newParticles_(), + volumeAccumulator_(0.0), + fraction_(1.0), + selfSeed_(this->coeffDict().lookupOrDefault("selfSeed", false)), + dSeed_(SMALL), + sizeDistribution_ + ( + distributionModels::distributionModel::New + ( + this->coeffDict().subDict("sizeDistribution"), + owner.rndGen() + ) + ) +{ + if (selfSeed_) + { + dSeed_ = readScalar(this->coeffDict().lookup("dSeed")); + } + + cellSet generationCells(this->owner().mesh(), generationSetName_); + + generationCells_ = generationCells.toc(); + + cellSet inflationCells(this->owner().mesh(), inflationSetName_); + + // Union of cellSets + inflationCells |= generationCells; + + inflationCells_ = inflationCells.toc(); + + if (Pstream::parRun()) + { + scalar generationVolume = 0.0; + + forAll(generationCells_, gCI) + { + label cI = generationCells_[gCI]; + + generationVolume += this->owner().mesh().cellVolumes()[cI]; + } + + scalar totalGenerationVolume = generationVolume; + + reduce(totalGenerationVolume, sumOp<scalar>()); + + fraction_ = generationVolume/totalGenerationVolume; + } + + // Set total volume/mass to inject + this->volumeTotal_ = fraction_*flowRateProfile_().integrate(0.0, duration_); + this->massTotal_ *= fraction_; +} + + +template<class CloudType> +Foam::InflationInjection<CloudType>::InflationInjection +( + const Foam::InflationInjection<CloudType>& im +) +: + InjectionModel<CloudType>(im), + generationSetName_(im.generationSetName_), + inflationSetName_(im.inflationSetName_), + generationCells_(im.generationCells_), + inflationCells_(im.inflationCells_), + duration_(im.duration_), + flowRateProfile_(im.flowRateProfile_().clone().ptr()), + growthRate_(im.growthRate_().clone().ptr()), + newParticles_(im.newParticles_), + volumeAccumulator_(im.volumeAccumulator_), + fraction_(im.fraction_), + selfSeed_(im.selfSeed_), + dSeed_(im.dSeed_), + sizeDistribution_(im.sizeDistribution_().clone().ptr()) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class CloudType> +Foam::InflationInjection<CloudType>::~InflationInjection() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class CloudType> +Foam::scalar Foam::InflationInjection<CloudType>::timeEnd() const +{ + return this->SOI_ + duration_; +} + template<class CloudType> Foam::label Foam::InflationInjection<CloudType>::parcelsToInject @@ -305,130 +427,6 @@ Foam::scalar Foam::InflationInjection<CloudType>::volumeToInject } -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template<class CloudType> -Foam::InflationInjection<CloudType>::InflationInjection -( - const dictionary& dict, - CloudType& owner -) -: - InjectionModel<CloudType>(dict, owner, typeName), - generationSetName_(this->coeffDict().lookup("generationCellSet")), - inflationSetName_(this->coeffDict().lookup("inflationCellSet")), - generationCells_(), - inflationCells_(), - duration_(readScalar(this->coeffDict().lookup("duration"))), - flowRateProfile_ - ( - DataEntry<scalar>::New - ( - "flowRateProfile", - this->coeffDict() - ) - ), - growthRate_ - ( - DataEntry<scalar>::New - ( - "growthRate", - this->coeffDict() - ) - ), - newParticles_(), - volumeAccumulator_(0.0), - fraction_(1.0), - selfSeed_(this->coeffDict().lookupOrDefault("selfSeed", false)), - dSeed_(SMALL), - sizeDistribution_ - ( - distributionModels::distributionModel::New - ( - this->coeffDict().subDict("sizeDistribution"), - owner.rndGen() - ) - ) -{ - if (selfSeed_) - { - dSeed_ = readScalar(this->coeffDict().lookup("dSeed")); - } - - cellSet generationCells(this->owner().mesh(), generationSetName_); - - generationCells_ = generationCells.toc(); - - cellSet inflationCells(this->owner().mesh(), inflationSetName_); - - // Union of cellSets - inflationCells |= generationCells; - - inflationCells_ = inflationCells.toc(); - - if (Pstream::parRun()) - { - scalar generationVolume = 0.0; - - forAll(generationCells_, gCI) - { - label cI = generationCells_[gCI]; - - generationVolume += this->owner().mesh().cellVolumes()[cI]; - } - - scalar totalGenerationVolume = generationVolume; - - reduce(totalGenerationVolume, sumOp<scalar>()); - - fraction_ = generationVolume/totalGenerationVolume; - } - - // Set total volume/mass to inject - this->volumeTotal_ = fraction_*flowRateProfile_().integrate(0.0, duration_); - this->massTotal_ *= fraction_; -} - - -template<class CloudType> -Foam::InflationInjection<CloudType>::InflationInjection -( - const Foam::InflationInjection<CloudType>& im -) -: - InjectionModel<CloudType>(im), - generationSetName_(im.generationSetName_), - inflationSetName_(im.inflationSetName_), - generationCells_(im.generationCells_), - inflationCells_(im.inflationCells_), - duration_(im.duration_), - flowRateProfile_(im.flowRateProfile_().clone().ptr()), - growthRate_(im.growthRate_().clone().ptr()), - newParticles_(im.newParticles_), - volumeAccumulator_(im.volumeAccumulator_), - fraction_(im.fraction_), - selfSeed_(im.selfSeed_), - dSeed_(im.dSeed_), - sizeDistribution_(im.sizeDistribution_().clone().ptr()) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -template<class CloudType> -Foam::InflationInjection<CloudType>::~InflationInjection() -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -template<class CloudType> -Foam::scalar Foam::InflationInjection<CloudType>::timeEnd() const -{ - return this->SOI_ + duration_; -} - - template<class CloudType> void Foam::InflationInjection<CloudType>::setPositionAndCell ( diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.H index 4913cccae48..c7fb4c39e01 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InflationInjection/InflationInjection.H @@ -111,17 +111,6 @@ class InflationInjection const autoPtr<distributionModels::distributionModel> sizeDistribution_; -protected: - - // Protected Member Functions - - //- Number of parcels to introduce over the time step relative to SOI - virtual label parcelsToInject(const scalar time0, const scalar time1); - - //- Volume of parcels to introduce over the time step relative to SOI - virtual scalar volumeToInject(const scalar time0, const scalar time1); - - public: //- Runtime type information @@ -155,6 +144,12 @@ public: //- Return the end-of-injection time scalar timeEnd() const; + //- Number of parcels to introduce relative to SOI + virtual label parcelsToInject(const scalar time0, const scalar time1); + + //- Volume of parcels to introduce relative to SOI + virtual scalar volumeToInject(const scalar time0, const scalar time1); + // Injection geometry diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C index 9340f754e76..1f87dc029c7 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C @@ -101,46 +101,6 @@ void Foam::InjectionModel<CloudType>::writeProps() } -template<class CloudType> -Foam::label Foam::InjectionModel<CloudType>::parcelsToInject -( - const scalar time0, - const scalar time1 -) -{ - notImplemented - ( - "Foam::label Foam::InjectionModel<CloudType>::parcelsToInject" - "(" - "const scalar, " - "const scalar" - ") const" - ); - - return 0; -} - - -template<class CloudType> -Foam::scalar Foam::InjectionModel<CloudType>::volumeToInject -( - const scalar time0, - const scalar time1 -) -{ - notImplemented - ( - "Foam::scalar Foam::InjectionModel<CloudType>::volumeToInject" - "(" - "const scalar, " - "const scalar" - ") const" - ); - - return 0.0; -} - - template<class CloudType> bool Foam::InjectionModel<CloudType>::validInjection(const label parcelI) { @@ -510,6 +470,54 @@ Foam::scalar Foam::InjectionModel<CloudType>::timeEnd() const } +template<class CloudType> +Foam::label Foam::InjectionModel<CloudType>::parcelsToInject +( + const scalar time0, + const scalar time1 +) +{ + notImplemented + ( + "Foam::label Foam::InjectionModel<CloudType>::parcelsToInject" + "(" + "const scalar, " + "const scalar" + ") const" + ); + + return 0; +} + + +template<class CloudType> +Foam::scalar Foam::InjectionModel<CloudType>::volumeToInject +( + const scalar time0, + const scalar time1 +) +{ + notImplemented + ( + "Foam::scalar Foam::InjectionModel<CloudType>::volumeToInject" + "(" + "const scalar, " + "const scalar" + ") const" + ); + + return 0.0; +} + + +template<class CloudType> +Foam::scalar Foam::InjectionModel<CloudType>::averageParcelMass() +{ + label nTotal = parcelsToInject(0.0, timeEnd() - timeStart()); + return massTotal_/nTotal; +} + + template<class CloudType> template<class TrackData> void Foam::InjectionModel<CloudType>::inject(TrackData& td) diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H index 827dd1347bc..3ccede38f89 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H @@ -143,12 +143,6 @@ protected: // Protected Member Functions - //- Number of parcels to introduce over the time step relative to SOI - virtual label parcelsToInject(const scalar time0, const scalar time1); - - //- Volume of parcels to introduce over the time step relative to SOI - virtual scalar volumeToInject(const scalar time0, const scalar time1); - //- Additional flag to identify whether or not injection of parcelI is // permitted virtual bool validInjection(const label parcelI); @@ -266,6 +260,24 @@ public: //- Return the end-of-injection time virtual scalar timeEnd() const; + //- Number of parcels to introduce relative to SOI + virtual label parcelsToInject + ( + const scalar time0, + const scalar time1 + ); + + //- Volume of parcels to introduce relative to SOI + virtual scalar volumeToInject + ( + const scalar time0, + const scalar time1 + ); + + //- Return the average parcel mass over the injection period + scalar averageParcelMass(); + + // Counters //- Return the number of injections diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C index 6326b4c2d85..ab11c043a4a 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C @@ -26,46 +26,6 @@ License #include "KinematicLookupTableInjection.H" #include "scalarIOList.H" -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -template<class CloudType> -Foam::label Foam::KinematicLookupTableInjection<CloudType>::parcelsToInject -( - const scalar time0, - const scalar time1 -) -{ - if ((time0 >= 0.0) && (time0 < duration_)) - { - return floor(injectorCells_.size()*(time1 - time0)*parcelsPerSecond_); - } - else - { - return 0; - } -} - - -template<class CloudType> -Foam::scalar Foam::KinematicLookupTableInjection<CloudType>::volumeToInject -( - const scalar time0, - const scalar time1 -) -{ - scalar volume = 0.0; - if ((time0 >= 0.0) && (time0 < duration_)) - { - forAll(injectors_, i) - { - volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0); - } - } - - return volume; -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class CloudType> @@ -156,6 +116,44 @@ Foam::scalar Foam::KinematicLookupTableInjection<CloudType>::timeEnd() const } +template<class CloudType> +Foam::label Foam::KinematicLookupTableInjection<CloudType>::parcelsToInject +( + const scalar time0, + const scalar time1 +) +{ + if ((time0 >= 0.0) && (time0 < duration_)) + { + return floor(injectorCells_.size()*(time1 - time0)*parcelsPerSecond_); + } + else + { + return 0; + } +} + + +template<class CloudType> +Foam::scalar Foam::KinematicLookupTableInjection<CloudType>::volumeToInject +( + const scalar time0, + const scalar time1 +) +{ + scalar volume = 0.0; + if ((time0 >= 0.0) && (time0 < duration_)) + { + forAll(injectors_, i) + { + volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0); + } + } + + return volume; +} + + template<class CloudType> void Foam::KinematicLookupTableInjection<CloudType>::setPositionAndCell ( diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.H index 86038d90cf9..d431f348b44 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.H @@ -91,17 +91,6 @@ class KinematicLookupTableInjection labelList injectorTetPts_; -protected: - - // Protected Member Functions - - //- Number of parcels to introduce over the time step relative to SOI - virtual label parcelsToInject(const scalar time0, const scalar time1); - - //- Volume of parcels to introduce over the time step relative to SOI - virtual scalar volumeToInject(const scalar time0, const scalar time1); - - public: //- Runtime type information @@ -138,6 +127,12 @@ public: //- Return the end-of-injection time scalar timeEnd() const; + //- Number of parcels to introduce relative to SOI + virtual label parcelsToInject(const scalar time0, const scalar time1); + + //- Volume of parcels to introduce relative to SOI + virtual scalar volumeToInject(const scalar time0, const scalar time1); + // Injection geometry diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C index daf844e7708..d9cf3476ab4 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C @@ -30,45 +30,6 @@ License using namespace Foam::constant::mathematical; -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -template<class CloudType> -Foam::label Foam::ManualInjection<CloudType>::parcelsToInject -( - const scalar time0, - const scalar time1 -) -{ - if ((0.0 >= time0) && (0.0 < time1)) - { - return positions_.size(); - } - else - { - return 0; - } -} - - -template<class CloudType> -Foam::scalar Foam::ManualInjection<CloudType>::volumeToInject -( - const scalar time0, - const scalar time1 -) -{ - // All parcels introduced at SOI - if ((0.0 >= time0) && (0.0 < time1)) - { - return this->volumeTotal_; - } - else - { - return 0.0; - } -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class CloudType> @@ -192,6 +153,43 @@ Foam::scalar Foam::ManualInjection<CloudType>::timeEnd() const } +template<class CloudType> +Foam::label Foam::ManualInjection<CloudType>::parcelsToInject +( + const scalar time0, + const scalar time1 +) +{ + if ((0.0 >= time0) && (0.0 < time1)) + { + return positions_.size(); + } + else + { + return 0; + } +} + + +template<class CloudType> +Foam::scalar Foam::ManualInjection<CloudType>::volumeToInject +( + const scalar time0, + const scalar time1 +) +{ + // All parcels introduced at SOI + if ((0.0 >= time0) && (0.0 < time1)) + { + return this->volumeTotal_; + } + else + { + return 0.0; + } +} + + template<class CloudType> void Foam::ManualInjection<CloudType>::setPositionAndCell ( diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H index fbc5e13aea9..4a4fe620b89 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H @@ -85,17 +85,6 @@ class ManualInjection const autoPtr<distributionModels::distributionModel> sizeDistribution_; -protected: - - // Protected Member Functions - - //- Number of parcels to introduce over the time step relative to SOI - virtual label parcelsToInject(const scalar time0, const scalar time1); - - //- Volume of parcels to introduce over the time step relative to SOI - virtual scalar volumeToInject(const scalar time0, const scalar time1); - - public: //- Runtime type information @@ -129,6 +118,12 @@ public: //- Return the end-of-injection time scalar timeEnd() const; + //- Number of parcels to introduce relative to SOI + virtual label parcelsToInject(const scalar time0, const scalar time1); + + //- Volume of parcels to introduce relative to SOI + virtual scalar volumeToInject(const scalar time0, const scalar time1); + // Injection geometry diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.C index 9bb6a21cee4..7fd662296af 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.C @@ -26,30 +26,6 @@ License #include "NoInjection.H" #include "addToRunTimeSelectionTable.H" -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -template<class CloudType> -Foam::label Foam::NoInjection<CloudType>::parcelsToInject -( - const scalar, - const scalar -) -{ - return 0; -} - - -template<class CloudType> -Foam::scalar Foam::NoInjection<CloudType>::volumeToInject -( - const scalar, - const scalar -) -{ - return 0.0; -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class CloudType> @@ -89,6 +65,28 @@ Foam::scalar Foam::NoInjection<CloudType>::timeEnd() const } +template<class CloudType> +Foam::label Foam::NoInjection<CloudType>::parcelsToInject +( + const scalar, + const scalar +) +{ + return 0; +} + + +template<class CloudType> +Foam::scalar Foam::NoInjection<CloudType>::volumeToInject +( + const scalar, + const scalar +) +{ + return 0.0; +} + + template<class CloudType> void Foam::NoInjection<CloudType>::setPositionAndCell ( diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.H index f736f31ad1a..3b6065edc7a 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.H @@ -51,16 +51,6 @@ class NoInjection : public InjectionModel<CloudType> { -protected: - - // Protected Member Functions - - //- Number of parcels to introduce over the time step relative to SOI - virtual label parcelsToInject(const scalar time0, const scalar time1); - - //- Volume of parcels to introduce over the time step relative to SOI - virtual scalar volumeToInject(const scalar time0, const scalar time1); - public: @@ -98,6 +88,12 @@ public: //- Return the end-of-injection time scalar timeEnd() const; + //- Number of parcels to introduce relative to SOI + virtual label parcelsToInject(const scalar time0, const scalar time1); + + //- Volume of parcels to introduce relative to SOI + virtual scalar volumeToInject(const scalar time0, const scalar time1); + // Injection geometry diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.C index 38517d00a72..43caac38653 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.C @@ -27,64 +27,6 @@ License #include "DataEntry.H" #include "distributionModel.H" -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -template<class CloudType> -Foam::label Foam::PatchInjection<CloudType>::parcelsToInject -( - const scalar time0, - const scalar time1 -) -{ - if ((time0 >= 0.0) && (time0 < duration_)) - { - scalar nParcels =fraction_*(time1 - time0)*parcelsPerSecond_; - - cachedRandom& rnd = this->owner().rndGen(); - - label nParcelsToInject = floor(nParcels); - - // Inject an additional parcel with a probability based on the - // remainder after the floor function - if - ( - nParcelsToInject > 0 - && ( - nParcels - scalar(nParcelsToInject) - > rnd.position(scalar(0), scalar(1)) - ) - ) - { - ++nParcelsToInject; - } - - return nParcelsToInject; - } - else - { - return 0; - } -} - - -template<class CloudType> -Foam::scalar Foam::PatchInjection<CloudType>::volumeToInject -( - const scalar time0, - const scalar time1 -) -{ - if ((time0 >= 0.0) && (time0 < duration_)) - { - return fraction_*flowRateProfile_().integrate(time0, time1); - } - else - { - return 0.0; - } -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class CloudType> @@ -182,6 +124,62 @@ Foam::scalar Foam::PatchInjection<CloudType>::timeEnd() const } +template<class CloudType> +Foam::label Foam::PatchInjection<CloudType>::parcelsToInject +( + const scalar time0, + const scalar time1 +) +{ + if ((time0 >= 0.0) && (time0 < duration_)) + { + scalar nParcels =fraction_*(time1 - time0)*parcelsPerSecond_; + + cachedRandom& rnd = this->owner().rndGen(); + + label nParcelsToInject = floor(nParcels); + + // Inject an additional parcel with a probability based on the + // remainder after the floor function + if + ( + nParcelsToInject > 0 + && ( + nParcels - scalar(nParcelsToInject) + > rnd.position(scalar(0), scalar(1)) + ) + ) + { + ++nParcelsToInject; + } + + return nParcelsToInject; + } + else + { + return 0; + } +} + + +template<class CloudType> +Foam::scalar Foam::PatchInjection<CloudType>::volumeToInject +( + const scalar time0, + const scalar time1 +) +{ + if ((time0 >= 0.0) && (time0 < duration_)) + { + return fraction_*flowRateProfile_().integrate(time0, time1); + } + else + { + return 0.0; + } +} + + template<class CloudType> void Foam::PatchInjection<CloudType>::setPositionAndCell ( diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.H index e7428b31672..3aca5eb9b10 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.H @@ -94,17 +94,6 @@ class PatchInjection scalar fraction_; -protected: - - // Protected Member Functions - - //- Number of parcels to introduce over the time step relative to SOI - virtual label parcelsToInject(const scalar time0, const scalar time1); - - //- Volume of parcels to introduce over the time step relative to SOI - virtual scalar volumeToInject(const scalar time0, const scalar time1); - - public: //- Runtime type information @@ -138,6 +127,12 @@ public: //- Return the end-of-injection time scalar timeEnd() const; + //- Number of parcels to introduce relative to SOI + virtual label parcelsToInject(const scalar time0, const scalar time1); + + //- Volume of parcels to introduce relative to SOI + virtual scalar volumeToInject(const scalar time0, const scalar time1); + // Injection geometry diff --git a/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.C b/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.C index 39d1fe6096d..23e7198dee0 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.C +++ b/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.C @@ -25,46 +25,6 @@ License #include "ReactingLookupTableInjection.H" -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -template<class CloudType> -Foam::label Foam::ReactingLookupTableInjection<CloudType>::parcelsToInject -( - const scalar time0, - const scalar time1 -) -{ - if ((time0 >= 0.0) && (time0 < duration_)) - { - return floor(injectorCells_.size()*(time1 - time0)*parcelsPerSecond_); - } - else - { - return 0; - } -} - - -template<class CloudType> -Foam::scalar Foam::ReactingLookupTableInjection<CloudType>::volumeToInject -( - const scalar time0, - const scalar time1 -) -{ - scalar volume = 0.0; - if ((time0 >= 0.0) && (time0 < duration_)) - { - forAll(injectors_, i) - { - volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0); - } - } - - return volume; -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class CloudType> @@ -155,6 +115,44 @@ Foam::scalar Foam::ReactingLookupTableInjection<CloudType>::timeEnd() const } +template<class CloudType> +Foam::label Foam::ReactingLookupTableInjection<CloudType>::parcelsToInject +( + const scalar time0, + const scalar time1 +) +{ + if ((time0 >= 0.0) && (time0 < duration_)) + { + return floor(injectorCells_.size()*(time1 - time0)*parcelsPerSecond_); + } + else + { + return 0; + } +} + + +template<class CloudType> +Foam::scalar Foam::ReactingLookupTableInjection<CloudType>::volumeToInject +( + const scalar time0, + const scalar time1 +) +{ + scalar volume = 0.0; + if ((time0 >= 0.0) && (time0 < duration_)) + { + forAll(injectors_, i) + { + volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0); + } + } + + return volume; +} + + template<class CloudType> void Foam::ReactingLookupTableInjection<CloudType>::setPositionAndCell ( diff --git a/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.H b/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.H index 955ab3c7d82..680e3e50616 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.H +++ b/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.H @@ -94,17 +94,6 @@ class ReactingLookupTableInjection labelList injectorTetPts_; -protected: - - // Protected Member Functions - - //- Number of parcels to introduce over the time step relative to SOI - virtual label parcelsToInject(const scalar time0, const scalar time1); - - //- Volume of parcels to introduce over the time step relative to SOI - virtual scalar volumeToInject(const scalar time0, const scalar time1); - - public: //- Runtime type information @@ -145,6 +134,13 @@ public: //- Return the end-of-injection time scalar timeEnd() const; + //- Number of parcels to introduce relative to SOI + virtual label parcelsToInject(const scalar time0, const scalar time1); + + //- Volume of parcels to introduce relative to SOI + virtual scalar volumeToInject(const scalar time0, const scalar time1); + + // Injection geometry diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/ReactingMultiphaseLookupTableInjection.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/ReactingMultiphaseLookupTableInjection.C index fd7839b331e..90d0b21bb06 100644 --- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/ReactingMultiphaseLookupTableInjection.C +++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/ReactingMultiphaseLookupTableInjection.C @@ -25,48 +25,6 @@ License #include "ReactingMultiphaseLookupTableInjection.H" -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -template<class CloudType> -Foam::label -Foam::ReactingMultiphaseLookupTableInjection<CloudType>::parcelsToInject -( - const scalar time0, - const scalar time1 -) -{ - if ((time0 >= 0.0) && (time0 < duration_)) - { - return floor(injectorCells_.size()*(time1 - time0)*parcelsPerSecond_); - } - else - { - return 0; - } -} - - -template<class CloudType> -Foam::scalar -Foam::ReactingMultiphaseLookupTableInjection<CloudType>::volumeToInject -( - const scalar time0, - const scalar time1 -) -{ - scalar volume = 0.0; - if ((time0 >= 0.0) && (time0 < duration_)) - { - forAll(injectors_, i) - { - volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0); - } - } - - return volume; -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class CloudType> @@ -161,6 +119,46 @@ Foam::ReactingMultiphaseLookupTableInjection<CloudType>::timeEnd() const } +template<class CloudType> +Foam::label +Foam::ReactingMultiphaseLookupTableInjection<CloudType>::parcelsToInject +( + const scalar time0, + const scalar time1 +) +{ + if ((time0 >= 0.0) && (time0 < duration_)) + { + return floor(injectorCells_.size()*(time1 - time0)*parcelsPerSecond_); + } + else + { + return 0; + } +} + + +template<class CloudType> +Foam::scalar +Foam::ReactingMultiphaseLookupTableInjection<CloudType>::volumeToInject +( + const scalar time0, + const scalar time1 +) +{ + scalar volume = 0.0; + if ((time0 >= 0.0) && (time0 < duration_)) + { + forAll(injectors_, i) + { + volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0); + } + } + + return volume; +} + + template<class CloudType> void Foam::ReactingMultiphaseLookupTableInjection<CloudType>::setPositionAndCell ( diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/ReactingMultiphaseLookupTableInjection.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/ReactingMultiphaseLookupTableInjection.H index 3ed279fd302..a69c2566d01 100644 --- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/ReactingMultiphaseLookupTableInjection.H +++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/InjectionModel/ReactingMultiphaseLookupTableInjection/ReactingMultiphaseLookupTableInjection.H @@ -97,17 +97,6 @@ class ReactingMultiphaseLookupTableInjection labelList injectorTetPts_; -protected: - - // Protected Member Functions - - //- Number of parcels to introduce over the time step relative to SOI - virtual label parcelsToInject(const scalar time0, const scalar time1); - - //- Volume of parcels to introduce over the time step relative to SOI - virtual scalar volumeToInject(const scalar time0, const scalar time1); - - public: //- Runtime type information @@ -148,6 +137,12 @@ public: //- Return the end-of-injection time scalar timeEnd() const; + //- Number of parcels to introduce relative to SOI + virtual label parcelsToInject(const scalar time0, const scalar time1); + + //- Volume of parcels to introduce relative to SOI + virtual scalar volumeToInject(const scalar time0, const scalar time1); + // Injection geometry diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.C b/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.C index 8a59b2ec0dc..fa502957396 100644 --- a/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.C +++ b/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.C @@ -26,46 +26,6 @@ License #include "ThermoLookupTableInjection.H" #include "scalarIOList.H" -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -template<class CloudType> -Foam::label Foam::ThermoLookupTableInjection<CloudType>::parcelsToInject -( - const scalar time0, - const scalar time1 -) -{ - if ((time0 >= 0.0) && (time0 < duration_)) - { - return floor(injectorCells_.size()*(time1 - time0)*parcelsPerSecond_); - } - else - { - return 0; - } -} - - -template<class CloudType> -Foam::scalar Foam::ThermoLookupTableInjection<CloudType>::volumeToInject -( - const scalar time0, - const scalar time1 -) -{ - scalar volume = 0.0; - if ((time0 >= 0.0) && (time0 < duration_)) - { - forAll(injectors_, i) - { - volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0); - } - } - - return volume; -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class CloudType> @@ -156,6 +116,44 @@ Foam::scalar Foam::ThermoLookupTableInjection<CloudType>::timeEnd() const } +template<class CloudType> +Foam::label Foam::ThermoLookupTableInjection<CloudType>::parcelsToInject +( + const scalar time0, + const scalar time1 +) +{ + if ((time0 >= 0.0) && (time0 < duration_)) + { + return floor(injectorCells_.size()*(time1 - time0)*parcelsPerSecond_); + } + else + { + return 0; + } +} + + +template<class CloudType> +Foam::scalar Foam::ThermoLookupTableInjection<CloudType>::volumeToInject +( + const scalar time0, + const scalar time1 +) +{ + scalar volume = 0.0; + if ((time0 >= 0.0) && (time0 < duration_)) + { + forAll(injectors_, i) + { + volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0); + } + } + + return volume; +} + + template<class CloudType> void Foam::ThermoLookupTableInjection<CloudType>::setPositionAndCell ( diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.H b/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.H index f9753b2a307..a671c08e7ba 100644 --- a/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.H +++ b/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.H @@ -93,17 +93,6 @@ class ThermoLookupTableInjection labelList injectorTetPts_; -protected: - - // Protected Member Functions - - //- Number of parcels to introduce over the time step relative to SOI - virtual label parcelsToInject(const scalar time0, const scalar time1); - - //- Volume of parcels to introduce over the time step relative to SOI - virtual scalar volumeToInject(const scalar time0, const scalar time1); - - public: //- Runtime type information @@ -141,6 +130,13 @@ public: //- Return the end-of-injection time scalar timeEnd() const; + //- Number of parcels to introduce relative to SOI + virtual label parcelsToInject(const scalar time0, const scalar time1); + + //- Volume of parcels to introduce relative to SOI + virtual scalar volumeToInject(const scalar time0, const scalar time1); + + // Injection geometry -- GitLab