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 *******************************************************************************/
65 #define FG_ALPHADOT 32
67 #define FG_BETADOT 128
68 #define FG_PITCHRATE 256
69 #define FG_ROLLRATE 512
70 #define FG_YAWRATE 1024
71 #define FG_ELEVATOR 2048
72 #define FG_AILERON 4096
73 #define FG_RUDDER 8192
75 #define FG_ALTITUDE 32768L
77 /*******************************************************************************
79 *******************************************************************************/
91 /*******************************************************************************
92 COMMENTS, REFERENCES, and NOTES
93 *******************************************************************************/
95 This class models the stability derivative coefficient lookup tables or
96 equations. Note that the coefficients need not be calculated each delta-t.
98 The coefficient files are located in the axis subdirectory for each aircraft.
99 For instance, for the X-15, you would find subdirectories under the
100 aircraft/X-15/ directory named CLIFT, CDRAG, CSIDE, CROLL, CPITCH, CYAW. Under
101 each of these directories would be files named a, a0, q, and so on. The file
102 named "a" under the CLIFT directory would contain data for the stability
103 derivative modeling lift due to a change in alpha. See the FGAircraft.cpp file
104 for additional information. The coefficient files have the following format:
106 <name of coefficient>
107 <short description of coefficient with no embedded spaces>
108 <method used in calculating the coefficient: TABLE | EQUATION | VECTOR | VALUE>
109 <parameter identifier for table row (if required)>
110 <parameter identifier for table column (if required)>
111 <OR'ed list of parameter identifiers needed to turn this coefficient into a force>
112 <number of rows in table (if required)>
113 <number of columns in table (if required)>
115 <value of parameter indexing into the column of a table or vector - or value
116 itself for a VALUE coefficient>
117 <values of parameter indexing into row of a table if TABLE type> <Value of
118 coefficient at this row and column>
120 <... repeat above for each column of data in table ...>
122 As an example for the X-15, for the lift due to mach:
163 Note that the values in a row which index into the table must be the same value
164 for each column of data, so the first column of numbers for each altitude are
165 seen to be equal, and there are the same number of values for each altitude.
185 @author Jon S. Berndt
186 @memo This class models the stability derivative coefficient lookup tables or equations.
188 /*******************************************************************************
190 *******************************************************************************/
195 // ***************************************************************************
200 FGCoefficient(FGFDMExec*, ifstream&);
202 // ***************************************************************************
207 ~FGCoefficient(void);
209 // ***************************************************************************
216 // ***************************************************************************
221 bool Allocate(int, int);
223 // ***************************************************************************
228 float Value(float, float);
230 // ***************************************************************************
237 // ***************************************************************************
244 // ***************************************************************************
249 float TotalValue(void);
251 // ***************************************************************************
256 enum Type {UNKNOWN, VALUE, VECTOR, TABLE, EQUATION};
268 float LookupR, LookupC;
269 long int mult_idx[10];
275 float GetCoeffVal(int);
279 FGAtmosphere* Atmosphere;
281 FGAircraft* Aircraft;
282 FGTranslation* Translation;
283 FGRotation* Rotation;
284 FGPosition* Position;
285 FGAuxiliary* Auxiliary;
289 /******************************************************************************/