rotorDiskSource Class Reference

Rotor disk source. More...

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

Classes

struct  flapData
 

Public Types

enum  geometryModeType { gmAuto, gmSpecified }
 
enum  inletFlowType { ifFixed, ifSurfaceNormal, ifLocal }
 
- Public Types inherited from cellSetOption
enum  selectionModeType { smPoints, smCellSet, smCellZone, smAll }
 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...
 
virtual ~rotorDiskSource ()
 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)
 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 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
 Return const access to the time start. More...
 
scalar duration () const
 Return const access to the duration. More...
 
bool inTimeLimits (const scalar time) const
 Return true if within time limits. More...
 
const selectionModeTypeselectionMode () const
 Return const access to the cell selection mode. More...
 
const wordcellSetName () const
 Return const access to the name of cell set for "cellSet". More...
 
scalar V () const
 Return const access to the total cell volume. More...
 
const labelListcells () const
 Return const access to the cell set. More...
 
scalar & timeStart ()
 Return access to the time start. More...
 
scalar & duration ()
 Return access to the duration. More...
 
virtual bool isActive ()
 Is the source active? More...
 
- 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
 Return const access to the source name. More...
 
const fvMeshmesh () const
 Return const access to the mesh database. More...
 
const dictionarycoeffs () const
 Return dictionary. More...
 
bool active () const
 Return const access to the source active flag. More...
 
void setApplied (const label fieldi)
 Set the applied flag to true for field index fieldi. More...
 
Switchactive ()
 Return access to the source active flag. 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 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< geometryModeTypegeometryModeTypeNames_
 
static const Enum< inletFlowTypeinletFlowTypeNames_
 
- 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 the cellSet or points selection. More...
 
void setCellSet ()
 Set the cell set based on the user input selection mode. More...
 
void setVol ()
 Recalculate the volume. 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_
 Time start. More...
 
scalar duration_
 Duration. More...
 
selectionModeType selectionMode_
 Cell selection mode. More...
 
word cellSetName_
 Name of set/zone for "cellSet" and "cellZone" selectionMode. More...
 
List< pointpoints_
 List of points for "points" selectionMode. 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...
 
Switch active_
 Source active flag. 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...
 

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

Rotor disk source.

Cell based momemtum source which approximates the mean effects of rotor forces on a cylindrical region within the domain.

Usage
Example usage:
    fields          (U);    // names of fields on which to apply source
    nBlades         3;      // number of blades
    tipEffect       0.96;   // normalised radius above which lift = 0

    inletFlowType   local;  // inlet flow type specification

    geometryMode    auto;   // geometry specification

    refDirection    (-1 0 0); // reference direction
                              // - used as reference for psi angle

    trimModel       fixed;  // fixed || targetForce

    flapCoeffs
    {
        beta0           0;  // coning angle [deg]
        beta1c          0;  // lateral flapping coeff (cos coeff)
        beta2s          0;  // longitudinal flapping coeff (sin coeff)
    }

    blade
    {
        // see bladeModel.H for documentation
    }

    profiles
    {
        profile1
        {
            type    lookup; // lookup || series
            ...
            // see lookupProfile.H or seriesProfile.H for documentation
        }
        profile2
        {
            ...
        }
    }

Where: Valid options for the geometryMode entry include:

  • auto : determine rotor coordinate system from cells
  • specified : specified coordinate system

Valid options for the inletFlowType entry include:

  • fixed : specified velocity
  • local : use local flow conditions
  • surfaceNormal : specified normal velocity (positive towards rotor)
See also
Foam::bladeModel Foam::lookupProfile Foam::seriesProfile
Source files

Definition at line 127 of file rotorDiskSource.H.

Member Enumeration Documentation

◆ geometryModeType

Enumerator
gmAuto 
gmSpecified 

Definition at line 133 of file rotorDiskSource.H.

◆ inletFlowType

Enumerator
ifFixed 
ifSurfaceNormal 
ifLocal 

Definition at line 140 of file rotorDiskSource.H.

Constructor & Destructor Documentation

◆ rotorDiskSource()

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

Construct from components.

Definition at line 447 of file rotorDiskSource.C.

References dict, and Foam::read().

Here is the call graph for this function:

◆ ~rotorDiskSource()

~rotorDiskSource ( )
virtual

Destructor.

Definition at line 478 of file rotorDiskSource.C.

