InjectionModel< CloudType > Class Template Referenceabstract

Templated injection model class. More...

Inheritance diagram for InjectionModel< CloudType >:
Collaboration diagram for InjectionModel< CloudType >:

Public Types

typedef CloudType::parcelType parcelType
 Convenience typedef for parcelType. More...
 
- Public Types inherited from injectionModel
enum class  uniformParcelSize { nParticle , surfaceArea , volume }
 Enumeration for the parcels' uniform size. More...
 
- Public Types inherited from CloudSubModelBase< CloudType >
typedef CloudType cloudType
 Type of cloud this model was instantiated for. More...
 

Public Member Functions

 TypeName ("injectionModel")
 Runtime type information. More...
 
 declareRunTimeSelectionTable (autoPtr, InjectionModel, dictionary,(const dictionary &dict, CloudType &owner, const word &modelType),(dict, owner, modelType))
 Declare runtime constructor selection table. More...
 
 InjectionModel (CloudType &owner)
 Construct null from owner. More...
 
 InjectionModel (const dictionary &dict, CloudType &owner, const word &modelName, const word &modelType)
 Construct from dictionary. More...
 
 InjectionModel (const InjectionModel< CloudType > &im)
 Construct copy. More...
 
virtual autoPtr< InjectionModel< CloudType > > clone () const =0
 Construct and return a clone. More...
 
virtual ~InjectionModel ()
 Destructor. More...
 
virtual void topoChange ()
 Update mesh. More...
 
scalar timeStart () const
 Return the start-of-injection time. More...
 
scalar massInjected () const
 Return mass of particles injected (cumulative) More...
 
virtual scalar timeEnd () const =0
 Return the end-of-injection time. More...
 
virtual label nParcelsToInject (const scalar time0, const scalar time1)=0
 Number of parcels to introduce relative to SOI. More...
 
virtual scalar massToInject (const scalar time0, const scalar time1)=0
 Parcel mass to introduce relative to SOI. More...
 
scalar averageParcelMass ()
 Return the average injected parcel mass. More...
 
label nInjections () const
 Return the number of injections. More...
 
label parcelsAddedTotal () const
 Return the total number parcels added. More...
 
template<class TrackCloudType >
void inject (TrackCloudType &cloud, typename CloudType::parcelType::trackingData &td)
 Main injection loop. More...
 
template<class TrackCloudType >
void injectSteadyState (TrackCloudType &cloud, typename CloudType::parcelType::trackingData &td)
 Main injection loop - steady-state. More...
 
virtual void setPositionAndCell (const label parcelI, const label nParcels, const scalar time, barycentric &coordinates, label &celli, label &tetFacei, label &tetPti, label &facei)=0
 Set the injection position and owner cell, tetFace and tetPt. More...
 
virtual void setProperties (const label parcelI, const label nParcels, const scalar time, parcelType &parcel)=0
 Set the parcel properties. More...
 
virtual bool fullyDescribed () const =0
 Flag to identify whether model fully describes the parcel. More...
 
virtual void info (Ostream &os)
 Write injection info to stream. More...
 
- Public Member Functions inherited from CloudSubModelBase< CloudType >
 CloudSubModelBase (CloudType &owner)
 Construct null from owner cloud. More...
 
 CloudSubModelBase (CloudType &owner, const dictionary &dict, const word &baseName, const word &modelType, const word &dictExt="Coeffs")
 Construct from owner cloud without name. More...
 
 CloudSubModelBase (const word &modelName, CloudType &owner, const dictionary &dict, const word &baseName, const word &modelType)
 Construct from owner cloud with name. More...
 
 CloudSubModelBase (const CloudSubModelBase< CloudType > &smb)
 Copy constructor. More...
 
virtual ~CloudSubModelBase ()
 Destructor. More...
 
const CloudTypeowner () const
 Return const access to the owner cloud. More...
 
virtual bool writeTime () const
 Flag to indicate when to write a property. More...
 
CloudTypeowner ()
 Return non-const access to the owner cloud for manipulation. More...
 
virtual void write (Ostream &os) const
 Write. More...
 
- Public Member Functions inherited from subModelBase
 subModelBase (dictionary &properties)
 Construct null. More...
 
 subModelBase (dictionary &properties, const dictionary &dict, const word &baseName, const word &modelType, const word &dictExt="Coeffs")
 Construct from components without name. More...
 
 subModelBase (const word &modelName, dictionary &properties, const dictionary &dict, const word &baseName, const word &modelType)
 Construct from components with name. More...
 
 subModelBase (const subModelBase &smb)
 Copy constructor. More...
 
virtual ~subModelBase ()
 Destructor. More...
 
