classdef Module

Class and procedures for the various objects



Variables

Type Visibility Attributes Name Initial
real(kind=dp), public, parameter :: tol = 1.E-6

Tolerance for use in unit tests


Derived Types

type, public ::  switches_class

Switches that determine solver options

Components

Type Visibility Attributes Name Initial
integer, public :: ntSub

No. of timesteps for sub-iterations [+/-n]

integer, public :: ntSubInit

No. of timesteps for initial sub-iterations [+/-n]

integer, public :: wakeDissipation

Wake dissipation [0, 1]

integer, public :: wakeStrain

Wake strain [0, 1]

integer, public :: wakeBurst

Wake burst on exceeding skew value [0, 1]

integer, public :: wakeSuppress

Suppress wake (for testing and non-lifting surfaces) [0, 1]

integer, public :: slowStart

Slow start to avoid large starting vortex [0, 1]

integer, public :: slowStartNt

Slow start to avoid large starting vortex [+/-n]

integer, public :: wakeTipPlot

Plot wake tip every nth timestep [+/-n]

integer, public :: wakePlot

Plot full wake every nth timestep [+/-n]

integer, public :: gridPlot

Record vortices for field computation every nth timestep [+/-n]

integer, public :: rotorForcePlot

Plot rotor forces every nth timestep [+/-n]

integer, public :: fdScheme

Choose finite-difference scheme [0,1,...,5]

integer, public :: probe

Use probes for recording velocity [0,1]

integer, public :: nProbes

No. of probes [n]

integer, public :: initWakeVelNt

Use initial velocity for convecting away starting vortex [0, 1]

integer, public :: restartFromNt

Restart from nth timestep [n]

integer, public :: restartWriteNt

Write restart files every nth timestep for restarting later [n]

integer, public :: hdf5WriteNt

Write HDF5 results every nth timestep [0]Off [1..]timesteps

type, public ::  vf_class

Vortex filament class

Components

Type Visibility Attributes Name Initial
real(kind=dp), public, dimension(3, 2) :: fc

Filament coords (xyz, 1:2)

real(kind=dp), public :: l0 = 0._dp

Original length

real(kind=dp), public :: lc = 0._dp

Current length

real(kind=dp), public :: rVc0 = 0._dp

Initial vortex core radius

real(kind=dp), public :: rVc = 0._dp

Current vortex core radius

real(kind=dp), public :: age = 0._dp

Vortex age (in seconds)

real(kind=dp), public :: ageAzimuthal = 0._dp

vortex age (in radians)

Type-Bound Procedures

procedure, public :: vind => vf_vind
procedure, public :: calclength => vf_calclength
procedure, public :: strain => vf_strain

type, public ::  vr_class

Vortex ring class

Components

Type Visibility Attributes Name Initial
type(vf_class), public, dimension(4) :: vf
real(kind=dp), public :: gam

Circulation

real(kind=dp), public :: skew

Skew parameter

Type-Bound Procedures

procedure, public :: vind => vr_vind
procedure, public :: vindSource => vr_vindSource
procedure, public :: assignP => vr_assignP
procedure, public :: shiftdP => vr_shiftdP
procedure, public :: rot => vr_rot
procedure, public :: calclength => vr_calclength
procedure, public :: strain => vr_strain
procedure, public :: decay => vr_decay
procedure, public :: calc_skew
procedure, public :: burst => vr_burst
procedure, public :: mirror => vr_mirror

type, public ::  wingpanel_class

Wing panel class

Components

Type Visibility Attributes Name Initial
type(vr_class), public :: vr
real(kind=dp), public :: gamPrev

Circulation at previous timestep

real(kind=dp), public :: gamTrapz

Circulation after trapezoidal integration

real(kind=dp), public, dimension(3, 4) :: PC

Panel coords (xyz, 1:4)

real(kind=dp), public, dimension(3) :: CP

Collocation point coords

real(kind=dp), public, dimension(3) :: nCap

Unit normal vector

real(kind=dp), public, dimension(3) :: tauCapChord

Unit tangential vector along chord

real(kind=dp), public, dimension(3) :: tauCapSpan

Unit tangential vector along span

real(kind=dp), public, dimension(3) :: velCP

Local vel at CP excluding wing vortices

real(kind=dp), public, dimension(3) :: velCPTotal

Local vel at CP including wing vortices

real(kind=dp), public, dimension(3) :: velCPm

Local vel at CP due to wing motion

real(kind=dp), public, dimension(3) :: normalForce

Normal force vector (inertial frame)

real(kind=dp), public, dimension(3) :: normalForceUnsteady

Unsteady part of normal force vector (inertial frame)

real(kind=dp), public, dimension(3) :: chordwiseResVel

Chordwise resultant velocity vector

real(kind=dp), public :: velPitch

Airfoil pitch velocity about rHinge

real(kind=dp), public :: delP

Pressure difference between upper and lower surfaces at panel

real(kind=dp), public :: delPUnsteady

Unsteady pressure at panel

real(kind=dp), public :: delDiConstant

Induced drag (constant part) at panel

real(kind=dp), public :: delDiUnsteady

Induced drag (unsteady part) at panel

real(kind=dp), public :: meanChord

Panel mean chord

real(kind=dp), public :: meanSpan

Panel mean span

real(kind=dp), public :: panelArea

Panel area for computing lift

real(kind=dp), public :: rHinge

Dist to point about which airfoil pitching occurs (LE of wing)

real(kind=dp), public :: alpha

Local angle of attack (in radians)

Type-Bound Procedures

procedure, public :: assignP => wingpanel_assignP
procedure, public :: calcCP => wingpanel_calcCP
procedure, public :: calcN => wingpanel_calcN
procedure, public :: invertNcap => wingpanel_invertNcap
procedure, public :: calcTau => wingpanel_calcTau
procedure, public :: rot => wingpanel_rot
procedure, public :: shiftdP => wingpanel_shiftdP
procedure, public :: calc_chordwiseResVel => wingpanel_calc_chordwiseResVel
procedure, public :: calc_area => wingpanel_calc_area
procedure, public :: calc_mean_dimensions => wingpanel_calc_mean_dimensions
procedure, public :: isCPinsidecore => wingpanel_isCPinsidecore

type, public ::  Nwake_class

Near wake class

Components

