]> git.mxchange.org Git - flightgear.git/blob - src/FDM/JSBSim/FGPiston.h
Latest JSBSim changes.
[flightgear.git] / src / FDM / JSBSim / FGPiston.h
1 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2
3  Header:       FGPiston.h
4  Author:       Jon S. Berndt
5  Date started: 09/12/2000
6
7  ------------- Copyright (C) 2000  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 09/12/2000  JSB  Created
29 10/01/2001  DPM  Modified to use equations from Dave Luff's piston model.
30
31 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32 COMMENTS, REFERENCES,  and NOTES
33 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
34
35 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
36 SENTRY
37 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
38
39 #ifndef FGPISTON_H
40 #define FGPISTON_H
41
42 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
43 INCLUDES
44 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
45
46 #include "FGEngine.h"
47 #include "FGConfigFile.h"
48 #include "FGTable.h"
49
50 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51 DEFINITIONS
52 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
53
54 #define ID_PISTON "$Id$";
55
56 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
57 FORWARD DECLARATIONS
58 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
59
60 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
61 COMMENTS, REFERENCES,  and NOTES
62 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
63
64 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
65 DOCUMENTATION
66 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
67
68 /** Models Dave Luff's engine model as ported into JSBSim by David Megginson.
69     @author Jon S. Berndt (Engine framework code and framework-related mods)
70     @author Dave Luff (engine operational code)
71     @author David Megginson (porting and additional code)
72     @version $Id$
73   */
74
75 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
76 CLASS DECLARATION
77 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
78
79 class FGPiston : public FGEngine
80 {
81 public:
82   /// Constructor
83   FGPiston(FGFDMExec* exec, FGConfigFile* Eng_cfg);
84   /// Destructor
85   ~FGPiston();
86
87   double Calculate(double PowerRequired);
88   double GetPowerAvailable(void) {return PowerAvailable;}
89
90 private:
91   int crank_counter;
92
93   double BrakeHorsePower;
94   double SpeedSlope;
95   double SpeedIntercept;
96   double AltitudeSlope;
97   double PowerAvailable;
98
99   // timestep
100   double dt;
101
102   void doEngineStartup(void);
103   void doManifoldPressure(void);
104   void doAirFlow(void);
105   void doFuelFlow(void);
106   void doEnginePower(void);
107   void doEGT(void);
108   void doCHT(void);
109   void doOilPressure(void);
110   void doOilTemperature(void);
111
112   //
113   // constants
114   //
115   const double CONVERT_CUBIC_INCHES_TO_METERS_CUBED;
116
117   const double R_air;
118   const double rho_fuel;    // kg/m^3
119   const double calorific_value_fuel;  // W/Kg (approximate)
120   const double Cp_air;      // J/KgK
121   const double Cp_fuel;     // J/KgK
122
123   FGTable *Lookup_Combustion_Efficiency;
124   FGTable *Power_Mixture_Correlation;
125
126   //
127   // Configuration
128   //
129   double MinManifoldPressure_inHg; // Inches Hg
130   double MaxManifoldPressure_inHg; // Inches Hg
131   double Displacement;             // cubic inches
132   double MaxHP;                    // horsepower
133   double Cycles;                   // cycles/power stroke
134   double IdleRPM;                  // revolutions per minute
135
136   //
137   // Inputs (in addition to those in FGEngine).
138   //
139   double p_amb;              // Pascals
140   double p_amb_sea_level;    // Pascals
141   double T_amb;              // degrees Kelvin
142   double RPM;                // revolutions per minute
143   double IAS;                // knots
144
145   //
146   // Outputs (in addition to those in FGEngine).
147   //
148   bool Magneto_Left;
149   bool Magneto_Right;
150   double rho_air;
151   double volumetric_efficiency;
152   double m_dot_air;
153   double equivalence_ratio;
154   double m_dot_fuel;
155   double Percentage_Power;
156   double HP;
157   double combustion_efficiency;
158
159   void Debug(int from);
160 };
161
162 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
163 #endif