]> git.mxchange.org Git - flightgear.git/blob - src/FDM/YASim/PistonEngine.hpp
Rework the MP calculation to make super/turbocharger output dependent
[flightgear.git] / src / FDM / YASim / PistonEngine.hpp
1 #ifndef _PISTONENGINE_HPP
2 #define _PISTONENGINE_HPP
3
4 #include "Engine.hpp"
5
6 namespace yasim {
7
8 class PistonEngine : public Engine {
9 public:
10     virtual PistonEngine* isPistonEngine() { return this; }
11
12     // Initializes an engine from known "takeoff" parameters.
13     PistonEngine(float power, float spd);
14     void setTurboParams(float mul, float maxMP);
15     void setDisplacement(float d);
16     void setCompression(float c);
17
18     bool isCranking();
19     float getMP();
20     float getEGT();
21     float getMaxPower(); // max sea-level power
22     float getBoost() { return _boostPressure; }
23
24     virtual void calc(float pressure, float temp, float speed);
25     virtual float getTorque();
26     virtual float getFuelFlow();
27
28 private:
29     // Static configuration:
30     float _power0;   // reference power setting
31     float _omega0;   //   "       engine speed
32     float _rho0;     //   "       manifold air density
33     float _f0;       // "ideal" fuel flow at P0/omega0
34     float _mixCoeff; // fuel flow per omega at full mixture
35     float _turbo;    // (or super-)charger pressure multiplier
36     float _maxMP;    // wastegate setting
37     float _displacement; // piston stroke volume
38     float _compression;  // compression ratio (>1)
39
40     // Runtime state/output:
41     float _mp;
42     float _torque;
43     float _fuelFlow;
44     float _egt;
45     float _boostPressure;
46 };
47
48 }; // namespace yasim
49 #endif // _PISTONENGINE_HPP