#include <vector>
#include "FGModel.h"
-#include "input_output/FGXMLElement.h"
#include "math/FGColumnVector3.h"
+#include "math/FGMatrix33.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#define ID_AIRCRAFT "$Id: FGAircraft.h,v 1.15 2009/10/24 22:59:30 jberndt Exp $"
+#define ID_AIRCRAFT "$Id: FGAircraft.h,v 1.21 2013/11/24 11:40:55 bcoconni Exp $"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
@endcode
@author Jon S. Berndt
- @version $Id: FGAircraft.h,v 1.15 2009/10/24 22:59:30 jberndt Exp $
+ @version $Id: FGAircraft.h,v 1.21 2013/11/24 11:40:55 bcoconni Exp $
@see Cooke, Zyda, Pratt, and McGhee, "NPSNET: Flight Simulation Dynamic Modeling
- Using Quaternions", Presence, Vol. 1, No. 4, pp. 404-420 Naval Postgraduate
- School, January 1994
+ Using Quaternions", Presence, Vol. 1, No. 4, pp. 404-420 Naval Postgraduate
+ School, January 1994
@see D. M. Henderson, "Euler Angles, Quaternions, and Transformation Matrices",
JSC 12960, July 1977
@see Richard E. McFarland, "A Standard Kinematic Model for Flight Simulation at
~FGAircraft();
/** Runs the Aircraft model; called by the Executive
+ Can pass in a value indicating if the executive is directing the simulation to Hold.
+ @param Holding if true, the executive has been directed to hold the sim from
+ advancing time. Some models may ignore this flag, such as the Input
+ model, which may need to be active to listen on a socket for the
+ "Resume" command to be given.
@see JSBSim.cpp documentation
@return false if no error */
- bool Run(void);
+ bool Run(bool Holding);
bool InitModel(void);
double GetWingSpan(void) const { return WingSpan; }
/// Gets the average wing chord
double Getcbar(void) const { return cbar; }
- inline double GetWingIncidence(void) const { return WingIncidence; }
- inline double GetWingIncidenceDeg(void) const { return WingIncidence*radtodeg; }
- inline double GetHTailArea(void) const { return HTailArea; }
- inline double GetHTailArm(void) const { return HTailArm; }
- inline double GetVTailArea(void) const { return VTailArea; }
- inline double GetVTailArm(void) const { return VTailArm; }
- inline double Getlbarh(void) const { return lbarh; } // HTailArm / cbar
- inline double Getlbarv(void) const { return lbarv; } // VTailArm / cbar
- inline double Getvbarh(void) const { return vbarh; } // H. Tail Volume
- inline double Getvbarv(void) const { return vbarv; } // V. Tail Volume
- inline FGColumnVector3& GetMoments(void) { return vMoments; }
- inline double GetMoments(int idx) const { return vMoments(idx); }
- inline FGColumnVector3& GetForces(void) { return vForces; }
- inline double GetForces(int idx) const { return vForces(idx); }
- inline FGColumnVector3& GetBodyAccel(void) { return vBodyAccel; }
- inline double GetBodyAccel(int idx) { return vBodyAccel(idx); }
- inline FGColumnVector3& GetNcg (void) { return vNcg; }
- inline double GetNcg(int idx) { return vNcg(idx); }
- inline FGColumnVector3& GetXYZrp(void) { return vXYZrp; }
- inline FGColumnVector3& GetXYZvrp(void) { return vXYZvrp; }
- inline FGColumnVector3& GetXYZep(void) { return vXYZep; }
- inline double GetXYZrp(int idx) const { return vXYZrp(idx); }
- inline double GetXYZvrp(int idx) const { return vXYZvrp(idx); }
- inline double GetXYZep(int idx) const { return vXYZep(idx); }
- inline void SetAircraftName(const std::string& name) {AircraftName = name;}
- inline void SetHoldDown(int hd) {HoldDown = hd;}
- inline int GetHoldDown(void) const {return HoldDown;}
+ double GetWingIncidence(void) const { return WingIncidence; }
+ double GetWingIncidenceDeg(void) const { return WingIncidence*radtodeg; }
+ double GetHTailArea(void) const { return HTailArea; }
+ double GetHTailArm(void) const { return HTailArm; }
+ double GetVTailArea(void) const { return VTailArea; }
+ double GetVTailArm(void) const { return VTailArm; }
+ double Getlbarh(void) const { return lbarh; } // HTailArm / cbar
+ double Getlbarv(void) const { return lbarv; } // VTailArm / cbar
+ double Getvbarh(void) const { return vbarh; } // H. Tail Volume
+ double Getvbarv(void) const { return vbarv; } // V. Tail Volume
+ const FGColumnVector3& GetMoments(void) const { return vMoments; }
+ double GetMoments(int idx) const { return vMoments(idx); }
+ const FGColumnVector3& GetForces(void) const { return vForces; }
+ double GetForces(int idx) const { return vForces(idx); }
+ const FGColumnVector3& GetXYZrp(void) const { return vXYZrp; }
+ const FGColumnVector3& GetXYZvrp(void) const { return vXYZvrp; }
+ const FGColumnVector3& GetXYZep(void) const { return vXYZep; }
+ double GetXYZrp(int idx) const { return vXYZrp(idx); }
+ double GetXYZvrp(int idx) const { return vXYZvrp(idx); }
+ double GetXYZep(int idx) const { return vXYZep(idx); }
+ void SetAircraftName(const std::string& name) {AircraftName = name;}
void SetXYZrp(int idx, double value) {vXYZrp(idx) = value;}
void SetWingArea(double S) {WingArea = S;}
- double GetNlf(void) const;
-
- inline FGColumnVector3& GetNwcg(void) { return vNwcg; }
-
void bind(void);
void unbind(void);
+ struct Inputs {
+ FGColumnVector3 AeroForce;
+ FGColumnVector3 PropForce;
+ FGColumnVector3 GroundForce;
+ FGColumnVector3 ExternalForce;
+ FGColumnVector3 BuoyantForce;
+ FGColumnVector3 AeroMoment;
+ FGColumnVector3 PropMoment;
+ FGColumnVector3 GroundMoment;
+ FGColumnVector3 ExternalMoment;
+ FGColumnVector3 BuoyantMoment;
+ } in;
+
private:
FGColumnVector3 vMoments;
FGColumnVector3 vForces;
FGColumnVector3 vXYZvrp;
FGColumnVector3 vXYZep;
FGColumnVector3 vDXYZcg;
- FGColumnVector3 vBodyAccel;
- FGColumnVector3 vNcg;
- FGColumnVector3 vNwcg;
double WingArea, WingSpan, cbar, WingIncidence;
double HTailArea, VTailArea, HTailArm, VTailArm;
double lbarh,lbarv,vbarh,vbarv;
- int HoldDown;
std::string AircraftName;
void Debug(int from);