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...
Public Member Functions | |
TypeName ("actuationDiskSource") | |
actuationDiskSource ()=delete | |
actuationDiskSource (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh) | |
actuationDiskSource (const actuationDiskSource &)=delete | |
void | operator= (const actuationDiskSource &)=delete |
virtual | ~actuationDiskSource ()=default |
const vector & | diskDir () const |
scalar | diskArea () const |
virtual void | addSup (fvMatrix< vector > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi) |
virtual void | addSup (const volScalarField &alpha, const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi) |
virtual bool | read (const dictionary &dict) |
![]() | |
TypeName ("cellSetOption") | |
cellSetOption (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh) | |
virtual | ~cellSetOption ()=default |
scalar | timeStart () const noexcept |
scalar | duration () const noexcept |
bool | inTimeLimits (const scalar timeValue) const |
selectionModeType | selectionMode () const noexcept |
bool | useSubMesh () const noexcept |
const word & | cellSetName () const noexcept |
scalar | V () const noexcept |
const labelList & | cells () const noexcept |
scalar | timeStart (scalar val) noexcept |
scalar | duration (scalar val) noexcept |
virtual bool | isActive () |
![]() | |
TypeName ("option") | |
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) | |
autoPtr< option > | clone () const |
virtual | ~option ()=default |
const word & | name () const noexcept |
const fvMesh & | mesh () const noexcept |
const dictionary & | coeffs () const noexcept |
bool | active () const noexcept |
void | setApplied (const label fieldi) |
bool | active (const bool on) noexcept |
virtual label | applyToField (const word &fieldName) const |
virtual void | checkApplied () const |
virtual void | addSup (fvMatrix< scalar > &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< 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< 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 |
virtual void | writeFooter (Ostream &) const |
virtual void | writeData (Ostream &) const |
![]() | |
writeFile (const objectRegistry &obr, const fileName &prefix, const word &name="undefined", const bool writeToFile=true) | |
writeFile (const objectRegistry &obr, const fileName &prefix, const word &name, const dictionary &dict, const bool writeToFile=true) | |
writeFile (const writeFile &wf) | |
virtual | ~writeFile ()=default |
virtual OFstream & | file () |
virtual bool | writeToFile () const |
virtual bool | canWriteHeader () const |
virtual label | charWidth () const |
virtual void | writeCommented (Ostream &os, const string &str) const |
virtual void | writeTabbed (Ostream &os, const string &str) const |
virtual void | writeHeader (Ostream &os, const string &str) const |
virtual void | writeCurrentTime (Ostream &os) const |
virtual void | writeBreak (Ostream &os) const |
template<class Type > | |
void | writeHeaderValue (Ostream &os, const string &property, const Type &value) const |
Protected Types | |
enum | forceMethodType { FROUDE, VARIABLE_SCALING } |
enum | monitorMethodType { POINTS, CELLSET } |
Protected Member Functions | |
virtual void | writeFileHeader (Ostream &os) |
![]() | |
void | setSelection (const dictionary &dict) |
void | setCellSelection () |
void | setVol () |
![]() | |
void | resetApplied () |
![]() | |
void | initStream (Ostream &os) const |
fileName | baseFileDir () const |
fileName | baseTimeDir () const |
virtual autoPtr< OFstream > | createFile (const word &name, scalar timeValue) const |
virtual autoPtr< OFstream > | createFile (const word &name) const |
virtual void | resetFile (const word &name) |
Omanip< int > | valueWidth (const label offset=0) const |
void | operator= (const writeFile &)=delete |
Protected Attributes | |
enum forceMethodType | forceMethod_ |
enum monitorMethodType | monitorMethod_ |
label | sink_ |
scalar | writeFileStart_ |
scalar | writeFileEnd_ |
scalar | diskArea_ |
vector | diskDir_ |
autoPtr< Function1< scalar > > | UvsCpPtr_ |
autoPtr< Function1< scalar > > | UvsCtPtr_ |
labelList | monitorCells_ |
![]() | |
scalar | timeStart_ |
scalar | duration_ |
selectionModeType | selectionMode_ |
word | cellSetName_ |
List< point > | points_ |
labelList | cells_ |
scalar | V_ |
![]() | |
const word | name_ |
const word | modelType_ |
const fvMesh & | mesh_ |
dictionary | dict_ |
dictionary | coeffs_ |
wordList | fieldNames_ |
List< bool > | applied_ |
bool | active_ |
![]() | |
const objectRegistry & | fileObr_ |
const fileName | prefix_ |
word | fileName_ |
autoPtr< OFstream > | filePtr_ |
label | writePrecision_ |
bool | writeToFile_ |
bool | updateHeader_ |
bool | writtenHeader_ |
bool | useUserTime_ |
scalar | startTime_ |
Static Protected Attributes | |
static const Enum< forceMethodType > | forceMethodTypeNames |
static const Enum< monitorMethodType > | monitorMethodTypeNames |
Additional Inherited Members | |
![]() | |
enum | selectionModeType { smAll, smCellSet, smCellZone, smPoints } |
![]() | |
static autoPtr< option > | New (const word &name, const dictionary &dict, const fvMesh &mesh) |
![]() | |
bool | log |
![]() | |
static const Enum< selectionModeType > | selectionModeTypeNames_ |
![]() | |
static label | addChars = 8 |
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:
with
where
![]() | = | Thrust magnitude |
![]() | = | Monitored incoming fluid density |
![]() | = | Actuator disk planar surface area |
![]() | = | Incoming velocity spatial-averaged on monitored region |
![]() | = | Surface-normal vector of the actuator disk pointing downstream |
![]() | = | Axial induction factor |
![]() | = | Power coefficient |
![]() | = | Thrust coefficient |
The expressions for variableScaling
method:
with
where
![]() | = | Thrust magnitude |
![]() | = | Monitored incoming fluid density |
![]() | = | Actuator disk planar surface area |
![]() | = | Incoming velocity spatial-averaged on actuator disk |
![]() | = | Surface-normal vector of the actuator disk pointing downstream |
![]() | = | Incoming velocity spatial-averaged on monitored region |
![]() | = | Thrust coefficient |
![]() | = | 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]
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
Definition at line 361 of file actuationDiskSource.H.
|
protected |
Enumerator | |
---|---|
FROUDE | "Froude's ideal actuator disk method" |
VARIABLE_SCALING | "Variable-scaling actuator disk method" |
Definition at line 371 of file actuationDiskSource.H.
|
protected |
Enumerator | |
---|---|
POINTS | "A set of points" |
CELLSET | "A cellSet" |
Definition at line 381 of file actuationDiskSource.H.
|
delete |
actuationDiskSource | ( | const word & | name, |
const word & | modelType, | ||
const dictionary & | dict, | ||
const fvMesh & | mesh | ||
) |
Definition at line 158 of file actuationDiskSource.C.
References Foam::endl(), Foam::Info, Foam::name(), and option::resetApplied().
|
delete |
|
virtualdefault |
|
protectedvirtual |
Definition at line 63 of file actuationDiskSource.C.
References Foam::endl(), actuationDiskSource::forceMethod_, os(), and Foam::writeHeader().
TypeName | ( | "actuationDiskSource" | ) |
|
delete |
|
inline |
Definition at line 501 of file actuationDiskSource.H.
References actuationDiskSource::diskDir_.
|
inline |
Definition at line 507 of file actuationDiskSource.H.
References actuationDiskSource::diskArea_.
Reimplemented from option.
Reimplemented in radialActuationDiskSource.
Definition at line 231 of file actuationDiskSource.C.
|
virtual |
Reimplemented from option.
Reimplemented in radialActuationDiskSource.
Definition at line 244 of file actuationDiskSource.C.
References rho.
|
virtual |
Reimplemented from option.
Definition at line 258 of file actuationDiskSource.C.
References Foam::constant::atomic::alpha, and rho.
|
virtual |
Reimplemented from cellSetOption.
Reimplemented in radialActuationDiskSource.
Definition at line 272 of file actuationDiskSource.C.
References dict, Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, Foam::mag(), Foam::blockMeshTools::read(), and cellSetOption::read().
Referenced by radialActuationDiskSource::read().
|
staticprotected |
Definition at line 378 of file actuationDiskSource.H.
|
staticprotected |
Definition at line 388 of file actuationDiskSource.H.
|
protected |
Definition at line 394 of file actuationDiskSource.H.
Referenced by actuationDiskSource::writeFileHeader().
|
protected |
Definition at line 397 of file actuationDiskSource.H.
|
protected |
Definition at line 400 of file actuationDiskSource.H.
|
protected |
Definition at line 403 of file actuationDiskSource.H.
|
protected |
Definition at line 406 of file actuationDiskSource.H.
|
protected |
Definition at line 409 of file actuationDiskSource.H.
Referenced by actuationDiskSource::diskArea().
|
protected |
Definition at line 412 of file actuationDiskSource.H.
Referenced by actuationDiskSource::diskDir().
Definition at line 415 of file actuationDiskSource.H.
Definition at line 418 of file actuationDiskSource.H.
|
protected |
Definition at line 421 of file actuationDiskSource.H.
Copyright © 2011-2018 OpenFOAM | OPENFOAM® is a registered trademark of OpenCFD Ltd.