const wordmodelName () const
 Return const access to the name of the sub-model. More...
 
const dictionarydict () const
 Return const access to the cloud dictionary. More...
 
const wordbaseName () const
 Return const access to the base name of the sub-model. More...
 
const wordmodelType () const
 Return const access to the sub-model type. More...
 
const dictionarycoeffDict () const
 Return const access to the coefficients dictionary. More...
 
const dictionaryproperties () const
 Return const access to the properties dictionary. More...
 
virtual bool defaultCoeffs (const bool printMsg) const
 Returns true if defaultCoeffs is true and outputs on printMsg. More...
 
virtual void cacheFields (const bool store)
 Cache dependent sub-model fields. More...
 
template<class Type >
Type getBaseProperty (const word &entryName, const Type &defaultValue=pTraits< Type >::zero) const
 Retrieve generic property from the base model. More...
 
template<class Type >
void getBaseProperty (const word &entryName, Type &value) const
 Retrieve generic property from the base model. More...
 
template<class Type >
void setBaseProperty (const word &entryName, const Type &value)
 Add generic property to the base model. More...
 
template<class Type >
void getModelProperty (const word &entryName, Type &value) const
 Retrieve generic property from the sub-model. More...
 
template<class Type >
Type getModelProperty (const word &entryName, const Type &defaultValue=pTraits< Type >::zero) const
 Retrieve generic property from the sub-model. More...
 
template<class Type >
void setModelProperty (const word &entryName, const Type &value)
 Add generic property to the sub-model. More...
 
void operator= (const subModelBase &)=delete
 Disallow default bitwise assignment. More...
 

Static Public Member Functions

static autoPtr< InjectionModel< CloudType > > New (const dictionary &dict, CloudType &owner)
 Selector with lookup from dictionary. More...
 
static autoPtr< InjectionModel< CloudType > > New (const dictionary &dict, const word &modelName, const word &modelType, CloudType &owner)
 Selector with name and type. More...
 

Protected Member Functions

scalar readMassTotal (const dictionary &dict, CloudType &owner)
 Read the total mass value for instantaneous injections. More...
 
scalar readDuration (const dictionary &dict, CloudType &owner)
 Read the duration for continuous injections. More...
 
TimeFunction1< scalar > readMassFlowRate (const dictionary &dict, CloudType &owner, const scalar duration)
 Read the mass flow rate function for continuous injections. More...
 
TimeFunction1< scalar > readParcelsPerSecond (const dictionary &dict, CloudType &owner)
 Read the number of parcels injected per second for continuous. More...
 
label index () const
 Get the index of this injector. More...
 
bool findCellAtPosition (const point &position, barycentric &coordinates, label &celli, label &tetFacei, label &tetPti, bool errorOnNotFound=true)
 Find the cell that contains the supplied position. More...
 
void constrainPosition (typename CloudType::parcelType::trackingData &td, typename CloudType::parcelType &parcel)
 Constrain a parcel's position appropriately to the geometric. More...
 
label sizeSampleQ () const
 Return the sampling moment to be used by the size distribution. More...
 
void setNumberOfParticles (PtrList< parcelType > &parcelPtrs, const scalar mass) const
 Set number of particles to inject given parcel properties. More...
 
void postInjectCheck (const label parcelsAdded, const scalar massAdded)
 Post injection checks. More...
 
- Protected Member Functions inherited from subModelBase
bool inLine () const
 Flag to indicate whether data is/was read in-line. More...
 

Protected Attributes

scalar SOI_
 Start of injection [s]. More...
 
scalar massInjected_
 Total mass injected to date [kg]. More...
 
label nInjections_
 Number of injections counter. More...
 
label parcelsAddedTotal_
 Running counter of total number of parcels added. More...
 
scalar nParticleFixed_
 Fixed nParticle to assign to parcels. Only valid if. More...
 
uniformParcelSize uniformParcelSize_
 Size uniform to all parcels. More...
 
scalar time0_
 Continuous phase time at start of injection time step [s]. More...
 
scalar timeStep0_
 Time at start of injection time step [s]. More...
 
- Protected Attributes inherited from CloudSubModelBase< CloudType >
CloudTypeowner_
 Reference to the cloud. More...
 
- Protected Attributes inherited from subModelBase
const word modelName_
 Name of the sub-model. More...
 
dictionaryproperties_
 Reference to properties dictionary e.g. for restart. More...
 
const dictionary dict_
 Copy of dictionary used during construction. More...
 
const word baseName_
 Name of the sub-model base class. More...
 
const word modelType_
 Type of the sub-model. More...
 
const dictionary coeffDict_
 Coefficients dictionary. More...
 

Additional Inherited Members

