30 template<
class CloudType>
37 template<
class CloudType>
48 Info<<
"Constructing particle injection models" <<
endl;
50 if (modelNames.size() > 0)
52 this->
setSize(modelNames.size());
57 const word& model = iter().keyword();
58 Info<<
"Creating injector: " << model <<
endl;
93 template<
class CloudType>
105 template<
class CloudType>
112 template<
class CloudType>
115 scalar minTime = great;
118 minTime =
min(minTime, this->
operator[](i).timeStart());
125 template<
class CloudType>
128 scalar maxTime = -great;
131 maxTime =
max(maxTime, this->
operator[](i).timeEnd());
138 template<
class CloudType>
148 vol += this->operator[](i).volumeToInject(time0, time1);
155 template<
class CloudType>
159 scalar massTotal = 0.0;
162 scalar mt = this->operator[](i).massTotal();
163 mass += mt*this->operator[](i).averageParcelMass();
167 return mass/massTotal;
171 template<
class CloudType>
176 this->operator[](i).topoChange();
181 template<
class CloudType>
182 template<
class TrackCloudType>
185 TrackCloudType& cloud,
186 typename CloudType::parcelType::trackingData& td
191 this->operator[](i).inject(cloud, td);
196 template<
class CloudType>
197 template<
class TrackCloudType>
200 TrackCloudType& cloud,
201 typename CloudType::parcelType::trackingData& td,
202 const scalar trackTime
207 this->operator[](i).injectSteadyState(cloud, td, trackTime);
212 template<
class CloudType>
217 this->operator[](i).info(os);
Template class for intrusive linked lists.
virtual ~InjectionModelList()
Destructor.
void inject(TrackCloudType &cloud, typename CloudType::parcelType::trackingData &td)
Main injection loop.
#define forAll(list, i)
Loop across all elements in list.
scalar volumeToInject(const scalar time0, const scalar time1)
Volume of parcels to introduce relative to SOI.
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
void topoChange()
Set injector locations when mesh is updated.
autoPtr< CompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const viscosity &viscosity)
InjectionModelList(CloudType &owner)
Construct null from owner.
A list of keyword definitions, which are a keyword followed by any number of values (e...
#define forAllConstIter(Container, container, iter)
Iterate across all elements in the container object of type.
void injectSteadyState(TrackCloudType &cloud, typename CloudType::parcelType::trackingData &td, const scalar trackTime)
Main injection loop - steady-state.
Templated injection model class.
Ostream & endl(Ostream &os)
Add newline and flush stream.
wordList toc() const
Return the table of contents.
points setSize(newPointi)
scalar timeStart() const
Return the minimum start-of-injection time.
scalar averageParcelMass()
Return the average parcel mass.
A class for handling words, derived from string.
List of injection models.
layerAndWeight min(const layerAndWeight &a, const layerAndWeight &b)
An Ostream is an abstract base class for all output systems (streams, files, token lists...
virtual void info(Ostream &os)
Write injection info to stream.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
scalar timeEnd() const
Return the maximum end-of-injection time.
Templated base class for dsmc cloud.
ITstream & lookup(const word &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream.