SemiImplicitSource< Type > Class Template Reference

Applies semi-implicit source within a specified region for Type, where <Type>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor. The source rate coefficients are specified as pairs of Su-Sp coefficients, i.e.: More...

Inheritance diagram for SemiImplicitSource< Type >:
[legend]
Collaboration diagram for SemiImplicitSource< Type >:
[legend]

Public Types

enum  volumeModeType { vmAbsolute , vmSpecific }
 Options for the volume mode type. More...
 
- Public Types inherited from cellSetOption
enum  selectionModeType {
  smAll , smCellSet , smCellZone , smPoints ,
  smGeometric
}
 Enumeration for selection mode types. More...
 

Public Member Functions

 TypeName ("SemiImplicitSource")
 Runtime type information. More...
 
 SemiImplicitSource (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh)
 Construct from components. More...
 
volumeModeType volumeMode () const noexcept
 The volume mode. More...
 
volumeModeTypevolumeMode () noexcept
 Modifiable access to the volume mode. More...
 
virtual void addSup (fvMatrix< Type > &eqn, const label fieldi)
 Add explicit contribution to incompressible equation. More...
 
virtual void addSup (const volScalarField &rho, fvMatrix< Type > &eqn, const label fieldi)
 Add explicit contribution to compressible equation. More...
 
virtual bool read (const dictionary &dict)
 Read source dictionary. More...
 
- Public Member Functions inherited from cellSetOption
 TypeName ("cellSetOption")
 Runtime type information. More...
 
 cellSetOption (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh)
 Construct from components. More...
 
virtual ~cellSetOption ()=default
 Destructor. More...
 
scalar timeStart () const noexcept
 Return const access to the time start. More...
 
scalar duration () const noexcept
 Return const access to the duration. More...
 
bool inTimeLimits (const scalar timeValue) const
 True if within time limits. More...
 
selectionModeType selectionMode () const noexcept
 Return the cell selection mode. More...
 
bool useSubMesh () const noexcept
 True if sub-selection should be used. More...
 
const wordRezoneName () const noexcept
 
scalar V () const noexcept
 Return const access to the total cell volume. More...
 
const labelListcells () const noexcept
 Return const access to the cell selection. More...
 
scalar timeStart (scalar val) noexcept
 Adjust the time start, return the old value. More...
 
scalar duration (scalar val) noexcept
 Adjust the duration, return the old value. More...
 
virtual bool isActive ()
 Is the source active? More...
 
virtual bool read (const dictionary &dict)
 Read source dictionary. More...
 
const wordcellSetName () const noexcept
 
- Public Member Functions inherited from option
 TypeName ("option")
 Runtime type information. More...
 
 declareRunTimeSelectionTable (autoPtr, option, dictionary,(const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh),(name, modelType, dict, mesh))
 
 option (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh)
 Construct from components. More...
 
autoPtr< optionclone () const
 Return clone. More...
 
virtual ~option ()=default
 Destructor. More...
 
const wordname () const noexcept
 Return const access to the source name. More...
 
const fvMeshmesh () const noexcept
 Return const access to the mesh database. More...
 
const dictionarycoeffs () const noexcept
 Return dictionary. More...
 
bool active () const noexcept
 True if source is active. More...
 
void setApplied (const label fieldi)
 Set the applied flag to true for field index fieldi. More...
 
bool active (const bool on) noexcept
 Change source active flag, return previous value. More...
 
virtual bool isActive ()
 Is the source active? More...
 
virtual label applyToField (const word &fieldName) const
 Return index of field name if found in fieldNames list. More...
 
virtual void checkApplied () const
 Check that the source has been applied. More...
 
virtual void addSup (fvMatrix< scalar > &eqn, const label fieldi)
 
virtual void addSup (fvMatrix< vector > &eqn, const label fieldi)
 
virtual void addSup (fvMatrix< symmTensor > &eqn, const label fieldi)
 
virtual void addSup (fvMatrix< sphericalTensor > &eqn, const label fieldi)
 
virtual void addSup (fvMatrix< tensor > &eqn, const label fieldi)
 
virtual void addSup (const volScalarField &rho, fvMatrix< scalar > &eqn, const label fieldi)
 
virtual void addSup (const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi)
 
virtual void addSup (const volScalarField &rho, fvMatrix< symmTensor > &eqn, const label fieldi)
 
virtual void addSup (const volScalarField &rho, fvMatrix< sphericalTensor > &eqn, const label fieldi)
 
virtual void addSup (const volScalarField &rho, fvMatrix< tensor > &eqn, const label fieldi)
 
