]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/FGState.h
b) FDM - ada.cxx, ada.hxx have been updated with the faux, daux and iaux arrays that...
[flightgear.git] / src / FDM / JSBSim / FGState.h
index 6391165d47b33d12c31b74ba7ac8ff0e2910c3e9..e494d280986cfd256727ee30ef4d0ca508e21569 100644 (file)
-/*******************************************************************************
-
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  Header:       FGState.h
  Author:       Jon S. Berndt
  Date started: 11/17/98
-
  ------------- Copyright (C) 1999  Jon S. Berndt (jsb@hal-pc.org) -------------
-
  This program is free software; you can redistribute it and/or modify it under
  the terms of the GNU General Public License as published by the Free Software
  Foundation; either version 2 of the License, or (at your option) any later
  version.
-
  This program is distributed in the hope that it will be useful, but WITHOUT
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
  details.
-
  You should have received a copy of the GNU General Public License along with
  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  Place - Suite 330, Boston, MA  02111-1307, USA.
-
  Further information about the GNU General Public License can also be found on
  the world wide web at http://www.gnu.org.
-
 FUNCTIONAL DESCRIPTION
 --------------------------------------------------------------------------------
-
 Based on Flightgear code, which is based on LaRCSim. This class wraps all
 global state variables (such as velocity, position, orientation, etc.).
-
 HISTORY
 --------------------------------------------------------------------------------
 11/17/98   JSB   Created
-
-********************************************************************************
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 SENTRY
-*******************************************************************************/
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
 #ifndef FGSTATE_H
 #define FGSTATE_H
 
-/*******************************************************************************
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 INCLUDES
-*******************************************************************************/
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
 #ifdef FGFS
 #  include <simgear/compiler.h>
-#  include STL_STRING
-#  ifdef FG_HAVE_STD_INCLUDES
+#  ifdef SG_HAVE_STD_INCLUDES
 #    include <fstream>
 #  else
 #    include <fstream.h>
 #  endif
-   FG_USING_STD(string);
 #else
-#  include <string>
 #  include <fstream>
 #endif
 
+#include <string>
 #include <map>
 #include "FGDefs.h"
 #include "FGInitialCondition.h"
 #include "FGMatrix.h"
 
-/*******************************************************************************
-DEFINES
-*******************************************************************************/
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+DEFINITIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+#define ID_STATE "$Id$"
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+FORWARD DECLARATIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
-using namespace std;
+class FGAircraft;
+class FGTranslation;
+class FGRotation;
+class FGAtmosphere;
+class FGOutput;
+class FGPosition;
 
-/*******************************************************************************
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs]
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CLASS DOCUMENTATION
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 CLASS DECLARATION
-*******************************************************************************/
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
 class FGFDMExec;
 
