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