]> 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
  Header:       FGState.h
  Author:       Jon S. Berndt
  Date started: 11/17/98
-
  ------------- Copyright (C) 1999  Jon S. Berndt (jsb@hal-pc.org) -------------
  ------------- 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 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.
  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.
  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.
  Further information about the GNU General Public License can also be found on
  the world wide web at http://www.gnu.org.
-
 FUNCTIONAL DESCRIPTION
 --------------------------------------------------------------------------------
 FUNCTIONAL DESCRIPTION
 --------------------------------------------------------------------------------
-
 Based on Flightgear code, which is based on LaRCSim. This class wraps all
 global state variables (such as velocity, position, orientation, etc.).
 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
 HISTORY
 --------------------------------------------------------------------------------
 11/17/98   JSB   Created
-
-********************************************************************************
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 SENTRY
 SENTRY
-*******************************************************************************/
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
 #ifndef FGSTATE_H
 #define FGSTATE_H
 
 
 #ifndef FGSTATE_H
 #define FGSTATE_H
 
-/*******************************************************************************
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 INCLUDES
 INCLUDES
-*******************************************************************************/
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
 #ifdef FGFS
 #  include <simgear/compiler.h>
 
 #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
 #    include <fstream>
 #  else
 #    include <fstream.h>
 #  endif
-   FG_USING_STD(string);
 #else
 #else
-#  include <string>
 #  include <fstream>
 #endif
 
 #  include <fstream>
 #endif
 
+#include <string>
 #include <map>
 #include "FGDefs.h"
 #include "FGInitialCondition.h"
 #include "FGMatrix.h"
 
 #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 DECLARATION
-*******************************************************************************/
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
 class FGFDMExec;
 
 
 class FGFDMExec;
 
-class FGState
-{
+class FGState {
 public:
 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);
 
 
   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);
   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);
   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:
 
 
 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 sim_time, dt;
-  float Mach;                       // Mach number
+  float saved_dt;
 
   FGFDMExec* FDMExec;
 
   FGFDMExec* FDMExec;
-  float LocalAltitudeOverRunway;
   FGMatrix mTb2l;
   FGMatrix mTl2b;
   FGMatrix mTs2b;
   FGColumnVector vQtrn;
   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;
   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
 #endif
+