Member Function Documentation

◆ checkData()

void checkData ( )
protected

Check data.

Definition at line 76 of file rotorDiskSource.C.

References Foam::abort(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, and Foam::nl.

Here is the call graph for this function:

◆ setFaceArea()

void setFaceArea ( vector axis,
const bool  correct 
)
protected

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

Definition at line 129 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.

Here is the call graph for this function:

◆ createCoordinateSystem()

void createCoordinateSystem ( )
protected

Create the coordinate system.

Definition at line 265 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 379 of file rotorDiskSource.C.

References beta(), Foam::constant::universal::c, 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 414 of file rotorDiskSource.C.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, tmp< T >::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 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.

Here is the call graph for this function:

◆ TypeName()

TypeName ( "rotorDisk"  )

Runtime type information.

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

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

◆ coordSys()

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

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

Definition at line 51 of file rotorDiskSourceI.H.

◆ calculate()

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(), Foam::endl(), f(), forAll, Foam::Info, Foam::invTransform(), Foam::magSqr(), Foam::max(), Foam::min(), Foam::neg(), Foam::nl, 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().

Here is the call graph for this function:

◆ addSup() [1/2]

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

Source term to momentum equation.

Reimplemented from option.

Definition at line 485 of file rotorDiskSource.C.

References fvMatrix< Type >::dimensions(), Foam::dimVolume, fvMatrix< Type >::psi(), 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

Source term to compressible momentum equation.

Reimplemented from option.

Definition at line 520 of file rotorDiskSource.C.

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

References Foam::checkData(), Foam::expressions::patchExpr::debug, Foam::degToRad(), dict, Foam::blockMeshTools::read(), and Foam::rpmToRads().

Here is the call graph for this function:

Member Data Documentation

◆ geometryModeTypeNames_

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

Definition at line 138 of file rotorDiskSource.H.

◆ inletFlowTypeNames_

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

Definition at line 146 of file rotorDiskSource.H.

◆ rhoRef_

scalar rhoRef_
protected

Reference density for incompressible case.

Definition at line 165 of file rotorDiskSource.H.

Referenced by rotorDiskSource::rhoRef().

◆ omega_

scalar omega_
protected

Rotational speed [rad/s].

Positive anti-clockwise when looking along -ve lift direction

Definition at line 169 of file rotorDiskSource.H.

◆ nBlades_

label nBlades_
protected

Number of blades.

Definition at line 172 of file rotorDiskSource.H.

◆ inletFlow_

inletFlowType inletFlow_
protected

Inlet flow type.

Definition at line 175 of file rotorDiskSource.H.

◆ inletVelocity_

vector inletVelocity_
protected

Inlet velocity for specified inflow.

Definition at line 178 of file rotorDiskSource.H.

◆ tipEffect_

scalar tipEffect_
protected

Tip effect [0-1].

Ratio of blade radius beyond which lift=0

Definition at line 182 of file rotorDiskSource.H.

◆ flap_

flapData flap_
protected

Blade flap coefficients [rad/s].

Definition at line 185 of file rotorDiskSource.H.

◆ x_

List<point> x_
protected

Cell centre positions in local rotor frame.

(Cylindrical r-theta-z)

Definition at line 189 of file rotorDiskSource.H.

◆ Rcone_

List<tensor> Rcone_
protected

Rotation tensor for flap angle.

Definition at line 192 of file rotorDiskSource.H.

◆ area_

List<scalar> area_
protected

Area [m2].

Definition at line 195 of file rotorDiskSource.H.

◆ coordSys_

coordSystem::cylindrical coordSys_
protected

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

Definition at line 198 of file rotorDiskSource.H.

◆ Rcyl_

autoPtr<tensorField> Rcyl_
protected

Cached rotation tensors for cylindrical coordinates.

Definition at line 201 of file rotorDiskSource.H.

◆ rMax_

scalar rMax_
protected

Maximum radius.

Definition at line 204 of file rotorDiskSource.H.

◆ trim_

autoPtr<trimModel> trim_
protected

Trim model.

Definition at line 207 of file rotorDiskSource.H.

◆ blade_

bladeModel blade_
protected

Blade data.

Definition at line 210 of file rotorDiskSource.H.

◆ profiles_

profileModelList profiles_
protected

Profile data.

Definition at line 213 of file rotorDiskSource.H.


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