Type Visibility Attributes Name Initial
type(vr_class), public :: vr

type, public ::  Fwake_class

Far wake class

Components

Type Visibility Attributes Name Initial
type(vf_class), public :: vf
real(kind=dp), public :: gam = 0._dp

Circulation

Type-Bound Procedures

procedure, public :: shiftdP => Fwake_shiftdP
procedure, public :: assignP => Fwake_assignP
procedure, public :: rot => Fwake_rot
procedure, public :: decay => Fwake_decay
procedure, public :: mirror => Fwake_mirror

type, public ::  pFwake_class

Prescribed far wake

Components

Type Visibility Attributes Name Initial
type(Fwake_class), public, dimension(240) :: waF
real(kind=dp), public, dimension(3, 241) :: coords
real(kind=dp), public :: nRevs = 10.0
real(kind=dp), public :: helixPitch = 0._dp
real(kind=dp), public :: helixRadius = 0._dp
real(kind=dp), public :: relaxFactor = 0.5_dp
logical, public :: isClockwiseRotor = .True.
logical, public :: isPresent = .false.

Type-Bound Procedures

procedure, public :: update => pFwake_update
procedure, public :: rot_wake_axis => pFwake_rot_wake_axis

type, public ::  blade_class

Single blade class

Components

Type Visibility Attributes Name Initial
character(len=2), public :: id
type(wingpanel_class), public, allocatable, dimension(:, :) :: wiP

Wing panel

type(Nwake_class), public, allocatable, dimension(:, :) :: waN

Near wake

type(Fwake_class), public, allocatable, dimension(:) :: waF

Far wake

type(pFwake_class), public :: wapF

Prescribed far wake

type(pFwake_class), public :: wapFPredicted

Prescribed far wake

type(Nwake_class), public, allocatable, dimension(:, :) :: waNPredicted
type(Fwake_class), public, allocatable, dimension(:) :: waFPredicted
type(C81_class), public, allocatable, dimension(:) :: C81
integer, public :: nc

No. of chordwise panels

integer, public :: ns

No. of spanwise panels

real(kind=dp), public :: theta
real(kind=dp), public :: psi
real(kind=dp), public :: pivotLE

Location of pivot from LE (x/c) for setting pitch angle

real(kind=dp), public :: preconeAngle

Precone angle for blade

real(kind=dp), public :: velWakeMax

Max vel on wake collocation points for preventing blowup

real(kind=dp), public :: wakeDispLimitFactor

Max displacement factor (dx/lc) for wake convection limiting (from rotor) where lc is local wake filament length

real(kind=dp), public :: flapInitial
real(kind=dp), public :: dflapInitial
real(kind=dp), public :: flapPrev
real(kind=dp), public :: dflapPrev
real(kind=dp), public :: flap
real(kind=dp), public :: dflap
real(kind=dp), public :: Iflap
real(kind=dp), public :: kflap
real(kind=dp), public :: cflap
real(kind=dp), public :: MflapConstant
real(kind=dp), public :: MflapLift
real(kind=dp), public :: MflapLiftPrev
real(kind=dp), public, dimension(3) :: flapOrigin
real(kind=dp), public, dimension(3) :: forceInertial
real(kind=dp), public, dimension(3) :: lift
real(kind=dp), public, dimension(3) :: drag
real(kind=dp), public, dimension(3) :: dragInduced
real(kind=dp), public, dimension(3) :: dragProfile
real(kind=dp), public, dimension(3) :: liftUnsteady
real(kind=dp), public, dimension(3) :: dragUnsteady
integer, public, allocatable, dimension(:) :: airfoilNo
character(len=30), public, allocatable, dimension(:) :: airfoilFile
real(kind=dp), public, allocatable, dimension(:) :: airfoilSectionLimit
real(kind=dp), public, allocatable, dimension(:, :, :) :: velNwake
real(kind=dp), public, allocatable, dimension(:, :, :) :: velNwake1
real(kind=dp), public, allocatable, dimension(:, :, :) :: velNwake2
real(kind=dp), public, allocatable, dimension(:, :, :) :: velNwake3
real(kind=dp), public, allocatable, dimension(:, :, :) :: velNwakePredicted
real(kind=dp), public, allocatable, dimension(:, :, :) :: velNwakeStep
real(kind=dp), public, allocatable, dimension(:, :) :: velFwake
real(kind=dp), public, allocatable, dimension(:, :) :: velFwake1
real(kind=dp), public, allocatable, dimension(:, :) :: velFwake2
real(kind=dp), public, allocatable, dimension(:, :) :: velFwake3
real(kind=dp), public, allocatable, dimension(:, :) :: velFwakePredicted
real(kind=dp), public, allocatable, dimension(:, :) :: velFwakeStep
integer, public :: stlNodesCols
real(kind=dp), public, allocatable, dimension(:, :) :: stlNodes
integer, public, allocatable, dimension(:, :) :: stlElementNodes
real(kind=dp), public, dimension(3) :: xAxis
real(kind=dp), public, dimension(3) :: yAxis
real(kind=dp), public, dimension(3) :: zAxis
real(kind=dp), public, dimension(3) :: xAxisAzi
real(kind=dp), public, dimension(3) :: yAxisAzi
real(kind=dp), public, dimension(3) :: zAxisAzi
real(kind=dp), public, dimension(3) :: xAxisAziFlap
real(kind=dp), public, dimension(3) :: yAxisAziFlap
real(kind=dp), public, dimension(3) :: zAxisAziFlap
real(kind=dp), public, allocatable, dimension(:) :: secChord
real(kind=dp), public, allocatable, dimension(:) :: secArea
real(kind=dp), public, allocatable, dimension(:, :) :: secForceInertial
real(kind=dp), public, allocatable, dimension(:, :) :: secLift
real(kind=dp), public, allocatable, dimension(:, :) :: secDrag
real(kind=dp), public, allocatable, dimension(:, :) :: secLiftDir
real(kind=dp), public, allocatable, dimension(:, :) :: secDragDir
real(kind=dp), public, allocatable, dimension(:, :) :: secLiftInPlane
real(kind=dp), public, allocatable, dimension(:, :) :: secLiftOutPlane
real(kind=dp), public, allocatable, dimension(:, :) :: secDragInduced
real(kind=dp), public, allocatable, dimension(:, :) :: secDragProfile
real(kind=dp), public, allocatable, dimension(:, :) :: secLiftUnsteady
real(kind=dp), public, allocatable, dimension(:, :) :: secDragUnsteady
real(kind=dp), public, allocatable, dimension(:, :) :: secLiftInPlaneUnsteady
real(kind=dp), public, allocatable, dimension(:, :) :: secLiftOutPlaneUnsteady
real(kind=dp), public, allocatable, dimension(:, :) :: secTauCapChord
real(kind=dp), public, allocatable, dimension(:, :) :: secTauCapSpan
real(kind=dp), public, allocatable, dimension(:, :) :: secNormalVec
real(kind=dp), public, allocatable, dimension(:, :) :: secCP
real(kind=dp), public, allocatable, dimension(:, :) :: secChordwiseResVel
real(kind=dp), public, allocatable, dimension(:) :: secAlpha
real(kind=dp), public, allocatable, dimension(:) :: secPhi
real(kind=dp), public, allocatable, dimension(:) :: secTheta
real(kind=dp), public, allocatable, dimension(:) :: secViz
real(kind=dp), public, allocatable, dimension(:) :: secVix
real(kind=dp), public, allocatable, dimension(:) :: secCD
real(kind=dp), public, allocatable, dimension(:) :: secCM
real(kind=dp), public, allocatable, dimension(:) :: secMflap
real(kind=dp), public, allocatable, dimension(:) :: secMflapArm
real(kind=dp), public, allocatable, dimension(:) :: alpha0
real(kind=dp), public, allocatable, dimension(:) :: secCL
real(kind=dp), public, allocatable, dimension(:) :: secCLu
integer, public :: spanwiseLiftSwitch

