ConeInjection< CloudType > Class Template Reference

This injector injects particles in a number of cones. The user specifies a position and a direction to inject at, and two angles to inject between. Optionally, this injector can introduce particles over a disc, instead of at a point, in which case inner and outer diameters of the disc are also specified. More...

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

Public Types

enum  injectionMethod { imPoint , imDisc }
 Injection method enumeration. More...
 
enum  flowType { ftConstantVelocity , ftPressureDrivenVelocity , ftFlowRateAndDischarge }
 Flow type enumeration. More...
 
- Public Types inherited from InjectionModel< CloudType >
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 ("coneInjection")
 Runtime type information. More...
 
 ConeInjection (const dictionary &dict, CloudType &owner, const word &modelName)
 Construct from dictionary. More...
 
 ConeInjection (const ConeInjection< CloudType > &im)
 Construct copy. More...
 
virtual autoPtr< InjectionModel< CloudType > > clone () const
 Construct and return a clone. More...
 
virtual ~ConeInjection ()
 Destructor. More...
 
virtual void topoChange ()
 Set injector locations when mesh is updated. More...
 
scalar timeEnd () const
 Return the end-of-injection time. More...
 
virtual label nParcelsToInject (const scalar time0, const scalar time1)
 Number of parcels to introduce relative to SOI. More...
 
virtual scalar massToInject (const scalar time0, const scalar time1)
 Parcel mass to introduce relative to SOI. More...
 
virtual void setPositionAndCell (const label parcelI, const label nParcels, const scalar time, barycentric &coordinates, label &celli, label &tetFacei, label &tetPti, label &facei)
 Set the injection position and owner cell, tetFace and tetPt. More...
 
virtual void setProperties (const label parcelI, const label nParcels, const scalar time, typename CloudType::parcelType::trackingData &td, typename CloudType::parcelType &parcel)
 Set the parcel properties. More...
 
virtual bool fullyDescribed () const
 Flag to identify whether model fully describes the parcel. More...
 
- Public Member Functions inherited from InjectionModel< CloudType >
 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 ~InjectionModel ()
 Destructor. More...
 
scalar timeStart () const
 Return the start-of-injection time. More...
 
scalar massInjected () const
 Return mass of particles injected (cumulative) 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 setProperties (const label parcelI, const label nParcels, const scalar time, typename parcelType::trackingData &td, parcelType &parcel)=0
 Set the parcel properties. 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...
 

Additional Inherited Members

- Static Public Member Functions inherited from InjectionModel< CloudType >
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...
 
- Static Public Member Functions inherited from injectionModel
static scalar globalScalar01 (randomGenerator &rndGen)
 Return a scalar uniformly distributed between zero and one. Samples. More...
 
- Static Public Attributes inherited from injectionModel
static const NamedEnum< uniformParcelSize, 3 > uniformParcelSizeNames_
 Names of the parcels' uniform size. More...
 
- Protected Member Functions inherited from InjectionModel< CloudType >
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...
 
autoPtr< Function1< scalar > > readMassFlowRate (const dictionary &dict, CloudType &owner, const scalar duration)
 Read the mass flow rate function for continuous injections. More...
 
autoPtr< Function1< 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...
 
virtual void preInject (typename parcelType::trackingData &td)
 Pre injection hook. More...
 
virtual void postInject (const label parcelsAdded, const scalar massAdded, typename parcelType::trackingData &td)
 Post injection hook. More...
 
- Protected Member Functions inherited from subModelBase
bool inLine () const
 Flag to indicate whether data is/was read in-line. More...
 
- Protected Attributes inherited from InjectionModel< CloudType >
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...
 

Detailed Description

template<class CloudType>
class Foam::ConeInjection< CloudType >

This injector injects particles in a number of cones. The user specifies a position and a direction to inject at, and two angles to inject between. Optionally, this injector can introduce particles over a disc, instead of at a point, in which case inner and outer diameters of the disc are also specified.

The velocity is specified either as constant, or it is calculated from an injection pressure, or it is calculated from the injector mass flow rate and a discharge coefficient; i.e.:

Constant velocity:

\[ U = U_{constant} \]

Pressure driven velocity:

\[ U = \sqrt{2(p_{injection} - p)/\rho} \]

Flow rate and discharge:

\[ U = \dot{m}/(\rho A C_{discharge}) \]

Usage
Property Description Required Default
position The injection position yes
direction The injection direction yes
thetaInner The inner cone angle yes
thetaOuter The outer cone angle yes
injectionMethod Inject at a point or on a disc no point
dInner The inner disc diameter if disc or flowRateAndDischarge
dInner The outer disc diameter if disc or flowRateAndDischarge
flowType Inject with constantVelocity, pressureDrivenVelocity or flowRateAndDischarge no constantVelocity
Umag The injection velocity if constantVelocity
Pinj The injection pressure if pressureDrivenVelocity
Cd The discharge coefficient if flowRateAndDischarge

