InjectionModel< CloudType > Class Template Referenceabstract

Templated injection model class. More...

Inheritance diagram for InjectionModel< CloudType >:
[legend]
Collaboration diagram for InjectionModel< CloudType >:
[legend]

Public Types

enum  parcelBasis { pbNumber, pbMass, pbFixed }
 
typedef CloudType::parcelType parcelType
 Convenience typedef for parcelType. 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 ()=default
 Destructor. More...
 
virtual void updateMesh ()
 Update mesh. More...
 
scalar timeStart () const
 Return the start-of-injection time. More...
 
scalar volumeTotal () const
 Return the total volume to be injected across the event. More...
 
scalar massTotal () const
 Return mass of particles to introduce. More...
 
scalar massInjected () const
 Return mass of particles injected (cumulative) More...
 
label injectorID () const
 Return injectorID. More...
 
virtual scalar timeEnd () const =0
 Return the end-of-injection time. More...
 
virtual label parcelsToInject (const scalar time0, const scalar time1)=0
 Number of parcels to introduce relative to SOI. More...
 
virtual scalar volumeToInject (const scalar time0, const scalar time1)=0
 Volume of parcels to introduce relative to SOI. More...
 
virtual scalar averageParcelMass ()
 Return the average parcel mass over the injection period. 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, const scalar trackTime)
 Main injection loop - steady-state. More...
 
virtual void setPositionAndCell (const label parcelI, const label nParcels, const scalar time, vector &position, label &cellOwner, label &tetFacei, label &tetPti)=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)
 Construct as copy. 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...
 
virtual fileName localPath () const
 Output directory. 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)
 Construct as copy. 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 bool active () const
 Return the model 'active' status - default active = true. More...
 
virtual void cacheFields (const bool store)
 Cache dependent sub-model fields. More...
 