Type-Bound Procedures

procedure, public :: move => blade_move
procedure, public :: rotate => blade_rotate
procedure, public :: rot_pitch => blade_rot_pitch
procedure, public :: rot_wake_axis => blade_rot_wake_axis
procedure, public :: rot_pts => blade_rot_pts
procedure, public :: rot_flap => blade_rot_flap
procedure, public :: vind_bywing => blade_vind_bywing
procedure, public :: vindSource_bywing => blade_vindSource_bywing
procedure, public :: vind_bywing_boundVortices => blade_vind_bywing_boundVortices
procedure, public :: vind_bywing_chordwiseVortices => blade_vind_bywing_chordwiseVortices
procedure, public :: vind_boundVortex => blade_vind_boundVortex
procedure, public :: vind_bywake => blade_vind_bywake
procedure, public :: convectwake => blade_convectwake
procedure, public :: limitWakeVel => blade_limitWakeVel
procedure, public :: calc_secChord
procedure, public :: calc_secArea
procedure, public :: calc_force => blade_calc_force
procedure, public :: calc_force_alpha => blade_calc_force_alpha
procedure, public :: calc_force_alphaGamma => blade_calc_force_alphaGamma
procedure, public :: calc_secAlpha => blade_calc_secAlpha
procedure, public :: calc_secChordwiseResVel => blade_calc_secChordwiseResVel
procedure, public :: burst_wake => blade_burst_wake
procedure, public :: calc_skew => blade_calc_skew
procedure, public :: calc_secLocations => blade_calc_secLocations
procedure, public :: lookup_secCoeffs => blade_lookup_secCoeffs
procedure, public :: secCoeffsToSecForces => blade_secCoeffsToSecForces
procedure, public :: dirLiftDrag => blade_dirLiftDrag
procedure, public :: sumSecToNetForces => blade_sumSecToNetForces
procedure, public :: calc_stlStats => blade_calc_stlStats
procedure, public :: computeBladeDynamics => blade_computeBladeDynamics
procedure, public :: getddflap
procedure, public :: blade_write
generic, public :: write(unformatted) => blade_write
procedure, public :: blade_read
generic, public :: read(unformatted) => blade_read

type, public ::  rotor_class

Rotor class

Components