- Static Public Attributes inherited from injectionModel
static const NamedEnum< uniformParcelSize, 3 > uniformParcelSizeNames_
 Names of the parcels' uniform size. More...
 

Detailed Description

template<class CloudType>
class Foam::InjectionModel< CloudType >

Templated injection model class.

The injection model nominally describes the parcel:

  • position
  • diameter
  • velocity In this case, the fullyDescribed() flag should be set to 0 (false). When the parcel is then added to the cloud, the remaining properties are populated using values supplied in the constant properties.

If, however, all of a parcel's properties are described in the model, the fullDescribed() flag should be set to 1 (true).

Source files

Definition at line 66 of file InjectionModel.H.

Member Typedef Documentation

◆ parcelType

Convenience typedef for parcelType.

Definition at line 74 of file InjectionModel.H.

Constructor & Destructor Documentation

◆ InjectionModel() [1/3]

InjectionModel ( CloudType owner)

Construct null from owner.

Definition at line 446 of file InjectionModel.C.

◆ InjectionModel() [2/3]

◆ InjectionModel() [3/3]

Construct copy.

Definition at line 527 of file InjectionModel.C.

◆ ~InjectionModel()

~InjectionModel
virtual

Destructor.

Definition at line 547 of file InjectionModel.C.

Member Function Documentation

◆ readMassTotal()

Foam::scalar readMassTotal ( const dictionary dict,
CloudType owner 
)
protected

Read the total mass value for instantaneous injections.

Definition at line 37 of file InjectionModel.C.

References dict, Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, IOWarningInFunction, Foam::patchToPatchTools::NaN(), and Foam::type().

Here is the call graph for this function:

◆ readDuration()

Foam::scalar readDuration ( const dictionary dict,
CloudType owner 
)
protected

Read the duration for continuous injections.

Definition at line 70 of file InjectionModel.C.

References DSMCCloud< ParcelType >::mesh(), fvMesh::time(), and Time::userTimeToTime().

Here is the call graph for this function:

◆ readMassFlowRate()

Foam::TimeFunction1< Foam::scalar > readMassFlowRate ( const dictionary dict,
CloudType owner,
const scalar  duration 
)
protected

Read the mass flow rate function for continuous injections.

Definition at line 93 of file InjectionModel.C.

References dict, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, IOWarningInFunction, DSMCCloud< ParcelType >::mesh(), Foam::patchToPatchTools::NaN(), Function1< Type >::New(), and fvMesh::time().

Here is the call graph for this function:

◆ readParcelsPerSecond()

Foam::TimeFunction1< Foam::scalar > readParcelsPerSecond ( const dictionary dict,
CloudType owner 
)
protected

Read the number of parcels injected per second for continuous.

injections

Definition at line 175 of file InjectionModel.C.

References dict, DSMCCloud< ParcelType >::mesh(), and fvMesh::time().

Here is the call graph for this function:

◆ index()

Foam::label index
protected

Get the index of this injector.

Definition at line 188 of file InjectionModel.C.

References forAll.

◆ findCellAtPosition()

bool findCellAtPosition ( const point position,
barycentric coordinates,
label celli,
label tetFacei,
label tetPti,
bool  errorOnNotFound = true 
)
protected

Find the cell that contains the supplied position.

Will modify position slightly towards the owner cell centroid to ensure that it lies in a cell and not edge/face

Definition at line 203 of file InjectionModel.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, Pair< Type >::first(), UPstream::myProcNo(), Foam::nl, p, Foam::pos(), Foam::reduce(), and Pair< Type >::second().

Here is the call graph for this function:

◆ constrainPosition()

void constrainPosition ( typename CloudType::parcelType::trackingData &  td,
typename CloudType::parcelType parcel 
)
protected

Constrain a parcel's position appropriately to the geometric.

dimensions of the mesh

Definition at line 276 of file InjectionModel.C.

References VectorSpace< Form, Cmpt, Ncmpts >::zero.

◆ sizeSampleQ()

Foam::label sizeSampleQ
protected

Return the sampling moment to be used by the size distribution.

Definition at line 315 of file InjectionModel.C.

References Foam::labelMax.

◆ setNumberOfParticles()

void setNumberOfParticles ( PtrList< parcelType > &  parcelPtrs,
const scalar  mass 
) const
protected

Set number of particles to inject given parcel properties.

Definition at line 332 of file InjectionModel.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, Foam::mag(), Foam::max(), Foam::min(), Foam::patchToPatchTools::NaN(), p, Foam::reduce(), and PtrList< T >::set().

Here is the call graph for this function:

◆ postInjectCheck()

void postInjectCheck ( const label  parcelsAdded,
const scalar  massAdded 
)
protected