Example specification:

    injectionModels
    {
        model1
        {
            type            coneInjection;

            // Times
            SOI             0;
            duration        1;

            // Quantities
            parcelsPerSecond 1000000;

            // - Inject parcels with a fixed number of particles
            nParticle       1;

            //// - Or, inject a specified mass of particles
            //massTotal       6.0e-6;
            //uniformParcelSize volume;

            // Sizes
            sizeDistribution
            {
                type        fixedValue;
                fixedValueDistribution
                {
                    value   0.0025;
                }
            }

            // Geometry
            position        (-0.15 -0.1 0);
            direction       (1 0 0);
            thetaInner      0;
            thetaOuter      45;

            // - Inject at a point
            injectionMethod point;

            //// - Or, inject over a disc:
            //injectionMethod disc;
            //dInner          0;
            //dOuter          0.05;

            // Velocity

            // - Inject with constant velocity
            flowType        constantVelocity;
            Umag            1;

            //// - Or, inject with flow rate and discharge coefficient
            ////   This also requires massTotal, dInner and dOuter
            //flowType        flowRateAndDischarge;
            //Cd              0.9;

            //// - Or, inject at a pressure
            //flowType        pressureDrivenVelocity;
            //Pinj            10e5;
        }
    }
Source files

Definition at line 215 of file ConeInjection.H.

Member Enumeration Documentation

◆ injectionMethod

Injection method enumeration.

Enumerator
imPoint 
imDisc 

Definition at line 222 of file ConeInjection.H.

◆ flowType

enum flowType

Flow type enumeration.

Enumerator
ftConstantVelocity 
ftPressureDrivenVelocity 
ftFlowRateAndDischarge 

Definition at line 229 of file ConeInjection.H.

Constructor & Destructor Documentation

◆ ConeInjection() [1/2]

ConeInjection ( const dictionary dict,
CloudType owner,
const word modelName 
)

Construct from dictionary.

Definition at line 141 of file ConeInjection.C.

References ConeInjection< CloudType >::topoChange().

Here is the call graph for this function:

◆ ConeInjection() [2/2]

Construct copy.

Definition at line 223 of file ConeInjection.C.

◆ ~ConeInjection()

~ConeInjection
virtual

Destructor.

Definition at line 254 of file ConeInjection.C.

Member Function Documentation

◆ TypeName()

TypeName ( "coneInjection"  )

Runtime type information.

◆ clone()

virtual autoPtr<InjectionModel<CloudType> > clone ( ) const
inlinevirtual

Construct and return a clone.

Implements InjectionModel< CloudType >.

Definition at line 334 of file ConeInjection.H.

◆ topoChange()

void topoChange
virtual

Set injector locations when mesh is updated.

Reimplemented from InjectionModel< CloudType >.

Definition at line 261 of file ConeInjection.C.

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

Here is the caller graph for this function:

◆ timeEnd()

Foam::scalar timeEnd
virtual

Return the end-of-injection time.

Implements InjectionModel< CloudType >.

Definition at line 279 of file ConeInjection.C.

◆ nParcelsToInject()

Foam::label nParcelsToInject ( const scalar  time0,
const scalar  time1 
)
virtual

Number of parcels to introduce relative to SOI.

Implements InjectionModel< CloudType >.

Definition at line 286 of file ConeInjection.C.

◆ massToInject()

Foam::scalar massToInject ( const scalar  time0,
const scalar  time1 
)
virtual

Parcel mass to introduce relative to SOI.

Implements InjectionModel< CloudType >.

Definition at line 313 of file ConeInjection.C.

◆ setPositionAndCell()

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

Set the injection position and owner cell, tetFace and tetPt.

Implements InjectionModel< CloudType >.

Definition at line 331 of file ConeInjection.C.

References Foam::cos(), n, Foam::normalised(), Foam::perpendicular(), Foam::pos(), rndGen(), Foam::sin(), Foam::sqr(), Foam::sqrt(), Foam::constant::mathematical::twoPi(), and dimensioned< Type >::value().

Here is the call graph for this function:

◆ setProperties()

void setProperties ( const label  parcelI,
const label  nParcels,
const scalar  time,
typename CloudType::parcelType::trackingData &  td,
typename CloudType::parcelType parcel 
)
virtual

◆ fullyDescribed()

bool fullyDescribed
virtual

Flag to identify whether model fully describes the parcel.

Implements InjectionModel< CloudType >.

Definition at line 503 of file ConeInjection.C.


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