]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/YASim/Jet.hpp
FGPUIDialog: fix reading from already free'd memory.
[flightgear.git] / src / FDM / YASim / Jet.hpp
index 40b4c4d9e9cb34ab110d63117b13dc360899a1e6..9bfe6512e15ba90a1801ee49669468177789e2de 100644 (file)
@@ -5,18 +5,46 @@
 
 namespace yasim {
 
-// Incredibly dumb placeholder for a Jet implementation.  But it does
-// what's important, which is provide thrust.
 class Jet : public Thruster {
 public:
     Jet();
 
     virtual Jet* getJet() { return this; }
+    
+    void setMaxThrust(float thrust, float afterburner=0);
+    void setVMax(float spd);
+    void setTSFC(float tsfc);
+    void setRPMs(float idleN1, float maxN1, float idleN2, float maxN2);
+    void setEGT(float takeoffEGT);
+    void setEPR(float takeoffEPR);
+    void setVectorAngle(float angle);
 
-    void setDryThrust(float thrust);
-    void setReheatThrust(float thrust);
+    // The time it takes the engine to reach 90% thrust from idle
+    void setSpooling(float time);
+
+    // Sets the reheat control
     void setReheat(float reheat);
 
+    // Sets the thrust vector control (0-1)
+    void setRotation(float rot);
+
+    // Thrust reverser control.
+    void setReverse(bool reverse) { _reverseThrust = reverse; }
+
+    // Thrust reverser effectiveness.
+    void setReverseThrust(float eff) { _reverseEff = eff; }
+
+    float getN1();
+    float getN2();
+    float getEPR();
+    float getEGT();
+
+    // Normalized "performance" number.  Used for fuzzy numbers in FGFDM
+    float getPerfNorm() { return (_n1 - _n1Min) / (_n1Max - _n1Min); }
+
+    // From Thruster:
+    virtual bool isRunning();
+    virtual bool isCranking();
     virtual void getThrust(float* out);
     virtual void getTorque(float* out);
     virtual void getGyro(float* out);
@@ -25,10 +53,37 @@ public:
     virtual void stabilize();
 
 private:
-    float _thrust;
-    float _abThrust;
-    float _rho0;
     float _reheat;
+    bool _reverseThrust;
+
+    float _maxThrust; // Max dry thrust at sea level
+    float _abFactor;  // Afterburner thrust multiplier
+
+    float _maxRot;
+    float _rotControl;
+
+    float _decay;  // time constant for the exponential integration
+    float _vMax;   // speed at which thrust is zero
+    float _epr0;   // EPR at takeoff thrust
+    float _tsfc;   // TSFC ((lb/hr)/lb) at takeoff thrust and zero airspeed
+    float _egt0;   // EGT at takeoff thrust
+    float _n1Min;  // N1 at ground idle
+    float _n1Max;  // N1 at takeoff thrust
+    float _n2Min;  // N2 at ground idle
+    float _n2Max;  // N2 at takeoff thrust
+    float _reverseEff; // Thrust reverser effectiveness (fraction)
+
+    bool _running;   // Is the engine running?
+    bool _cranking;  // Is the engine cranking?
+    float _thrust;   // Current thrust
+    float _epr;      // Current EPR
+    float _n1;       // Current UNCORRECTED N1 (percent)
+    float _n2;       // Current UNCORRECTED N2 (percent)
+    float _fuelFlow; // Current UNCORRECTED fuel flow (kg/s)
+    float _egt;      // Current UNCORRECTED EGT (kelvin)
+
+    float _tempCorrect; // Intake temp / std temp (273 K)
+    float _pressureCorrect; // Intake pressure / std pressure
 };
 
 }; // namespace yasim