Type Visibility Attributes Name Initial
character(len=2), public :: id
integer, public :: nb
integer, public :: ns
integer, public :: nc
integer, public :: nNwake
integer, public :: nFwake
integer, public :: nbConvect
integer, public :: nNwakeEnd
integer, public :: nFwakeEnd
type(blade_class), public, allocatable, dimension(:) :: blade
real(kind=dp), public :: Omega
real(kind=dp), public :: omegaSlow
real(kind=dp), public, dimension(3) :: shaftAxis
real(kind=dp), public, dimension(3) :: xAxisBody
real(kind=dp), public, dimension(3) :: yAxisBody
real(kind=dp), public, dimension(3) :: zAxisBody
real(kind=dp), public, dimension(3) :: hubCoords
real(kind=dp), public, dimension(3) :: cgCoords
real(kind=dp), public, dimension(3) :: fromCoords
real(kind=dp), public :: radius
real(kind=dp), public :: chord
real(kind=dp), public :: root_cut
real(kind=dp), public :: preconeAngle
real(kind=dp), public :: dpitch
real(kind=dp), public :: flap0
real(kind=dp), public :: flapC
real(kind=dp), public :: flapS
real(kind=dp), public :: flapInitial
real(kind=dp), public :: dflapInitial
real(kind=dp), public :: Iflap
real(kind=dp), public :: cflap
real(kind=dp), public :: kflap
real(kind=dp), public :: MflapConstant
real(kind=dp), public, dimension(3) :: forceInertial
real(kind=dp), public, dimension(3) :: lift
real(kind=dp), public, dimension(3) :: liftPrev
real(kind=dp), public, dimension(3) :: drag
real(kind=dp), public, dimension(3) :: dragInduced
real(kind=dp), public, dimension(3) :: dragProfile
real(kind=dp), public, dimension(3) :: liftUnsteady
real(kind=dp), public, dimension(3) :: dragUnsteady
real(kind=dp), public, dimension(3) :: liftUnitVec
real(kind=dp), public, dimension(3) :: dragUnitVec
real(kind=dp), public, dimension(3) :: sideUnitVec
real(kind=dp), public, dimension(3) :: controlPitch
real(kind=dp), public :: thetaTwist
real(kind=dp), public :: pivotLE
real(kind=dp), public :: flapHinge
real(kind=dp), public, dimension(3) :: velBody
real(kind=dp), public, dimension(3) :: omegaBody
real(kind=dp), public, dimension(3) :: velBodyPrev
real(kind=dp), public, dimension(3) :: omegaBodyPrev
real(kind=dp), public, allocatable, dimension(:, :) :: velBodyHistory
real(kind=dp), public, allocatable, dimension(:, :) :: omegaBodyHistory
real(kind=dp), public :: psi
real(kind=dp), public, dimension(3) :: pts
character(len=1), public :: streamwiseCoreSwitch
real(kind=dp), public :: spanwiseCore
real(kind=dp), public, allocatable, dimension(:) :: streamwiseCoreVec
real(kind=dp), public, allocatable, dimension(:, :) :: AIC
real(kind=dp), public, allocatable, dimension(:, :) :: AIC_inv
real(kind=dp), public, allocatable, dimension(:) :: gamVec
real(kind=dp), public, allocatable, dimension(:) :: gamVecPrev
real(kind=dp), public, allocatable, dimension(:) :: RHS
real(kind=dp), public, allocatable, dimension(:) :: camberSectionLimit
real(kind=dp), public, allocatable, dimension(:) :: airfoilSectionLimit
real(kind=dp), public, allocatable, dimension(:) :: alpha0
real(kind=dp), public :: initWakeVel
real(kind=dp), public :: psiStart
real(kind=dp), public :: skewLimit
real(kind=dp), public :: apparentViscCoeff
real(kind=dp), public :: decayCoeff
real(kind=dp), public :: wakeDispLimitFactor
real(kind=dp), public :: rollupStartRadius
real(kind=dp), public :: rollupEndRadius
integer, public :: propConvention
integer, public :: spanSpacing
integer, public :: chordSpacing
integer, public :: overrideTauSpan
integer, public :: symmetricTau
integer, public :: wakeTruncateNt
integer, public :: prescWakeNt
integer, public :: prescWakeAfterTruncNt
integer, public :: prescWakeGenNt
integer, public :: rollupStart
integer, public :: rollupEnd
integer, public :: suppressFwakeSwitch
integer, public :: forceCalcSwitch
integer, public :: skewPlotSwitch
integer, public :: inflowPlotSwitch
integer, public :: bladeDynamicsSwitch
integer, public :: pitchDynamicsSwitch
integer, public :: bodyDynamicsSwitch
integer, public :: bodyDynamicsIOVars
integer, public :: spanwiseLiftSwitch
integer, public :: customTrajectorySwitch
integer, public :: gammaPlotSwitch
integer, public :: rowNear
integer, public :: rowFar
integer, public :: nCamberFiles
integer, public :: nAirfoils
integer, public :: imagePlane
integer, public :: imageRotorNum
integer, public :: surfaceType
integer, public :: ductSwitch
integer, public :: axisymmetrySwitch
character(len=30), public, allocatable, dimension(:) :: camberFile
character(len=30), public, allocatable, dimension(:) :: airfoilFile
character(len=30), public :: geometryFile
real(kind=dp), public :: nonDimforceDenominator

Type-Bound Procedures

procedure, public :: readGeom => rotor_readGeom
procedure, public :: init => rotor_init
procedure, public :: deinit => rotor_deinit
procedure, public :: plot3dtoblade => rotor_plot3dtoblade
procedure, public :: stltoblade => rotor_stltoblade
procedure, public :: getCamber => rotor_getCamber
procedure, public :: gettheta => rotor_gettheta
procedure, public :: getthetadot => rotor_getthetadot
procedure, public :: getflap => rotor_getflap
procedure, public :: getflapdot => rotor_getflapdot
procedure, public :: move => rotor_move
procedure, public :: rot_pts => rotor_rot_pts
procedure, public :: rot_advance => rotor_rot_advance
procedure, public :: rot_flap => rotor_rot_flap
procedure, public :: assignshed => rotor_assignshed
procedure, public :: map_gam => rotor_map_gam
procedure, public :: age_wake => rotor_age_wake
procedure, public :: dissipate_wake => rotor_dissipate_wake
procedure, public :: dissipate_wake2 => rotor_dissipate_wake2
procedure, public :: strain_wake => rotor_strain_wake
procedure, public :: calcAIC => rotor_calcAIC
procedure, public :: vind_bywing => rotor_vind_bywing
procedure, public :: vind_bywing_boundVortices => rotor_vind_bywing_boundVortices
procedure, public :: vind_bywake => rotor_vind_bywake
procedure, public :: shiftwake => rotor_shiftwake
procedure, public :: shiftFwake => rotor_shiftFwake
procedure, public :: rollup => rotor_rollup
procedure, public :: calc_force => rotor_calc_force
procedure, public :: calc_force_alpha => rotor_calc_force_alpha
procedure, public :: calc_force_alphaGamma => rotor_calc_force_alphaGamma
procedure, public :: calc_secAlpha => rotor_calc_secAlpha
procedure, public :: convectwake => rotor_convectwake
procedure, public :: burst_wake => rotor_burst_wake
procedure, public :: calc_skew => rotor_calc_skew
procedure, public :: dirLiftDrag => rotor_dirLiftDrag
procedure, public :: sumBladeToNetForces => rotor_sumBladeToNetForces
procedure, public :: mirrorGamma => rotor_mirrorGamma
procedure, public :: mirrorVelCP => rotor_mirrorVelCP
procedure, public :: mirrorWake => rotor_mirrorWake
procedure, public :: toChordsRevs => rotor_toChordsRevs
procedure, public :: eraseNwake => rotor_eraseNwake
procedure, public :: eraseFwake => rotor_eraseFwake
procedure, public :: updatePrescribedWake => rotor_updatePrescribedWake
procedure, public :: computeBladeDynamics => rotor_computeBladeDynamics
procedure, public :: getdw
procedure, public :: computeBodyDynamics => rotor_computeBodyDynamics
procedure, public :: rotor_write
generic, public :: write(unformatted) => rotor_write
procedure, public :: rotor_read
generic, public :: read(unformatted) => rotor_read

Functions

public pure function vf_vind(this, P) result(vind)

Compute induced velocity by unit strength vortex filament

Arguments

Type IntentOptional Attributes Name
class(vf_class), intent(in) :: this
real(kind=dp), intent(in), dimension(3) :: P

Return Value real(kind=dp), dimension(3)

public pure function vr_vind(this, P) result(vind)