Post injection checks.

Definition at line 413 of file InjectionModel.C.

References Foam::endl(), Foam::Info, Foam::nl, and Foam::returnReduce().

Here is the call graph for this function:

◆ TypeName()

TypeName ( "injectionModel"  )

Runtime type information.

◆ declareRunTimeSelectionTable()

declareRunTimeSelectionTable ( autoPtr  ,
InjectionModel< CloudType ,
dictionary  ,
(const dictionary &dict, CloudType &owner, const word &modelType ,
(dict, owner, modelType  
)

Declare runtime constructor selection table.

◆ clone()

◆ New() [1/2]

Foam::autoPtr< Foam::InjectionModel< CloudType > > New ( const dictionary dict,
CloudType owner 
)
static

Selector with lookup from dictionary.

Definition at line 32 of file InjectionModelNew.C.

References dict, Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::Info, and Foam::nl.

Here is the call graph for this function:

◆ New() [2/2]

Foam::autoPtr< Foam::InjectionModel< CloudType > > New ( const dictionary dict,
const word modelName,
const word modelType,
CloudType owner 
)
static

Selector with name and type.

Definition at line 60 of file InjectionModelNew.C.

References dict, Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::Info, and Foam::nl.

Here is the call graph for this function:

◆ topoChange()

◆ timeStart()

Foam::scalar timeStart
inline

Return the start-of-injection time.

Definition at line 31 of file InjectionModelI.H.

◆ massInjected()

Foam::scalar massInjected
inline

Return mass of particles injected (cumulative)

Definition at line 38 of file InjectionModelI.H.

◆ timeEnd()

◆ nParcelsToInject()

◆ massToInject()

◆ averageParcelMass()

Foam::scalar averageParcelMass

Return the average injected parcel mass.

Definition at line 559 of file InjectionModel.C.

◆ nInjections()

Foam::label nInjections
inline

Return the number of injections.

Definition at line 45 of file InjectionModelI.H.

◆ parcelsAddedTotal()

Foam::label parcelsAddedTotal
inline

Return the total number parcels added.

Definition at line 52 of file InjectionModelI.H.

◆ inject()

void inject ( TrackCloudType &  cloud,
typename CloudType::parcelType::trackingData &  td 
)

◆ injectSteadyState()

void injectSteadyState ( TrackCloudType &  cloud,
typename CloudType::parcelType::trackingData &  td 
)

Main injection loop - steady-state.

Definition at line 747 of file InjectionModel.C.

References Foam::meshTools::constrainDirection(), forAll, Foam::patchToPatchTools::NaN(), p, PtrList< T >::set(), polyMesh::solutionD(), and VectorSpace< Form, Cmpt, Ncmpts >::uniform().

Here is the call graph for this function:

◆ setPositionAndCell()

virtual void setPositionAndCell ( const label  parcelI,
const label  nParcels,
const scalar  time,
barycentric coordinates,
label celli,
label tetFacei,
label tetPti,
label facei 
)
pure virtual

◆ setProperties()

◆ fullyDescribed()

◆ info()

void info ( Ostream os)
virtual

Write injection info to stream.

Definition at line 852 of file InjectionModel.C.

References Foam::nl.

Member Data Documentation

◆ SOI_

scalar SOI_
protected

Start of injection [s].

Definition at line 84 of file InjectionModel.H.

Referenced by InjectionModel< CloudType >::InjectionModel().

◆ massInjected_

scalar massInjected_
protected

Total mass injected to date [kg].

Definition at line 87 of file InjectionModel.H.

◆ nInjections_

label nInjections_
protected

Number of injections counter.

Definition at line 93 of file InjectionModel.H.

◆ parcelsAddedTotal_

label parcelsAddedTotal_
protected

Running counter of total number of parcels added.

Definition at line 96 of file InjectionModel.H.

◆ nParticleFixed_

scalar nParticleFixed_
protected

Fixed nParticle to assign to parcels. Only valid if.

uniformParcelSize is nParticle.

Definition at line 103 of file InjectionModel.H.

Referenced by InjectionModel< CloudType >::InjectionModel().

◆ uniformParcelSize_

uniformParcelSize uniformParcelSize_
protected

Size uniform to all parcels.

Definition at line 106 of file InjectionModel.H.

Referenced by InjectionModel< CloudType >::InjectionModel().

◆ time0_

scalar time0_
protected

Continuous phase time at start of injection time step [s].

Definition at line 109 of file InjectionModel.H.

◆ timeStep0_

scalar timeStep0_
protected

Time at start of injection time step [s].

Definition at line 112 of file InjectionModel.H.


The documentation for this class was generated from the following files: