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>
100 bitSet reject(injectors_.size());
107 !this->findCellAtPosition
110 injectorTetFaces_[i],
113 !this->ignoreOutOfBounds_
122 const label nRejected = reject.count();
132 Info<<
" " << nRejected
133 <<
" positions rejected, out of bounds" <<
endl;
138 template<
class CloudType>
141 return this->SOI_ + duration_;
145 template<
class CloudType>
152 if ((time0 >= 0.0) && (time0 < duration_))
154 return floor(injectorCells_.size()*(time1 - time0)*parcelsPerSecond_);
161 template<
class CloudType>
169 if ((time0 >= 0.0) && (time0 < duration_))
173 volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0);
181 template<
class CloudType>
185 const label nParcels,
197 injectorI = rnd.
position<label>(0, injectorCells_.size() - 1);
201 injectorI = parcelI*injectorCells_.size()/nParcels;
204 position = injectors_[injectorI].
x();
205 cellOwner = injectorCells_[injectorI];
206 tetFacei = injectorTetFaces_[injectorI];
207 tetPti = injectorTetPts_[injectorI];
211 template<
class CloudType>
215 const label nParcels,
220 label injectorI = parcelI*injectorCells_.size()/nParcels;
223 parcel.U() = injectors_[injectorI].U();
226 parcel.d() = injectors_[injectorI].d();
229 parcel.rho() = injectors_[injectorI].rho();
232 parcel.T() = injectors_[injectorI].T();
235 parcel.cp() = injectors_[injectorI].cp();
239 template<
class CloudType>
246 template<
class CloudType>