Compute induced velocity by unit strength 4-element vortex ring

Arguments

Type IntentOptional Attributes Name
class(vr_class), intent(in) :: this
real(kind=dp), intent(in), dimension(3) :: P

Return Value real(kind=dp), dimension(3)

public pure function vr_vindSource(this, P, nCap) result(vind)

Compute induced velocity by unit strength 3-element source ring

Arguments

Type IntentOptional Attributes Name
class(vr_class), intent(in) :: this
real(kind=dp), intent(in), dimension(3) :: P
real(kind=dp), intent(in), dimension(3) :: nCap

Return Value real(kind=dp), dimension(3)

public function vr_getInteriorAngles(this)

Obtain interior angles of vortex ring

Arguments

Type IntentOptional Attributes Name
class(vr_class) :: this

Return Value real(kind=dp), dimension(4)

public function vr_getMedianAngle(this)

Obtain median angle of vortex ring

Arguments

Type IntentOptional Attributes Name
class(vr_class) :: this

Return Value real(kind=dp)

public function vr_getBimedianCos(this)

Obtain angle between bimedians

Arguments

Type IntentOptional Attributes Name
class(vr_class) :: this

Return Value real(kind=dp)

public function wingpanel_isCPinsidecore(this)

Check whether collocation point lies inside viscous core region of vortex ring

Arguments

Type IntentOptional Attributes Name
class(wingpanel_class), intent(in) :: this

Return Value logical

public function blade_vind_bywing(this, P)

Compute induced velocity by blade bound vorticity

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(in) :: this
real(kind=dp), intent(in), dimension(3) :: P

Return Value real(kind=dp), dimension(3)

public function blade_vindSource_bywing(this, P)

Compute induced velocity by blade bound vorticity

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(in) :: this
real(kind=dp), intent(in), dimension(3) :: P

Return Value real(kind=dp), dimension(3)

public function blade_vind_bywing_boundVortices(this, P)

Compute induced velocity by bound vortices alone

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(in) :: this
real(kind=dp), intent(in), dimension(3) :: P

Return Value real(kind=dp), dimension(3)

public function blade_vind_bywing_chordwiseVortices(this, P)

Compute induced velocity by bound vortices alone

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(in) :: this
real(kind=dp), intent(in), dimension(3) :: P

Return Value real(kind=dp), dimension(3)

public function blade_vind_boundVortex(this, ic, is, P)

Compute induced velocity by bound vortices alone

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
integer, intent(in) :: ic
integer, intent(in) :: is
real(kind=dp), intent(in), dimension(3) :: P

Return Value real(kind=dp), dimension(3)

public function blade_vind_bywake(this, rowNear, rowFar, P, optionalChar)

Compute induced velocity by wake vortex rings

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(in) :: this
integer, intent(in) :: rowNear
integer, intent(in) :: rowFar
real(kind=dp), intent(in), dimension(3) :: P
character(len=1), optional :: optionalChar

Return Value real(kind=dp), dimension(3)

public function blade_getSecDynamicPressure(this, density)

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(in) :: this
real(kind=dp), intent(in) :: density

Return Value real(kind=dp), dimension(this%ns)

public function getddflap(this, flap, dflap, omega, MflapLift)

Returns ddflap from blade flap equation

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(in) :: this
real(kind=dp), intent(in) :: flap
real(kind=dp), intent(in) :: dflap
real(kind=dp), intent(in) :: omega
real(kind=dp), intent(in) :: MflapLift

Return Value real(kind=dp)

public function rotor_getCamber(this, x, y)

Get z coordinate on wing from x, y values

Arguments

Type IntentOptional Attributes Name
class(rotor_class) :: this
real(kind=dp), intent(in), dimension(:) :: x
real(kind=dp), intent(in), dimension(:) :: y

Return Value real(kind=dp), dimension(size(x), size(y))

public function rotor_gettheta(this, psi, ib)

Get pitch angle corresponding to blade azimuthal location

Arguments

Type IntentOptional Attributes Name
class(rotor_class) :: this
real(kind=dp), intent(in) :: psi
integer, intent(in) :: ib

Return Value real(kind=dp)

public function rotor_getthetadot(this, psi, ib)

Arguments

Type IntentOptional Attributes Name
class(rotor_class) :: this
real(kind=dp), intent(in) :: psi
integer, intent(in) :: ib

Return Value real(kind=dp)

public function rotor_getflap(this, psi, ib)

Prescribed flap [rad]: flap0 + flapCcos(psi) + flapSsin(psi)

Arguments

Type IntentOptional Attributes Name
class(rotor_class) :: this
real(kind=dp), intent(in) :: psi
integer, intent(in) :: ib

Return Value real(kind=dp)

public function rotor_getflapdot(this, psi, ib)

Prescribed flap rate: d(flap)/dt = Omega * d(flap)/d(psi) [rad/s]

Arguments

Type IntentOptional Attributes Name
class(rotor_class) :: this
real(kind=dp), intent(in) :: psi
integer, intent(in) :: ib

Return Value real(kind=dp)

public function rotor_vind_bywing(this, P)

Compute induced velocity by all wing vortices at P

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(in) :: this
real(kind=dp), intent(in), dimension(3) :: P

Return Value real(kind=dp), dimension(3)

public function rotor_vind_bywing_boundVortices(this, P)

Compute induced velocity by bound vortices at P

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(in) :: this
real(kind=dp), intent(in), dimension(3) :: P

Return Value real(kind=dp), dimension(3)

public function rotor_vind_bywake(this, P, optionalChar)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(in) :: this
real(kind=dp), intent(in), dimension(3) :: P
character(len=1), optional :: optionalChar

Return Value real(kind=dp), dimension(3)

public function getdw(this, w, thrust)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
real(kind=dp), intent(in) :: w
real(kind=dp), intent(in) :: thrust

Return Value real(kind=dp)


Subroutines

public subroutine vf_calclength(this, isOriginal)

Compute length of vortex filament

Arguments

Type IntentOptional Attributes Name
class(vf_class) :: this
logical, intent(in) :: isOriginal

public subroutine vf_strain(this)

Arguments

Type IntentOptional Attributes Name
class(vf_class) :: this

public subroutine vr_assignP(this, n, P)

Assign coordinates to nth corner

Arguments

