]> git.mxchange.org Git - flightgear.git/blob - src/FDM/JSBSim/FGCoefficient.h
JSBSim updates, including MSVC fixes from Bernie Bright
[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 <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jsbsim/JSBSim/FGCoefficient.h?rev=HEAD&content-type=text/vnd.viewcvs-markup">
93          Header File </a>
94     @see <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jsbsim/JSBSim/FGCoefficient.cpp?rev=HEAD&content-type=text/vnd.viewcvs-markup">
95          Source File </a>
96 */
97
98 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
99 CLASS DECLARATION
100 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
101
102 class FGCoefficient : public FGJSBBase
103 {
104 public:
105   FGCoefficient(FGFDMExec*);
106   virtual ~FGCoefficient();
107   
108   virtual bool Load(FGConfigFile* AC_cfg);
109   
110   typedef vector <FGPropertyManager*> MultVec;
111   virtual double TotalValue(void);
112   virtual inline double GetValue(void) const { return totalValue; }
113   virtual inline string Getname(void) const {return name;}
114   virtual inline double GetSD(void) const { return SD;}
115   inline MultVec Getmultipliers(void) {return multipliers;}
116   void DumpSD(void);  
117   
118   /** Outputs coefficient information.
119       Non-dimensionalizing parameter descriptions are output
120       for each aero coefficient defined.
121       @param multipliers the list of multipliers for this coefficient.*/
122   virtual void DisplayCoeffFactors(void);
123   virtual inline string GetCoefficientStrings(void) { return name; }
124   virtual string GetCoefficientValues(void);
125   
126   inline void setBias(double b) { bias=b; }
127   inline void setGain(double g) { gain=g; };
128   inline double getBias(void) const { return bias; }
129   inline double getGain(void) const { return gain; }
130   
131   virtual void bind(FGPropertyManager *parent);
132   virtual void unbind(void);
133
134 protected:
135   FGFDMExec* FDMExec;
136   
137
138 private:
139   enum Type {UNKNOWN, VALUE, VECTOR, TABLE, EQUATION};
140
141   int numInstances;
142   string description;
143   string name;
144   string filename;
145   string method;
146   string multparms;
147   string multparmsRow;
148   string multparmsCol;
149   double Value(double, double);
150   double Value(double);
151   double Value(void);
152   double StaticValue;
153   double totalValue;
154   double bias,gain;
155   FGPropertyManager *LookupR, *LookupC;
156   
157   FGPropertyManager *node; // must be private!!
158   
159   MultVec multipliers;
160   int rows, columns;
161   Type type;
162   double SD; // Actual stability derivative (or other coefficient) value
163   FGTable *Table;
164
165   FGState*        State;
166   FGAtmosphere*   Atmosphere;
167   FGFCS*          FCS;
168   FGAircraft*     Aircraft;
169   FGTranslation*  Translation;
170   FGRotation*     Rotation;
171   FGPosition*     Position;
172   FGAuxiliary*    Auxiliary;
173   FGOutput*       Output;
174   FGPropertyManager* PropertyManager;
175
176   virtual void Debug(int from);
177 };
178
179 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
180 #endif
181