30 template<
class CloudType>
37 if ((time0 >= 0.0) && (time0 < duration_))
39 return round(injectorCells_.size()*(time1 - time0)*nParcelsPerSecond_);
48 template<
class CloudType>
56 if ((time0 >= 0.0) && (time0 < duration_))
60 volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0);
70 template<
class CloudType>
78 inputFileName_(this->coeffDict().lookup(
"inputFile")),
79 duration_(
readScalar(this->coeffDict().lookup(
"duration"))),
82 readScalar(this->coeffDict().lookup(
"parcelsPerSecond"))
89 owner.db().time().constant(),
98 injectorCells_.setSize(injectors_.size());
101 this->findCellAtPosition(injectorCells_[i], injectors_[i].x());
105 this->volumeTotal_ = 0.0;
108 this->volumeTotal_ += injectors_[i].mDot()/injectors_[i].rho();
110 this->volumeTotal_ *= duration_;
116 template<
class CloudType>
123 template<
class CloudType>
130 template<
class CloudType>
133 return this->SOI_ + duration_;
137 template<
class CloudType>
141 const label nParcels,
147 label injectorI = parcelI*injectorCells_.size()/nParcels;
149 position = injectors_[injectorI].
x();
150 cellOwner = injectorCells_[injectorI];
154 template<
class CloudType>
158 const label nParcels,
160 typename CloudType::parcelType&
parcel
163 label injectorI = parcelI*injectorCells_.size()/nParcels;
166 parcel.U() = injectors_[injectorI].U();
169 parcel.d() = injectors_[injectorI].d();
172 parcel.rho() = injectors_[injectorI].rho();
175 parcel.T() = injectors_[injectorI].T();
178 parcel.cp() = injectors_[injectorI].cp();
181 parcel.Y() = injectors_[injectorI].Y();
185 template<
class CloudType>
192 template<
class CloudType>