Type IntentOptional Attributes Name
class(vr_class) :: this
integer, intent(in) :: n
real(kind=dp), dimension(3) :: P

public subroutine vr_shiftdP(this, n, dshift)

Shift coordinates of nth corner by dshift distance (usually for U*dt convection)

Arguments

Type IntentOptional Attributes Name
class(vr_class) :: this
integer, intent(in) :: n
real(kind=dp), intent(in), dimension(3) :: dshift

public subroutine vr_rot(this, Tmat, originVec)

Rotate vortex ring using Tmat about origin

Arguments

Type IntentOptional Attributes Name
class(vr_class) :: this
real(kind=dp), intent(in), dimension(3, 3) :: Tmat
real(kind=dp), optional, dimension(3) :: originVec

public subroutine vr_calclength(this, isOriginal)

Calculate length of filaments in vortex ring

Arguments

Type IntentOptional Attributes Name
class(vr_class) :: this
logical, intent(in) :: isOriginal

public subroutine vr_strain(this)

Arguments

Type IntentOptional Attributes Name
class(vr_class) :: this

public subroutine vr_decay(this, dt, decayCoeff)

Arguments

Type IntentOptional Attributes Name
class(vr_class), intent(inout) :: this
real(kind=dp), intent(in) :: dt
real(kind=dp), intent(in) :: decayCoeff

public subroutine vr_mirror(this, coordNum)

Mirror gamma and coordinates about a specified plane

Arguments

Type IntentOptional Attributes Name
class(vr_class) :: this
integer, intent(in) :: coordNum

public subroutine calc_skew(this)

Compute skew

Arguments

Type IntentOptional Attributes Name
class(vr_class) :: this

public subroutine vr_burst(this, skewLimit)

Burst vortex filaments if skewLimit is exceeded

Arguments

Type IntentOptional Attributes Name
class(vr_class) :: this
real(kind=dp), intent(in) :: skewLimit

public subroutine wingpanel_assignP(this, n, P)

Assign coordinates to nth corner

Arguments

Type IntentOptional Attributes Name
class(wingpanel_class) :: this
integer, intent(in) :: n
real(kind=dp), dimension(3) :: P

public subroutine wingpanel_calcCP(this, isTriangle)

Compute collocation point location

Arguments

Type IntentOptional Attributes Name
class(wingpanel_class) :: this
logical, optional :: isTriangle

public subroutine wingpanel_calcN(this, isTriangle)

Compute normal vector

Arguments

Type IntentOptional Attributes Name
class(wingpanel_class) :: this
logical, optional :: isTriangle

public subroutine wingpanel_invertNcap(this)

Arguments

Type IntentOptional Attributes Name
class(wingpanel_class) :: this

public subroutine wingpanel_calcTau(this, isTriangle)

Compute chordwise and spanwise tangential vectors

Arguments

Type IntentOptional Attributes Name
class(wingpanel_class) :: this
logical, optional :: isTriangle

public subroutine wingpanel_rot(this, Tmat, originVec)

Rotate panel using transformation matrix

Arguments

Type IntentOptional Attributes Name
class(wingpanel_class) :: this
real(kind=dp), dimension(3, 3) :: Tmat
real(kind=dp), optional, dimension(3) :: originVec

public subroutine wingpanel_shiftdP(this, dshift)

Shift corners of vortex ring by dshift

Arguments

Type IntentOptional Attributes Name
class(wingpanel_class) :: this
real(kind=dp), intent(in), dimension(3) :: dshift

public subroutine wingpanel_calc_area(this)

Arguments

Type IntentOptional Attributes Name
class(wingpanel_class) :: this

public subroutine wingpanel_calc_mean_dimensions(this)

Calculate mean chord and mean span

Arguments

Type IntentOptional Attributes Name
class(wingpanel_class) :: this

public subroutine wingpanel_calc_chordwiseResVel(this)

Compute panel resultant velocities using local velocities

Arguments

Type IntentOptional Attributes Name
class(wingpanel_class), intent(inout) :: this

public subroutine Fwake_shiftdP(this, n, dshift)

Shift coordinates of nth corner by dshift distance (usually for Udt convection)

Arguments

Type IntentOptional Attributes Name
class(Fwake_class) :: this
integer, intent(in) :: n
real(kind=dp), intent(in), dimension(3) :: dshift

public subroutine Fwake_assignP(this, n, P)

Assign point to nth endpoint of filament

Arguments

Type IntentOptional Attributes Name
class(Fwake_class) :: this
integer, intent(in) :: n
real(kind=dp), intent(in), dimension(3) :: P

public subroutine Fwake_rot(this, TMat, originVec)

Rotate using TMat about originVec

Arguments

Type IntentOptional Attributes Name
class(Fwake_class) :: this
real(kind=dp), intent(in), dimension(3, 3) :: TMat
real(kind=dp), optional, dimension(3) :: originVec

public subroutine Fwake_decay(this, dt, decayCoeff)

Arguments

Type IntentOptional Attributes Name
class(Fwake_class), intent(inout) :: this
real(kind=dp), intent(in) :: dt
real(kind=dp), intent(in) :: decayCoeff

public subroutine Fwake_mirror(this, coordNum)

Mirror gamma and coordinates about a specified plane

Arguments

Type IntentOptional Attributes Name
class(Fwake_class) :: this
integer, intent(in) :: coordNum

public subroutine pFwake_update(this, waF, hubCoords, shaftAxis, deltaPsi)

Arguments

Type IntentOptional Attributes Name
class(pFwake_class), intent(inout) :: this
type(Fwake_class), intent(in), dimension(:) :: waF
real(kind=dp), intent(in), dimension(3) :: hubCoords
real(kind=dp), intent(in), dimension(3) :: shaftAxis
real(kind=dp), intent(in) :: deltaPsi

public subroutine pFwake_rot_wake_axis(this, theta, axisVec, origin)

Arguments

Type IntentOptional Attributes Name
class(pFwake_class), intent(inout) :: this
real(kind=dp), intent(in) :: theta
real(kind=dp), intent(in), dimension(3) :: axisVec
real(kind=dp), intent(in), dimension(3) :: origin

public subroutine blade_move(this, dshift)

Move blade by dshift

Arguments

Type IntentOptional Attributes Name
class(blade_class) :: this
real(kind=dp), intent(in), dimension(3) :: dshift

