]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/models/FGAircraft.h
Synchronized with JSBSim/CVS
[flightgear.git] / src / FDM / JSBSim / models / FGAircraft.h
index a03656895c1db137e2e88b2f8eabf10bd3b1d4b9..08f3a2da7a7a53f816636bba8e7a313c2f7db3be 100644 (file)
@@ -42,14 +42,14 @@ INCLUDES
 #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
@@ -90,10 +90,10 @@ CLASS DOCUMENTATION
 @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
@@ -118,9 +118,14 @@ public:
   ~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);
 
@@ -140,45 +145,48 @@ public:
   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;
@@ -186,14 +194,10 @@ private:
   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);