JSBSim Flight Dynamics Model
1.0 (02 March 2017)
An Open Source Flight Dynamics and Control Software Library in C++
|
Public Member Functions | |
FGTrimAnalysis (FGFDMExec *FDMExec, TrimAnalysisMode tam=taFull) | |
Initializes the trimming class. More... | |
~FGTrimAnalysis (void) | |
Destructor. | |
bool | AddControl (TaControl control) |
Add a control to the current configuration. More... | |
void | CalculatePhiWFromTargetNlfTurn (double nlf) |
Calculate the wind axis bank angle from a given Nlf (sets also the target Nlf) More... | |
void | ClearControls (void) |
Clear all controls from the current configuration. More... | |
void | ClearDebug (void) |
bool | DoTrim (void) |
Execute the trim. | |
bool | EditState (TaControl new_control, double new_initvalue, double new_step, double new_min, double new_max) |
Change the control settings previously configured. More... | |
vector< FGTrimAnalysisControl * > * | GetControls () |
double | GetCostFunctionValue () const |
double | GetGamma () |
Return the current flight path angle in TrimAnalysis object. More... | |
bool | GetGammaFallback (void) |
query the fallback state More... | |
double | GetGammaRad () |
Gets flight path angle. More... | |
TrimAnalysisMode | GetMode () const |
double | GetPhiRad () |
Gets Euler angle phi. More... | |
double | GetPhiWRad () |
Gets Euler angle phiW (wind axes) More... | |
double | GetPsiRad () |
Gets Euler angle psi. More... | |
ofstream * | GetResultsFile () const |
Get the pointer to the file where trim analysis results are written,. More... | |
double | GetTargetNlf (void) |
Gets target normal load factor in steady turn. More... | |
double | GetThetaRad () |
Gets Euler angle theta. More... | |
double | GetTolerance (void) |
Get the tolerance for declaring a state trimmed. More... | |
bool | GetTrimFailed (void) |
Gets trim result status. More... | |
double | GetVtFps () |
Gets true speed [fps] from IC. More... | |
bool | Load (string fname, bool useStoredPath=true) |
Loads the trim configuration from file. More... | |
bool | RemoveControl (TaControl control) |
Remove a specific control from the current configuration. More... | |
void | Report (void) |
Print the results of the trim. More... | |
void | SetCostFunctionValue (double value) |
Set the value of the cost function. More... | |
void | SetDebug (int level) |
Debug level 1 shows results of each top-level iteration Debug level 2 shows level 1 & results of each per-axis iteration. | |
void | SetDottedValues (double udot, double vdot, double wdot, double pdot, double qdot, double rdot) |
Sets Dotted values. More... | |
void | SetEulerAngles (double phi0, double theta0, double psi0) |
Sets Euler angles. More... | |
void | SetGammaFallback (bool bb) |
automatically switch to trimming longitudinal acceleration with flight path angle (gamma) once it becomes apparent that there is not enough/too much thrust. More... | |
void | SetMaxCycles (int ii) |
Set the iteration limit. More... | |
void | SetMode (TrimAnalysisMode tam) |
Clear all controls and set a predefined trim mode (Note: controls are intended here as those variables to be adjusted for attaining convergence of the trimming algorithm) More... | |
bool | SetResultsFile (string name) |
Set the file where trim analysis results are written, open and get ready. More... | |
void | SetState (double u0, double v0, double w0, double p0, double q0, double r0, double alpha0, double beta0, double phi0, double theta0, double psi0, double gamma0) |
Sets state variables. More... | |
void | SetTargetNlf (double nlf) |
Sets target normal load factor in steady turn. More... | |
void | SetTolerance (double tt) |
Set the tolerance for declaring a state trimmed. More... | |
void | SetTrimFailed (bool tf) |
Sets trim result status. More... | |
void | SetTrimSuccessfull () |
void | TrimStats () |
Iteration statistics. | |
FGColumnVector3 | UpdateRatesPullup (void) |
Updates angular rates for pull-up trim. More... | |
FGColumnVector3 | UpdateRatesTurn (double psi, double theta, double phi, double phiW) |
Updates angular rates for turn trim according to turning trim constraints. More... | |
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... | |
Public Member Functions inherited from FGXMLFileRead | |
Element * | LoadXMLDocument (const SGPath &XML_filename, bool verbose=true) |
Element * | LoadXMLDocument (const SGPath &XML_filename, FGXMLParse &fparse, bool verbose=true) |
void | ResetParser (void) |
Friends | |
class | Objective |
Additional Inherited Members | |
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... | |
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) |
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 |
Definition at line 330 of file FGTrimAnalysis.h.
FGTrimAnalysis | ( | FGFDMExec * | FDMExec, |
TrimAnalysisMode | tam = taFull |
||
) |
Initializes the trimming class.
FDMExec | pointer to a JSBSim executive object. |
tam | trim mode |
Definition at line 320 of file FGTrimAnalysis.cpp.
bool AddControl | ( | TaControl | control | ) |
Add a control to the current configuration.
See the enums TaControl in FGTrimAnalysisControl.h for the available options. (Note: controls are intended here as those variables to be adjusted for attaining convergence of the trimming algorithm) Will fail if the given state is already configured.
control | the control to be adjusted in the trimming algorithm |
Definition at line 673 of file FGTrimAnalysis.cpp.
void CalculatePhiWFromTargetNlfTurn | ( | double | nlf | ) |
Calculate the wind axis bank angle from a given Nlf (sets also the target Nlf)
nlf |
Definition at line 752 of file FGTrimAnalysis.cpp.
void ClearControls | ( | void | ) |
Clear all controls from the current configuration.
The trimming routine must have at least one control configured to be useful (Note: controls are intended here as those variables to be adjusted for attaining convergence of the trimming algorithm)
Definition at line 653 of file FGTrimAnalysis.cpp.
bool EditState | ( | TaControl | new_control, |
double | new_initvalue, | ||
double | new_step, | ||
double | new_min, | ||
double | new_max | ||
) |
Change the control settings previously configured.
new_control | the control used to zero the state |
new_initvalue | a new initial value |
new_step | a new adjusting step |
new_min,new_max | a new range |
Definition at line 717 of file FGTrimAnalysis.cpp.
|
inline |
Definition at line 482 of file FGTrimAnalysis.h.
|
inline |
Return the current flight path angle in TrimAnalysis object.
Definition at line 536 of file FGTrimAnalysis.h.
|
inline |
query the fallback state
Definition at line 548 of file FGTrimAnalysis.h.
|
inline |
Gets flight path angle.
Definition at line 623 of file FGTrimAnalysis.h.
|
inline |
Definition at line 495 of file FGTrimAnalysis.h.
|
inline |
Gets Euler angle phi.
Definition at line 606 of file FGTrimAnalysis.h.
|
inline |
Gets Euler angle phiW (wind axes)
Definition at line 619 of file FGTrimAnalysis.h.
|
inline |
|
inline |
Get the pointer to the file where trim analysis results are written,.
Definition at line 473 of file FGTrimAnalysis.h.
|
inline |
Gets target normal load factor in steady turn.
Definition at line 663 of file FGTrimAnalysis.h.
|
inline |
|
inline |
Get the tolerance for declaring a state trimmed.
Definition at line 569 of file FGTrimAnalysis.h.
|
inline |
Gets trim result status.
Definition at line 578 of file FGTrimAnalysis.h.
|
inline |
Gets true speed [fps] from IC.
Definition at line 627 of file FGTrimAnalysis.h.
bool Load | ( | string | fname, |
bool | useStoredPath = true |
||
) |
Loads the trim configuration from file.
fname | The name of a trim configuration file |
useStoredPath | true if the stored path to the trim config file should be used |
Definition at line 450 of file FGTrimAnalysis.cpp.
bool RemoveControl | ( | TaControl | control | ) |
Remove a specific control from the current configuration.
control | the state to remove |
Definition at line 694 of file FGTrimAnalysis.cpp.
void Report | ( | void | ) |
Print the results of the trim.
For each axis trimmed, this includes the final state value, control value, and tolerance used.
Definition at line 610 of file FGTrimAnalysis.cpp.
|
inline |
Set the value of the cost function.
value | the cost function value |
Definition at line 478 of file FGTrimAnalysis.h.
void SetDottedValues | ( | double | udot, |
double | vdot, | ||
double | wdot, | ||
double | pdot, | ||
double | qdot, | ||
double | rdot | ||
) |
Sets Dotted values.
udot,vdot,wdot,pdot,qdot,rdot |
Definition at line 443 of file FGTrimAnalysis.cpp.
void SetEulerAngles | ( | double | phi0, |
double | theta0, | ||
double | psi0 | ||
) |
Sets Euler angles.
phi0,theta0,psi0 |
Definition at line 432 of file FGTrimAnalysis.cpp.
|
inline |
automatically switch to trimming longitudinal acceleration with flight path angle (gamma) once it becomes apparent that there is not enough/too much thrust.
bb | true to enable fallback |
Definition at line 543 of file FGTrimAnalysis.h.
|
inline |
Set the iteration limit.
DoTrim() will return false if limit iterations are reached before trim is achieved. The default is 60. This does not ordinarily need to be changed.
ii | integer iteration limit |
Definition at line 555 of file FGTrimAnalysis.h.
void SetMode | ( | TrimAnalysisMode | tam | ) |
Clear all controls and set a predefined trim mode (Note: controls are intended here as those variables to be adjusted for attaining convergence of the trimming algorithm)
tam | the set of axes to trim. Can be: taLongitudinal, taFull, taGround, taCustom, or taNone |
Definition at line 995 of file FGTrimAnalysis.cpp.
bool SetResultsFile | ( | string | name | ) |
Set the file where trim analysis results are written, open and get ready.
name | the file name |
Definition at line 1087 of file FGTrimAnalysis.cpp.
void SetState | ( | double | u0, |
double | v0, | ||
double | w0, | ||
double | p0, | ||
double | q0, | ||
double | r0, | ||
double | alpha0, | ||
double | beta0, | ||
double | phi0, | ||
double | theta0, | ||
double | psi0, | ||
double | gamma0 | ||
) |
Sets state variables.
u0 | |
v0 | |
w0 | |
p0 | |
q0 | |
r0 | |
alpha0 | |
beta0 | |
phi0 | |
psi0 | |
theta0 | |
gamma0 |
Definition at line 421 of file FGTrimAnalysis.cpp.
|
inline |
Sets target normal load factor in steady turn.
nlf | target normal load factor |
Definition at line 658 of file FGTrimAnalysis.h.
|
inline |
Set the tolerance for declaring a state trimmed.
(In the evaluation of the cost function, squares of angular accels are devided by 100) The default is 1e-8.
tt | user defined tolerance |
Definition at line 563 of file FGTrimAnalysis.h.
|
inline |
FGColumnVector3 UpdateRatesPullup | ( | void | ) |
Updates angular rates for pull-up trim.
Definition at line 920 of file FGTrimAnalysis.cpp.
FGColumnVector3 UpdateRatesTurn | ( | double | psi, |
double | theta, | ||
double | phi, | ||
double | phiW | ||
) |
Updates angular rates for turn trim according to turning trim constraints.
psi,theta,phi |
Definition at line 914 of file FGTrimAnalysis.cpp.