33 template<
class CloudType>
43 inputFileName_(this->coeffDict().
lookup(
"inputFile")),
44 duration_(this->coeffDict().getScalar(
"duration")),
45 parcelsPerSecond_(this->coeffDict().getScalar(
"parcelsPerSecond")),
46 randomise_(this->coeffDict().getBool(
"randomise")),
52 owner.db().time().constant(),
58 injectorCells_(injectors_.size()),
59 injectorTetFaces_(injectors_.size()),
60 injectorTetPts_(injectors_.size())
64 duration_ = owner.db().time().userTimeToTime(duration_);
67 this->volumeTotal_ = 0.0;
70 this->volumeTotal_ += injectors_[i].mDot()/injectors_[i].rho();
72 this->volumeTotal_ *= duration_;
76 template<
class CloudType>
84 inputFileName_(im.inputFileName_),
85 duration_(im.duration_),
86 parcelsPerSecond_(im.parcelsPerSecond_),
87 randomise_(im.randomise_),
88 injectors_(im.injectors_),
89 injectorCells_(im.injectorCells_),
90 injectorTetFaces_(im.injectorTetFaces_),
91 injectorTetPts_(im.injectorTetPts_)
97 template<
class CloudType>
101 bitSet reject(injectors_.size());
108 !this->findCellAtPosition
111 injectorTetFaces_[i],
114 !this->ignoreOutOfBounds_
123 label nRejected = reject.count();
133 Info<<
" " << nRejected
134 <<
" positions rejected, out of bounds" <<
endl;
139 template<
class CloudType>
143 return this->SOI_ + duration_;
147 template<
class CloudType>
155 if ((time0 >= 0.0) && (time0 < duration_))
157 return floor(injectorCells_.size()*(time1 - time0)*parcelsPerSecond_);
164 template<
class CloudType>
173 if ((time0 >= 0.0) && (time0 < duration_))
177 volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0);
185 template<
class CloudType>
189 const label nParcels,
201 injectorI = rnd.
position<label>(0, injectorCells_.size() - 1);
205 injectorI = parcelI*injectorCells_.size()/nParcels;
208 position = injectors_[injectorI].
x();
209 cellOwner = injectorCells_[injectorI];
210 tetFacei = injectorTetFaces_[injectorI];
211 tetPti = injectorTetPts_[injectorI];
215 template<
class CloudType>
219 const label nParcels,
224 label injectorI = parcelI*injectorCells_.size()/nParcels;
227 parcel.U() = injectors_[injectorI].U();
230 parcel.d() = injectors_[injectorI].d();
233 parcel.rho() = injectors_[injectorI].rho();
236 parcel.T() = injectors_[injectorI].T();
239 parcel.Cp() = injectors_[injectorI].Cp();
242 parcel.Y() = injectors_[injectorI].Y();
245 parcel.YGas() = injectors_[injectorI].YGas();
248 parcel.YLiquid() = injectors_[injectorI].YLiquid();
251 parcel.YSolid() = injectors_[injectorI].YSolid();
255 template<
class CloudType>
263 template<
class CloudType>