# include <simgear/compiler.h>
#endif
-#include <string>
-#include "FGConfigFile.h"
-#include "FGMatrix.h"
+#include "FGJSBBase.h"
#include "FGFDMExec.h"
+#include "FGConfigFile.h"
+#include "FGColumnVector3.h"
+#include <string>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+namespace JSBSim {
+
class FGAircraft;
-class FGPosition;
-class FGRotation;
+class FGPropagate;
class FGFCS;
class FGState;
class FGMassBalance;
+class FGAuxiliary;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs]
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@author Jon S. Berndt
@version $Id$
@see Richard E. McFarland, "A Standard Kinematic Model for Flight Simulation at
- NASA-Ames", NASA CR-2497, January 1975
+ NASA-Ames", NASA CR-2497, January 1975
@see Barnes W. McCormick, "Aerodynamics, Aeronautics, and Flight Mechanics",
- Wiley & Sons, 1979 ISBN 0-471-03032-5
+ Wiley & Sons, 1979 ISBN 0-471-03032-5
@see W. A. Ragsdale, "A Generic Landing Gear Dynamics Model for LASRS++",
AIAA-2000-4303
*/
CLASS DECLARATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-class FGLGear
+class FGLGear : public FGJSBBase
{
public:
/// Brake grouping enumerators
enum BrakeGroup {bgNone=0, bgLeft, bgRight, bgCenter, bgNose, bgTail };
/// Steering group membership enumerators
enum SteerType {stSteer, stFixed, stCaster};
+ /// Report type enumerators
+ enum ReportType {erNone=0, erTakeoff, erLand};
/** Constructor
@param Executive a pointer to the parent executive object
@param File a pointer to the config file instance */
/// The Force vector for this gear
- FGColumnVector Force(void);
+ FGColumnVector3& Force(void);
/// The Moment vector for this gear
- FGColumnVector Moment(void) {return vMoment;}
+ FGColumnVector3& Moment(void) {return vMoment;}
/// Gets the location of the gear in Body axes
- FGColumnVector GetBodyLocation(void) { return vWhlBodyVec; }
- float GetBodyLocation(int idx) { return vWhlBodyVec(idx); }
+ FGColumnVector3& GetBodyLocation(void) { return vWhlBodyVec; }
+ double GetBodyLocation(int idx) { return vWhlBodyVec(idx); }
- FGColumnVector GetLocalGear(void) { return vLocalGear; }
- float GetLocalGear(int idx) { return vLocalGear(idx); }
+ FGColumnVector3& GetLocalGear(void) { return vLocalGear; }
+ double GetLocalGear(int idx) { return vLocalGear(idx); }
/// Gets the name of the gear
inline string GetName(void) {return name; }
/// Gets the Weight On Wheels flag value
inline bool GetWOW(void) {return WOW; }
/// Gets the current compressed length of the gear in feet
- inline float GetCompLen(void) {return compressLength;}
+ inline double GetCompLen(void) {return compressLength;}
/// Gets the current gear compression velocity in ft/sec
- inline float GetCompVel(void) {return compressSpeed; }
+ inline double GetCompVel(void) {return compressSpeed; }
/// Gets the gear compression force in pounds
- inline float GetCompForce(void) {return Force()(3); }
-
+ inline double GetCompForce(void) {return Force()(3); }
+ inline double GetBrakeFCoeff(void) {return BrakeFCoeff;}
+
+ /// Gets the current normalized tire pressure
+ inline double GetTirePressure(void) { return TirePressureNorm; }
+ /// Sets the new normalized tire pressure
+ inline void SetTirePressure(double p) { TirePressureNorm = p; }
+
/// Sets the brake value in percent (0 - 100)
inline void SetBrake(double bp) {brakePct = bp;}
/** Get the console touchdown reporting feature
@return true if reporting is turned on */
inline bool GetReport(void) { return ReportEnable; }
+ inline double GetSteerAngle(void) { return SteerAngle;}
+ inline double GetstaticFCoeff(void) { return staticFCoeff;}
+
+ inline int GetBrakeGroup(void) { return (int)eBrakeGrp; }
+ inline int GetSteerType(void) { return (int)eSteerType; }
+
+ inline bool GetRetractable(void) { return isRetractable; }
+ inline bool GetGearUnitUp(void) { return GearUp; }
+ inline bool GetGearUnitDown(void) { return GearDown; }
+ inline double GetWheelSideForce(void) { return SideForce; }
+ inline double GetWheelRollForce(void) { return RollingForce; }
+ inline double GetBodyXForce(void) { return vLocalForce(eX); }
+ inline double GetBodyYForce(void) { return vLocalForce(eY); }
+ inline double GetWheelSlipAngle(void) { return WheelSlip; }
+ double GetWheelVel(int axis) { return vWhlVelVec(axis);}
private:
- enum {eX=1, eY, eZ};
- FGColumnVector vXYZ;
- FGColumnVector vMoment;
- FGColumnVector vWhlBodyVec;
- FGColumnVector vLocalGear;
- float kSpring;
- float bDamp;
- float compressLength;
- float compressSpeed;
- float staticFCoeff, dynamicFCoeff, rollingFCoeff;
- float brakePct;
- float maxCompLen;
+ FGColumnVector3 vXYZ;
+ FGColumnVector3 vMoment;
+ FGColumnVector3 vWhlBodyVec;
+ FGColumnVector3 vLocalGear;
+ FGColumnVector3 vForce;
+ FGColumnVector3 vLocalForce;
+ FGColumnVector3 vWhlVelVec; // Velocity of this wheel (Local)
+ double SteerAngle;
+ double kSpring;
+ double bDamp;
+ double compressLength;
+ double compressSpeed;
+ double staticFCoeff, dynamicFCoeff, rollingFCoeff;
+ double brakePct;
+ double BrakeFCoeff;
+ double maxCompLen;
double SinkRate;
double GroundSpeed;
- double DistanceTraveled;
+ double TakeoffDistanceTraveled;
+ double TakeoffDistanceTraveled50ft;
+ double LandingDistanceTraveled;
double MaximumStrutForce;
double MaximumStrutTravel;
+ double SideWhlVel, RollingWhlVel;
+ double RollingForce, SideForce, FCoeff;
+ double WheelSlip;
+ double lastWheelSlip;
+ double TirePressureNorm;
bool WOW;
+ bool lastWOW;
bool FirstContact;
- bool Reported;
+ bool StartedGroundRun;
+ bool LandingReported;
+ bool TakeoffReported;
bool ReportEnable;
+ bool isRetractable;
+ bool GearUp, GearDown;
+ bool Servicable;
string name;
string sSteerType;
string sBrakeGroup;
+ string sRetractable;
+
BrakeGroup eBrakeGrp;
SteerType eSteerType;
- float maxSteerAngle;
-
- FGFDMExec* Exec;
- FGState* State;
- FGAircraft* Aircraft;
- FGPosition* Position;
- FGRotation* Rotation;
- FGFCS* FCS;
+ double maxSteerAngle;
+
+ FGFDMExec* Exec;
+ FGState* State;
+ FGAircraft* Aircraft;
+ FGPropagate* Propagate;
+ FGAuxiliary* Auxiliary;
+ FGFCS* FCS;
FGMassBalance* MassBalance;
- void Report(void);
- void Debug(void);
+ void Report(ReportType rt);
+ void Debug(int from);
};
-
+}
#include "FGAircraft.h"
-#include "FGPosition.h"
-#include "FGRotation.h"
+#include "FGPropagate.h"
+#include "FGAuxiliary.h"
#include "FGFCS.h"
#include "FGMassBalance.h"
+#include "FGState.h"
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-#include "FGState.h"
-
#endif