]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/FGCoefficient.h
Updated to match changes in radiostack.[ch]xx
[flightgear.git] / src / FDM / JSBSim / FGCoefficient.h
index 7c7083d0b2225ee2d7b740e474a95d855da4fdd2..0c1796c420fdc67da6c0692cc0f55710cab48cde 100644 (file)
@@ -47,6 +47,7 @@ INCLUDES
 #include "FGConfigFile.h"
 #include "FGTable.h"
 #include "FGJSBBase.h"
+#include "FGPropertyManager.h"
 
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 DEFINITIONS
@@ -82,13 +83,17 @@ something that may be fixed someday.
 CLASS DOCUMENTATION
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
-/** This class models the stability derivative coefficient lookup tables.
+/** This class models the aero coefficient and stability derivative coefficient
+    lookup table, value, vector, or equation (equation not modeled, yet).
     Each coefficient for an axis is stored in that axes' vector of coefficients.
-    Each FDM execution frame the Run() method of the [currently] FGAircraft model
-    is called and the coefficient value is calculated.
+    Each FDM execution frame the Run() method of the FGAerodynamics model
+    is called and the coefficient values are calculated.
     @author Jon S. Berndt
     @version $Id$
-    @see -
+    @see <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jsbsim/JSBSim/FGCoefficient.h?rev=HEAD&content-type=text/vnd.viewcvs-markup">
+         Header File </a>
+    @see <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jsbsim/JSBSim/FGCoefficient.cpp?rev=HEAD&content-type=text/vnd.viewcvs-markup">
+         Source File </a>
 */
 
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -98,38 +103,75 @@ CLASS DECLARATION
 class FGCoefficient : public FGJSBBase
 {
 public:
-  FGCoefficient(FGFDMExec*);
+  /** Constructor.
+      @param exec a pointer to the FGFDMExec instance. */
+  FGCoefficient(FGFDMExec* exec);
+  /// Destructor.
   virtual ~FGCoefficient();
   
+  /** Loads the stability derivative/aero coefficient data from the config file
+      as directed by the FGAerodynamics instance.
+      @param AC_cfg a pointer to the current config file instance. */
   virtual bool Load(FGConfigFile* AC_cfg);
   
-  typedef vector <eParam> MultVec;
+  typedef vector <FGPropertyManager*> MultVec;
+
+  enum Type {UNKNOWN, VALUE, VECTOR, TABLE, EQUATION};
+
+  /** Returns the value for this coefficient.
+      Each instance of FGCoefficient stores a value for the "type" of coefficient
+      it is, one of: VALUE, VECTOR, TABLE, or EQUATION. This TotalValue function 
+      is called when the value for a coefficient needs to be known. When it is called,
+      depending on what type of coefficient is represented by the FGCoefficient
+      instance, TotalValue() directs the appropriate Value() function to be called.
+      The type of coefficient represented is determined when the config file is read.
+      The coefficient definition includes the "type" specifier.
+      @return the current value of the coefficient represented by this instance of
+      FGCoefficient. */
   virtual double TotalValue(void);
-  virtual inline string Getname(void) {return name;}
-  virtual inline double GetSD(void) { return SD;}
-  inline MultVec Getmultipliers(void) {return multipliers;}
-  void DumpSD(void);  
+  
+  /** Returns the value for this coefficient.
+      TotalValue is stored each time TotalValue() is called. This function returns
+      the stored value but does not calculate it anew. This is valuable for merely
+      printing out the value.
+      @return the most recently calculated and stored value of the coefficient
+      represented by this instance of FGCoefficient. */
+  virtual inline double GetValue(void) const { return totalValue; }
+  
+  /// Returns the name of this coefficient.
+  virtual inline string Getname(void) const {return name;}
+  
+  /// Returns the value of the coefficient only - before it is re-dimensionalized.
+  virtual inline double GetSD(void) const { return SD;}
   
   /** Outputs coefficient information.
       Non-dimensionalizing parameter descriptions are output
       for each aero coefficient defined.
       @param multipliers the list of multipliers for this coefficient.*/
   virtual void DisplayCoeffFactors(void);
-  virtual inline string GetCoefficientStrings(void) { return name; }
-  virtual string GetCoefficientValues(void);
+  
+  /// Returns the name of the coefficient.
+  virtual inline string GetCoefficientName(void) { return name; }
+  /// Returns the stability derivative or coefficient value as a string.
+  virtual string GetSDstring(void);
+  
   
   inline void setBias(double b) { bias=b; }
   inline void setGain(double g) { gain=g; };
-  inline double getBias(void) { return bias; }
-  inline double getGain(void) { return gain; }
+  inline double getBias(void) const { return bias; }
+  inline double getGain(void) const { return gain; }
+  
+  virtual void bind(FGPropertyManager *parent);
+  virtual void unbind(void);
 
-private:
-  enum Type {UNKNOWN, VALUE, VECTOR, TABLE, EQUATION};
+protected:
+  FGFDMExec* FDMExec;
 
+private:
   int numInstances;
-  string filename;
   string description;
   string name;
+  string filename;
   string method;
   string multparms;
   string multparmsRow;
@@ -138,15 +180,18 @@ private:
   double Value(double);
   double Value(void);
   double StaticValue;
+  double totalValue;
   double bias,gain;
-  eParam LookupR, LookupC;
+  FGPropertyManager *LookupR, *LookupC;
+  
+  FGPropertyManager *node; // must be private!!
+  
   MultVec multipliers;
   int rows, columns;
   Type type;
   double SD; // Actual stability derivative (or other coefficient) value
   FGTable *Table;
 
-  FGFDMExec*      FDMExec;
   FGState*        State;
   FGAtmosphere*   Atmosphere;
   FGFCS*          FCS;
@@ -156,6 +201,7 @@ private:
   FGPosition*     Position;
   FGAuxiliary*    Auxiliary;
   FGOutput*       Output;
+  FGPropertyManager* PropertyManager;
 
   virtual void Debug(int from);
 };