JSBSim Flight Dynamics Model
1.0 (02 March 2017)
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". More...
#include <FGPropeller.h>
Public Member Functions | |
FGPropeller (FGFDMExec *exec, Element *el, int num=0) | |
Constructor for FGPropeller. More... | |
~FGPropeller () | |
Destructor for FGPropeller - deletes the FGTable objects. | |
double | Calculate (double EnginePower) |
Calculates and returns the thrust produced by this propeller. More... | |
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 * | GetCPowerTable (void) const |
Retrieves propeller power table. | |
double | GetCtFactor (void) const |
Retrieves the coefficient of thrust multiplier. | |
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. More... | |
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. More... | |
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. More... | |
void | SetReverse (bool r) |
If true, sets the propeller in reversed position. | |
void | SetReverseCoef (double c) |
Set the propeller reverse pitch. More... | |
void | SetRPM (double rpm) |
Sets the Revolutions Per Minute for the propeller. More... | |
void | SetSense (double s) |
Sets the rotation sense of the propeller. More... | |
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. | |
FGForce (const FGForce &force) | |
~FGForce () | |
Destructor. | |
const FGColumnVector3 & | GetActingLocation (void) const |
double | GetActingLocationX (void) const |
double | GetActingLocationY (void) const |
double | GetActingLocationZ (void) const |
const FGColumnVector3 & | GetAnglesToBody (void) const |
double | GetAnglesToBody (int axis) 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 (double x, double y, double z) |
Acting point of application. More... | |
void | SetActingLocation (const FGColumnVector3 &vv) |
double | SetActingLocationX (double x) |
double | SetActingLocationY (double y) |
double | SetActingLocationZ (double z) |
void | SetAnglesToBody (double broll, double bpitch, double byaw) |
void | SetAnglesToBody (const FGColumnVector3 &vv) |
void | SetLocation (double x, double y, double z) |
void | SetLocation (const FGColumnVector3 &vv) |
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. | |
void | disableHighLighting (void) |
Disables highlighting in the console output. | |
std::string | GetVersion (void) |
Returns the version number of JSBSim. More... | |
void | PutMessage (const Message &msg) |
Places a Message structure on the Message queue. More... | |
void | PutMessage (const std::string &text) |
Creates a message with the given text and places it on the queue. More... | |
void | PutMessage (const std::string &text, bool bVal) |
Creates a message with the given text and boolean value and places it on the queue. More... | |
void | PutMessage (const std::string &text, int iVal) |
Creates a message with the given text and integer value and places it on the queue. More... | |
void | PutMessage (const std::string &text, double dVal) |
Creates a message with the given text and double value and places it on the queue. More... | |
int | SomeMessages (void) |
Reads the message on the queue (but does not delete it). More... | |
void | ProcessMessage (void) |
Reads the message on the queue and removes it from the queue. More... | |
Message * | ProcessNextMessage (void) |
Reads the next message on the queue and removes it from the queue. More... | |
Additional Inherited Members | |
Public Types inherited from FGThruster | |
enum | eType { ttNozzle, ttRotor, ttPropeller, ttDirect } |
Public Types inherited from FGForce | |
enum | TransformType { tNone, tWindBody, tLocalBody, tCustom } |
Public Types inherited from FGJSBBase | |
enum | { eL = 1, eM, eN } |
Moments L, M, N. | |
enum | { eP = 1, eQ, eR } |
Rates P, Q, R. | |
enum | { eU = 1, eV, eW } |
Velocities U, V, W. | |
enum | { eX = 1, eY, eZ } |
Positions X, Y, Z. | |
enum | { ePhi = 1, eTht, ePsi } |
Euler angles Phi, Theta, Psi. | |
enum | { eDrag = 1, eSide, eLift } |
Stability axis forces, Drag, Side force, Lift. | |
enum | { eRoll = 1, ePitch, eYaw } |
Local frame orientation Roll, Pitch, Yaw. | |
enum | { eNorth = 1, eEast, eDown } |
Local frame position North, East, Down. | |
enum | { eLat = 1, eLong, eRad } |
Locations Radius, Latitude, Longitude. | |
enum | { inNone = 0, inDegrees, inRadians, inMeters, inFeet } |
Conversion specifiers. | |
Static Public Member Functions inherited from FGJSBBase | |
static double | CelsiusToFahrenheit (double celsius) |
Converts from degrees Celsius to degrees Fahrenheit. More... | |
static double | CelsiusToKelvin (double celsius) |
Converts from degrees Celsius to degrees Kelvin. More... | |
static double | CelsiusToRankine (double celsius) |
Converts from degrees Celsius to degrees Rankine. More... | |
static 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. More... | |
static bool | EqualToRoundoff (float a, float b) |
Finite precision comparison. More... | |
static bool | EqualToRoundoff (float a, double b) |
Finite precision comparison. More... | |
static bool | EqualToRoundoff (double a, float b) |
Finite precision comparison. More... | |
static double | FahrenheitToCelsius (double fahrenheit) |
Converts from degrees Fahrenheit to degrees Celsius. More... | |
static double | FeetToMeters (double measure) |
Converts from feet to meters. More... | |
static double | GaussianRandomNumber (void) |
static double | KelvinToCelsius (double kelvin) |
Converts from degrees Kelvin to degrees Celsius. More... | |
static double | KelvinToFahrenheit (double kelvin) |
Converts from degrees Kelvin to degrees Fahrenheit. More... | |
static double | KelvinToRankine (double kelvin) |
Converts from degrees Kelvin to degrees Rankine. More... | |
static double | MachFromVcalibrated (double vcas, double p, double psl, double rhosl) |
Calculate the Mach number from the calibrated airspeed. More... | |
static double | PitotTotalPressure (double mach, double p) |
Compute the total pressure in front of the Pitot tube. More... | |
static double | RankineToCelsius (double rankine) |
Converts from degrees Rankine to degrees Celsius. More... | |
static double | RankineToKelvin (double rankine) |
Converts from degrees Rankine to degrees Kelvin. More... | |
static double | sign (double num) |
static double | VcalibratedFromMach (double mach, double p, double psl, double rhosl) |
Calculate the calibrated airspeed from the Mach number. More... | |
Public Attributes inherited from FGThruster | |
struct JSBSim::FGThruster::Inputs | in |
Static Public Attributes inherited from FGJSBBase | |
static short | debug_lvl = 1 |
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 | |
Protected Member Functions inherited from FGJSBBase | |
void | Debug (int) |
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 |
FGMatrix33 | mT |
TransformType | ttype |
FGColumnVector3 | vActingXYZn |
FGColumnVector3 | vFn |
FGColumnVector3 | vH |
FGColumnVector3 | vMn |
FGColumnVector3 | vOrient |
FGColumnVector3 | vXYZn |
Static Protected Attributes inherited from FGJSBBase | |
static const double | degtorad = 0.017453292519943295769236907684886 |
static const double | fpstokts = 1.0/ktstofps |
static const double | fttom = 0.3048 |
static int | gaussian_random_number_phase = 0 |
static const double | hptoftlbssec = 550.0 |
static const double | in3tom3 = 1.638706E-5 |
static const double | inchtoft = 0.08333333 |
static const double | inhgtopa = 3386.38 |
static const std::string | JSBSim_version = "1.0 " __DATE__ " " __TIME__ |
static const double | kgtolb = 2.20462 |
static const double | kgtoslug = 0.06852168 |
static const double | ktstofps = 1.68781 |
static const double | lbtoslug = 1.0/slugtolb |
static Message | localMsg |
static const double | m3toft3 = 1.0/(fttom*fttom*fttom) |
static double | Mair = 28.9645 |
static unsigned int | messageId = 0 |
static std::queue< Message > | Messages |
static const std::string | needed_cfg_version = "2.0" |
static const double | psftoinhg = 0.014138 |
static const double | psftopa = 47.88 |
static const double | radtodeg = 57.295779513082320876798154814105 |
static double | Reng = 1716.56 |
static double | Rstar = 1545.348 |
static const double | SHRatio = 1.40 |
static const double | slugtolb = 32.174049 |
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. <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).
Two tables are optional. They apply a factor to Ct and Cp based on the helical tip Mach.
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 170 of file FGPropeller.h.
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 60 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 209 of file FGPropeller.cpp.
|
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 294 of file FGPropeller.cpp.
|
inline |
Set the propeller pitch.
advance | the pitch command in percent (0.0 - 1.0) |
Definition at line 212 of file FGPropeller.h.
|
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 207 of file FGPropeller.h.
|
inline |
Set the propeller reverse pitch.
c | the reverse pitch command in percent (0.0 - 1.0) |
Definition at line 290 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 : , where is Torque and is moment of inertia for the propeller.
rpm | the rotational velocity of the propeller |
Reimplemented from FGThruster.
Definition at line 191 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 230 of file FGPropeller.h.