actuationDiskSource Class Reference

Applies sources on velocity (i.e. U) within a specified region to enable actuator disk models for aero/hydro thrust loading of horizontal axis turbines on surrounding flow field in terms of energy conversion processes. More...

Inheritance diagram for actuationDiskSource:
[legend]
Collaboration diagram for actuationDiskSource:
[legend]

Public Member Functions

 TypeName ("actuationDiskSource")
 Runtime type information. More...
 
 actuationDiskSource ()=delete
 No default construct. More...
 
 actuationDiskSource (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh)
 Construct from components. More...
 
 actuationDiskSource (const actuationDiskSource &)=delete
 No copy construct. More...
 
void operator= (const actuationDiskSource &)=delete
 No copy assignment. More...
 
virtual ~actuationDiskSource ()=default
 Destructor. More...
 
const vectordiskDir () const
 Normal disk direction. More...
 
scalar diskArea () const
 Disk area. More...
 
virtual void addSup (fvMatrix< vector > &eqn, const label fieldi)
 Source term to momentum equation. More...
 
virtual void addSup (const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi)
 Source term to compressible momentum equation. More...
 
virtual void addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi)
 Source term to phase-compressible momentum equation. More...
 
virtual bool read (const dictionary &dict)
 Read 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...
 
- Public Member Functions inherited from writeFile
 writeFile (const objectRegistry &obr, const fileName &prefix, const word &name="undefined", const bool writeToFile=true)
 Construct from objectRegistry, prefix, fileName. More...
 
 writeFile (const objectRegistry &obr, const fileName &prefix, const word &name, const dictionary &dict, const bool writeToFile=true)
 
 writeFile (const writeFile &wf)
 Construct copy. More...
 
virtual ~writeFile ()=default
 Destructor. More...
 
virtual bool read (const dictionary &dict)
 Read. More...
 
virtual OFstreamfile ()
 Return access to the file (if only 1) More...
 
virtual bool writeToFile () const
 Flag to allow writing to file. More...
 
virtual bool canWriteHeader () const
 Flag to allow writing the header. More...
 
virtual label charWidth () const
 Return width of character stream output. More...
 
virtual void writeCommented (Ostream &os, const string &str) const
 Write a commented string to stream. More...
 
virtual void writeTabbed (Ostream &os, const string &str) const
 Write a tabbed string to stream. More...
 
virtual void writeHeader (Ostream &os, const string &str) const
 Write a commented header to stream. More...
 
virtual void writeCurrentTime (Ostream &os) const
 Write the current time to stream. More...
 
virtual void writeBreak (Ostream &os) const
 Write a break marker to the stream. More...
 
template<class Type >
void writeHeaderValue (Ostream &os, const string &property, const Type &value) const
 Write a (commented) header property and value pair. More...
 
template<class Type >
void writeValue (Ostream &os, const Type &val) const
 Write a given value to stream with the space delimiter. More...
 

Protected Types

enum  forceMethodType { FROUDE , VARIABLE_SCALING }
 Options for the force computation method types. More...
 
enum  monitorMethodType { POINTS , CELLSET }
 Options for the incoming velocity monitoring method types. More...
 

Protected Member Functions

virtual void writeFileHeader (Ostream &os)
 Output file header information. 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 Member Functions inherited from writeFile
void initStream (Ostream &os) const
 Initialise the output stream for writing. More...
 
fileName baseFileDir () const
 Return the base directory for output. More...
 
fileName baseTimeDir () const
 Return the base directory for the current time value. More...
 
virtual autoPtr< OFstreamcreateFile (const word &name, scalar timeValue) const
 Return autoPtr to a new file for a given time. More...
 
virtual autoPtr< OFstreamcreateFile (const word &name) const
 Return autoPtr to a new file using the simulation start time. More...
 
virtual void resetFile (const word &name)
 Reset internal file pointer to new file with new name. More...
 
Omanip< int > valueWidth (const label offset=0) const
 Return the value width when writing to stream with optional offset. More...
 
void operator= (const writeFile &)=delete
 No copy assignment. More...
 

Protected Attributes

enum forceMethodType forceMethod_
 The type of the force computation method. More...
 