-class FGState
-{
+class FGState {
 public:
-   FGState(FGFDMExec*);
-  ~FGState(void);
+  FGState(FGFDMExec*);
+  ~FGState();
+
+  enum {ePhi=1, eTht, ePsi};
+  enum {eP=1, eQ, eR};
+  enum {eU=1, eV, eW};
+  enum {eDrag=1, eSide, eLift};
 
   bool Reset(string, string, string);
   void Initialize(float, float, float, float, float, float, float, float, float);
   void Initialize(FGInitialCondition *FGIC);
   bool StoreData(string);
 
-  inline float GetVt(void) {return Vt;}
-
-  inline float Getlatitude(void) {return latitude;}
-  inline float Getlongitude(void) {return longitude;}
-  inline float GetGeodeticLat(void) {return GeodeticLat;}
-
-  inline float Getadot(void) {return adot;}
-  inline float Getbdot(void) {return bdot;}
+  inline float Geta(void) { return a; }
 
-  inline float GetLocalAltitudeOverRunway(void) {return LocalAltitudeOverRunway;}
-  inline float Geth(void) {return h;}
-  inline float Geta(void) {return a;}
-  inline float GetMach(void) {return Mach;}
+  inline float Getsim_time(void) { return sim_time; }
+  inline float Getdt(void) { return dt; }
 
-  inline float Getsim_time(void) {return sim_time;}
-  inline float Getdt(void) {return dt;}
+  inline void Suspend(void) {saved_dt = dt; dt = 0.0;}
+  inline void Resume(void)  {dt = saved_dt;}
 
-  inline float Getqbar(void) {return qbar;}
-  float GetParameter(int val_idx);
+  float GetParameter(eParam val_idx);
   float GetParameter(string val_string);
-  int GetParameterIndex(string val_string);
-
-  inline void SetVt(float tt) {Vt = tt;}
-
-  inline void Setlatitude(float tt) {latitude = tt;}
-  inline void Setlongitude(float tt) {longitude = tt;}
-  inline void SetGeodeticLat(float tt) {GeodeticLat = tt;}
-
-  inline void Setadot(float tt) {adot = tt;}
-  inline void Setbdot(float tt) {bdot = tt;}
+  eParam GetParameterIndex(string val_string);
 
-  inline void Setqbar(float tt) {qbar = tt;}
+  inline void Seta(float tt) { a = tt; }
 
-  inline void SetLocalAltitudeOverRunway(float tt) {LocalAltitudeOverRunway = tt;}
-  inline void Seth(float tt) {h = tt;}
-  inline void Seta(float tt) {a = tt;}
-  inline void SetMach(float tt) {Mach = tt;}
+  inline float Setsim_time(float tt) {
+    sim_time = tt;
+    return sim_time;
+  }
+  inline void  Setdt(float tt) { dt = tt; }
 
-  inline float Setsim_time(float tt) {sim_time = tt; return sim_time;}
-  inline void  Setdt(float tt) {dt = tt;}
+  void SetParameter(eParam, float);
 
-  void SetParameter(int, float);
-
-  inline float IncrTime(void) {sim_time+=dt;return sim_time;}
+  inline float IncrTime(void) {
+    sim_time+=dt;
+    return sim_time;
+  }
   void InitMatrices(float phi, float tht, float psi);
   void CalcMatrices(void);
   void IntegrateQuat(FGColumnVector vPQR, int rate);
   FGColumnVector CalcEuler(void);
   FGMatrix GetTs2b(float alpha, float beta);
-  FGMatrix GetTl2b(void) {return mTl2b;}
-  FGMatrix GetTb2l(void) {return mTb2l;}
+  FGMatrix GetTl2b(void) { return mTl2b; }
+  float GetTl2b(int i, int j) { return mTl2b(i,j);}
+  FGMatrix GetTb2l(void) { return mTb2l; }
+  float GetTb2l(int i, int j) { return mTb2l(i,j);}
+  typedef map<eParam, string> ParamMap;
+  ParamMap paramdef;
 
 private:
 
-  float Vt;                         // Total velocity
-  float latitude, longitude;        // position
-  float GeodeticLat;                // Geodetic Latitude
-  float adot, bdot;                 // alpha dot and beta dot
-  float h, a;                       // altitude above sea level, speed of sound
-  float qbar;                       // dynamic pressure
+  float a;                          // speed of sound
   float sim_time, dt;
-  float Mach;                       // Mach number
+  float saved_dt;
 
   FGFDMExec* FDMExec;
-  float LocalAltitudeOverRunway;
   FGMatrix mTb2l;
   FGMatrix mTl2b;
   FGMatrix mTs2b;
   FGColumnVector vQtrn;
-
-  typedef map<string, long> CoeffMap;
+  FGColumnVector vlastQdot;
+
+  FGAircraft* Aircraft;
+  FGPosition* Position;
+  FGTranslation* Translation;
+  FGRotation* Rotation;
+  FGOutput* Output;
+  FGAtmosphere* Atmosphere;
+  FGFCS* FCS;
+  FGAerodynamics* Aerodynamics;
+
+  typedef map<string, eParam> CoeffMap;
   CoeffMap coeffdef;
+  void Debug(void);
+  int ActiveEngine;
 
-protected:
-  enum {ePhi=1, eTht, ePsi};
-  enum {eP=1, eQ, eR};
+  FGColumnVector vQdot;
+  FGColumnVector vTmp;
+  FGColumnVector vEuler;
 };
 
-/******************************************************************************/
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+#include "FGFDMExec.h"
+#include "FGAtmosphere.h"
+#include "FGFCS.h"
+#include "FGTranslation.h"
+#include "FGRotation.h"
+#include "FGPosition.h"
+#include "FGAerodynamics.h"
+#include "FGOutput.h"
+#include "FGAircraft.h"
+
 #endif
+