template<class Type >
Type getBaseProperty (const word &entryName, const Type &defaultValue=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...
 
bool getModelDict (const word &entryName, dictionary &dict) const
 Retrieve dictionary, return true if set. 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=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...
 

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

virtual bool validInjection (const label parcelI)=0
 Additional flag to identify whether or not injection of parcelI is. More...
 
virtual bool prepareForNextTimeStep (const scalar time, label &newParcels, scalar &newVolumeFraction)
 Determine properties for next time step/injection interval. More...
 
virtual bool findCellAtPosition (label &celli, label &tetFacei, label &tetPti, vector &position, bool errorOnNotFound=true)
 Find the cell that contains the supplied position. More...
 
virtual scalar setNumberOfParticles (const label parcels, const scalar volumeFraction, const scalar diameter, const scalar rho)
 Set number of particles to inject given parcel properties. More...
 
virtual 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 volumeTotal_
 
scalar massTotal_
 Total mass to inject [kg]. More...
 
autoPtr< Function1< scalar > > massFlowRate_
 Mass flow rate profile for steady calculations. 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...
 
parcelBasis parcelBasis_
 Parcel basis enumeration. More...
 
scalar nParticleFixed_
 
scalar time0_
 Continuous phase time at start of injection time step [s]. More...
 
scalar timeStep0_
 Time at start of injection time step [s]. More...
 
scalar minParticlesPerParcel_
 
scalar delayedVolume_
 
label injectorID_
 Optional injector ID. More...
 
bool ignoreOutOfBounds_
 
- 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...
 

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 73 of file InjectionModel.H.

Member Typedef Documentation

◆ parcelType

Convenience typedef for parcelType.

Definition at line 80 of file InjectionModel.H.

Member Enumeration Documentation

◆ parcelBasis

Parcel basis representation options i.e constant number of particles OR constant mass per parcel

Enumerator
pbNumber 
pbMass 
pbFixed 

Definition at line 87 of file InjectionModel.H.

Constructor & Destructor Documentation

◆ InjectionModel() [1/3]

InjectionModel ( CloudType owner)

Construct null from owner.

Definition at line 263 of file InjectionModel.C.

◆ InjectionModel() [2/3]

InjectionModel ( const dictionary dict,
CloudType owner,
const word modelName,
const word modelType 
)

Construct from dictionary.

Definition at line 289 of file InjectionModel.C.

References Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::Info, DSMCCloud< ParcelType >::mesh(), polyMesh::nGeometricD(), and Foam::nl.

Here is the call graph for this function:

◆ InjectionModel() [3/3]

Construct copy.

Definition at line 389 of file InjectionModel.C.

◆ ~InjectionModel()

virtual ~InjectionModel ( )
virtualdefault

Destructor.

Member Function Documentation

◆ validInjection()

◆ prepareForNextTimeStep()

bool prepareForNextTimeStep ( const scalar  time,
label &  newParcels,
scalar &  newVolumeFraction 
)
protectedvirtual

Determine properties for next time step/injection interval.

Definition at line 39 of file InjectionModel.C.

◆ findCellAtPosition()

bool findCellAtPosition ( label &  celli,
label &  tetFacei,
label &  tetPti,
vector position,
bool  errorOnNotFound = true 
)
protectedvirtual

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 95 of file InjectionModel.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, UPstream::myProcNo(), Foam::nl, p0, and Foam::reduce().

Here is the call graph for this function:

◆ setNumberOfParticles()

Foam::scalar setNumberOfParticles ( const label  parcels,
const scalar  volumeFraction,
const scalar  diameter,
const scalar  rho 
)
protectedvirtual

Set number of particles to inject given parcel properties.

Definition at line 188 of file InjectionModel.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::nl, Foam::constant::mathematical::pi(), Foam::pow3(), and rho.

Here is the call graph for this function:

◆ postInjectCheck()

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

Post injection checks.

Definition at line 231 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 36 of file InjectionModelNew.C.

References dict, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInLookup, and Foam::Info.

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 65 of file InjectionModelNew.C.

References dict, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInLookup, and Foam::Info.

Here is the call graph for this function:

◆ updateMesh()

◆ timeStart()

Foam::scalar timeStart ( ) const
inline

Return the start-of-injection time.

Definition at line 34 of file InjectionModelI.H.

◆ volumeTotal()

Foam::scalar volumeTotal ( ) const
inline

Return the total volume to be injected across the event.

Definition at line 41 of file InjectionModelI.H.

◆ massTotal()

Foam::scalar massTotal ( ) const
inline

Return mass of particles to introduce.

Definition at line 48 of file InjectionModelI.H.

◆ massInjected()

Foam::scalar massInjected ( ) const
inline

Return mass of particles injected (cumulative)

Definition at line 55 of file InjectionModelI.H.

◆ injectorID()

Foam::label injectorID ( ) const
inline

Return injectorID.

Definition at line 62 of file InjectionModelI.H.

◆ timeEnd()

◆ parcelsToInject()

◆ volumeToInject()

◆ averageParcelMass()

Foam::scalar averageParcelMass ( )
virtual

Return the average parcel mass over the injection period.

Definition at line 420 of file InjectionModel.C.

◆ nInjections()

Foam::label nInjections ( ) const
inline

Return the number of injections.

Definition at line 69 of file InjectionModelI.H.

◆ parcelsAddedTotal()

Foam::label parcelsAddedTotal ( ) const
inline

Return the total number parcels added.

Definition at line 76 of file InjectionModelI.H.

◆ inject()

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

Main injection loop.

Definition at line 439 of file InjectionModel.C.

References Foam::meshTools::constrainDirection(), Foam::meshTools::constrainToMeshCentre(), Foam::max(), mesh, DSMCCloud< ParcelType >::mesh(), Foam::min(), Foam::pos(), Foam::returnReduce(), polyMesh::solutionD(), and Foam::Zero.

Here is the call graph for this function:

◆ injectSteadyState()

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

Main injection loop - steady-state.

Definition at line 569 of file InjectionModel.C.

References Foam::meshTools::constrainDirection(), Foam::meshTools::constrainToMeshCentre(), mesh, DSMCCloud< ParcelType >::mesh(), Foam::pos(), polyMesh::solutionD(), fvMesh::time(), dimensioned< Type >::value(), and Foam::Zero.

Here is the call graph for this function:

◆ setPositionAndCell()

◆ setProperties()

◆ fullyDescribed()

◆ info()

void info ( Ostream os)
virtual

Write injection info to stream.

Reimplemented in InjectedParticleDistributionInjection< CloudType >, and InjectedParticleInjection< CloudType >.

Definition at line 669 of file InjectionModel.C.

References Foam::nl, and os().

Referenced by InjectedParticleInjection< CloudType >::info(), and InjectedParticleDistributionInjection< CloudType >::info().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ SOI_

scalar SOI_
protected

Start of injection [s].

Definition at line 102 of file InjectionModel.H.

◆ volumeTotal_

scalar volumeTotal_
protected

Total volume of particles introduced by this injector [m^3] Note: scaled to ensure massTotal is achieved

Definition at line 106 of file InjectionModel.H.

◆ massTotal_

scalar massTotal_
protected

Total mass to inject [kg].

Definition at line 109 of file InjectionModel.H.

◆ massFlowRate_

autoPtr<Function1<scalar> > massFlowRate_
protected

Mass flow rate profile for steady calculations.

Definition at line 112 of file InjectionModel.H.

◆ massInjected_

scalar massInjected_
protected

Total mass injected to date [kg].

Definition at line 115 of file InjectionModel.H.

◆ nInjections_

label nInjections_
protected

Number of injections counter.

Definition at line 121 of file InjectionModel.H.

◆ parcelsAddedTotal_

label parcelsAddedTotal_
protected

Running counter of total number of parcels added.

Definition at line 124 of file InjectionModel.H.

◆ parcelBasis_

parcelBasis parcelBasis_
protected

Parcel basis enumeration.

Definition at line 130 of file InjectionModel.H.

◆ nParticleFixed_

scalar nParticleFixed_
protected

nParticle to assign to parcels when the 'fixed' basis is selected

Definition at line 134 of file InjectionModel.H.

◆ time0_

scalar time0_
protected

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

Definition at line 137 of file InjectionModel.H.

◆ timeStep0_

scalar timeStep0_
protected

Time at start of injection time step [s].

Definition at line 140 of file InjectionModel.H.

◆ minParticlesPerParcel_

scalar minParticlesPerParcel_
protected

Minimum number of particles used to represent each parcel default = 1

Definition at line 144 of file InjectionModel.H.

◆ delayedVolume_

scalar delayedVolume_
protected

Volume that should have been injected, but would lead to less than minParticlesPerParcel_ particle per parcel

Definition at line 148 of file InjectionModel.H.

◆ injectorID_

label injectorID_
protected

Optional injector ID.

Definition at line 151 of file InjectionModel.H.

◆ ignoreOutOfBounds_

bool ignoreOutOfBounds_
protected

Optional flag to indicate that injections attempted outside the mesh should be ignored

Definition at line 155 of file InjectionModel.H.


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