From 8aca0ed310469fa9401c11aa5f1c070afe983fdd Mon Sep 17 00:00:00 2001 From: andy Date: Mon, 6 Aug 2012 17:45:51 +0100 Subject: [PATCH] ENH: Only inject new parcelt if nParticle/parcel >= 1 --- .../InjectionModel/InjectionModel.C | 17 +++++++++++++---- .../InjectionModel/InjectionModel.H | 4 ++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C index a16de448b3..ff2f3a6e84 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C @@ -294,7 +294,8 @@ Foam::InjectionModel::InjectionModel(CloudType& owner) parcelBasis_(pbNumber), nParticleFixed_(0.0), time0_(0.0), - timeStep0_(this->template getModelProperty("timeStep0")) + timeStep0_(this->template getModelProperty("timeStep0")), + delayedVolume_(0.0) {} @@ -321,7 +322,8 @@ Foam::InjectionModel::InjectionModel parcelBasis_(pbNumber), nParticleFixed_(0.0), time0_(owner.db().time().value()), - timeStep0_(this->template getModelProperty("timeStep0")) + timeStep0_(this->template getModelProperty("timeStep0")), + delayedVolume_(0.0) { // Provide some info // - also serves to initialise mesh dimensions - needed for parallel runs @@ -394,7 +396,8 @@ Foam::InjectionModel::InjectionModel parcelBasis_(im.parcelBasis_), nParticleFixed_(im.nParticleFixed_), time0_(im.time0_), - timeStep0_(im.timeStep0_) + timeStep0_(im.timeStep0_), + delayedVolume_(im.delayedVolume_) {} @@ -502,6 +505,9 @@ void Foam::InjectionModel::inject(TrackData& td) if (prepareForNextTimeStep(time, newParcels, newVolume)) { + newVolume += delayedVolume_; + scalar delayedVolume = 0; + const scalar trackTime = this->owner().solution().trackTime(); const polyMesh& mesh = this->owner().mesh(); typename TrackData::cloudType& cloud = td.cloud(); @@ -579,7 +585,7 @@ void Foam::InjectionModel::inject(TrackData& td) pPtr->rho() ); - if (pPtr->move(td, dt)) + if ((pPtr->nParticle() >= 1.0) && (pPtr->move(td, dt))) { td.cloud().addParticle(pPtr); massAdded += pPtr->nParticle()*pPtr->mass(); @@ -587,11 +593,14 @@ void Foam::InjectionModel::inject(TrackData& td) } else { + delayedVolume += pPtr->nParticle()*pPtr->volume(); delete pPtr; } } } } + + delayedVolume_ = delayedVolume; } postInjectCheck(parcelsAdded, massAdded); diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H index 37e5909245..64e085edcc 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H @@ -134,6 +134,10 @@ protected: //- Time at start of injection time step [s] scalar timeStep0_; + //- Volume that should have been injected, but would lead to + // less than 1 particle per parcel + scalar delayedVolume_; + // Protected Member Functions