Applies cell-based momentum sources on velocity (i.e. U
) within a specified cylindrical region to approximate the mean effects of rotor forces.
More...
Classes | |
struct | flapData |
Public Types | |
enum | geometryModeType { gmAuto, gmSpecified } |
Options for the geometry type specification. More... | |
enum | inletFlowType { ifFixed, ifSurfaceNormal, ifLocal } |
Options for the inlet flow type specification. More... | |
![]() | |
enum | selectionModeType { smAll, smCellSet, smCellZone, smPoints } |
Enumeration for selection mode types. More... | |
Public Member Functions | |
TypeName ("rotorDisk") | |
Runtime type information. More... | |
rotorDiskSource (const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh) | |
Construct from components. More... | |
rotorDiskSource (const rotorDiskSource &)=delete | |
No copy construct. More... | |
void | operator= (const rotorDiskSource &)=delete |
No copy assignment. More... | |
virtual | ~rotorDiskSource ()=default |
Destructor. More... | |
scalar | rhoRef () const |
Return the reference density for incompressible case. More... | |
scalar | omega () const |
Return the rotational speed [rad/s]. More... | |
const List< point > & | x () const |
Return the cell centre positions in local rotor frame. More... | |
const coordSystem::cylindrical & | coordSys () const |
Return the rotor coordinate system (r-theta-z) More... | |
template<class RhoFieldType > | |
void | calculate (const RhoFieldType &rho, const vectorField &U, const scalarField &thetag, vectorField &force, const bool divideVolume=true, const bool output=true) const |
Calculate forces. More... | |
virtual void | addSup (fvMatrix< vector > &eqn, const label fieldi) |
Add explicit contribution to momentum equation. More... | |
virtual void | addSup (const volScalarField &rho, fvMatrix< vector > &eqn, const label fieldi) |
Add explicit contribution to compressible momentum equation. More... | |
virtual bool | read (const dictionary &dict) |
Read source dictionary. More... | |
![]() | |
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 word & | cellSetName () const noexcept |
scalar | V () const noexcept |
Return const access to the total cell volume. More... | |
const labelList & | cells () 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... | |
![]() | |
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< option > | clone () const |
Return clone. More... | |
virtual | ~option ()=default |
Destructor. More... | |
const word & | name () const noexcept |
Return const access to the source name. More... | |
const fvMesh & | mesh () const noexcept |
Return const access to the mesh database. More... | |
const dictionary & | coeffs () 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 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< 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< 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... | |
Static Public Attributes | |
static const Enum< geometryModeType > | geometryModeTypeNames_ |
Names for geometryModeType. More... | |
static const Enum< inletFlowType > | inletFlowTypeNames_ |
Names for inletFlowType. More... | |
![]() | |
static const Enum< selectionModeType > | selectionModeTypeNames_ |
List of selection mode type names. More... | |
Protected Member Functions | |
void | checkData () |
Check data. More... | |
void | setFaceArea (vector &axis, const bool correct) |
Set the face areas per cell, and optionally correct the rotor axis. More... | |
void | createCoordinateSystem () |
Create the coordinate system. More... | |
void | constructGeometry () |
Construct geometry. More... | |
tmp< vectorField > | inflowVelocity (const volVectorField &U) const |
Return the inlet flow field. More... | |
template<class Type > | |
void | writeField (const word &name, const List< Type > &values, const bool writeNow=false) const |
Helper function to write rotor values. More... | |
![]() | |
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... | |
![]() | |
void | resetApplied () |
Resize/reset applied flag list for all fieldNames_ entries. More... | |
Protected Attributes | |
scalar | rhoRef_ |
Reference density for incompressible case. More... | |
scalar | omega_ |
Rotational speed [rad/s]. More... | |
label | nBlades_ |
Number of blades. More... | |
inletFlowType | inletFlow_ |
Inlet flow type. More... | |
vector | inletVelocity_ |
Inlet velocity for specified inflow. More... | |
scalar | tipEffect_ |
Tip effect [0-1]. More... | |
flapData | flap_ |
Blade flap coefficients [rad/s]. More... | |
List< point > | x_ |
Cell centre positions in local rotor frame. More... | |
List< tensor > | Rcone_ |
Rotation tensor for flap angle. More... | |
List< scalar > | area_ |
Area [m2]. More... | |
coordSystem::cylindrical | coordSys_ |
Rotor local cylindrical coordinate system (r-theta-z) More... | |
autoPtr< tensorField > | Rcyl_ |
Cached rotation tensors for cylindrical coordinates. More... | |
scalar | rMax_ |
Maximum radius. More... | |
autoPtr< trimModel > | trim_ |
Trim model. More... | |
bladeModel | blade_ |
Blade data. More... | |
profileModelList | profiles_ |
Profile data. More... | |
![]() | |
scalar | timeStart_ |
Start time of fvOption. More... | |
scalar | duration_ |
Duration of fvOption execution starting from timeStart. More... | |
selectionModeType | selectionMode_ |
Cell selection mode. More... | |
word | cellSetName_ |
Name of set/zone for "cellSet" and "cellZone" selectionMode. More... | |
List< point > | points_ |
List of points for "points" selectionMode. More... | |
labelList | cells_ |
Set of cells to apply source to. More... | |
scalar | V_ |
Sum of cell volumes. More... | |
![]() | |
const word | name_ |
Source name. More... | |
const word | modelType_ |
Model type. More... | |
const fvMesh & | mesh_ |
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< bool > | applied_ |
Applied flag list - corresponds to each fieldNames_ entry. More... | |
bool | active_ |
Source active flag. More... | |
Additional Inherited Members | |
![]() | |
static autoPtr< option > | New (const word &name, const dictionary &dict, const fvMesh &mesh) |
Return a reference to the selected fvOption model. More... | |
![]() | |
bool | log |
Switch write log to Info. More... | |
Applies cell-based momentum sources on velocity (i.e. U
) within a specified cylindrical region to approximate the mean effects of rotor forces.
U | Velocity [m/s]
Required fields:
U | Velocity [m/s]
constant/fvOptions
: rotorDiskSource1 { Mandatory entries (unmodifiable) type rotorDiskSource;Mandatory entries (runtime modifiable) fields (<field1> <field2> ... <fieldN>); rhoRef 1.0; rpm 5.5; nBlades 3; inletFlowType local; geometryMode auto; tipEffect 0.96; // [0, 1] refDirection (-1 0 0 ); flapCoeffs { beta0 0.0; beta1c 0.0; beta2s 0.0; }
trimModel fixed;
blade { see bladeModel.H for documentation }
profiles { profile1 { type lookup; // lookup || series ... see lookupProfile.H or seriesProfile.H for documentation } profile2 { ... } }
Conditional mandatory entries (runtime modifiable)
when inletFlowType=fixed inletVelocity (1 0 0);
when inletFlowType=surfaceNormal inletNormalVelocity 5.0;
when geometryMode=auto pointAbove (1 0 0);
when geometryMode=specified origin (0 0 0); axis (1 0 0);
Mandatory/Optional (inherited) entries ... }
where the entries mean:
Property | Description | Type | Reqd | Dflt |
---|---|---|---|---|
type | Type name: rotorDiskSource | word | yes | - |
fields | Names of operand fields | wordList | yes | - |
rhoRef | Reference density for incompressible case | scalar | yes | - |
rpm | Rotational speed [rad/s] | scalar | yes | - |
nBlades | Number of rotor blades | label | yes | - |
tipEffect | Ratio of blade radius beyond which lift=0 | scalar | yes | - |
refDirection | Reference direction used as reference for psi angle | vector | yes | - |
beta0 | Coning angle [deg] | scalar | yes | - |
beta1c | Lateral flapping coeff (cos coeff) [deg] | scalar | yes | - |
beta2s | Longitudinal flapping coeff (sin coeff) [deg] | scalar | yes | - |
inletFlowType | Inlet flow type specification | word | yes | - |
inletVelocity | Inlet velocity [m/s] | vector | cndtnl | - |
inletNormalVelocity | Inlet normal velocity magnitude | scalar | cndtnl | - |
geometryMode | Geometry mode specification | word | yes | - |
pointAbove | Correct the axis direction using a point above the rotor | vector | cndtnl | - |
origin | Origin of the specified coordinate system | vector | cndtnl | - |
axis | Axis of the specified coordinate system | vector | cndtnl | - |
trimModel | Trim model specification | word | yes | - |
blade | Blade properties | dictionary | yes | - |
The inherited entries are elaborated in:
Options for the inletFlowType
entry:
fixed | Use a specified velocity local | Use local flow conditions surfaceNormal | Use a specified normal velocity (positive towards rotor)
Options for the geometryMode
entry:
auto | Determine rotor coordinate system from selected cells specified | Use a specified coordinate system
Options for the trimModel
entry:
fixed | Fixed blade/angle characteristics targetForce | Target thrust/torque by using time-variant blade characs.
rpm
is positive anti-clockwise when looking along -ve lift direction.Definition at line 330 of file rotorDiskSource.H.
enum geometryModeType |
Options for the geometry type specification.
Enumerator | |
---|---|
gmAuto | |
gmSpecified |
Definition at line 339 of file rotorDiskSource.H.
enum inletFlowType |
Options for the inlet flow type specification.
Enumerator | |
---|---|
ifFixed | |
ifSurfaceNormal | |
ifLocal |
Definition at line 349 of file rotorDiskSource.H.
rotorDiskSource | ( | const word & | name, |
const word & | modelType, | ||
const dictionary & | dict, | ||
const fvMesh & | mesh | ||
) |
Construct from components.
Definition at line 446 of file rotorDiskSource.C.
References dict, and Foam::read().
|
delete |
No copy construct.
|
virtualdefault |
Destructor.
|
protected |
Check data.
Definition at line 76 of file rotorDiskSource.C.
References Foam::abort(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, and Foam::nl.
Set the face areas per cell, and optionally correct the rotor axis.
Definition at line 128 of file rotorDiskSource.C.
References Foam::fieldTypes::area, correct(), polyPatch::coupled(), Foam::expressions::patchExpr::debug, Foam::dimArea, Foam::endl(), forAll, Foam::identity(), Foam::Info, Foam::mag(), n, IOobject::NO_READ, IOobject::NO_WRITE, Foam::reduce(), polyPatch::start(), syncTools::swapBoundaryFaceList(), Foam::type(), and Foam::Zero.
|
protected |
Create the coordinate system.
Definition at line 264 of file rotorDiskSource.C.
References C::C(), Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, Foam::gSum(), Foam::Info, Foam::mag(), Foam::nl, Vector< Cmpt >::normalise(), Foam::constant::mathematical::pi(), Foam::reduce(), Foam::sqrt(), and Foam::Zero.
|
protected |
Construct geometry.
Rcyl_.reset(coordSys_.R(cc).ptr());
Definition at line 378 of file rotorDiskSource.C.
References beta(), Foam::constant::universal::c, Foam::cos(), forAll, Foam::max(), psi, s, Foam::sin(), and x.
|
protected |
Return the inlet flow field.
Definition at line 413 of file rotorDiskSource.C.
References Foam::abort(), Foam::FatalError, FatalErrorInFunction, tmp< T >::New(), U, and Foam::Zero.
|
protected |
Helper function to write rotor values.
Definition at line 175 of file rotorDiskSourceTemplates.C.
References Foam::abort(), Foam::dimless, Foam::FatalError, FatalErrorInFunction, field(), forAll, Foam::name(), tmp< T >::New(), IOobject::NO_READ, IOobject::NO_WRITE, Foam::HashTableOps::values(), and Foam::Zero.
TypeName | ( | "rotorDisk" | ) |
Runtime type information.
|
delete |
No copy assignment.
|
inline |
Return the reference density for incompressible case.
Definition at line 32 of file rotorDiskSourceI.H.
References rotorDiskSource::rhoRef_.
|
inline |
Return the rotational speed [rad/s].
Positive anti-clockwise when looking along -ve lift direction
Definition at line 38 of file rotorDiskSourceI.H.
|
inline |
Return the cell centre positions in local rotor frame.
(Cylindrical r-theta-z)
Definition at line 44 of file rotorDiskSourceI.H.
|
inline |
Return the rotor coordinate system (r-theta-z)
Definition at line 51 of file rotorDiskSourceI.H.
void calculate | ( | const RhoFieldType & | rho, |
const vectorField & | U, | ||
const scalarField & | thetag, | ||
vectorField & | force, | ||
const bool | divideVolume = true , |
||
const bool | output = true |
||
) | const |
Calculate forces.
Definition at line 39 of file rotorDiskSourceTemplates.C.
References alphaEff(), Foam::atan2(), bool, Foam::endl(), f(), forAll, Foam::Info, Foam::invTransform(), Foam::magSqr(), Foam::max(), Foam::min(), Foam::neg(), Foam::nl, Foam::output(), pDyn(), Foam::constant::mathematical::pi(), Foam::radToDeg(), Foam::reduce(), rho, Foam::transform(), Foam::constant::mathematical::twoPi(), Foam::type(), U, Vector< Cmpt >::x(), Vector< Cmpt >::y(), and Vector< Cmpt >::z().
Add explicit contribution to momentum equation.
Reimplemented from option.
Definition at line 478 of file rotorDiskSource.C.
References fvMatrix< Type >::dimensions(), Foam::dimVolume, fvMatrix< Type >::psi(), and Foam::Zero.
|
virtual |
Add explicit contribution to compressible momentum equation.
Reimplemented from option.
Definition at line 513 of file rotorDiskSource.C.
References fvMatrix< Type >::dimensions(), Foam::dimVolume, fvMatrix< Type >::psi(), rho, and Foam::Zero.
|
virtual |
Read source dictionary.
Reimplemented from cellSetOption.
Definition at line 545 of file rotorDiskSource.C.
References Foam::checkData(), Foam::expressions::patchExpr::debug, Foam::degToRad(), dict, cellSetOption::read(), option::resetApplied(), Foam::rpmToRads(), and Foam::ensightOutput::writeField().
|
static |
Names for geometryModeType.
Definition at line 346 of file rotorDiskSource.H.
|
static |
Names for inletFlowType.
Definition at line 357 of file rotorDiskSource.H.
|
protected |
Reference density for incompressible case.
Definition at line 376 of file rotorDiskSource.H.
Referenced by rotorDiskSource::rhoRef().
|
protected |
Rotational speed [rad/s].
Positive anti-clockwise when looking along -ve lift direction
Definition at line 380 of file rotorDiskSource.H.
|
protected |
Number of blades.
Definition at line 383 of file rotorDiskSource.H.
|
protected |
Inlet flow type.
Definition at line 386 of file rotorDiskSource.H.
|
protected |
Inlet velocity for specified inflow.
Definition at line 389 of file rotorDiskSource.H.
|
protected |
Tip effect [0-1].
Ratio of blade radius beyond which lift=0
Definition at line 393 of file rotorDiskSource.H.
|
protected |
Blade flap coefficients [rad/s].
Definition at line 396 of file rotorDiskSource.H.
Cell centre positions in local rotor frame.
(Cylindrical r-theta-z)
Definition at line 400 of file rotorDiskSource.H.
Rotation tensor for flap angle.
Definition at line 403 of file rotorDiskSource.H.
|
protected |
Area [m2].
Definition at line 406 of file rotorDiskSource.H.
|
protected |
Rotor local cylindrical coordinate system (r-theta-z)
Definition at line 409 of file rotorDiskSource.H.
|
protected |
Cached rotation tensors for cylindrical coordinates.
Definition at line 412 of file rotorDiskSource.H.
|
protected |
Maximum radius.
Definition at line 415 of file rotorDiskSource.H.
Trim model.
Definition at line 418 of file rotorDiskSource.H.
|
protected |
Blade data.
Definition at line 421 of file rotorDiskSource.H.
|
protected |
Profile data.
Definition at line 424 of file rotorDiskSource.H.