FlightGear next
|
FGPropeller models a propeller given the tabular data for Ct (thrust) and Cp (power), indexed by the advance ratio "J". More...
#include <FGPropeller.h>
Inherits JSBSim::FGThruster.
Public Member Functions | |
FGPropeller (FGFDMExec *exec, Element *el, int num=0) | |
Constructor for FGPropeller. | |
~FGPropeller () | |
Destructor for FGPropeller - deletes the FGTable objects. | |
void | ResetToIC (void) |
Reset the initial conditions. | |
void | SetRPM (double rpm) |
Sets the Revolutions Per Minute for the propeller. | |
void | SetEngineRPM (double rpm) |
Sets the Revolutions Per Minute for the propeller using the engine gear ratio. | |
bool | IsVPitch (void) const |
Returns true of this propeller is variable pitch. | |
void | SetPitch (double pitch) |
This commands the pitch of the blade to change to the value supplied. | |
void | SetAdvance (double advance) |
Set the propeller pitch. | |
void | SetPFactor (double pf) |
Sets the P-Factor constant. | |
void | SetConstantSpeed (int mode) |
Sets propeller into constant speed mode, or manual pitch mode. | |
void | SetCtFactor (double ctf) |
Sets coefficient of thrust multiplier. | |
void | SetCpFactor (double cpf) |
Sets coefficient of power multiplier. | |
void | SetSense (double s) |
Sets the rotation sense of the propeller. | |
double | GetPitch (void) const |
Retrieves the pitch of the propeller in degrees. | |
double | GetRPM (void) const |
Retrieves the RPMs of the propeller. | |
double | GetEngineRPM (void) const |
Calculates the RPMs of the engine based on gear ratio. | |
double | GetIxx (void) const |
Retrieves the propeller moment of inertia. | |
double | GetCtFactor (void) const |
Retrieves the coefficient of thrust multiplier. | |
double | GetCpFactor (void) const |
Retrieves the coefficient of power multiplier. | |
double | GetDiameter (void) const |
Retrieves the propeller diameter. | |
FGTable * | GetCThrustTable (void) const |
Retrieves propeller thrust table. | |
FGTable * | GetCPowerTable (void) const |
Retrieves propeller power table. | |
FGTable * | GetCtMachTable (void) const |
Retrieves propeller thrust Mach effects factor. | |
FGTable * | GetCpMachTable (void) const |
Retrieves propeller power Mach effects factor. | |
double | GetTorque (void) const |
Retrieves the Torque in foot-pounds (Don't you love the English system?) | |
double | GetPowerRequired (void) |
Retrieves the power required (or "absorbed") by the propeller - i.e. | |
double | Calculate (double EnginePower) |
Calculates and returns the thrust produced by this propeller. | |
FGColumnVector3 | GetPFactor (void) const |
Retrieves the P-Factor constant. | |
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. | |
void | SetReverseCoef (double c) |
Set the propeller reverse pitch. | |
double | GetReverseCoef (void) const |
Retrieves the reverse pitch command. | |
void | SetReverse (bool r) |
If true, sets the propeller in reversed position. | |
bool | GetReverse (void) const |
Returns true if the propeller is in reverse position. | |
void | SetFeather (bool f) |
If true, sets the propeller in feathered position. | |
bool | GetFeather (void) const |
Returns true if the propeller is in feathered position. | |
double | GetThrustCoefficient (void) const |
Retrieves the thrust coefficient. | |
double | GetHelicalTipMach (void) const |
Retrieves the Mach number at the propeller tips. | |
int | GetConstantSpeed (void) const |
Returns a non-zero value if the propeller is constant speed. | |
void | SetInducedVelocity (double Vi) |
Set the propeller induced velocity. | |
double | GetInducedVelocity (void) const |
Get the propeller induced velocity. | |
![]() | |
FGThruster (FGFDMExec *FDMExec, Element *el, int num) | |
Constructor. | |
virtual | ~FGThruster () |
Destructor. | |
void | SetName (std::string name) |
double | GetThrust (void) const |
eType | GetType (void) |
std::string | GetName (void) |
void | SetReverserAngle (double angle) |
double | GetReverserAngle (void) const |
double | GetGearRatio (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. | |
Additional Inherited Members | |
![]() | |
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 |
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).
Two tables are optional. They apply a factor to Ct and Cp based on the helical tip Mach.
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 169 of file FGPropeller.h.
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 54 of file FGPropeller.cpp.
JSBSim::FGPropeller::~FGPropeller | ( | ) |
Destructor for FGPropeller - deletes the FGTable objects.
Definition at line 179 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 JSBSim::FGThruster.
Definition at line 208 of file FGPropeller.cpp.
|
inline |
Returns a non-zero value if the propeller is constant speed.
Definition at line 305 of file FGPropeller.h.
|
inline |
Retrieves the coefficient of power multiplier.
Definition at line 247 of file FGPropeller.h.
|
inline |
Retrieves propeller power Mach effects factor.
Definition at line 260 of file FGPropeller.h.
|
inline |
Retrieves propeller power table.
Definition at line 255 of file FGPropeller.h.
|
inline |
Retrieves the coefficient of thrust multiplier.
Definition at line 244 of file FGPropeller.h.
|
inline |
Retrieves propeller thrust table.
Definition at line 253 of file FGPropeller.h.
|
inline |
Retrieves propeller thrust Mach effects factor.
Definition at line 258 of file FGPropeller.h.
|
inline |
Retrieves the propeller diameter.
Definition at line 250 of file FGPropeller.h.
|
inlinevirtual |
Calculates the RPMs of the engine based on gear ratio.
Reimplemented from JSBSim::FGThruster.
Definition at line 238 of file FGPropeller.h.
|
inline |
Returns true if the propeller is in feathered position.
Definition at line 299 of file FGPropeller.h.
|
inline |
Retrieves the Mach number at the propeller tips.
Definition at line 303 of file FGPropeller.h.
|
inline |
Get the propeller induced velocity.
Definition at line 309 of file FGPropeller.h.
|
inline |
Retrieves the propeller moment of inertia.
Definition at line 241 of file FGPropeller.h.
FGColumnVector3 JSBSim::FGPropeller::GetPFactor | ( | void | ) | const |
Retrieves the P-Factor constant.
Definition at line 372 of file FGPropeller.cpp.
|
inline |
Retrieves the pitch of the propeller in degrees.
Definition at line 232 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 JSBSim::FGThruster.
Definition at line 303 of file FGPropeller.cpp.
|
inline |
Returns true if the propeller is in reverse position.
Definition at line 295 of file FGPropeller.h.
|
inline |
Retrieves the reverse pitch command.
Definition at line 291 of file FGPropeller.h.
|
inlinevirtual |
Retrieves the RPMs of the propeller.
Reimplemented from JSBSim::FGThruster.
Definition at line 235 of file FGPropeller.h.
|
inline |
Retrieves the thrust coefficient.
Definition at line 301 of file FGPropeller.h.
|
virtual |
Generate the labels for the thruster standard CSV output.
Reimplemented from JSBSim::FGThruster.
Definition at line 385 of file FGPropeller.cpp.
|
virtual |
Generate the values for the thruster standard CSV output.
Reimplemented from JSBSim::FGThruster.
Definition at line 402 of file FGPropeller.cpp.
|
inline |
Retrieves the Torque in foot-pounds (Don't you love the English system?)
Definition at line 263 of file FGPropeller.h.
|
inline |
Returns true of this propeller is variable pitch.
Definition at line 197 of file FGPropeller.h.
|
virtual |
Reset the initial conditions.
Reimplemented from JSBSim::FGThruster.
Definition at line 191 of file FGPropeller.cpp.
|
inline |
Set the propeller pitch.
advance | the pitch command in percent (0.0 - 1.0) |
Definition at line 211 of file FGPropeller.h.
|
inline |
Sets propeller into constant speed mode, or manual pitch mode.
Definition at line 217 of file FGPropeller.h.
|
inline |
Sets coefficient of power multiplier.
Definition at line 223 of file FGPropeller.h.
|
inline |
Sets coefficient of thrust multiplier.
Definition at line 220 of file FGPropeller.h.
|
inlinevirtual |
Sets the Revolutions Per Minute for the propeller using the engine gear ratio.
Reimplemented from JSBSim::FGThruster.
Definition at line 194 of file FGPropeller.h.
|
inline |
If true, sets the propeller in feathered position.
Definition at line 297 of file FGPropeller.h.
|
inline |
Set the propeller induced velocity.
Definition at line 307 of file FGPropeller.h.
|
inline |
Sets the P-Factor constant.
Definition at line 214 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 206 of file FGPropeller.h.
|
inline |
If true, sets the propeller in reversed position.
Definition at line 293 of file FGPropeller.h.
|
inline |
Set the propeller reverse pitch.
c | the reverse pitch command in percent (0.0 - 1.0) |
Definition at line 289 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
rpm | the rotational velocity of the propeller |
Reimplemented from JSBSim::FGThruster.
Definition at line 190 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 229 of file FGPropeller.h.