![]() |
JSBSim Flight Dynamics Model 1.3.3 (16 Oct 2026)
An Open Source Flight Dynamics and Control Software Library in C++
|
FGPropeller models a propeller given the tabular data for Ct (thrust) and Cp (power), indexed by the advance ratio "J".
<ixx> - Propeller rotational inertia.
<diameter> - Propeller disk diameter.
<numblades> - Number of blades.
<gearratio> - Ratio of (engine rpm) / (prop rpm).
<minpitch> - Minimum blade pitch angle.
<maxpitch> - Maximum blade pitch angle.
<minrpm> - Minimum rpm target for constant speed propeller.
<maxrpm> - Maximum rpm target for constant speed propeller.
<constspeed> - 1 = constant speed mode, 0 = manual pitch mode.
<reversepitch> - Blade pitch angle for reverse.
<sense> - Direction of rotation (1=clockwise as viewed from cockpit,
-1=anti-clockwise as viewed from cockpit). Sense is
specified in the parent tag of the propeller.
<p_factor> - P factor. It is specified in the parent tag of
the propeller.
<ct_factor> - A multiplier for the coefficients of thrust.
<cp_factor> - A multiplier for the coefficients of power.
Two tables are needed. One for coefficient of thrust (Ct) and one for coefficient of power (Cp).
Four tables are optional. CT_MACH and CP_MACH apply a factor to Ct and Cp based on helical tip Mach. CT_RPM_FACTOR and CP_RPM_FACTOR apply a Reynolds-number correction factor indexed by propeller RPM, normalised to 1.0 at the RPM for which the baseline C_THRUST/C_POWER data were measured.
The RPM-indexed Reynolds correction is intended for very small propellers, such as those used on UAVs and MAVs. It assumes that the air viscosity is effectively constant (as is generally reasonable for low-altitude operation) and that the blade-relative airflow is dominated by circumferential velocity, rather than the vehicle's translational velocity. RPM is therefore used as a proxy for the change in Reynolds number; the correction tables do not account for changes in atmospheric properties or flight speed. They should be calibrated for the propeller and operating atmosphere in question, and may need retuning when used in substantially different conditions, for example in the Martian atmosphere.
The parameters <sense> and <p_factor> must be specified at the parent level i.e. in the <thruster> element. This allows to specify different sense and P factor values for each propeller of the model while using the same definition file for all the propellers.
In addition to thrust, the propeller applies two moments to the aircraft:
It should be noted that historically the gyroscopic moment had an incorrect sign. The correct sign can be obtained by specifying a version attribute higher than 1.0 to the propeller definition
For backward compatibility, the absence of the version attribute will result in the gyroscopic moment to be computed with the legacy incorrect sign.
Several references were helpful, here:
Definition at line 194 of file FGPropeller.h.
#include <FGPropeller.h>
Inheritance diagram for FGPropeller:
Collaboration diagram for FGPropeller:Public Member Functions | |
| FGPropeller (FGFDMExec *exec, Element *el, int num=0) | |
| Constructor for FGPropeller. | |
| ~FGPropeller () | |
| Destructor for FGPropeller - deletes the FGTable objects. | |
| double | Calculate (double EnginePower) |
| Calculates and returns the thrust produced by this propeller. | |
| int | GetConstantSpeed (void) const |
| Returns a non-zero value if the propeller is constant speed. | |
| double | GetCpFactor (void) const |
| Retrieves the coefficient of power multiplier. | |
| FGTable * | GetCpMachTable (void) const |
| Retrieves propeller power Mach effects factor. | |
| FGTable * | GetCPowerRPMTable (void) const |
| Retrieves propeller power RPM correction factor table. | |
| FGTable * | GetCPowerTable (void) const |
| Retrieves propeller power table. | |
| double | GetCtFactor (void) const |
| Retrieves the coefficient of thrust multiplier. | |
| FGTable * | GetCThrustRPMTable (void) const |
| Retrieves propeller thrust RPM correction factor table. | |
| FGTable * | GetCThrustTable (void) const |
| Retrieves propeller thrust table. | |
| FGTable * | GetCtMachTable (void) const |
| Retrieves propeller thrust Mach effects factor. | |
| double | GetDiameter (void) const |
| Retrieves the propeller diameter. | |
| double | GetEngineRPM (void) const |
| Calculates the RPMs of the engine based on gear ratio. | |
| bool | GetFeather (void) const |
| Returns true if the propeller is in feathered position. | |
| double | GetHelicalTipMach (void) const |
| Retrieves the Mach number at the propeller tips. | |
| double | GetInducedVelocity (void) const |
| Get the propeller induced velocity. | |
| double | GetIxx (void) const |
| Retrieves the propeller moment of inertia. | |
| FGColumnVector3 | GetPFactor (void) const |
| Retrieves the P-Factor constant. | |
| double | GetPitch (void) const |
| Retrieves the pitch of the propeller in degrees. | |
| double | GetPowerRequired (void) |
| Retrieves the power required (or "absorbed") by the propeller - i.e. | |
| bool | GetReverse (void) const |
| Returns true if the propeller is in reverse position. | |
| double | GetReverseCoef (void) const |
| Retrieves the reverse pitch command. | |
| double | GetRPM (void) const |
| Retrieves the RPMs of the propeller. | |
| double | GetThrustCoefficient (void) const |
| Retrieves the thrust coefficient. | |
| std::string | GetThrusterLabels (int id, const std::string &delimeter) |
| Generate the labels for the thruster standard CSV output. | |
| std::string | GetThrusterValues (int id, const std::string &delimeter) |
| Generate the values for the thruster standard CSV output. | |
| double | GetTorque (void) const |
| Retrieves the Torque in foot-pounds (Don't you love the English system?) | |
| bool | IsVPitch (void) const |
| Returns true of this propeller is variable pitch. | |
| void | ResetToIC (void) |
| Reset the initial conditions. | |
| void | SetAdvance (double advance) |
| Set the propeller pitch. | |
| void | SetConstantSpeed (int mode) |
| Sets propeller into constant speed mode, or manual pitch mode. | |
| void | SetCpFactor (double cpf) |
| Sets coefficient of power multiplier. | |
| void | SetCtFactor (double ctf) |
| Sets coefficient of thrust multiplier. | |
| void | SetEngineRPM (double rpm) |
| Sets the Revolutions Per Minute for the propeller using the engine gear ratio. | |
| void | SetFeather (bool f) |
| If true, sets the propeller in feathered position. | |
| void | SetInducedVelocity (double Vi) |
| Set the propeller induced velocity. | |
| void | SetPFactor (double pf) |
| Sets the P-Factor constant. | |
| void | SetPitch (double pitch) |
| This commands the pitch of the blade to change to the value supplied. | |
| void | SetReverse (bool r) |
| If true, sets the propeller in reversed position. | |
| void | SetReverseCoef (double c) |
| Set the propeller reverse pitch. | |
| void | SetRPM (double rpm) |
| Sets the Revolutions Per Minute for the propeller. | |
| void | SetSense (double s) |
| Sets the rotation sense of the propeller. | |
Public Member Functions inherited from FGThruster | |
| FGThruster (FGFDMExec *FDMExec, Element *el, int num) | |
| Constructor. | |
| virtual | ~FGThruster () |
| Destructor. | |
| double | GetGearRatio (void) |
| std::string | GetName (void) |
| double | GetReverserAngle (void) const |
| double | GetThrust (void) const |
| eType | GetType (void) |
| void | SetName (std::string name) |
| void | SetReverserAngle (double angle) |
Public Member Functions inherited from FGForce | |
| FGForce (FGFDMExec *FDMExec) | |
| Constructor. | |
| virtual | ~FGForce () |
| Destructor. | |
| const FGColumnVector3 & | GetActingLocation (void) const |
| double | GetActingLocationX (void) const |
| double | GetActingLocationY (void) const |
| double | GetActingLocationZ (void) const |
| double | GetAnglesToBody (int axis) const |
| const FGColumnVector3 & | GetAnglesToBody (void) const |
| virtual const FGColumnVector3 & | GetBodyForces (void) |
| double | GetBodyXForce (void) const |
| double | GetBodyYForce (void) const |
| double | GetBodyZForce (void) const |
| const FGColumnVector3 & | GetLocation (void) const |
| double | GetLocationX (void) const |
| double | GetLocationY (void) const |
| double | GetLocationZ (void) const |
| const FGColumnVector3 & | GetMoments (void) const |
| double | GetPitch (void) const |
| TransformType | GetTransformType (void) const |
| double | GetYaw (void) const |
| void | SetActingLocation (const FGColumnVector3 &vv) |
| void | SetActingLocation (double x, double y, double z) |
| Acting point of application. | |
| void | SetActingLocationX (double x) |
| void | SetActingLocationY (double y) |
| void | SetActingLocationZ (double z) |
| void | SetAnglesToBody (const FGColumnVector3 &vv) |
| void | SetAnglesToBody (double broll, double bpitch, double byaw) |
| void | SetLocation (const FGColumnVector3 &vv) |
| void | SetLocation (double x, double y, double z) |
| void | SetLocationX (double x) |
| void | SetLocationY (double y) |
| void | SetLocationZ (double z) |
| void | SetPitch (double pitch) |
| void | SetTransformType (TransformType ii) |
| void | SetYaw (double yaw) |
| const FGMatrix33 & | Transform (void) const |
| void | UpdateCustomTransformMatrix (void) |
Public Member Functions inherited from FGJSBBase | |
| FGJSBBase () | |
| Constructor for FGJSBBase. | |
| virtual | ~FGJSBBase () |
| Destructor for FGJSBBase. | |
Additional Inherited Members | |
Public Types inherited from FGThruster | |
| enum | eType { ttNozzle , ttRotor , ttPropeller , ttDirect } |
Public Types inherited from FGForce | |
| enum | TransformType { tNone , tWindBody , tLocalBody , tInertialBody , tCustom } |
Public Types inherited from FGJSBBase | |
| 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 Public Member Functions inherited from FGJSBBase | |
| 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 | CelsiusToRankine (double celsius) |
| Converts from degrees Celsius to degrees Rankine. | |
| static constexpr double | Constrain (double min, double value, double max) |
| Constrain a value between a minimum and a maximum value. | |
| static bool | EqualToRoundoff (double a, double b) |
| Finite precision comparison. | |
| static bool | EqualToRoundoff (double a, float b) |
| Finite precision comparison. | |
| static bool | EqualToRoundoff (float a, double b) |
| Finite precision comparison. | |
| static bool | EqualToRoundoff (float a, float b) |
| Finite precision comparison. | |
| static constexpr double | FahrenheitToCelsius (double fahrenheit) |
| Converts from degrees Fahrenheit to degrees Celsius. | |
| static constexpr double | FeetToMeters (double measure) |
| Converts from feet to meters. | |
| static const std::string & | GetVersion (void) |
| Returns the version number of JSBSim. | |
| static constexpr double | KelvinToCelsius (double kelvin) |
| Converts from degrees Kelvin to degrees Celsius. | |
| static constexpr double | KelvinToFahrenheit (double kelvin) |
| Converts from degrees Kelvin to degrees Fahrenheit. | |
| static constexpr double | KelvinToRankine (double kelvin) |
| Converts from degrees Kelvin to degrees Rankine. | |
| static constexpr double | RankineToCelsius (double rankine) |
| Converts from degrees Rankine to degrees Celsius. | |
| static constexpr double | RankineToKelvin (double rankine) |
| Converts from degrees Rankine to degrees Kelvin. | |
| static constexpr double | sign (double num) |
Public Attributes inherited from FGThruster | |
| struct JSBSim::FGThruster::Inputs | in |
Static Public Attributes inherited from FGJSBBase | |
| static short | debug_lvl = 1 |
Static Protected Member Functions inherited from FGJSBBase | |
| static std::string | CreateIndexedPropertyName (const std::string &Property, int index) |
Protected Attributes inherited from FGThruster | |
| int | EngineNum |
| double | GearRatio |
| std::string | Name |
| double | PowerRequired |
| double | ReverserAngle |
| double | Thrust |
| double | ThrustCoeff |
| eType | Type |
Protected Attributes inherited from FGForce | |
| FGFDMExec * | fdmex |
| std::shared_ptr< FGMassBalance > | MassBalance |
| FGMatrix33 | mT |
| TransformType | ttype |
| FGColumnVector3 | vActingXYZn |
| FGColumnVector3 | vFn |
| FGColumnVector3 | vMn |
| FGColumnVector3 | vOrient |
| FGColumnVector3 | vXYZn |
Static Protected Attributes inherited from FGJSBBase | |
| static constexpr double | degtorad = M_PI / 180. |
| static constexpr double | fpstokts = 1.0 / ktstofps |
| static constexpr double | fttom = 0.3048 |
| static constexpr double | hptoftlbssec = 550.0 |
| static constexpr double | in3tom3 = inchtoft*inchtoft*inchtoft/m3toft3 |
| static constexpr double | inchtoft = 1.0/12.0 |
| static constexpr double | inhgtopa = 3386.38 |
| static const std::string | JSBSim_version = JSBSIM_VERSION " " __DATE__ " " __TIME__ |
| static constexpr double | kgtolb = 2.20462 |
| static constexpr double | kgtoslug = 0.06852168 |
| static constexpr double | ktstofps = 1852./(3600*fttom) |
| static constexpr double | lbtoslug = 1.0/slugtolb |
| static constexpr double | m3toft3 = 1.0/(fttom*fttom*fttom) |
| static const std::string | needed_cfg_version = "2.0" |
| static constexpr double | psftoinhg = 0.014138 |
| static constexpr double | psftopa = 47.88 |
| static constexpr double | radtodeg = 180. / M_PI |
| 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. | |
| FGPropeller | ( | FGFDMExec * | exec, |
| Element * | el, | ||
| int | num = 0 |
||
| ) |
Constructor for FGPropeller.
| exec | a pointer to the main executive object |
| el | a pointer to the thruster config file XML element |
| num | the number of this propeller |
Definition at line 51 of file FGPropeller.cpp.
Here is the call graph for this function:| ~FGPropeller | ( | ) |
Destructor for FGPropeller - deletes the FGTable objects.
Definition at line 185 of file FGPropeller.cpp.
|
virtual |
Calculates and returns the thrust produced by this propeller.
Given the excess power available from the engine (in foot-pounds), the thrust is calculated, as well as the current RPM. The RPM is calculated by integrating the torque provided by the engine over what the propeller "absorbs" (essentially the "drag" of the propeller).
| PowerAvailable | this is the excess power provided by the engine to accelerate the prop. It could be negative, dictating that the propeller would be slowed. |
Reimplemented from FGThruster.
Definition at line 225 of file FGPropeller.cpp.
Here is the call graph for this function:
|
inline |
Returns a non-zero value if the propeller is constant speed.
Definition at line 335 of file FGPropeller.h.
Here is the caller graph for this function:
|
inline |
Retrieves the coefficient of power multiplier.
Definition at line 272 of file FGPropeller.h.
|
inline |
Retrieves propeller power Mach effects factor.
Definition at line 285 of file FGPropeller.h.
|
inline |
Retrieves propeller power RPM correction factor table.
Definition at line 290 of file FGPropeller.h.
|
inline |
Retrieves propeller power table.
Definition at line 280 of file FGPropeller.h.
|
inline |
Retrieves the coefficient of thrust multiplier.
Definition at line 269 of file FGPropeller.h.
|
inline |
Retrieves propeller thrust RPM correction factor table.
Definition at line 288 of file FGPropeller.h.
|
inline |
Retrieves propeller thrust table.
Definition at line 278 of file FGPropeller.h.
|
inline |
Retrieves propeller thrust Mach effects factor.
Definition at line 283 of file FGPropeller.h.
|
inline |
Retrieves the propeller diameter.
Definition at line 275 of file FGPropeller.h.
|
inlinevirtual |
Calculates the RPMs of the engine based on gear ratio.
Reimplemented from FGThruster.
Definition at line 263 of file FGPropeller.h.
Here is the caller graph for this function:
|
inline |
Returns true if the propeller is in feathered position.
Definition at line 329 of file FGPropeller.h.
|
inline |
Retrieves the Mach number at the propeller tips.
Definition at line 333 of file FGPropeller.h.
Here is the caller graph for this function:
|
inline |
Get the propeller induced velocity.
Definition at line 339 of file FGPropeller.h.
Here is the caller graph for this function:
|
inline |
Retrieves the propeller moment of inertia.
Definition at line 266 of file FGPropeller.h.
| FGColumnVector3 GetPFactor | ( | void | ) | const |
Retrieves the P-Factor constant.
Definition at line 395 of file FGPropeller.cpp.
Here is the caller graph for this function:
|
inline |
Retrieves the pitch of the propeller in degrees.
Definition at line 257 of file FGPropeller.h.
|
virtual |
Retrieves the power required (or "absorbed") by the propeller - i.e.
the power required to keep spinning the propeller at the current velocity, air density, and rotational rate.
Reimplemented from FGThruster.
Definition at line 323 of file FGPropeller.cpp.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
Returns true if the propeller is in reverse position.
Definition at line 325 of file FGPropeller.h.
|
inline |
Retrieves the reverse pitch command.
Definition at line 321 of file FGPropeller.h.
|
inlinevirtual |
Retrieves the RPMs of the propeller.
Reimplemented from FGThruster.
Definition at line 260 of file FGPropeller.h.
Here is the caller graph for this function:
|
inline |
Retrieves the thrust coefficient.
Definition at line 331 of file FGPropeller.h.
Here is the caller graph for this function:
|
virtual |
Generate the labels for the thruster standard CSV output.
Reimplemented from FGThruster.
Definition at line 408 of file FGPropeller.cpp.
Here is the call graph for this function:
|
virtual |
Generate the values for the thruster standard CSV output.
Reimplemented from FGThruster.
Definition at line 425 of file FGPropeller.cpp.
Here is the call graph for this function:
|
inline |
Retrieves the Torque in foot-pounds (Don't you love the English system?)
Definition at line 293 of file FGPropeller.h.
Here is the caller graph for this function:
|
inline |
Returns true of this propeller is variable pitch.
Definition at line 222 of file FGPropeller.h.
Here is the caller graph for this function:
|
virtual |
Reset the initial conditions.
Reimplemented from FGThruster.
Definition at line 199 of file FGPropeller.cpp.
|
inline |
Set the propeller pitch.
| advance | the pitch command in percent (0.0 - 1.0) |
Definition at line 236 of file FGPropeller.h.
|
inline |
Sets propeller into constant speed mode, or manual pitch mode.
Definition at line 242 of file FGPropeller.h.
Here is the caller graph for this function:
|
inline |
Sets coefficient of power multiplier.
Definition at line 248 of file FGPropeller.h.
Here is the caller graph for this function:
|
inline |
Sets coefficient of thrust multiplier.
Definition at line 245 of file FGPropeller.h.
Here is the caller graph for this function:
|
inlinevirtual |
Sets the Revolutions Per Minute for the propeller using the engine gear ratio.
Reimplemented from FGThruster.
Definition at line 219 of file FGPropeller.h.
|
inline |
If true, sets the propeller in feathered position.
Definition at line 327 of file FGPropeller.h.
|
inline |
Set the propeller induced velocity.
Definition at line 337 of file FGPropeller.h.
Here is the caller graph for this function:
|
inline |
|
inline |
This commands the pitch of the blade to change to the value supplied.
This call is meant to be issued either from the cockpit or by the flight control system (perhaps to maintain constant RPM for a constant-speed propeller). This value will be limited to be within whatever is specified in the config file for Max and Min pitch. It is also one of the lookup indices to the power and thrust tables for variable-pitch propellers.
| pitch | the pitch of the blade in degrees. |
Definition at line 231 of file FGPropeller.h.
|
inline |
If true, sets the propeller in reversed position.
Definition at line 323 of file FGPropeller.h.
|
inline |
Set the propeller reverse pitch.
| c | the reverse pitch command in percent (0.0 - 1.0) |
Definition at line 319 of file FGPropeller.h.
|
inlinevirtual |
Sets the Revolutions Per Minute for the propeller.
Normally the propeller instance will calculate its own rotational velocity, given the Torque produced by the engine and integrating over time using the standard equation for rotational acceleration \(a\): \(a = Q/I\) , where \(Q\) is Torque and \(I\) is moment of inertia for the propeller.
| rpm | the rotational velocity of the propeller |
Reimplemented from FGThruster.
Definition at line 215 of file FGPropeller.h.
|
inline |
Sets the rotation sense of the propeller.
| s | this value should be +/- 1 ONLY. +1 indicates clockwise rotation as viewed by someone standing behind the engine looking forward into the direction of flight. |
Definition at line 254 of file FGPropeller.h.
Here is the caller graph for this function: