34 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>
83 inputFileName_(im.inputFileName_),
84 duration_(im.duration_),
85 parcelsPerSecond_(im.parcelsPerSecond_),
86 randomise_(im.randomise_),
87 injectors_(im.injectors_),
88 injectorCells_(im.injectorCells_),
89 injectorTetFaces_(im.injectorTetFaces_),
90 injectorTetPts_(im.injectorTetPts_)
96 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 = int64_t(parcelI)*int64_t(injectors_.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 = int64_t(parcelI)*int64_t(injectors_.size())/nParcels;
222 parcel.U() = injectors_[injectorI].U();
225 parcel.d() = injectors_[injectorI].d();
228 parcel.rho() = injectors_[injectorI].rho();
232 template<
class CloudType>
239 template<
class CloudType>