public subroutine blade_rot_pts(this, pts, origin, order)

Rotate blade using pts. pts refers to (phi, theta, psi)

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in), dimension(3) :: pts
real(kind=dp), intent(in), dimension(3) :: origin
integer, intent(in) :: order

public subroutine blade_rot_pitch(this, theta)

Rotate blade by pitch angle about pivotLE

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in) :: theta

public subroutine blade_rot_flap(this, beta)

Rotate blade by flap angle

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in) :: beta

public subroutine blade_rotate(this, angleRad, axisX, axisY, axisZ, originX, originY, originZ, rotateType)

Rotate blade geometry about axis at specified origin Rotation angle in radians

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in), value :: angleRad
real(kind=dp), intent(in), value :: axisX
real(kind=dp), intent(in), value :: axisY
real(kind=dp), intent(in), value :: axisZ
real(kind=dp), intent(in), value :: originX
real(kind=dp), intent(in), value :: originY
real(kind=dp), intent(in), value :: originZ
character(len=*), intent(in) :: rotateType

public subroutine blade_rot_wake_axis(this, theta, axisVec, origin, rowNear, rowFar, wakeType)

Rotate wake about axis at specified origin

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in) :: theta
real(kind=dp), intent(in), dimension(3) :: axisVec
real(kind=dp), intent(in), dimension(3) :: origin
integer, intent(in) :: rowNear
integer, intent(in) :: rowFar
character(len=1), intent(in) :: wakeType

public subroutine blade_convectwake(this, rowNear, rowFar, dt, wakeType, ductSwitch)

Convect wake collocation points using velNwake matrix

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
integer, intent(in) :: rowNear
integer, intent(in) :: rowFar
real(kind=dp), intent(in) :: dt
character(len=1), intent(in) :: wakeType
integer, optional :: ductSwitch

public subroutine blade_limitWakeVel(this, rowNear, rowFar, wakeType)

Limits wake velocity to a set value to prevent blow up. Near wake only for predicted wake; near and far for current wake.

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
integer, intent(in) :: rowNear
integer, intent(in) :: rowFar
character(len=1), intent(in) :: wakeType

public subroutine blade_wake_continuity(this, rowNear, rowFar, wakeType, ductSwitch)

Maintain continuity between vortex ring elements after convection of wake collocation points

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
integer, intent(in) :: rowNear
integer, intent(in) :: rowFar
character(len=1), intent(in) :: wakeType
integer, optional :: ductSwitch

public subroutine blade_calc_force(this, density, Omega, dt)

Compute force using blade circulation

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in) :: density
real(kind=dp), intent(in) :: Omega
real(kind=dp), intent(in) :: dt

public subroutine calc_secArea(this)

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this

public subroutine calc_secChord(this)

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this

public subroutine blade_calc_force_alpha(this, density, velSound)

Compute force using sectional alpha

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in) :: density
real(kind=dp), intent(in) :: velSound

public subroutine blade_calc_force_alphaGamma(this, density, invertGammaSign, velSound, dt)

Compute force using alpha approximated from sec circulation

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in) :: density
real(kind=dp), intent(in) :: invertGammaSign
real(kind=dp), intent(in) :: velSound
real(kind=dp), intent(in) :: dt

public subroutine blade_secCoeffsToSecForces(this, density)

Convert force coefficients to dimensional forces

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in) :: density

public subroutine blade_lookup_secCoeffs(this, velSound)

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in) :: velSound

public subroutine blade_calc_secChordwiseResVel(this)

Compute sectional resultant vel by interpolating local panel vel

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this

public subroutine blade_calc_secAlpha(this, verticalAxis)

Compute sec alpha using sec resultant velocity

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in), dimension(3) :: verticalAxis

public subroutine blade_calc_secLocations(this, chordwiseFraction, flapHingeRadius)

Compute important locations at each section coordinates of collocation point located at chord fraction flap moment arm

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in) :: chordwiseFraction
real(kind=dp), intent(in) :: flapHingeRadius

public subroutine blade_burst_wake(this, rowFar, skewLimit, largeCoreRadius)

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
integer, intent(in) :: rowFar
real(kind=dp), intent(in) :: skewLimit
real(kind=dp), intent(in) :: largeCoreRadius

public subroutine blade_calc_skew(this, rowNear)

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
integer, intent(in) :: rowNear

public subroutine blade_dirLiftDrag(this, Omega)

Compute lift and drag direction vectors

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in) :: Omega

public subroutine blade_sumSecToNetForces(this)

Sum up sectional forces to net forces

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this

public subroutine blade_calc_stlStats(this)

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this

public subroutine blade_computeBladeDynamics(this, dt, omega)

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
real(kind=dp), intent(in) :: dt
real(kind=dp), intent(in) :: omega

public subroutine blade_write(this, unit, iostat, iomsg)

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(in) :: this
integer, intent(in) :: unit
integer, intent(out) :: iostat
character(len=*), intent(inout) :: iomsg

public subroutine blade_read(this, unit, iostat, iomsg)

Arguments

Type IntentOptional Attributes Name
class(blade_class), intent(inout) :: this
integer, intent(in) :: unit
integer, intent(out) :: iostat
character(len=*), intent(inout) :: iomsg

public subroutine rotor_readGeom(this, filename, outputFilename)

Read rotor geometry from geomXX.nml in namelist format

Arguments

Type IntentOptional Attributes Name
class(rotor_class) :: this
character(len=*), intent(in) :: filename
character(len=*), intent(in), optional :: outputFilename

public subroutine rotor_init(this, rotorNumber, density, dt, nt, switches, sourceRotor)

Initialize variables of rotor geometry and wake

Arguments

Type IntentOptional Attributes Name
class(rotor_class) :: this
integer, intent(in) :: rotorNumber
real(kind=dp), intent(in) :: density
real(kind=dp), intent(inout) :: dt
integer, intent(inout) :: nt
type(switches_class), intent(inout) :: switches
type(rotor_class), optional :: sourceRotor

public subroutine rotor_deinit(this, switches)

Deinitialise rotor variables

Arguments

Type IntentOptional Attributes Name
class(rotor_class) :: this
type(switches_class), intent(in) :: switches

public subroutine rotor_plot3dtoblade(this, PLOT3Dfilename)

Read blade geometry from PLOT3D formatted file