virtual void addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< scalar > &eqn, const label fieldi)
 
virtual void addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi)
 
virtual void addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< symmTensor > &eqn, const label fieldi)
 
virtual void addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< sphericalTensor > &eqn, const label fieldi)
 
virtual void addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< tensor > &eqn, const label fieldi)
 
virtual void constrain (fvMatrix< scalar > &eqn, const label fieldi)
 
virtual void constrain (fvMatrix< vector > &eqn, const label fieldi)
 
virtual void constrain (fvMatrix< sphericalTensor > &eqn, const label fieldi)
 
virtual void constrain (fvMatrix< symmTensor > &eqn, const label fieldi)
 
virtual void constrain (fvMatrix< tensor > &eqn, const label fieldi)
 
virtual void correct (volScalarField &field)
 
virtual void correct (volVectorField &field)
 
virtual void correct (volSphericalTensorField &field)
 
virtual void correct (volSymmTensorField &field)
 
virtual void correct (volTensorField &field)
 
virtual void postProcessSens (scalarField &sensField, const word &fieldName=word::null, const word &designVariablesName=word::null)
 
virtual void postProcessSens (vectorField &sensField, const word &fieldName=word::null, const word &designVariablesName=word::null)
 
virtual void postProcessSens (tensorField &sensField, const word &fieldName=word::null, const word &designVariablesName=word::null)
 
virtual void writeHeader (Ostream &) const
 Write the source header information. More...
 
virtual void writeFooter (Ostream &) const
 Write the source footer information. More...
 
virtual void writeData (Ostream &) const
 Write the source properties. More...
 
virtual bool read (const dictionary &dict)
 Read source dictionary. More...
 

Static Public Attributes

static const Enum< volumeModeTypevolumeModeTypeNames_
 Names for volumeModeType. More...
 
- Static Public Attributes inherited from cellSetOption
static const Enum< selectionModeTypeselectionModeTypeNames_
 List of selection mode type names. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from option
static autoPtr< optionNew (const word &name, const dictionary &dict, const fvMesh &mesh)
 Return a reference to the selected fvOption model. More...
 
- Public Attributes inherited from option
bool log
 Switch write log to Info. More...
 
- Protected Member Functions inherited from cellSetOption
void setSelection (const dictionary &dict)
 Set cell selection name or points selection from dictionary input. More...
 
void setCellSelection ()
 Set the cell selection based on user input selection mode. More...
 
void setVol ()
 Recalculate the volume. More...
 
- Protected Member Functions inherited from option
void resetApplied ()
 Resize/reset applied flag list for all fieldNames_ entries. More...
 
- Protected Attributes inherited from cellSetOption
scalar timeStart_
 Start time of fvOption. More...
 
scalar duration_
 Duration of fvOption execution starting from timeStart. More...
 
selectionModeType selectionMode_
 Cell selection mode. More...
 
wordRe zoneName_
 Name of set/zone for "cellSet" and "cellZone" selectionMode. More...
 
List< pointpoints_
 List of points for "points" selectionMode. More...
 
dictionary geometricSelection_
 Dictionary entries for "geometric" (topoSetCellSource) selection. More...
 
labelList cells_
 Set of cells to apply source to. More...
 
scalar V_
 Sum of cell volumes. More...
 
- Protected Attributes inherited from option
const word name_
 Source name. More...
 
const word modelType_
 Model type. More...
 
const fvMeshmesh_
 Reference to the mesh database. More...
 
dictionary dict_
 Top level source dictionary. More...
 
dictionary coeffs_
 Dictionary containing source coefficients. More...
 
wordList fieldNames_
 Field names to apply source to - populated by derived models. More...
 
List< boolapplied_
 Applied flag list - corresponds to each fieldNames_ entry. More...
 
bool active_
 Source active flag. More...
 

Detailed Description

template<class Type>
class Foam::fv::SemiImplicitSource< Type >

Applies semi-implicit source within a specified region for Type, where <Type>=Scalar/Vector/SphericalTensor/SymmTensor/Tensor. The source rate coefficients are specified as pairs of Su-Sp coefficients, i.e.:

\[ S(x) = S_u + S_p x \]

where

