Templated injection model class. More...
Public Types | |
enum | parcelBasis { pbNumber, pbMass, pbFixed } |
Parcel basis representation options. More... | |
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 () |
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... | |
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 TrackData > | |
void | inject (TrackData &td) |
Main injection loop. More... | |
template<class TrackData > | |
void | injectSteadyState (TrackData &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 CloudType & | owner () const |
Return const access to the owner cloud. More... | |
virtual bool | writeTime () const |
Flag to indicate when to write a property. More... | |
CloudType & | owner () |
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 word & | modelName () const |
Return const access to the name of the sub-model. More... | |
const dictionary & | dict () const |
Return const access to the cloud dictionary. More... | |
const word & | baseName () const |
Return const access to the base name of the sub-model. More... | |
const word & | modelType () const |
Return const access to the sub-model type. More... | |
const dictionary & | coeffDict () const |
Return const access to the coefficients dictionary. More... | |
const dictionary & | properties () 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 dependant 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... | |
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_ |
Total volume of particles introduced by this injector [m^3]. More... | |
scalar | massTotal_ |
Total mass to inject [kg]. More... | |
TimeFunction1< 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_ |
nParticle to assign to parcels when the 'fixed' basis 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... | |
scalar | delayedVolume_ |
Volume that should have been injected, but would lead to. More... | |
Protected Attributes inherited from CloudSubModelBase< CloudType > | |
CloudType & | owner_ |
Reference to the cloud. More... | |
Protected Attributes inherited from subModelBase | |
const word | modelName_ |
Name of the sub-model. More... | |
dictionary & | properties_ |
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... | |
Templated injection model class.
The injection model nominally describes the parcel:
If, however, all of a parcel's properties are described in the model, the fullDescribed() flag should be set to 1 (true).
Definition at line 67 of file InjectionModel.H.
typedef CloudType::parcelType parcelType |
Convenience typedef for parcelType.
Definition at line 74 of file InjectionModel.H.
enum parcelBasis |
Parcel basis representation options.
i.e constant number of particles OR constant mass per parcel
Enumerator | |
---|---|
pbNumber | |
pbMass | |
pbFixed |
Definition at line 81 of file InjectionModel.H.
InjectionModel | ( | CloudType & | owner | ) |
Construct null from owner.
Definition at line 261 of file InjectionModel.C.
Referenced by InjectionModel< CloudType >::InjectionModel().
InjectionModel | ( | const dictionary & | dict, |
CloudType & | owner, | ||
const word & | modelName, | ||
const word & | modelType | ||
) |
Construct from dictionary.
Definition at line 284 of file InjectionModel.C.
References subModelBase::coeffDict(), Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::Info, InjectionModel< CloudType >::InjectionModel(), lookup(), dictionary::lookup(), InjectionModel< CloudType >::massFlowRate_, InjectionModel< CloudType >::massTotal_, Foam::nl, InjectionModel< CloudType >::nParticleFixed_, InjectionModel< CloudType >::parcelBasis_, InjectionModel< CloudType >::pbFixed, InjectionModel< CloudType >::pbMass, InjectionModel< CloudType >::pbNumber, Foam::readScalar(), TimeFunction1< Type >::reset(), InjectionModel< CloudType >::SOI_, and TimeFunction1< Type >::value().
InjectionModel | ( | const InjectionModel< CloudType > & | im | ) |
Construct copy.
Definition at line 357 of file InjectionModel.C.
|
virtual |
Destructor.
Definition at line 380 of file InjectionModel.C.
|
protectedpure virtual |
Additional flag to identify whether or not injection of parcelI is.
permitted
Implemented in ConeNozzleInjection< CloudType >, KinematicLookupTableInjection< CloudType >, FieldActivatedInjection< CloudType >, ConeInjection< CloudType >, InflationInjection< CloudType >, ThermoLookupTableInjection< CloudType >, ReactingMultiphaseLookupTableInjection< CloudType >, ReactingLookupTableInjection< CloudType >, CellZoneInjection< CloudType >, PatchFlowRateInjection< CloudType >, ManualInjection< CloudType >, PatchInjection< CloudType >, and NoInjection< CloudType >.
Referenced by InjectionModel< CloudType >::inject().
|
protectedvirtual |
Determine properties for next time step/injection interval.
Definition at line 37 of file InjectionModel.C.
References InjectionModel< CloudType >::findCellAtPosition().
Referenced by InjectionModel< CloudType >::inject().
|
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 93 of file InjectionModel.C.
References Foam::exit(), Foam::FatalError, FatalErrorInFunction, DimensionedField< Type, GeoMesh >::mesh(), UPstream::myProcNo(), Foam::nl, Foam::reduce(), and InjectionModel< CloudType >::setNumberOfParticles().
Referenced by InjectionModel< CloudType >::prepareForNextTimeStep().
|
protectedvirtual |
Set number of particles to inject given parcel properties.
Definition at line 186 of file InjectionModel.C.
References Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::nl, Foam::constant::mathematical::pi(), InjectionModel< CloudType >::postInjectCheck(), Foam::pow3(), and rho.
Referenced by InjectionModel< CloudType >::findCellAtPosition(), InjectionModel< CloudType >::inject(), and InjectionModel< CloudType >::injectSteadyState().
|
protectedvirtual |
Post injection checks.
Definition at line 229 of file InjectionModel.C.
References Foam::endl(), Foam::Info, Foam::nl, and Foam::returnReduce().
Referenced by InjectionModel< CloudType >::inject(), InjectionModel< CloudType >::injectSteadyState(), and InjectionModel< CloudType >::setNumberOfParticles().
TypeName | ( | "injectionModel" | ) |
Runtime type information.
declareRunTimeSelectionTable | ( | autoPtr | , |
InjectionModel< CloudType > | , | ||
dictionary | , | ||
(const dictionary &dict, CloudType &owner, const word &modelType) | , | ||
(dict, owner, modelType) | |||
) |
Declare runtime constructor selection table.
|
pure virtual |
Construct and return a clone.
Implemented in ConeNozzleInjection< CloudType >, KinematicLookupTableInjection< CloudType >, FieldActivatedInjection< CloudType >, ConeInjection< CloudType >, InflationInjection< CloudType >, ReactingMultiphaseLookupTableInjection< CloudType >, ReactingLookupTableInjection< CloudType >, ThermoLookupTableInjection< CloudType >, CellZoneInjection< CloudType >, ManualInjection< CloudType >, PatchFlowRateInjection< CloudType >, PatchInjection< CloudType >, and NoInjection< CloudType >.
|
static |
Selector with lookup from dictionary.
Definition at line 33 of file InjectionModelNew.C.
References dict, Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::Info, dictionary::lookup(), and Foam::nl.
|
static |
Selector with name and type.
Definition at line 61 of file InjectionModelNew.C.
References dict, Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::Info, and Foam::nl.
|
virtual |
Update mesh.
Reimplemented in ConeNozzleInjection< CloudType >, KinematicLookupTableInjection< CloudType >, FieldActivatedInjection< CloudType >, ConeInjection< CloudType >, InflationInjection< CloudType >, ReactingMultiphaseLookupTableInjection< CloudType >, ReactingLookupTableInjection< CloudType >, ThermoLookupTableInjection< CloudType >, CellZoneInjection< CloudType >, ManualInjection< CloudType >, PatchFlowRateInjection< CloudType >, and PatchInjection< CloudType >.
Definition at line 387 of file InjectionModel.C.
|
inline |
Return the start-of-injection time.
Definition at line 31 of file InjectionModelI.H.
Referenced by InjectionModel< CloudType >::averageParcelMass().
|
inline |
Return the total volume to be injected across the event.
Definition at line 38 of file InjectionModelI.H.
|
inline |
Return mass of particles to introduce.
Definition at line 45 of file InjectionModelI.H.
|
inline |
Return mass of particles injected (cumulative)
Definition at line 52 of file InjectionModelI.H.
|
pure virtual |
Return the end-of-injection time.
Implemented in ConeNozzleInjection< CloudType >, KinematicLookupTableInjection< CloudType >, FieldActivatedInjection< CloudType >, ConeInjection< CloudType >, InflationInjection< CloudType >, ReactingMultiphaseLookupTableInjection< CloudType >, ReactingLookupTableInjection< CloudType >, ThermoLookupTableInjection< CloudType >, CellZoneInjection< CloudType >, ManualInjection< CloudType >, PatchFlowRateInjection< CloudType >, PatchInjection< CloudType >, and NoInjection< CloudType >.
Referenced by InjectionModel< CloudType >::averageParcelMass(), and InjectionModel< CloudType >::inject().
|
pure virtual |
Number of parcels to introduce relative to SOI.
Implemented in ConeNozzleInjection< CloudType >, KinematicLookupTableInjection< CloudType >, FieldActivatedInjection< CloudType >, ConeInjection< CloudType >, InflationInjection< CloudType >, ReactingMultiphaseLookupTableInjection< CloudType >, ReactingLookupTableInjection< CloudType >, ThermoLookupTableInjection< CloudType >, CellZoneInjection< CloudType >, PatchFlowRateInjection< CloudType >, ManualInjection< CloudType >, PatchInjection< CloudType >, and NoInjection< CloudType >.
Referenced by InjectionModel< CloudType >::averageParcelMass(), and InjectionModel< CloudType >::injectSteadyState().
|
pure virtual |
Volume of parcels to introduce relative to SOI.
Implemented in ConeNozzleInjection< CloudType >, KinematicLookupTableInjection< CloudType >, FieldActivatedInjection< CloudType >, ConeInjection< CloudType >, InflationInjection< CloudType >, ReactingMultiphaseLookupTableInjection< CloudType >, ReactingLookupTableInjection< CloudType >, ThermoLookupTableInjection< CloudType >, CellZoneInjection< CloudType >, PatchFlowRateInjection< CloudType >, ManualInjection< CloudType >, PatchInjection< CloudType >, and NoInjection< CloudType >.
|
virtual |
Return the average parcel mass over the injection period.
Definition at line 392 of file InjectionModel.C.
References InjectionModel< CloudType >::massTotal_, CloudSubModelBase< CloudType >::owner(), InjectionModel< CloudType >::parcelsToInject(), InjectionModel< CloudType >::timeEnd(), and InjectionModel< CloudType >::timeStart().
|
inline |
Return the number of injections.
Definition at line 59 of file InjectionModelI.H.
|
inline |
Return the total number parcels added.
Definition at line 66 of file InjectionModelI.H.
void inject | ( | TrackData & | td | ) |
Main injection loop.
Definition at line 410 of file InjectionModel.C.
References subModelBase::active(), Foam::meshTools::constrainDirection(), Foam::meshTools::constrainToMeshCentre(), IOobject::db(), InjectionModel< CloudType >::delayedVolume_, InjectionModel< CloudType >::fullyDescribed(), InjectionModel< CloudType >::injectSteadyState(), Foam::max(), mesh, DSMCCloud< ParcelType >::mesh(), Foam::min(), CloudSubModelBase< CloudType >::owner(), Foam::pos(), InjectionModel< CloudType >::postInjectCheck(), InjectionModel< CloudType >::prepareForNextTimeStep(), InjectionModel< CloudType >::setNumberOfParticles(), InjectionModel< CloudType >::setPositionAndCell(), InjectionModel< CloudType >::setProperties(), InjectionModel< CloudType >::SOI_, polyMesh::solutionD(), objectRegistry::time(), InjectionModel< CloudType >::time0_, InjectionModel< CloudType >::timeEnd(), InjectionModel< CloudType >::validInjection(), dimensioned< Type >::value(), and Foam::Zero.
void injectSteadyState | ( | TrackData & | td, |
const scalar | trackTime | ||
) |
Main injection loop - steady-state.
Definition at line 538 of file InjectionModel.C.
References subModelBase::active(), Foam::meshTools::constrainDirection(), Foam::meshTools::constrainToMeshCentre(), InjectionModel< CloudType >::fullyDescribed(), InjectionModel< CloudType >::massFlowRate_, InjectionModel< CloudType >::massTotal_, mesh, DSMCCloud< ParcelType >::mesh(), CloudSubModelBase< CloudType >::owner(), InjectionModel< CloudType >::parcelsToInject(), Foam::pos(), InjectionModel< CloudType >::postInjectCheck(), InjectionModel< CloudType >::setNumberOfParticles(), InjectionModel< CloudType >::setPositionAndCell(), InjectionModel< CloudType >::setProperties(), polyMesh::solutionD(), objectRegistry::time(), InjectionModel< CloudType >::time0_, TimeFunction1< Type >::value(), dimensioned< Type >::value(), and Foam::Zero.
Referenced by InjectionModel< CloudType >::inject().
|
pure virtual |
Set the injection position and owner cell, tetFace and tetPt.
Implemented in ConeNozzleInjection< CloudType >, KinematicLookupTableInjection< CloudType >, FieldActivatedInjection< CloudType >, ConeInjection< CloudType >, InflationInjection< CloudType >, ReactingMultiphaseLookupTableInjection< CloudType >, ReactingLookupTableInjection< CloudType >, ThermoLookupTableInjection< CloudType >, CellZoneInjection< CloudType >, PatchFlowRateInjection< CloudType >, ManualInjection< CloudType >, PatchInjection< CloudType >, and NoInjection< CloudType >.
Referenced by InjectionModel< CloudType >::inject(), and InjectionModel< CloudType >::injectSteadyState().
|
pure virtual |
Set the parcel properties.
Implemented in ConeNozzleInjection< CloudType >, KinematicLookupTableInjection< CloudType >, FieldActivatedInjection< CloudType >, ConeInjection< CloudType >, InflationInjection< CloudType >, ReactingMultiphaseLookupTableInjection< CloudType >, ReactingLookupTableInjection< CloudType >, ThermoLookupTableInjection< CloudType >, CellZoneInjection< CloudType >, PatchFlowRateInjection< CloudType >, ManualInjection< CloudType >, PatchInjection< CloudType >, and NoInjection< CloudType >.
Referenced by InjectionModel< CloudType >::inject(), and InjectionModel< CloudType >::injectSteadyState().
|
pure virtual |
Flag to identify whether model fully describes the parcel.
Implemented in ConeNozzleInjection< CloudType >, KinematicLookupTableInjection< CloudType >, FieldActivatedInjection< CloudType >, ConeInjection< CloudType >, InflationInjection< CloudType >, ReactingMultiphaseLookupTableInjection< CloudType >, ReactingLookupTableInjection< CloudType >, ThermoLookupTableInjection< CloudType >, CellZoneInjection< CloudType >, PatchFlowRateInjection< CloudType >, ManualInjection< CloudType >, PatchInjection< CloudType >, and NoInjection< CloudType >.
Referenced by InjectionModel< CloudType >::inject(), and InjectionModel< CloudType >::injectSteadyState().
|
virtual |
Write injection info to stream.
Definition at line 629 of file InjectionModel.C.
References InjectionModel< CloudType >::massInjected_, subModelBase::modelName(), InjectionModel< CloudType >::nInjections_, Foam::nl, InjectionModel< CloudType >::parcelsAddedTotal_, subModelBase::setModelProperty(), InjectionModel< CloudType >::timeStep0_, and CloudSubModelBase< CloudType >::writeTime().
|
protected |
Start of injection [s].
Definition at line 96 of file InjectionModel.H.
Referenced by InjectionModel< CloudType >::inject(), and InjectionModel< CloudType >::InjectionModel().
|
protected |
Total volume of particles introduced by this injector [m^3].
Definition at line 100 of file InjectionModel.H.
|
protected |
Total mass to inject [kg].
Definition at line 103 of file InjectionModel.H.
Referenced by InjectionModel< CloudType >::averageParcelMass(), InjectionModel< CloudType >::InjectionModel(), and InjectionModel< CloudType >::injectSteadyState().
|
protected |
Mass flow rate profile for steady calculations.
Definition at line 106 of file InjectionModel.H.
Referenced by InjectionModel< CloudType >::InjectionModel(), and InjectionModel< CloudType >::injectSteadyState().
|
protected |
Total mass injected to date [kg].
Definition at line 109 of file InjectionModel.H.
Referenced by InjectionModel< CloudType >::info().
|
protected |
Number of injections counter.
Definition at line 115 of file InjectionModel.H.
Referenced by InjectionModel< CloudType >::info().
|
protected |
Running counter of total number of parcels added.
Definition at line 118 of file InjectionModel.H.
Referenced by InjectionModel< CloudType >::info().
|
protected |
Parcel basis enumeration.
Definition at line 124 of file InjectionModel.H.
Referenced by InjectionModel< CloudType >::InjectionModel().
|
protected |
nParticle to assign to parcels when the 'fixed' basis
is selected
Definition at line 128 of file InjectionModel.H.
Referenced by InjectionModel< CloudType >::InjectionModel().
|
protected |
Continuous phase time at start of injection time step [s].
Definition at line 131 of file InjectionModel.H.
Referenced by InjectionModel< CloudType >::inject(), and InjectionModel< CloudType >::injectSteadyState().
|
protected |
Time at start of injection time step [s].
Definition at line 134 of file InjectionModel.H.
Referenced by InjectionModel< CloudType >::info().
|
protected |
Volume that should have been injected, but would lead to.
less than 1 particle per parcel
Definition at line 138 of file InjectionModel.H.
Referenced by InjectionModel< CloudType >::inject().