1 /*******************************************************************************
3 Header: FGCoefficient.h
7 ------------- Copyright (C) 1999 Jon S. Berndt (jsb@hal-pc.org) -------------
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
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
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.
23 Further information about the GNU General Public License can also be found on
24 the world wide web at http://www.gnu.org.
27 --------------------------------------------------------------------------------
30 ********************************************************************************
32 *******************************************************************************/
34 #ifndef FGCOEFFICIENT_H
35 #define FGCOEFFICIENT_H
37 /*******************************************************************************
39 *******************************************************************************/
41 # include <Include/compiler.h>
43 # ifdef FG_HAVE_STD_INCLUDES
54 /*******************************************************************************
56 *******************************************************************************/
62 #define FG_ALPHADOT 32
64 #define FG_BETADOT 128
65 #define FG_PITCHRATE 256
66 #define FG_ROLLRATE 512
67 #define FG_YAWRATE 1024
68 #define FG_ELEVATOR 2048
69 #define FG_AILERON 4096
70 #define FG_RUDDER 8192
72 #define FG_ALTITUDE 32768L
74 /*******************************************************************************
76 *******************************************************************************/
88 /*******************************************************************************
89 COMMENTS, REFERENCES, and NOTES
90 *******************************************************************************/
92 This class models the stability derivative coefficient lookup tables or
93 equations. Note that the coefficients need not be calculated each delta-t.
95 The coefficient files are located in the axis subdirectory for each aircraft.
96 For instance, for the X-15, you would find subdirectories under the
97 aircraft/X-15/ directory named CLIFT, CDRAG, CSIDE, CROLL, CPITCH, CYAW. Under
98 each of these directories would be files named a, a0, q, and so on. The file
99 named "a" under the CLIFT directory would contain data for the stability
100 derivative modeling lift due to a change in alpha. See the FGAircraft.cpp file
101 for additional information. The coefficient files have the following format:
103 <name of coefficient>
104 <short description of coefficient with no embedded spaces>
105 <method used in calculating the coefficient: TABLE | EQUATION | VECTOR | VALUE>
106 <parameter identifier for table row (if required)>
107 <parameter identifier for table column (if required)>
108 <OR'ed list of parameter identifiers needed to turn this coefficient into a force>
109 <number of rows in table (if required)>
110 <number of columns in table (if required)>
112 <value of parameter indexing into the column of a table or vector - or value
113 itself for a VALUE coefficient>
114 <values of parameter indexing into row of a table if TABLE type> <Value of
115 coefficient at this row and column>
117 <... repeat above for each column of data in table ...>
119 As an example for the X-15, for the lift due to mach:
160 Note that the values in a row which index into the table must be the same value
161 for each column of data, so the first column of numbers for each altitude are
162 seen to be equal, and there are the same number of values for each altitude.
182 @author Jon S. Berndt
183 @memo This class models the stability derivative coefficient lookup tables or equations.
185 /*******************************************************************************
187 *******************************************************************************/
192 // ***************************************************************************
193 /** @memo Constructor
194 @param FGFDMExec* - pointer to owning simulation executive
196 FGCoefficient(FGFDMExec*);
198 // ***************************************************************************
199 /** @memo Constructor for two independent variable table
203 FGCoefficient(FGFDMExec*, int, int);
205 // ***************************************************************************
210 FGCoefficient(FGFDMExec*, int);
212 // ***************************************************************************
217 FGCoefficient(FGFDMExec*, string);
219 // ***************************************************************************
224 ~FGCoefficient(void);
226 // ***************************************************************************
233 // ***************************************************************************
238 bool Allocate(int, int);
240 // ***************************************************************************
245 float Value(float, float);
247 // ***************************************************************************
254 // ***************************************************************************
261 // ***************************************************************************
266 enum Type {UNKNOWN, VALUE, VECTOR, TABLE, EQUATION};
278 float LookupR, LookupC;
279 long int mult_idx[10];
285 float GetCoeffVal(int);
289 FGAtmosphere* Atmosphere;
291 FGAircraft* Aircraft;
292 FGTranslation* Translation;
293 FGRotation* Rotation;
294 FGPosition* Position;
295 FGAuxiliary* Auxiliary;
299 /******************************************************************************/