\( S(x) \) = net source for field 'x'
\( S_u \) = explicit source contribution
\( S_p \) = linearised implicit contribution
Usage
Minimal example by using constant/fvOptions:
<Type>SemiImplicitSource1
{
    // Mandatory entries (unmodifiable)
    type                <Type>SemiImplicitSource;

    // Mandatory entries (runtime modifiable)
    volumeMode          <volumeModeType>;

    // Specification of sources (OpenFOAM-2206 and newer)
    sources
    {
        // Specified as explicit(Su)/implicit(Sp) tuple:
        k           (30.7 0);
        epsilon     (1.5  0);

        // Specified as Function1 or exprField
        k
        {
            // Time-ramp from 0 to 30.7 at time 5
            explicit table ((0 0) (5 30.7));
            implicit none;
        }
        epsilon
        {
            explicit
            {
                type        exprField:
                expression  "(mag(pos()) < 0.1) ? 1.5 : 0";
            }
        }
    }

    // Traditional specification of sources (OpenFOAM-2112 and older)
    injectionRateSuSp
    {
        // Specified as explicit(Su)/implicit(Sp) tuple:
        k           (30.7 0);
        epsilon     (1.5  0);

        // Specified as Function1
        k
        {
            // Time-ramp from 0 to 30.7 at time 5
            Su  table ((0 0) (5 30.7));
            Sp  0;
        }
        epsilon
        {
            Su  1.5;
            Sp  0;
        }
    }

    // Mandatory/Optional (inherited) entries
    ...
}

where the entries mean:

Property Description Type Reqd Dflt
type

Type name: <Type>SemiImplicitSource

word yes -
volumeMode Volume mode type word yes -
sources Explicit/implicit sources dict cndtnl -
injectionRateSuSp Explicit/implicit sources dict cndtnl -

The inherited entries are elaborated in:

Options for the volumeMode entry:

      absolute  | Values are given as \<quantity\>
      specific  | Values are given as \<quantity\>/m3
Note
Missing explicit/implicit, Su/Sp entries are equivalent to constant values of zero. However, at one entry must be supplied for the source terms.
To use the exprField (expression fields) handling, the sources dictionary form must be used.
See also
  • Foam::fvOption
Source files

Definition at line 211 of file SemiImplicitSource.H.

Member Enumeration Documentation

◆ volumeModeType

Options for the volume mode type.

Enumerator
vmAbsolute 
vmSpecific 

Definition at line 220 of file SemiImplicitSource.H.

Constructor & Destructor Documentation

◆ SemiImplicitSource()

SemiImplicitSource ( const word name,
const word modelType,
const dictionary dict,
const fvMesh mesh 
)

Construct from components.

Definition at line 215 of file SemiImplicitSource.C.

References dict, Foam::name(), and SemiImplicitSource< Type >::read().

Here is the call graph for this function:

Member Function Documentation

◆ TypeName()

TypeName ( "SemiImplicitSource< Type >"  )

Runtime type information.

◆ volumeMode() [1/2]

volumeModeType volumeMode ( ) const
inlinenoexcept

The volume mode.

Definition at line 294 of file SemiImplicitSource.H.

◆ volumeMode() [2/2]

volumeModeType & volumeMode ( )
inlinenoexcept

Modifiable access to the volume mode.

Definition at line 303 of file SemiImplicitSource.H.

◆ addSup() [1/2]

void addSup ( fvMatrix< Type > &  eqn,
const label  fieldi 
)
virtual

Add explicit contribution to incompressible equation.

Definition at line 234 of file SemiImplicitSource.C.

◆ addSup() [2/2]

void addSup ( const volScalarField rho,
fvMatrix< Type > &  eqn,
const label  fieldi 
)
virtual

Add explicit contribution to compressible equation.

Definition at line 245 of file SemiImplicitSource.C.

References dimensionSet::checking(), fvMatrix< Type >::dimensions(), Foam::dimVolume, Foam::endl(), Foam::equal(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::Info, Foam::mag(), Time::New(), Foam::nl, Foam::notNull(), psi, fvMatrix< Type >::psi(), tmp< T >::ref(), rho, Foam::fvm::SuSp(), tmp< T >::valid(), dimensioned< Type >::value(), and Foam::Zero.

Here is the call graph for this function:

◆ read()

bool read ( const dictionary dict)
virtual

Read source dictionary.

Reimplemented from cellSetOption.

Definition at line 524 of file SemiImplicitSource.C.

References dict, dictionary::findDict(), keyType::LITERAL, and kEpsilonLopesdaCosta< BasicTurbulenceModel >::read().

Referenced by SemiImplicitSource< Type >::SemiImplicitSource().

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

Member Data Documentation

◆ volumeModeTypeNames_

const Foam::Enum< typename Foam::fv::SemiImplicitSource< Type >::volumeModeType > volumeModeTypeNames_
static

Names for volumeModeType.

Definition at line 227 of file SemiImplicitSource.H.


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