|
| FGRotor (FGFDMExec *exec, Element *rotor_element, int num) |
| Constructor for FGRotor.
|
|
| ~FGRotor () |
| Destructor for FGRotor.
|
|
double | GetPowerRequired (void) const |
| Returns the power required by the rotor.
|
|
double | Calculate (double EnginePower) |
| Returns the scalar thrust of the rotor, and adjusts the RPM value.
|
|
double | GetRPM (void) const |
| Retrieves the RPMs of the rotor.
|
|
void | SetRPM (double rpm) |
|
double | GetEngineRPM (void) const |
| Retrieves the RPMs of the Engine, as seen from this rotor.
|
|
void | SetEngineRPM (double rpm) |
|
double | GetGearRatio (void) |
| Tells the rotor's gear ratio, usually the engine asks for this.
|
|
double | GetThrust (void) const |
| Retrieves the thrust of the rotor.
|
|
double | GetA0 (void) const |
| Retrieves the rotor's coning angle.
|
|
double | GetA1 (void) const |
| Retrieves the longitudinal flapping angle with respect to the rotor shaft.
|
|
double | GetB1 (void) const |
| Retrieves the lateral flapping angle with respect to the rotor shaft.
|
|
double | GetLambda (void) const |
| Retrieves the inflow ratio.
|
|
double | GetMu (void) const |
| Retrieves the tip-speed (aka advance) ratio.
|
|
double | GetNu (void) const |
| Retrieves the induced inflow ratio.
|
|
double | GetVi (void) const |
| Retrieves the induced velocity.
|
|
double | GetCT (void) const |
| Retrieves the thrust coefficient.
|
|
double | GetTorque (void) const |
| Retrieves the torque.
|
|
double | GetThetaDW (void) const |
| Downwash angle - positive values point forward (given a horizontal spinning rotor)
|
|
double | GetPhiDW (void) const |
| Downwash angle - positive values point leftward (given a horizontal spinning rotor)
|
|
double | GetGroundEffectScaleNorm (void) const |
| Retrieves the ground effect scaling factor.
|
|
void | SetGroundEffectScaleNorm (double g) |
| Sets the ground effect scaling factor.
|
|
double | GetCollectiveCtrl (void) const |
| Retrieves the collective control input in radians.
|
|
double | GetLateralCtrl (void) const |
| Retrieves the lateral control input in radians.
|
|
double | GetLongitudinalCtrl (void) const |
| Retrieves the longitudinal control input in radians.
|
|
void | SetCollectiveCtrl (double c) |
| Sets the collective control input in radians.
|
|
void | SetLateralCtrl (double c) |
| Sets the lateral control input in radians.
|
|
void | SetLongitudinalCtrl (double c) |
| Sets the longitudinal control input in radians.
|
|
std::string | GetThrusterLabels (int id, const std::string &delimeter) |
|
std::string | GetThrusterValues (int id, const std::string &delimeter) |
|
| FGThruster (FGFDMExec *FDMExec, Element *el, int num) |
| Constructor.
|
|
virtual | ~FGThruster () |
| Destructor.
|
|
void | SetName (std::string name) |
|
virtual double | GetPowerRequired (void) |
|
double | GetThrust (void) const |
|
eType | GetType (void) |
|
std::string | GetName (void) |
|
void | SetReverserAngle (double angle) |
|
double | GetReverserAngle (void) const |
|
double | GetGearRatio (void) |
|
virtual void | ResetToIC (void) |
|
| FGForce (FGFDMExec *FDMExec) |
| Constructor.
|
|
| FGForce (const FGForce &force) |
|
virtual | ~FGForce () |
| Destructor.
|
|
virtual const FGColumnVector3 & | GetBodyForces (void) |
|
double | GetBodyXForce (void) const |
|
double | GetBodyYForce (void) const |
|
double | GetBodyZForce (void) const |
|
const FGColumnVector3 & | GetMoments (void) const |
|
void | SetLocation (double x, double y, double z) |
|
void | SetActingLocation (double x, double y, double z) |
| Acting point of application.
|
|
void | SetLocationX (double x) |
|
void | SetLocationY (double y) |
|
void | SetLocationZ (double z) |
|
double | SetActingLocationX (double x) |
|
double | SetActingLocationY (double y) |
|
double | SetActingLocationZ (double z) |
|
void | SetLocation (const FGColumnVector3 &vv) |
|
void | SetActingLocation (const FGColumnVector3 &vv) |
|
double | GetLocationX (void) const |
|
double | GetLocationY (void) const |
|
double | GetLocationZ (void) const |
|
double | GetActingLocationX (void) const |
|
double | GetActingLocationY (void) const |
|
double | GetActingLocationZ (void) const |
|
const FGColumnVector3 & | GetLocation (void) const |
|
const FGColumnVector3 & | GetActingLocation (void) const |
|
void | SetAnglesToBody (double broll, double bpitch, double byaw) |
|
void | SetAnglesToBody (const FGColumnVector3 &vv) |
|
void | UpdateCustomTransformMatrix (void) |
|
void | SetPitch (double pitch) |
|
void | SetYaw (double yaw) |
|
double | GetPitch (void) const |
|
double | GetYaw (void) const |
|
const FGColumnVector3 & | GetAnglesToBody (void) const |
|
double | GetAnglesToBody (int axis) const |
|
void | SetTransformType (TransformType ii) |
|
TransformType | GetTransformType (void) const |
|
const FGMatrix33 & | Transform (void) const |
|
| FGJSBBase () |
| Constructor for FGJSBBase.
|
|
virtual | ~FGJSBBase () |
| Destructor for FGJSBBase.
|
|
void | PutMessage (const Message &msg) |
| Places a Message structure on the Message queue.
|
|
void | PutMessage (const std::string &text) |
| Creates a message with the given text and places it on the queue.
|
|
void | PutMessage (const std::string &text, bool bVal) |
| Creates a message with the given text and boolean value and places it on the queue.
|
|
void | PutMessage (const std::string &text, int iVal) |
| Creates a message with the given text and integer value and places it on the queue.
|
|
void | PutMessage (const std::string &text, double dVal) |
| Creates a message with the given text and double value and places it on the queue.
|
|
int | SomeMessages (void) const |
| Reads the message on the queue (but does not delete it).
|
|
void | ProcessMessage (void) |
| Reads the message on the queue and removes it from the queue.
|
|
Message * | ProcessNextMessage (void) |
| Reads the next message on the queue and removes it from the queue.
|
|
void | disableHighLighting (void) |
| Disables highlighting in the console output.
|
|
|
enum | eType { ttNozzle
, ttRotor
, ttPropeller
, ttDirect
} |
|
enum | TransformType { tNone
, tWindBody
, tLocalBody
, tCustom
} |
|
enum | { eL = 1
, eM
, eN
} |
| Moments L, M, N. More...
|
|
enum | { eP = 1
, eQ
, eR
} |
| Rates P, Q, R. More...
|
|
enum | { eU = 1
, eV
, eW
} |
| Velocities U, V, W. More...
|
|
enum | { eX = 1
, eY
, eZ
} |
| Positions X, Y, Z. More...
|
|
enum | { ePhi = 1
, eTht
, ePsi
} |
| Euler angles Phi, Theta, Psi. More...
|
|
enum | { eDrag = 1
, eSide
, eLift
} |
| Stability axis forces, Drag, Side force, Lift. More...
|
|
enum | { eRoll = 1
, ePitch
, eYaw
} |
| Local frame orientation Roll, Pitch, Yaw. More...
|
|
enum | { eNorth = 1
, eEast
, eDown
} |
| Local frame position North, East, Down. More...
|
|
enum | { eLat = 1
, eLong
, eRad
} |
| Locations Radius, Latitude, Longitude. More...
|
|
enum | {
inNone = 0
, inDegrees
, inRadians
, inMeters
,
inFeet
} |
| Conversion specifiers. More...
|
|
static const std::string & | GetVersion (void) |
| Returns the version number of JSBSim.
|
|
static constexpr double | KelvinToFahrenheit (double kelvin) |
| Converts from degrees Kelvin to degrees Fahrenheit.
|
|
static constexpr double | CelsiusToRankine (double celsius) |
| Converts from degrees Celsius to degrees Rankine.
|
|
static constexpr double | RankineToCelsius (double rankine) |
| Converts from degrees Rankine to degrees Celsius.
|
|
static constexpr double | KelvinToRankine (double kelvin) |
| Converts from degrees Kelvin to degrees Rankine.
|
|
static constexpr double | RankineToKelvin (double rankine) |
| Converts from degrees Rankine to degrees Kelvin.
|
|
static constexpr double | FahrenheitToCelsius (double fahrenheit) |
| Converts from degrees Fahrenheit to degrees Celsius.
|
|
static constexpr double | CelsiusToFahrenheit (double celsius) |
| Converts from degrees Celsius to degrees Fahrenheit.
|
|
static constexpr double | CelsiusToKelvin (double celsius) |
| Converts from degrees Celsius to degrees Kelvin.
|
|
static constexpr double | KelvinToCelsius (double kelvin) |
| Converts from degrees Kelvin to degrees Celsius.
|
|
static constexpr double | FeetToMeters (double measure) |
| Converts from feet to meters.
|
|
static double | PitotTotalPressure (double mach, double p) |
| Compute the total pressure in front of the Pitot tube.
|
|
static double | MachFromImpactPressure (double qc, double p) |
| Compute the Mach number from the differential pressure (qc) and the static pressure.
|
|
static double | VcalibratedFromMach (double mach, double p) |
| Calculate the calibrated airspeed from the Mach number.
|
|
static double | MachFromVcalibrated (double vcas, double p) |
| Calculate the Mach number from the calibrated airspeed.Based on the formulas in the US Air Force Aircraft Performance Flight Testing Manual (AFFTC-TIH-99-01).
|
|
static bool | EqualToRoundoff (double a, double b) |
| Finite precision comparison.
|
|
static bool | EqualToRoundoff (float a, float b) |
| Finite precision comparison.
|
|
static bool | EqualToRoundoff (float a, double b) |
| Finite precision comparison.
|
|
static bool | EqualToRoundoff (double a, float b) |
| Finite precision comparison.
|
|
static constexpr double | Constrain (double min, double value, double max) |
| Constrain a value between a minimum and a maximum value.
|
|
static constexpr double | sign (double num) |
|
static double | GaussianRandomNumber (void) |
|
struct JSBSim::FGThruster::Inputs | in |
|
static char | highint [5] = {27, '[', '1', 'm', '\0' } |
| highlights text
|
|
static char | halfint [5] = {27, '[', '2', 'm', '\0' } |
| low intensity text
|
|
static char | normint [6] = {27, '[', '2', '2', 'm', '\0' } |
| normal intensity text
|
|
static char | reset [5] = {27, '[', '0', 'm', '\0' } |
| resets text properties
|
|
static char | underon [5] = {27, '[', '4', 'm', '\0' } |
| underlines text
|
|
static char | underoff [6] = {27, '[', '2', '4', 'm', '\0' } |
| underline off
|
|
static char | fgblue [6] = {27, '[', '3', '4', 'm', '\0' } |
| blue text
|
|
static char | fgcyan [6] = {27, '[', '3', '6', 'm', '\0' } |
| cyan text
|
|
static char | fgred [6] = {27, '[', '3', '1', 'm', '\0' } |
| red text
|
|
static char | fggreen [6] = {27, '[', '3', '2', 'm', '\0' } |
| green text
|
|
static char | fgdef [6] = {27, '[', '3', '9', 'm', '\0' } |
| default text
|
|
static short | debug_lvl = 1 |
|
static std::string | CreateIndexedPropertyName (const std::string &Property, int index) |
|
eType | Type |
|
std::string | Name |
|
double | Thrust |
|
double | PowerRequired |
|
double | GearRatio |
|
double | ThrustCoeff |
|
double | ReverserAngle |
|
int | EngineNum |
|
FGFDMExec * | fdmex |
|
FGMassBalance * | MassBalance |
|
FGColumnVector3 | vFn |
|
FGColumnVector3 | vMn |
|
FGColumnVector3 | vOrient |
|
TransformType | ttype |
|
FGColumnVector3 | vXYZn |
|
FGColumnVector3 | vActingXYZn |
|
FGMatrix33 | mT |
|
static Message | localMsg |
|
static std::queue< Message > | Messages |
|
static unsigned int | messageId = 0 |
|
static constexpr double | radtodeg = 180. / 3.14159265358979323846 |
|
static constexpr double | degtorad = 3.14159265358979323846 / 180. |
|
static constexpr double | hptoftlbssec = 550.0 |
|
static constexpr double | psftoinhg = 0.014138 |
|
static constexpr double | psftopa = 47.88 |
|
static constexpr double | ktstofps = 1.68781 |
|
static constexpr double | fpstokts = 1.0 / ktstofps |
|
static constexpr double | inchtoft = 1.0/12.0 |
|
static constexpr double | fttom = 0.3048 |
|
static constexpr double | m3toft3 = 1.0/(fttom*fttom*fttom) |
|
static constexpr double | in3tom3 = inchtoft*inchtoft*inchtoft/m3toft3 |
|
static constexpr double | inhgtopa = 3386.38 |
|
static constexpr double | slugtolb = 32.174049 |
| Note that definition of lbtoslug by the inverse of slugtolb and not to a different constant you can also get from some tables will make lbtoslug*slugtolb == 1 up to the magnitude of roundoff.
|
|
static constexpr double | lbtoslug = 1.0/slugtolb |
|
static constexpr double | kgtolb = 2.20462 |
|
static constexpr double | kgtoslug = 0.06852168 |
|
static const std::string | needed_cfg_version = "2.0" |
|
static const std::string | JSBSim_version = JSBSIM_VERSION " " __DATE__ " " __TIME__ |
|
static int | gaussian_random_number_phase = 0 |
|
Models a helicopter rotor.
Configuration File Format
<diameter unit="{LENGTH}"> {number} </diameter>
<numblades> {number} </numblades>
<gearratio> {number} </gearratio>
<nominalrpm> {number} </nominalrpm>
<minrpm> {number} </minrpm>
<maxrpm> {number} </maxrpm>
<chord unit="{LENGTH}"> {number} </chord>
<liftcurveslope Xunit="1/RAD"> {number} </liftcurveslope>
<twist unit="{ANGLE}"> {number} </twist>
<hingeoffset unit="{LENGTH}"> {number} </hingeoffset>
<flappingmoment unit="{MOMENT}"> {number} </flappingmoment>
<massmoment Xunit="SLUG*FT"> {number} </massmoment>
<polarmoment unit="{MOMENT}"> {number} </polarmoment>
<inflowlag> {number} </inflowlag>
<tiplossfactor> {number} </tiplossfactor>
<maxbrakepower unit="{POWER}"> {number} </maxbrakepower>
<gearloss unit="{POWER}"> {number} </gearloss>
<gearmoment unit="{MOMENT}"> {number} </gearmoment>
<controlmap> {MAIN|TAIL|TANDEM} </controlmap>
<ExternalRPM> {number} </ExternalRPM>
<groundeffectexp> {number} </groundeffectexp>
<groundeffectshift unit="{LENGTH}"> {number} </groundeffectshift>
</rotor>
Configuration Parameters:
Brief description and the symbol frequently found in the literature.
<diameter> - Rotor disk diameter (2x R).
<numblades> - Number of blades (b).
<gearratio> - Ratio of (engine rpm) / (rotor rpm), usually > 1.
<nominalrpm> - RPM at which the rotor usally operates.
<minrpm> - Lowest RPM used in the model, optional and defaults to 1.
<maxrpm> - Largest RPM used in the model, optional and defaults to 2 x nominalrpm.
<chord> - Blade chord, (c).
<liftcurveslope> - Slope of curve of section lift against section angle of attack,
per rad (a).
<twist> - Blade twist from root to tip, (theta_1).
<hingeoffset> - Rotor flapping-hinge offset (e).
<flappingmoment> - Flapping moment of inertia (I_b).
<massmoment> - Blade mass moment. Mass of a single blade times the blade's
cg-distance from the hub, optional.
<polarmoment> - Moment of inertia for the whole rotor disk, optional.
<inflowlag> - Rotor inflow time constant, sec. Smaller values yield to quicker
responses (typical values for main rotor: 0.1 - 0.2 s).
<tiplossfactor> - Tip-loss factor. The Blade fraction that produces lift.
Value usually ranges between 0.95 - 1.0, optional (B).
<maxbrakepower> - Rotor brake, 20-30 hp should work for a mid size helicopter.
<gearloss> - Friction in gear, 0.2% to 3% of the engine power, optional (see notes).
<gearmoment> - Approximation for the moment of inertia of the gear (and engine),
defaults to 0.1 * polarmoment, optional.
<controlmap> - Defines the control inputs used (see notes).
<ExternalRPM> - Links the rotor to another rotor, or an user controllable property.
Experimental properties
<groundeffectexp> - Exponent for ground effect approximation. Values usually range from 0.04
for large rotors to 0.1 for smaller ones. As a rule of thumb the effect
vanishes at a height 2-3 times the rotor diameter.
formula used: exp ( - groundeffectexp * (height+groundeffectshift) )
Omitting or setting to 0.0 disables the effect calculation.
<groundeffectshift> - Further adjustment of ground effect, approx. hub height or slightly above
(This lessens the influence of the ground effect).
Notes:
- Controls -
The behavior of the rotor is controlled/influenced by following inputs.
- Tail/tandem rotor -
Providing <ExternalRPM> 0 </ExternalRPM>
the tail rotor's RPM is linked to to the main (=first, =0) rotor, and specifing <controlmap> TAIL </controlmap>
tells this rotor to read the collective input from propulsion/engine[1]/antitorque-ctrl-rad
(The TAIL-map ignores lateral and longitudinal input). The rotor needs to be attached to a dummy engine, e.g. an 1HP electrical engine. A tandem rotor is setup analogous.
- Sense -
The 'sense' parameter from the thruster is interpreted as follows, sense=1 means counter clockwise rotation of the main rotor, as viewed from above. This is as a far as I know more popular than clockwise rotation, which is defined by setting sense to -1. Concerning coaxial designs - by setting 'sense' to zero, a Kamov-style rotor is modeled (i.e. the rotor produces no torque).
- Engine issues -
In order to keep the rotor/engine speed constant, use of a RPM-Governor system is encouraged (see examples).
In case the model requires the manual use of a clutch the <gearloss>
property might need attention.
- Scaling the ground effect -
The property propulsion/engine[x]/groundeffect-scale-norm
allows fdm based scaling of the ground effect influence. For instance the effect vanishes at speeds above approx. 50kts, or one likes to land on a 'perforated' helipad.
- Development hints -
Setting <ExternalRPM> -1 </ExternalRPM>
the rotor's RPM is controlled by the propulsion/engine[x]/x-rpm-dict
property. This feature can be useful when developing a FDM.
References:
<dl>
<dt>/SH79/</dt><dd>Shaugnessy, J. D., Deaux, Thomas N., and Yenni, Kenneth R.,
"Development and Validation of a Piloted Simulation of a
Helicopter and External Sling Load", NASA TP-1285, 1979.</dd>
<dt>/BA41/</dt><dd>Bailey,F.J.,Jr., "A Simplified Theoretical Method of Determining
the Characteristics of a Lifting Rotor in Forward Flight", NACA Rep.716, 1941.</dd>
<dt>/AM50/</dt><dd>Amer, Kenneth B.,"Theory of Helicopter Damping in Pitch or Roll and a
Comparison With Flight Measurements", NACA TN-2136, 1950.</dd>
<dt>/TA77/</dt><dd>Talbot, Peter D., Corliss, Lloyd D., "A Mathematical Force and Moment
Model of a UH-1H Helicopter for Flight Dynamics Simulations", NASA TM-73,254, 1977.</dd>
<dt>/GE49/</dt><dd>Gessow, Alfred, Amer, Kenneth B. "An Introduction to the Physical
Aspects of Helicopter Stability", NACA TN-1982, 1949.</dd>
</dl>
@author Thomas Kreitler
Definition at line 235 of file FGRotor.h.