]> git.mxchange.org Git - flightgear.git/blob - src/FDM/JSBSim/FGPiston.h
2b14104d1cbb0920f3903e4377e55faeb09834ab
[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 namespace JSBSim {
61
62 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
63 COMMENTS, REFERENCES,  and NOTES
64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
65
66 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
67 DOCUMENTATION
68 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
69
70 /** Models Dave Luff's engine model as ported into JSBSim by David Megginson.
71     @author Jon S. Berndt (Engine framework code and framework-related mods)
72     @author Dave Luff (engine operational code)
73     @author David Megginson (porting and additional code)
74     @version $Id$
75     @see <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jsbsim/JSBSim/FGPiston.h?rev=HEAD&content-type=text/vnd.viewcvs-markup">
76          Header File </a>
77     @see <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jsbsim/JSBSim/FGPiston.cpp?rev=HEAD&content-type=text/vnd.viewcvs-markup">
78          Source File </a>
79   */
80
81 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
82 CLASS DECLARATION
83 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
84
85 class FGPiston : public FGEngine
86 {
87 public:
88   /// Constructor
89   FGPiston(FGFDMExec* exec, FGConfigFile* Eng_cfg);
90   /// Destructor
91   ~FGPiston();
92
93   double Calculate(double PowerRequired);
94   double GetPowerAvailable(void) {return PowerAvailable;}
95   double CalcFuelNeed(void);
96
97 private:
98   int crank_counter;
99
100   double BrakeHorsePower;
101   double SpeedSlope;
102   double SpeedIntercept;
103   double AltitudeSlope;
104   double PowerAvailable;
105
106   // timestep
107   double dt;
108
109   void doEngineStartup(void);
110   void doManifoldPressure(void);
111   void doAirFlow(void);
112   void doFuelFlow(void);
113   void doEnginePower(void);
114   void doEGT(void);
115   void doCHT(void);
116   void doOilPressure(void);
117   void doOilTemperature(void);
118
119   //
120   // constants
121   //
122
123   const double R_air;
124   const double rho_fuel;    // kg/m^3
125   const double calorific_value_fuel;  // W/Kg (approximate)
126   const double Cp_air;      // J/KgK
127   const double Cp_fuel;     // J/KgK
128
129   FGTable *Lookup_Combustion_Efficiency;
130   FGTable *Power_Mixture_Correlation;
131
132   //
133   // Configuration
134   //
135   double MinManifoldPressure_inHg; // Inches Hg
136   double MaxManifoldPressure_inHg; // Inches Hg
137   double Displacement;             // cubic inches
138   double MaxHP;                    // horsepower
139   double Cycles;                   // cycles/power stroke
140   double IdleRPM;                  // revolutions per minute
141
142   //
143   // Inputs (in addition to those in FGEngine).
144   //
145   double p_amb;              // Pascals
146   double p_amb_sea_level;    // Pascals
147   double T_amb;              // degrees Kelvin
148   double RPM;                // revolutions per minute
149   double IAS;                // knots
150
151   //
152   // Outputs (in addition to those in FGEngine).
153   //
154   bool Magneto_Left;
155   bool Magneto_Right;
156   double rho_air;
157   double volumetric_efficiency;
158   double m_dot_air;
159   double equivalence_ratio;
160   double m_dot_fuel;
161   double Percentage_Power;
162   double HP;
163   double combustion_efficiency;
164
165   void Debug(int from);
166 };
167 }
168 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
169 #endif