33 template<
class CloudType>
42 inputFileName_(this->coeffDict().
lookup(
"inputFile")),
43 duration_(this->coeffDict().getScalar(
"duration")),
44 parcelsPerSecond_(this->coeffDict().getScalar(
"parcelsPerSecond")),
45 randomise_(this->coeffDict().getBool(
"randomise")),
51 owner.db().time().constant(),
57 injectorCells_(injectors_.size()),
58 injectorTetFaces_(injectors_.size()),
59 injectorTetPts_(injectors_.size())
63 duration_ = owner.db().time().userTimeToTime(duration_);
66 this->volumeTotal_ = 0.0;
69 this->volumeTotal_ += injectors_[i].mDot()/injectors_[i].rho();
71 this->volumeTotal_ *= duration_;
75 template<
class CloudType>
82 inputFileName_(im.inputFileName_),
83 duration_(im.duration_),
84 parcelsPerSecond_(im.parcelsPerSecond_),
85 randomise_(im.randomise_),
86 injectors_(im.injectors_),
87 injectorCells_(im.injectorCells_),
88 injectorTetFaces_(im.injectorTetFaces_),
89 injectorTetPts_(im.injectorTetPts_)
95 template<
class CloudType>
99 bitSet reject(injectors_.size());
106 !this->findCellAtPosition
109 injectorTetFaces_[i],
112 !this->ignoreOutOfBounds_
121 const label nRejected = reject.count();
131 Info<<
" " << nRejected
132 <<
" positions rejected, out of bounds" <<
endl;
137 template<
class CloudType>
140 return this->SOI_ + duration_;
144 template<
class CloudType>
151 if ((time0 >= 0.0) && (time0 < duration_))
153 return floor(injectorCells_.size()*(time1 - time0)*parcelsPerSecond_);
160 template<
class CloudType>
168 if ((time0 >= 0.0) && (time0 < duration_))
172 volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0);
180 template<
class CloudType>
184 const label nParcels,
196 injectorI = rnd.
position<label>(0, injectorCells_.size() - 1);
200 injectorI = parcelI*injectorCells_.size()/nParcels;
203 position = injectors_[injectorI].
x();
204 cellOwner = injectorCells_[injectorI];
205 tetFacei = injectorTetFaces_[injectorI];
206 tetPti = injectorTetPts_[injectorI];
210 template<
class CloudType>
214 const label nParcels,
219 label injectorI = parcelI*injectorCells_.size()/nParcels;
222 parcel.U() = injectors_[injectorI].U();
225 parcel.d() = injectors_[injectorI].d();
228 parcel.rho() = injectors_[injectorI].rho();
231 parcel.T() = injectors_[injectorI].T();
234 parcel.Cp() = injectors_[injectorI].Cp();
237 parcel.Y() = injectors_[injectorI].Y();
241 template<
class CloudType>
248 template<
class CloudType>