-/*******************************************************************************
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Header: FGAerodynamics.h
Author: Jon S. Berndt
--------------------------------------------------------------------------------
09/13/00 JSB Created
-********************************************************************************
-COMMENTS, REFERENCES, and NOTES
-********************************************************************************
-
-********************************************************************************
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SENTRY
-*******************************************************************************/
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#ifndef FGAERODYNAMICS_H
#define FGAERODYNAMICS_H
-/*******************************************************************************
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
INCLUDES
-*******************************************************************************/
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#ifdef FGFS
# include <simgear/compiler.h>
-# ifdef FG_HAVE_STD_INCLUDES
+# ifdef SG_HAVE_STD_INCLUDES
# include <vector>
+# include <map>
# else
# include <vector.h>
+# include <map.h>
# endif
#else
# include <vector>
+# include <map>
#endif
#include "FGModel.h"
-
-#define ID_AERODYNAMICS "$Header$"
-
-/*******************************************************************************
+#include "FGConfigFile.h"
+#include "FGState.h"
+#include "FGMassBalance.h"
+#include "FGTranslation.h"
+#include "FGCoefficient.h"
+#include "FGFactorGroup.h"
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+DEFINITIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+#define ID_AERODYNAMICS "$Id$"
+
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+FORWARD DECLARATIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs]
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CLASS DOCUMENTATION
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+/** Encapsulates the aerodynamic calculations.
+ This class owns and contains the list of coefficients that define the
+ aerodynamic properties of this aircraft. Here also, such unique phenomena
+ as ground effect and maximum lift curve tailoff are handled.
+ @author Jon S. Berndt
+ @version $Id$
+ @see -
+*/
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DECLARATION
-*******************************************************************************/
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
class FGAerodynamics : public FGModel {
public:
+ /** Constructor
+ @param Executive a pointer to the parent executive object */
FGAerodynamics(FGFDMExec*);
- ~FGAerodynamics(void);
+ /// Destructor
+ ~FGAerodynamics();
+ /** Runs the Aerodynamics model; called by the Executive
+ @return false if no error */
bool Run(void);
- bool LoadAerodynamics(FGConfigFile* AC_cfg);
+
+ /** Loads the Aerodynamics model
+ @return true if successful */
+ bool Load(FGConfigFile* AC_cfg);
+
+ /** Gets the total aerodynamic force vector.
+ @return a force vector reference. */
+ FGColumnVector3& GetForces(void) {return vForces;}
+ inline double GetForces(int n) {return vForces(n);}
+
+ /** Gets the total aerodynamic moment vector.
+ @return a moment vector reference. */
+ FGColumnVector3& GetMoments(void) {return vMoments;}
+ inline double GetMoments(int n) {return vMoments(n);}
+
+ inline FGColumnVector3& GetvLastFs(void) { return vLastFs; }
+ inline double GetvLastFs(int axis) { return vLastFs(axis); }
+ inline FGColumnVector3& GetvFs(void) { return vFs; }
+ inline double GetvFs(int axis) { return vFs(axis); }
+ double GetLoD(void);
+
+ /** Gets the strings for the current set of coefficients.
+ @return a string containing the descriptive names for all coefficients */
+ string GetCoefficientStrings(void);
+
+ /** Gets the coefficient values.
+ @return a string containing the numeric values for the current set of
+ coefficients */
+ string GetCoefficientValues(void);
+
+ inline FGCoefficient* GetCoefficient(string name) { return cm[name]; }
+
+
+private:
+ typedef map<string,int> AxisIndex;
+ AxisIndex AxisIdx;
+ typedef vector<FGCoefficient*> CoeffArray;
+ CoeffArray* Coeff;
+ typedef map<string,FGCoefficient*> CoeffMap;
+ CoeffMap cm;
+ FGColumnVector3 vFs;
+ FGColumnVector3 vForces;
+ FGColumnVector3 vMoments;
+ FGColumnVector3 vLastFs;
+ FGColumnVector3 vDXYZcg;
+
+ void Debug(int from);
};
-/******************************************************************************/
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#endif