Class and procedures for the various objects
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | public, | parameter | :: | tol | = | 1.E-6 |
Tolerance for use in unit tests |
Switches that determine solver options
| 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 |
Vortex filament class
| 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) |
| procedure, public :: vind => vf_vind | |
| procedure, public :: calclength => vf_calclength | |
| procedure, public :: strain => vf_strain |
Vortex ring class
| 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 |
| 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 |
Wing panel class
| 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) |
| 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 |
Far wake class
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(vf_class), | public | :: | vf | ||||
| real(kind=dp), | public | :: | gam | = | 0._dp |
Circulation |
| 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 |
Prescribed far wake
| 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. |
| procedure, public :: update => pFwake_update | |
| procedure, public :: rot_wake_axis => pFwake_rot_wake_axis |
Single blade class
| 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 |
Rotor class
| 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 |
Compute induced velocity by unit strength vortex filament
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vf_class), | intent(in) | :: | this | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | P |
Compute induced velocity by unit strength 4-element vortex ring
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class), | intent(in) | :: | this | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | P |
Compute induced velocity by unit strength 3-element source ring
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class), | intent(in) | :: | this | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | P | ||
| real(kind=dp), | intent(in), | dimension(3) | :: | nCap |
Obtain interior angles of vortex ring
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class) | :: | this |
Obtain median angle of vortex ring
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class) | :: | this |
Obtain angle between bimedians
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class) | :: | this |
Check whether collocation point lies inside viscous core region of vortex ring
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(wingpanel_class), | intent(in) | :: | this |
Compute induced velocity by blade bound vorticity
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(in) | :: | this | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | P |
Compute induced velocity by blade bound vorticity
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(in) | :: | this | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | P |
Compute induced velocity by bound vortices alone
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(in) | :: | this | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | P |
Compute induced velocity by bound vortices alone
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(in) | :: | this | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | P |
Compute induced velocity by bound vortices alone
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | ic | |||
| integer, | intent(in) | :: | is | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | P |
Compute induced velocity by wake vortex rings
| Type | Intent | Optional | 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 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(in) | :: | this | |||
| real(kind=dp), | intent(in) | :: | density |
Returns ddflap from blade flap equation
| Type | Intent | Optional | 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 |
Get z coordinate on wing from x, y values
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class) | :: | this | ||||
| real(kind=dp), | intent(in), | dimension(:) | :: | x | ||
| real(kind=dp), | intent(in), | dimension(:) | :: | y |
Get pitch angle corresponding to blade azimuthal location
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class) | :: | this | ||||
| real(kind=dp), | intent(in) | :: | psi | |||
| integer, | intent(in) | :: | ib |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class) | :: | this | ||||
| real(kind=dp), | intent(in) | :: | psi | |||
| integer, | intent(in) | :: | ib |
Prescribed flap [rad]: flap0 + flapCcos(psi) + flapSsin(psi)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class) | :: | this | ||||
| real(kind=dp), | intent(in) | :: | psi | |||
| integer, | intent(in) | :: | ib |
Prescribed flap rate: d(flap)/dt = Omega * d(flap)/d(psi) [rad/s]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class) | :: | this | ||||
| real(kind=dp), | intent(in) | :: | psi | |||
| integer, | intent(in) | :: | ib |
Compute induced velocity by all wing vortices at P
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(in) | :: | this | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | P |
Compute induced velocity by bound vortices at P
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(in) | :: | this | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | P |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(in) | :: | this | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | P | ||
| character(len=1), | optional | :: | optionalChar |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | w | |||
| real(kind=dp), | intent(in) | :: | thrust |
Compute length of vortex filament
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vf_class) | :: | this | ||||
| logical, | intent(in) | :: | isOriginal |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vf_class) | :: | this |
Assign coordinates to nth corner
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class) | :: | this | ||||
| integer, | intent(in) | :: | n | |||
| real(kind=dp), | dimension(3) | :: | P |
Shift coordinates of nth corner by dshift distance (usually for U*dt convection)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class) | :: | this | ||||
| integer, | intent(in) | :: | n | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | dshift |
Rotate vortex ring using Tmat about origin
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class) | :: | this | ||||
| real(kind=dp), | intent(in), | dimension(3, 3) | :: | Tmat | ||
| real(kind=dp), | optional, | dimension(3) | :: | originVec |
Calculate length of filaments in vortex ring
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class) | :: | this | ||||
| logical, | intent(in) | :: | isOriginal |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | dt | |||
| real(kind=dp), | intent(in) | :: | decayCoeff |
Mirror gamma and coordinates about a specified plane
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class) | :: | this | ||||
| integer, | intent(in) | :: | coordNum |
Burst vortex filaments if skewLimit is exceeded
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(vr_class) | :: | this | ||||
| real(kind=dp), | intent(in) | :: | skewLimit |
Assign coordinates to nth corner
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(wingpanel_class) | :: | this | ||||
| integer, | intent(in) | :: | n | |||
| real(kind=dp), | dimension(3) | :: | P |
Compute collocation point location
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(wingpanel_class) | :: | this | ||||
| logical, | optional | :: | isTriangle |
Compute normal vector
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(wingpanel_class) | :: | this | ||||
| logical, | optional | :: | isTriangle |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(wingpanel_class) | :: | this |
Compute chordwise and spanwise tangential vectors
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(wingpanel_class) | :: | this | ||||
| logical, | optional | :: | isTriangle |
Rotate panel using transformation matrix
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(wingpanel_class) | :: | this | ||||
| real(kind=dp), | dimension(3, 3) | :: | Tmat | |||
| real(kind=dp), | optional, | dimension(3) | :: | originVec |
Shift corners of vortex ring by dshift
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(wingpanel_class) | :: | this | ||||
| real(kind=dp), | intent(in), | dimension(3) | :: | dshift |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(wingpanel_class) | :: | this |
Calculate mean chord and mean span
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(wingpanel_class) | :: | this |
Compute panel resultant velocities using local velocities
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(wingpanel_class), | intent(inout) | :: | this |
Shift coordinates of nth corner by dshift distance (usually for Udt convection)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Fwake_class) | :: | this | ||||
| integer, | intent(in) | :: | n | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | dshift |
Assign point to nth endpoint of filament
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Fwake_class) | :: | this | ||||
| integer, | intent(in) | :: | n | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | P |
Rotate using TMat about originVec
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Fwake_class) | :: | this | ||||
| real(kind=dp), | intent(in), | dimension(3, 3) | :: | TMat | ||
| real(kind=dp), | optional, | dimension(3) | :: | originVec |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Fwake_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | dt | |||
| real(kind=dp), | intent(in) | :: | decayCoeff |
Mirror gamma and coordinates about a specified plane
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Fwake_class) | :: | this | ||||
| integer, | intent(in) | :: | coordNum |
| Type | Intent | Optional | 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 |
| Type | Intent | Optional | 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 |
Move blade by dshift
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class) | :: | this | ||||
| real(kind=dp), | intent(in), | dimension(3) | :: | dshift |
Rotate blade using pts. pts refers to (phi, theta, psi)
| Type | Intent | Optional | 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 |
Rotate blade by pitch angle about pivotLE
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | theta |
Rotate blade by flap angle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | beta |
Rotate blade geometry about axis at specified origin Rotation angle in radians
| Type | Intent | Optional | 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 |
Rotate wake about axis at specified origin
| Type | Intent | Optional | 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 |
Convect wake collocation points using velNwake matrix
| Type | Intent | Optional | 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 |
Limits wake velocity to a set value to prevent blow up. Near wake only for predicted wake; near and far for current wake.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | rowNear | |||
| integer, | intent(in) | :: | rowFar | |||
| character(len=1), | intent(in) | :: | wakeType |
Maintain continuity between vortex ring elements after convection of wake collocation points
| Type | Intent | Optional | 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 |
Compute force using blade circulation
| Type | Intent | Optional | 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 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this |
Compute force using sectional alpha
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | density | |||
| real(kind=dp), | intent(in) | :: | velSound |
Compute force using alpha approximated from sec circulation
| Type | Intent | Optional | 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 |
Convert force coefficients to dimensional forces
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | density |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | velSound |
Compute sectional resultant vel by interpolating local panel vel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this |
Compute sec alpha using sec resultant velocity
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in), | dimension(3) | :: | verticalAxis |
Compute important locations at each section coordinates of collocation point located at chord fraction flap moment arm
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | chordwiseFraction | |||
| real(kind=dp), | intent(in) | :: | flapHingeRadius |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | rowFar | |||
| real(kind=dp), | intent(in) | :: | skewLimit | |||
| real(kind=dp), | intent(in) | :: | largeCoreRadius |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | rowNear |
Compute lift and drag direction vectors
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | Omega |
Sum up sectional forces to net forces
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | dt | |||
| real(kind=dp), | intent(in) | :: | omega |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | unit | |||
| integer, | intent(out) | :: | iostat | |||
| character(len=*), | intent(inout) | :: | iomsg |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(blade_class), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | unit | |||
| integer, | intent(out) | :: | iostat | |||
| character(len=*), | intent(inout) | :: | iomsg |
Read rotor geometry from geomXX.nml in namelist format
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class) | :: | this | ||||
| character(len=*), | intent(in) | :: | filename | |||
| character(len=*), | intent(in), | optional | :: | outputFilename |
Initialize variables of rotor geometry and wake
| Type | Intent | Optional | 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 |
Deinitialise rotor variables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class) | :: | this | ||||
| type(switches_class), | intent(in) | :: | switches |
Read blade geometry from PLOT3D formatted file
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class) | :: | this | ||||
| character(len=*), | intent(in) | :: | PLOT3Dfilename |
Read ASCII stl file for non-lifting surface geometry
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class) | :: | this | ||||
| character(len=*), | intent(in) | :: | stlfilename |
Compute AIC matrix for rotor
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this |
Map gam from vector to matrix format
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class) | :: | this | ||||
| real(kind=dp), | intent(in), | dimension(3) | :: | dshift |
Rotate using pts => phi theta psi Warning: This rotation is about the global reference frame
| Type | Intent | Optional | 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 |
Rotate blades by flap angle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this |
Rotate rotor by dpsi angle about axis
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | dpsi | |||
| logical, | optional | :: | nopitch |
Assign coordinates to first rowNear of wake from last row of blade
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| character(len=2), | intent(in) | :: | edge |
Update age of wake filaments
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | dt | |||
| character(len=1), | intent(in) | :: | 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
| Type | Intent | Optional | 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 |
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
| Type | Intent | Optional | 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 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this |
Shift wake locations on rollup
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this |
Shift wake locations of Fwake for truncation
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this |
Compute force from circulation
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | density | |||
| real(kind=dp), | intent(in) | :: | dt |
Compute force from sec alpha
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | density | |||
| real(kind=dp), | intent(in) | :: | velSound |
Compute force from sec alpha
| Type | Intent | Optional | 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 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | iter | |||
| real(kind=dp), | intent(in) | :: | dt | |||
| character(len=1), | intent(in) | :: | wakeType |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | dt |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | dt |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this |
Mirrors gamma from another rotor
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| class(rotor_class), | intent(in) | :: | fromRotor |
Mirrors velCP, velCPm from another rotor (flip velocity component in mirror plane)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| class(rotor_class), | intent(in) | :: | fromRotor |
Mirrors wake positions from another rotor
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| class(rotor_class), | intent(in) | :: | fromRotor | |||
| character(len=1), | intent(in) | :: | wakeType |
Converts -ve nsteps to nsteps for corresponding no. of chords or revs
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| integer, | intent(inout) | :: | nsteps | |||
| real(kind=dp), | intent(in) | :: | dt |
Erase a near wake row by setting gamma to zero
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | rowErase |
Erase a far wake row by setting gamma to zero
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | rowErase |
Attaches prescribed far wake
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| real(kind=dp), | intent(in) | :: | dt | |||
| character(len=1), | intent(in) | :: | wakeType |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | unit | |||
| integer, | intent(out) | :: | iostat | |||
| character(len=*), | intent(inout) | :: | iomsg |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rotor_class), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | unit | |||
| integer, | intent(out) | :: | iostat | |||
| character(len=*), | intent(inout) | :: | iomsg |