enum monitorMethodType monitorMethod_
 The type of incoming velocity monitoring method. More...
 
label sink_
 Flag for body forces to act as a source (false) or a sink (true) More...
 
scalar writeFileStart_
 Start time for file output. More...
 
scalar writeFileEnd_
 End time for file output. More...
 
scalar diskArea_
 Actuator disk planar surface area [m2]. More...
 
vector diskDir_
 Surface-normal vector of the actuator disk pointing downstream. More...
 
autoPtr< Function1< scalar > > UvsCpPtr_
 Velocity vs power coefficients. More...
 
autoPtr< Function1< scalar > > UvsCtPtr_
 Velocity vs thrust coefficients. More...
 
labelList monitorCells_
 Set of cells whereat the incoming velocity is monitored. 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...
 
- Protected Attributes inherited from writeFile
const objectRegistryfileObr_
 Reference to the region objectRegistry. More...
 
const fileName prefix_
 Prefix. More...
 
word fileName_
 Name of file. More...
 
autoPtr< OFstreamfilePtr_
 File pointer. More...
 
label writePrecision_
 Write precision. More...
 
bool writeToFile_
 Flag to enable/disable writing to file. More...
 
bool updateHeader_
 
bool writtenHeader_
 Flag to identify whether the header has been written. More...
 
bool useUserTime_
 
scalar startTime_
 Start time value. More...
 

Static Protected Attributes

static const Enum< forceMethodTypeforceMethodTypeNames
 Names for forceMethodType. More...
 
static const Enum< monitorMethodTypemonitorMethodTypeNames
 Names for monitorMethodType. More...
 

Additional Inherited Members

- Public Types inherited from cellSetOption
enum  selectionModeType {
  smAll , smCellSet , smCellZone , smPoints ,
  smGeometric
}
 Enumeration for selection mode types. More...
 
- 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...
 
- Static Public Attributes inherited from cellSetOption
static const Enum< selectionModeTypeselectionModeTypeNames_
 List of selection mode type names. More...
 
- Static Public Attributes inherited from writeFile
static label addChars = 8
 Additional characters for writing. More...
 

Detailed Description

Applies sources on velocity (i.e. U) within a specified region to enable actuator disk models for aero/hydro thrust loading of horizontal axis turbines on surrounding flow field in terms of energy conversion processes.

Available options for force computations:

  Froude          | Froude's one-dimensional ideal actuator disk method
  variableScaling | Variable-scaling actuator disk method

The expressions for Froude method:

\[ T = 2 \rho A | \vec{U_o} \cdot \vec{n} |^2 a (1-a) \]

with

\[ a = 1 - \frac{C_p}{C_T} \]

where

\( T \) = Thrust magnitude
\( \rho \) = Monitored incoming fluid density
\( A \) = Actuator disk planar surface area
\( \vec{U_o} \) = Incoming velocity spatial-averaged on monitored region
\( \vec{n} \) = Surface-normal vector of the actuator disk pointing downstream
\( a \) = Axial induction factor
\( C_p \) = Power coefficient
\( C_T \) = Thrust coefficient

The expressions for variableScaling method:

\[ T = 0.5 \rho A | \vec{U_m} \cdot \vec{n} |^2 C_T^* \]

with

\[ C_T^* = C_T \left( \frac{ |\vec{U_{ref}}| }{ |\vec{U_m}| } \right)^2 \]

where

\( T \) = Thrust magnitude
\( \rho \) = Monitored incoming fluid density
\( A \) = Actuator disk planar surface area
\( \vec{U_m} \) = Incoming velocity spatial-averaged on actuator disk
\( \vec{n} \) = Surface-normal vector of the actuator disk pointing downstream
\( \vec{U_{ref}} \) = Incoming velocity spatial-averaged on monitored region
\( C_T \) = Thrust coefficient
\( C_T^* \) = Calibrated thrust coefficient