Arguments

Type IntentOptional Attributes Name
class(rotor_class) :: this
character(len=*), intent(in) :: PLOT3Dfilename

public subroutine rotor_stltoblade(this, stlfilename)

Read ASCII stl file for non-lifting surface geometry

Arguments

Type IntentOptional Attributes Name
class(rotor_class) :: this
character(len=*), intent(in) :: stlfilename

public subroutine rotor_calcAIC(this)

Compute AIC matrix for rotor

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this

public subroutine rotor_map_gam(this)

Map gam from vector to matrix format

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this

public subroutine rotor_move(this, dshift)

Arguments

Type IntentOptional Attributes Name
class(rotor_class) :: this
real(kind=dp), intent(in), dimension(3) :: dshift

public subroutine rotor_rot_pts(this, pts, origin, order)

Rotate using pts => phi theta psi Warning: This rotation is about the global reference frame

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
real(kind=dp), intent(in), dimension(3) :: pts
real(kind=dp), intent(in), dimension(3) :: origin
integer, intent(in) :: order

public subroutine rotor_rot_flap(this)

Rotate blades by flap angle

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this

public subroutine rotor_rot_advance(this, dpsi, nopitch)

Rotate rotor by dpsi angle about axis

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
real(kind=dp), intent(in) :: dpsi
logical, optional :: nopitch

public subroutine rotor_assignshed(this, edge)

Assign coordinates to first rowNear of wake from last row of blade

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
character(len=2), intent(in) :: edge

public subroutine rotor_age_wake(this, dt, wakeType)

Update age of wake filaments

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
real(kind=dp), intent(in) :: dt
character(len=1), intent(in) :: wakeType

public subroutine rotor_dissipate_wake2(this, dt, kinematicViscosity, wakeType)

Dissipation model based on the paper: Generalized Viscous Vortex Model for Application to Free-Vortex Wake Calculations,Bhagwat and Leishman (2002) The apparent viscosity coefficient is 'a1' known as Squire's app. viscosity parameter and this allows the dissipation to be dependent on the vortex strength The apparent viscosity is kinematic viscosity plus the turbulent viscosity (a1*|gamma|)) a1 has to be O(1e-4) for rotary wings (usually set to 2e-4) and O(1e-5) for fixed wings

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
real(kind=dp), intent(in) :: dt
real(kind=dp), intent(in) :: kinematicViscosity
character(len=1), intent(in) :: wakeType

public subroutine rotor_dissipate_wake(this, dt, kinematicViscosity, wakeType)

Dissipation model based on the paper: Generalized Viscous Vortex Model for Application to Free-Vortex Wake Calculations,Bhagwat and Leishman (2002) The apparent viscosity coefficient is 'delta' and kept a constant value. delta has to be 100 for small-scale rotors and around 1000 for large-scale rotors

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
real(kind=dp), intent(in) :: dt
real(kind=dp), intent(in) :: kinematicViscosity
character(len=1), intent(in) :: wakeType

public subroutine rotor_strain_wake(this)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this

public subroutine rotor_shiftwake(this)

Shift wake locations on rollup

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this

public subroutine rotor_shiftFwake(this)

Shift wake locations of Fwake for truncation

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this

public subroutine rotor_rollup(this)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this

public subroutine rotor_calc_force(this, density, dt)

Compute force from circulation

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
real(kind=dp), intent(in) :: density
real(kind=dp), intent(in) :: dt

public subroutine rotor_calc_force_alpha(this, density, velSound)

Compute force from sec alpha

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
real(kind=dp), intent(in) :: density
real(kind=dp), intent(in) :: velSound

public subroutine rotor_calc_force_alphaGamma(this, density, velSound, dt)

Compute force from sec alpha

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
real(kind=dp), intent(in) :: density
real(kind=dp), intent(in) :: velSound
real(kind=dp), intent(in) :: dt

public subroutine rotor_calc_secAlpha(this)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this

public subroutine rotor_convectwake(this, iter, dt, wakeType)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
integer, intent(in) :: iter
real(kind=dp), intent(in) :: dt
character(len=1), intent(in) :: wakeType

public subroutine rotor_computeBladeDynamics(this, dt)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
real(kind=dp), intent(in) :: dt

public subroutine rotor_computeBodyDynamics(this, dt)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
real(kind=dp), intent(in) :: dt

public subroutine rotor_burst_wake(this)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this

public subroutine rotor_calc_skew(this)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this

public subroutine rotor_dirLiftDrag(this)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this

public subroutine rotor_sumBladeToNetForces(this)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this

public subroutine rotor_mirrorGamma(this, fromRotor)

Mirrors gamma from another rotor

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
class(rotor_class), intent(in) :: fromRotor

public subroutine rotor_mirrorVelCP(this, fromRotor)

Mirrors velCP, velCPm from another rotor (flip velocity component in mirror plane)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
class(rotor_class), intent(in) :: fromRotor

public subroutine rotor_mirrorWake(this, fromRotor, wakeType)

Mirrors wake positions from another rotor

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
class(rotor_class), intent(in) :: fromRotor
character(len=1), intent(in) :: wakeType

public subroutine rotor_toChordsRevs(this, nsteps, dt)

Converts -ve nsteps to nsteps for corresponding no. of chords or revs

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
integer, intent(inout) :: nsteps
real(kind=dp), intent(in) :: dt

public subroutine rotor_eraseNwake(this, rowErase)

Erase a near wake row by setting gamma to zero

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
integer, intent(in) :: rowErase

public subroutine rotor_eraseFwake(this, rowErase)

Erase a far wake row by setting gamma to zero

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
integer, intent(in) :: rowErase

public subroutine rotor_updatePrescribedWake(this, dt, wakeType)

Attaches prescribed far wake

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
real(kind=dp), intent(in) :: dt
character(len=1), intent(in) :: wakeType

public subroutine rotor_read(this, unit, iostat, iomsg)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(inout) :: this
integer, intent(in) :: unit
integer, intent(out) :: iostat
character(len=*), intent(inout) :: iomsg

public subroutine rotor_write(this, unit, iostat, iomsg)

Arguments

Type IntentOptional Attributes Name
class(rotor_class), intent(in) :: this
integer, intent(in) :: unit
integer, intent(out) :: iostat
character(len=*), intent(inout) :: iomsg