37 template<
class CloudType>
46 factor_(this->coeffDict().getScalar(
"factor")),
49 owner.db().objectRegistry::template lookupObject<volScalarField>
51 this->coeffDict().getWord(
"referenceField")
56 owner.db().objectRegistry::template lookupObject<volScalarField>
58 this->coeffDict().getWord(
"thresholdField")
61 positionsFile_(this->coeffDict().getWord(
"positionsFile")),
67 owner.db().time().constant(),
73 injectorCells_(positions_.size()),
74 injectorTetFaces_(positions_.size()),
75 injectorTetPts_(positions_.size()),
78 this->coeffDict().getLabel(
"parcelsPerInjector")
83 this->coeffDict().
template get<vector>(
"U0")
90 this->coeffDict().subDict(
"sizeDistribution"),
97 nParcelsInjected_.setSize(positions_.size(),
Zero);
100 diameters_.setSize(positions_.size());
103 diameters_[i] = sizeDistribution_->sample();
108 nParcelsPerInjector_*
sum(
pow3(diameters_))*
pi/6.0;
112 template<
class CloudType>
120 referenceField_(im.referenceField_),
121 thresholdField_(im.thresholdField_),
122 positionsFile_(im.positionsFile_),
123 positions_(im.positions_),
124 injectorCells_(im.injectorCells_),
125 injectorTetFaces_(im.injectorTetFaces_),
126 injectorTetPts_(im.injectorTetPts_),
127 nParcelsPerInjector_(im.nParcelsPerInjector_),
128 nParcelsInjected_(im.nParcelsInjected_),
130 diameters_(im.diameters_),
131 sizeDistribution_(im.sizeDistribution_.clone())
137 template<
class CloudType>
140 bitSet reject(positions_.size());
147 !this->findCellAtPosition
150 injectorTetFaces_[i],
153 !this->ignoreOutOfBounds_
162 const label nRejected = reject.count();
172 Info<<
" " << nRejected
173 <<
" positions rejected, out of bounds" <<
endl;
178 template<
class CloudType>
185 template<
class CloudType>
192 if (
sum(nParcelsInjected_) < nParcelsPerInjector_*positions_.size())
194 return positions_.size();
201 template<
class CloudType>
208 if (
sum(nParcelsInjected_) < nParcelsPerInjector_*positions_.size())
210 return this->volumeTotal_/nParcelsPerInjector_;
217 template<
class CloudType>
229 position = positions_[parcelI];
230 cellOwner = injectorCells_[parcelI];
231 tetFacei = injectorTetFaces_[parcelI];
232 tetPti = injectorTetPts_[parcelI];
236 template<
class CloudType>
249 parcel.d() = diameters_[parcelI];
253 template<
class CloudType>
260 template<
class CloudType>
266 const label celli = injectorCells_[parcelI];
270 nParcelsInjected_[parcelI] < nParcelsPerInjector_
271 && factor_*referenceField_[celli] > thresholdField_[celli]
274 nParcelsInjected_[parcelI]++;