Reference

        Froude's one-dimensional ideal actuator disk (tags:F,BJSB):
            Froude, R. E. (1889).
            On the part played in propulsion by differences of fluid pressure.
            Trans. Inst. Naval Architects, 30, 390.

            Burton, T., Jenkins, N., Sharpe, D., & Bossanyi, E. (2011).
            Wind energy handbook, 2nd edition.
            Chichester, the United Kingdom. John Wiley & Sons.
            Print ISBN:978-0-470-69975-1
            DOI:10.1002/9781119992714

        Variable-scaling method (tags:LSRMKT,LS):
            van der Laan, M. P., Sørensen, N. N., Réthoré, P. E.,
            Mann, J., Kelly, M. C., & Troldborg, N. (2015).
            The k‐ε‐fP model applied to double wind turbine
            wakes using different actuator disk force methods.
            Wind Energy, 18(12), 2223-2240.
            DOI:10.1002/we.1816

            van der Laan, M. P., Sørensen, N. N., Réthoré, P. E., Mann, J.,
            Kelly, M. C., Troldborg, N., Hansen, K. S., & Murcia, J. P. (2015).
            The k‐ε‐fP model applied to wind farms.
            Wind Energy, 18(12), 2065-2084.
            DOI:10.1002/we.1804

Sources applied to:

      U         | Velocity    [m/s]

Required fields:

      U         | Velocity    [m/s]
