rotorDiskSource Class Reference

Applies cell-based momentum sources on velocity (i.e. U) within a specified cylindrical region to approximate the mean effects of rotor forces. More...

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

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...
 
- Public Types inherited from cellSetOption
enum  selectionModeType {
  smAll , smCellSet , smCellZone , smPoints ,
  smGeometric
}
 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::cylindricalcoordSys () 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...
 
- 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< geometryModeTypegeometryModeTypeNames_
 Names for geometryModeType. More...
 
static const Enum< inletFlowTypeinletFlowTypeNames_
 Names for inletFlowType. More...
 
- Static Public Attributes inherited from cellSetOption
static const Enum< selectionModeTypeselectionModeTypeNames_
 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< vectorFieldinflowVelocity (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...
 
- 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

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< pointx_
 Cell centre positions in local rotor frame. More...
 
List< tensorRcone_
 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< tensorFieldRcyl_
 Cached rotation tensors for cylindrical coordinates. More...
 
scalar rMax_
 Maximum radius. More...
 
autoPtr< trimModeltrim_
 Trim model. More...
 
bladeModel blade_
 Blade data. More...
 
profileModelList profiles_
 Profile data. 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...
 

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...
 

Detailed Description

Applies cell-based momentum sources on velocity (i.e. U) within a specified cylindrical region to approximate the mean effects of rotor forces.

Sources applied to:

  U         | Velocity    [m/s]

Required fields:

  U         | Velocity    [m/s]
Usage
Minimal example by using 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.
Note
  • The entry rpm is positive anti-clockwise when looking along -ve lift direction.
See also
Source files

Definition at line 330 of file rotorDiskSource.H.

Member Enumeration Documentation

◆ geometryModeType

Options for the geometry type specification.

Enumerator
gmAuto 
gmSpecified 

Definition at line 339 of file rotorDiskSource.H.

◆ inletFlowType

Options for the inlet flow type specification.

Enumerator
ifFixed 
ifSurfaceNormal 
ifLocal 

Definition at line 349 of file rotorDiskSource.H.

Constructor & Destructor Documentation

◆ rotorDiskSource() [1/2]

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

Construct from components.

Definition at line 445 of file rotorDiskSource.C.

References dict, fv(), and rotorDiskSource::read().

Here is the call graph for this function:

◆ rotorDiskSource() [2/2]

rotorDiskSource ( const rotorDiskSource )
delete

No copy construct.

◆ ~rotorDiskSource()

virtual ~rotorDiskSource ( )
virtualdefault

Destructor.

Member Function Documentation

◆ checkData()

◆ setFaceArea()

void setFaceArea ( vector axis,
const bool  correct 
)
protected

Set the face areas per cell, and optionally correct the rotor axis.

Definition at line 128 of file rotorDiskSource.C.

References correct(), polyPatch::coupled(), 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.

Here is the call graph for this function:

◆ createCoordinateSystem()

void createCoordinateSystem ( )
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.

Here is the call graph for this function:

◆ constructGeometry()

void constructGeometry ( )
protected

Construct geometry.

Rcyl_.reset(coordSys_.R(cc).ptr());

Definition at line 378 of file rotorDiskSource.C.

References beta(), Foam::cos(), forAll, Foam::max(), psi, s(), Foam::sin(), and x.

Here is the call graph for this function:

◆ inflowVelocity()

Foam::tmp< Foam::vectorField > inflowVelocity ( const volVectorField U) const
protected

Return the inlet flow field.

Definition at line 412 of file rotorDiskSource.C.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, Time::New(), U, and Foam::Zero.

Here is the call graph for this function:

◆ writeField()

void writeField ( const word name,
const List< Type > &  values,
const bool  writeNow = false 
) const
protected

Helper function to write rotor values.

Definition at line 174 of file rotorDiskSourceTemplates.C.

References Foam::abort(), Foam::dimless, Foam::FatalError, FatalErrorInFunction, field(), forAll, Foam::name(), Time::New(), IOobject::NO_READ, IOobject::NO_WRITE, rotorDiskSource::writeField(), and Foam::Zero.

Referenced by rotorDiskSource::writeField().

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

◆ TypeName()

TypeName ( "rotorDisk"  )

Runtime type information.

◆ operator=()

void operator= ( const rotorDiskSource )
delete

No copy assignment.

◆ rhoRef()

Foam::scalar rhoRef ( ) const
inline

Return the reference density for incompressible case.

Definition at line 32 of file rotorDiskSourceI.H.

References rotorDiskSource::rhoRef_.

◆ omega()

Foam::scalar omega ( ) const
inline

Return the rotational speed [rad/s].

Positive anti-clockwise when looking along -ve lift direction

Definition at line 38 of file rotorDiskSourceI.H.

Referenced by targetCoeffTrim::calcCoeffs().

Here is the caller graph for this function:

◆ x()

const Foam::List< Foam::point > & x ( ) const
inline

Return the cell centre positions in local rotor frame.

(Cylindrical r-theta-z)

Definition at line 44 of file rotorDiskSourceI.H.

Referenced by targetCoeffTrim::calcCoeffs().

Here is the caller graph for this function:

◆ coordSys()

const Foam::coordSystem::cylindrical & coordSys ( ) const
inline

Return the rotor coordinate system (r-theta-z)

Definition at line 51 of file rotorDiskSourceI.H.

Referenced by targetCoeffTrim::calcCoeffs().

Here is the caller graph for this function:

◆ calculate()

void calculate ( const RhoFieldType &  rho,
const vectorField U,
const scalarField thetag,
vectorField force,
const bool  divideVolume = true,
const bool  output = true 
) const

◆ addSup() [1/2]

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

Add explicit contribution to momentum equation.

Reimplemented from option.

Definition at line 477 of file rotorDiskSource.C.

References fvMatrix< Type >::dimensions(), Foam::dimVolume, fvMatrix< Type >::psi(), regIOobject::write(), and Foam::Zero.

Here is the call graph for this function:

◆ addSup() [2/2]

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

Add explicit contribution to compressible momentum equation.

Reimplemented from option.

Definition at line 512 of file rotorDiskSource.C.

References fvMatrix< Type >::dimensions(), Foam::dimVolume, fvMatrix< Type >::psi(), rho, regIOobject::write(), 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 545 of file rotorDiskSource.C.

References Foam::checkData(), Foam::degToRad(), dict, dictionary::get(), kEpsilonLopesdaCosta< BasicTurbulenceModel >::read(), option::resetApplied(), and Foam::rpmToRads().

Referenced by rotorDiskSource::rotorDiskSource().

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

Member Data Documentation

◆ geometryModeTypeNames_

const Foam::Enum< Foam::fv::rotorDiskSource::geometryModeType > geometryModeTypeNames_
static

Names for geometryModeType.

Definition at line 346 of file rotorDiskSource.H.

◆ inletFlowTypeNames_

const Foam::Enum< Foam::fv::rotorDiskSource::inletFlowType > inletFlowTypeNames_
static

Names for inletFlowType.

Definition at line 357 of file rotorDiskSource.H.

◆ rhoRef_

scalar rhoRef_
protected

Reference density for incompressible case.

Definition at line 376 of file rotorDiskSource.H.

Referenced by rotorDiskSource::calculate(), and rotorDiskSource::rhoRef().

◆ omega_

scalar omega_
protected

Rotational speed [rad/s].

Positive anti-clockwise when looking along -ve lift direction

Definition at line 380 of file rotorDiskSource.H.

Referenced by rotorDiskSource::calculate().

◆ nBlades_

label nBlades_
protected

Number of blades.

Definition at line 383 of file rotorDiskSource.H.

Referenced by rotorDiskSource::calculate().

◆ inletFlow_

inletFlowType inletFlow_
protected

Inlet flow type.

Definition at line 386 of file rotorDiskSource.H.

Referenced by rotorDiskSource::checkData().

◆ inletVelocity_

vector inletVelocity_
protected

Inlet velocity for specified inflow.

Definition at line 389 of file rotorDiskSource.H.

Referenced by rotorDiskSource::checkData().

◆ tipEffect_

scalar tipEffect_
protected

Tip effect [0-1].

Ratio of blade radius beyond which lift=0

Definition at line 393 of file rotorDiskSource.H.

Referenced by rotorDiskSource::calculate().

◆ flap_

flapData flap_
protected

Blade flap coefficients [rad/s].

Definition at line 396 of file rotorDiskSource.H.

◆ x_

List<point> x_
protected

Cell centre positions in local rotor frame.

(Cylindrical r-theta-z)

Definition at line 400 of file rotorDiskSource.H.

Referenced by rotorDiskSource::calculate().

◆ Rcone_

List<tensor> Rcone_
protected

Rotation tensor for flap angle.

Definition at line 403 of file rotorDiskSource.H.

Referenced by rotorDiskSource::calculate().

◆ area_

List<scalar> area_
protected

Area [m2].

Definition at line 406 of file rotorDiskSource.H.

Referenced by rotorDiskSource::calculate().

◆ coordSys_

coordSystem::cylindrical coordSys_
protected

Rotor local cylindrical coordinate system (r-theta-z)

Definition at line 409 of file rotorDiskSource.H.

Referenced by rotorDiskSource::calculate(), and rotorDiskSource::checkData().

◆ Rcyl_

autoPtr<tensorField> Rcyl_
protected

Cached rotation tensors for cylindrical coordinates.

Definition at line 412 of file rotorDiskSource.H.

Referenced by rotorDiskSource::calculate().

◆ rMax_

scalar rMax_
protected

Maximum radius.

Definition at line 415 of file rotorDiskSource.H.

Referenced by rotorDiskSource::calculate().

◆ trim_

autoPtr<trimModel> trim_
protected

Trim model.

Definition at line 418 of file rotorDiskSource.H.

◆ blade_

bladeModel blade_
protected

Blade data.

Definition at line 421 of file rotorDiskSource.H.

Referenced by rotorDiskSource::calculate(), and rotorDiskSource::checkData().

◆ profiles_

profileModelList profiles_
protected

Profile data.

Definition at line 424 of file rotorDiskSource.H.

Referenced by rotorDiskSource::calculate(), and rotorDiskSource::checkData().


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