]> git.mxchange.org Git - flightgear.git/blob - src/FDM/JSBSim/FGCoefficient.h
First commit of properties code. JSBSim now has a basic property tree all
[flightgear.git] / src / FDM / JSBSim / FGCoefficient.h
1 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2
3  Header:       FGCoefficient.h
4  Author:       Jon Berndt
5  Date started: 12/28/98
6
7  ------------- Copyright (C) 1999  Jon S. Berndt (jsb@hal-pc.org) -------------
8
9  This program is free software; you can redistribute it and/or modify it under
10  the terms of the GNU General Public License as published by the Free Software
11  Foundation; either version 2 of the License, or (at your option) any later
12  version.
13
14  This program is distributed in the hope that it will be useful, but WITHOUT
15  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
17  details.
18
19  You should have received a copy of the GNU General Public License along with
20  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21  Place - Suite 330, Boston, MA  02111-1307, USA.
22
23  Further information about the GNU General Public License can also be found on
24  the world wide web at http://www.gnu.org.
25
26 HISTORY
27 --------------------------------------------------------------------------------
28 12/28/98   JSB   Created
29
30 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31 SENTRY
32 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
33
34 #ifndef FGCOEFFICIENT_H
35 #define FGCOEFFICIENT_H
36
37 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
38 INCLUDES
39 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
40
41 #ifdef FGFS
42 #  include <simgear/compiler.h>
43 #endif
44
45 #include <vector>
46 #include <string>
47 #include "FGConfigFile.h"
48 #include "FGTable.h"
49 #include "FGJSBBase.h"
50 #include "FGPropertyManager.h"
51
52 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
53 DEFINITIONS
54 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
55
56 #define ID_COEFFICIENT "$Id$"
57
58 using std::vector;
59
60 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
61 FORWARD DECLARATIONS
62 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
63
64 class FGFDMExec;
65 class FGState;
66 class FGAtmosphere;
67 class FGFCS;
68 class FGAircraft;
69 class FGTranslation;
70 class FGRotation;
71 class FGPosition;
72 class FGAuxiliary;
73 class FGOutput;
74
75 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
76 COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs]
77 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
78
79 Note that the coefficients need not be calculated each delta-t. This is
80 something that may be fixed someday.
81
82 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
83 CLASS DOCUMENTATION
84 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
85
86 /** This class models the stability derivative coefficient lookup tables.
87     Each coefficient for an axis is stored in that axes' vector of coefficients.
88     Each FDM execution frame the Run() method of the [currently] FGAircraft model
89     is called and the coefficient value is calculated.
90     @author Jon S. Berndt
91     @version $Id$
92     @see -
93 */
94
95 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
96 CLASS DECLARATION
97 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
98
99 class FGCoefficient : public FGJSBBase
100 {
101 public:
102   FGCoefficient(FGFDMExec*);
103   virtual ~FGCoefficient();
104   
105   virtual bool Load(FGConfigFile* AC_cfg);
106   
107   typedef vector <FGPropertyManager*> MultVec;
108   virtual double TotalValue(void);
109   virtual inline double GetValue(void) const { return totalValue; }
110   virtual inline string Getname(void) const {return name;}
111   virtual inline double GetSD(void) const { return SD;}
112   inline MultVec Getmultipliers(void) {return multipliers;}
113   void DumpSD(void);  
114   
115   /** Outputs coefficient information.
116       Non-dimensionalizing parameter descriptions are output
117       for each aero coefficient defined.
118       @param multipliers the list of multipliers for this coefficient.*/
119   virtual void DisplayCoeffFactors(void);
120   virtual inline string GetCoefficientStrings(void) { return name; }
121   virtual string GetCoefficientValues(void);
122   
123   inline void setBias(double b) { bias=b; }
124   inline void setGain(double g) { gain=g; };
125   inline double getBias(void) const { return bias; }
126   inline double getGain(void) const { return gain; }
127   
128   void bind(FGPropertyManager *node);
129   void unbind(void);
130
131 private:
132   enum Type {UNKNOWN, VALUE, VECTOR, TABLE, EQUATION};
133
134   int numInstances;
135   string filename;
136   string description;
137   string name;
138   string method;
139   string multparms;
140   string multparmsRow;
141   string multparmsCol;
142   double Value(double, double);
143   double Value(double);
144   double Value(void);
145   double StaticValue;
146   double totalValue;
147   double bias,gain;
148   FGPropertyManager *LookupR, *LookupC;
149   FGPropertyManager *node;
150   
151   MultVec multipliers;
152   int rows, columns;
153   Type type;
154   double SD; // Actual stability derivative (or other coefficient) value
155   FGTable *Table;
156
157   FGFDMExec*      FDMExec;
158   FGState*        State;
159   FGAtmosphere*   Atmosphere;
160   FGFCS*          FCS;
161   FGAircraft*     Aircraft;
162   FGTranslation*  Translation;
163   FGRotation*     Rotation;
164   FGPosition*     Position;
165   FGAuxiliary*    Auxiliary;
166   FGOutput*       Output;
167   FGPropertyManager* PropertyManager;
168
169   virtual void Debug(int from);
170 };
171
172 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
173 #endif
174