Go to the documentation of this file.
34 template<
class CloudType>
46 owner.db().objectRegistry::template lookupObject<volScalarField>
48 this->coeffDict().lookup(
"referenceField")
53 owner.db().objectRegistry::template lookupObject<volScalarField>
55 this->coeffDict().lookup(
"thresholdField")
58 positionsFile_(this->coeffDict().
lookup(
"positionsFile")),
64 owner.db().time().constant(),
70 injectorCells_(positions_.size()),
71 injectorTetFaces_(positions_.size()),
72 injectorTetPts_(positions_.size()),
77 nParcelsInjected_(positions_.size(), 0),
78 U0_(this->coeffDict().
lookup(
"U0")),
79 diameters_(positions_.size()),
84 this->coeffDict().subDict(
"sizeDistribution"),
92 diameters_[i] = sizeDistribution_->sample();
97 nParcelsPerInjector_*
sum(
pow3(diameters_))*
pi/6.0;
103 template<
class CloudType>
128 template<
class CloudType>
135 template<
class CloudType>
141 this->findCellAtPosition
144 injectorTetFaces_[i],
152 template<
class CloudType>
159 template<
class CloudType>
166 if (
sum(nParcelsInjected_) < nParcelsPerInjector_*positions_.size())
168 return positions_.size();
177 template<
class CloudType>
184 if (
sum(nParcelsInjected_) < nParcelsPerInjector_*positions_.size())
186 return this->volumeTotal_/nParcelsPerInjector_;
195 template<
class CloudType>
207 position = positions_[parcelI];
208 cellOwner = injectorCells_[parcelI];
209 tetFaceI = injectorTetFaces_[parcelI];
210 tetPtI = injectorTetPts_[parcelI];
214 template<
class CloudType>
227 parcel.d() = diameters_[parcelI];
231 template<
class CloudType>
238 template<
class CloudType>
244 const label cellI = injectorCells_[parcelI];
248 nParcelsInjected_[parcelI] < nParcelsPerInjector_
249 && factor_*referenceField_[cellI] > thresholdField_[cellI]
252 nParcelsInjected_[parcelI]++;
const autoPtr< distributionModels::distributionModel > sizeDistribution_
Parcel size distribution model.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
const volScalarField & referenceField_
Reference field.
A class for handling words, derived from string.
const word positionsFile_
Name of file containing positions data.
const vector U0_
Initial parcel velocity.
#define forAll(list, i)
Loop across all elements in list.
labelList injectorTetPts_
List of tetPt labels corresponding to injector positions.
virtual ~FieldActivatedInjection()
Destructor.
const volScalarField & thresholdField_
Threshold field.
FieldActivatedInjection(const dictionary &dict, CloudType &owner, const word &modelName)
Construct from dictionary.
Templated injection model class.
static autoPtr< distributionModel > New(const dictionary &dict, cachedRandom &rndGen)
Selector.
virtual bool fullyDescribed() const
Flag to identify whether model fully describes the parcel.
Random & rndGen()
Return refernce to the random object.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
dimensionedScalar pow3(const dimensionedScalar &ds)
const fvMesh & mesh() const
Return refernce to the mesh.
labelList injectorTetFaces_
List of tetFace labels corresponding to injector positions.
virtual void updateMesh()
Set injector locations when mesh is updated.
Templated base class for dsmc cloud.
const scalar factor_
Factor to apply to reference field.
A list of keyword definitions, which are a keyword followed by any number of values (e....
virtual label parcelsToInject(const scalar time0, const scalar time1)
Number of parcels to introduce relative to SOI.
virtual scalar volumeToInject(const scalar time0, const scalar time1)
Volume of parcels to introduce relative to SOI.
scalar timeEnd() const
Return the end-of-injection time.
Conditional injection at specified positions.
virtual void setPositionAndCell(const label parcelI, const label nParcels, const scalar time, vector &position, label &cellOwner, label &tetFaceI, label &tetPtI)
Set the injection position and owner cell, tetFace and tetPt.
bool readScalar(const char *buf, doubleScalar &s)
Read whole of buf as a scalar. Return true if succesful.
vectorIOField positions_
Field of injector (x,y,z) positions.
scalarList diameters_
List of parcel diameters.
virtual void setProperties(const label parcelI, const label nParcels, const scalar time, typename CloudType::parcelType &parcel)
Set the parcel properties.
dimensioned< Type > sum(const DimensionedField< Type, GeoMesh > &df)
label readLabel(Istream &is)
labelList injectorCells_
List of cell labels corresponding to injector positions.
virtual bool validInjection(const label parcelI)
Return flag to identify whether or not injection of parcelI is.
ParcelType parcelType
Type of parcel the cloud was instantiated for.
labelList nParcelsInjected_
List of number of parcels injected for each injector.
stressControl lookup("compactNormalStress") >> compactNormalStress
const label nParcelsPerInjector_
Number of parcels per injector.