Usage
Minimal example by using constant/fvOptions:
actuationDiskSource1
{
    // Mandatory entries (unmodifiable)
    type            actuationDiskSource;

    // Mandatory entries (runtime modifiable)
    diskArea        40.0;
    diskDir         (1 0 0);
    Cp              <Function1>;
    Ct              <Function1>;

    // Conditional optional entries (unmodifiable)
    monitorMethod   <points|cellSet>;
    monitorCoeffs
    {
        // Option-1
        points
        (
            (p1x p1y p1z)
            (p2x p2y p2z)
            ...
        );

        // Option-2
        cellSet     <monitorCellSet>;
    }

    // Optional entries (unmodifiable)
    variant         <forceMethod>;

    // Optional entries (runtime modifiable)
    sink            true;
    writeFileStart  0;
    writeFileEnd    100;

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

where the entries mean:

Property Description Type Reqd Dflt
type Type name: actuationDiskSource word yes -
diskArea Actuator disk planar surface area scalar yes -
diskDir

Surface-normal vector of the actuator disk

pointing downstream

vector yes -
Cp Power coefficient Function1 yes -
Ct Thrust coefficient Function1 yes -
monitorMethod

Type of incoming velocity monitoring method

  • see below
word no points
variant

Type of the force computation method - see below

word no Froude
sink

Flag for body forces to act as a source (false)

or a sink (true)

bool no true
writeFileStart Start time for file output scalar no 0
writeFileEnd End time for file output scalar no VGREAT

The inherited entries are elaborated in:

Options for the monitorMethod entry:

      points  | Monitor incoming velocity field at a given set of points
      cellSet | Monitor incoming velocity field at a given cellSet

Options for the variant entry:

      Froude          | Froude's one-dimensional ideal actuator disk method
      variableScaling | Variable-scaling actuator disk method
Source files

Definition at line 365 of file actuationDiskSource.H.

Member Enumeration Documentation

◆ forceMethodType

enum forceMethodType
protected

Options for the force computation method types.

Enumerator
FROUDE 

"Froude's ideal actuator disk method"

VARIABLE_SCALING 

"Variable-scaling actuator disk method"

Definition at line 375 of file actuationDiskSource.H.

◆ monitorMethodType

enum monitorMethodType
protected

Options for the incoming velocity monitoring method types.

Enumerator
POINTS 

"A set of points"

CELLSET 

"A cellSet"

Definition at line 385 of file actuationDiskSource.H.

Constructor & Destructor Documentation

◆ actuationDiskSource() [1/3]

actuationDiskSource ( )
delete

No default construct.

◆ actuationDiskSource() [2/3]

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

Construct from components.

Definition at line 167 of file actuationDiskSource.C.

References fv(), and Foam::mag().

Here is the call graph for this function:

◆ actuationDiskSource() [3/3]

No copy construct.

◆ ~actuationDiskSource()

virtual ~actuationDiskSource ( )
virtualdefault

Destructor.

Member Function Documentation

◆ writeFileHeader()

void writeFileHeader ( Ostream os)
protectedvirtual

Output file header information.

Definition at line 71 of file actuationDiskSource.C.

References Foam::endl(), actuationDiskSource::forceMethod_, actuationDiskSource::FROUDE, os(), and actuationDiskSource::VARIABLE_SCALING.

Here is the call graph for this function:

◆ TypeName()

TypeName ( "actuationDiskSource"  )

Runtime type information.

◆ operator=()

void operator= ( const actuationDiskSource )
delete

No copy assignment.

◆ diskDir()

const vector & diskDir ( ) const
inline

Normal disk direction.

Definition at line 505 of file actuationDiskSource.H.

References actuationDiskSource::diskDir_.

◆ diskArea()

scalar diskArea ( ) const
inline

Disk area.

Definition at line 511 of file actuationDiskSource.H.

References actuationDiskSource::diskArea_.

◆ addSup() [1/3]

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

Source term to momentum equation.

Reimplemented from option.

Reimplemented in radialActuationDiskSource.

Definition at line 240 of file actuationDiskSource.C.

◆ addSup() [2/3]

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

Source term to compressible momentum equation.

Reimplemented from option.

Reimplemented in radialActuationDiskSource.

Definition at line 253 of file actuationDiskSource.C.

References rho.

◆ addSup() [3/3]

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

Source term to phase-compressible momentum equation.

Reimplemented from option.

Definition at line 267 of file actuationDiskSource.C.

References alpha, and rho.

◆ read()

bool read ( const dictionary dict)
virtual

Read dictionary.

Reimplemented from cellSetOption.

Reimplemented in radialActuationDiskSource.

Definition at line 282 of file actuationDiskSource.C.

References dict, Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, Foam::mag(), and kEpsilonLopesdaCosta< BasicTurbulenceModel >::read().

Here is the call graph for this function:

Member Data Documentation

◆ forceMethodTypeNames

const Foam::Enum< Foam::fv::actuationDiskSource::forceMethodType > forceMethodTypeNames
staticprotected

Names for forceMethodType.

Definition at line 382 of file actuationDiskSource.H.

◆ monitorMethodTypeNames

const Foam::Enum< Foam::fv::actuationDiskSource::monitorMethodType > monitorMethodTypeNames
staticprotected

Names for monitorMethodType.

Definition at line 392 of file actuationDiskSource.H.

◆ forceMethod_

enum forceMethodType forceMethod_
protected

The type of the force computation method.

Definition at line 398 of file actuationDiskSource.H.

Referenced by actuationDiskSource::writeFileHeader().

◆ monitorMethod_

enum monitorMethodType monitorMethod_
protected

The type of incoming velocity monitoring method.

Definition at line 401 of file actuationDiskSource.H.

◆ sink_

label sink_
protected

Flag for body forces to act as a source (false) or a sink (true)

Definition at line 404 of file actuationDiskSource.H.

◆ writeFileStart_

scalar writeFileStart_
protected

Start time for file output.

Definition at line 407 of file actuationDiskSource.H.

◆ writeFileEnd_

scalar writeFileEnd_
protected

End time for file output.

Definition at line 410 of file actuationDiskSource.H.

◆ diskArea_

scalar diskArea_
protected

Actuator disk planar surface area [m2].

Definition at line 413 of file actuationDiskSource.H.

Referenced by actuationDiskSource::diskArea().

◆ diskDir_

vector diskDir_
protected

Surface-normal vector of the actuator disk pointing downstream.

Definition at line 416 of file actuationDiskSource.H.

Referenced by actuationDiskSource::diskDir().

◆ UvsCpPtr_

autoPtr<Function1<scalar> > UvsCpPtr_
protected

Velocity vs power coefficients.

Definition at line 419 of file actuationDiskSource.H.

◆ UvsCtPtr_

autoPtr<Function1<scalar> > UvsCtPtr_
protected

Velocity vs thrust coefficients.

Definition at line 422 of file actuationDiskSource.H.

◆ monitorCells_

labelList monitorCells_
protected

Set of cells whereat the incoming velocity is monitored.

Definition at line 425 of file actuationDiskSource.H.


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