diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C index 008b7a117df7ff27648ae531d242eacf74ac082c..7e7c83806d89d8a0db2fbace7a8a78ff6e2f130e 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 03e907958495069b1205de038b1fb421ca3037a2..ebc3bf764a23f40ca8238f66cee8808e8e822545 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 439989e88b10d3b609cac2aeeb1bb1efb0add0db..c38494a08db82820ec50c2d1ea3965032f68e8b2 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 7feabc946ef0746a03a3bf605aa60f73d36db1e8..a8771e5b30cb1d4767e0be39e92991ce69c9c916 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 03fe941dab4d50019b706065a3761cc6c6aaa963..abe77e41f6fc05dab9f534bbaa7554a949e750b4 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 d98f3f427b73189a159f24c38c71a1d6d4a6a903..d8a403e08a71fca1e8be4cd90d34a5e1db4291de 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 8930fa85e8be3593c3becf148e6760f0d6c8ee72..0a7996df43bc79bd1a15da2a2708b69bcd136d4f 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 4913cccae4856634f54f1026d2c31159fcab5e67..c7fb4c39e01385daa36cfd963c268db997717cf6 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 9340f754e762bf599af39f71d9bbc13cf259827f..1f87dc029c7c603e994f1f8e878b31383b82ca8c 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 827dd1347bcb3265299e342dc88072549bef5b7d..3ccede38f89196b34ae9961bd96e699033154827 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 6326b4c2d853de0624f1a424d0f294b8e1aae6c6..ab11c043a4a39d66752e0a7fddd1411c92a18ee5 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 86038d90cf9db62d650642d09e723a993890a0b4..d431f348b445649f77dd862d96fcff8b8ac67544 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 daf844e77089ccda05b7c64857b4e2a5aaae0856..d9cf3476ab4409654c63308d96baeeed0a1b3086 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 fbc5e13aea90006ba3383fbbc1993ec91b8a310d..4a4fe620b8908e753c45fc4f15526df29bcdeb4c 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 9bb6a21cee429af0466e5a95fea57ce6eae923f5..7fd662296af968ea9d9f0b6eda7906b8a8246b78 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 f736f31ad1a9591388e90f5fd0fd981b0a81ec0a..3b6065edc7a3f9806420da31a10646aeb7fd43e7 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 38517d00a72a3cec389fdb7768e49b80c7ab05a6..43caac386535e9523f40552bc2c2eaaf56fec041 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 e7428b31672ac8b486115da2f97fb3717575a081..3aca5eb9b10ff0e0610e1add60c9c8a0b41b0822 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 39d1fe6096d04a437d16bd825c9b11357727c3b4..23e7198dee08140d33b95e756bbef98520a71538 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 955ab3c7d8233e07b1eb06ec20d986056edfaf66..680e3e5061617dfa489de63cf3dc7198feefc7da 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 fd7839b331e87ef0ff64775dfa49f6df10bbdd82..90d0b21bb06596ef8279a5a8fe9c6caea9c985d0 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 3ed279fd30217ca423ccc580b0f0a271f77e4ff5..a69c2566d01cbdfd748e40a66b59839a18091e6c 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 8a59b2ec0dcd333d1b14c12d296dbbc13940e1f7..fa5029573969a4f7bb12e14ebd79d9f768d938f9 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 f9753b2a307a9f3c4a4eee3099b774083cb06d51..a671c08e7bae9426bf12555152dcedb928a68028 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