]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/YASim/Jet.cpp
latest updates from JSBSim
[flightgear.git] / src / FDM / YASim / Jet.cpp
index edd364bee2867cbe48c9ea7006a65313a2e72ed8..f80cac543daee572160a6247eee53b9733672b67 100644 (file)
@@ -10,6 +10,7 @@ Jet::Jet()
     _reheat = 0;
     _rotControl = 0;
     _maxRot = 0;
+    _reverseThrust = false;
 
     // Initialize parameters for an early-ish subsonic turbojet.  More
     // recent turbofans will typically have a lower vMax, epr0, and
@@ -141,10 +142,10 @@ void Jet::integrate(float dt)
     const static float T0 = Atmosphere::getStdTemperature(0);
     const static float D0 = Atmosphere::getStdDensity(0);
 
-    float speed = -Math::dot3(_wind, _dir);
+    float spd = -Math::dot3(_wind, _dir);
 
     float statT, statP, statD;
-    Atmosphere::calcStaticAir(_pressure, _temp, _rho, speed,
+    Atmosphere::calcStaticAir(_pressure, _temp, _rho, spd,
                               &statP, &statT, &statD);
     _pressureCorrect = statP/P0;
     _tempCorrect = Math::sqrt(statT/T0);
@@ -156,7 +157,7 @@ void Jet::integrate(float dt)
         _throttle = 0;
 
     // Linearly taper maxThrust to zero at vMax
-    float vCorr = 1 - (speed/_vMax);
+    float vCorr = spd<0 ? 1 : (spd<_vMax ? 1-spd/_vMax : 0);
 
     float maxThrust = _maxThrust * vCorr * (statD/D0);
     float setThrust = maxThrust * _throttle;
@@ -193,6 +194,9 @@ void Jet::integrate(float dt)
                                                  // 3.5 times as much
                                                  // fuel per thrust unit
     _egt = T0 + beta*ibeta0 * (_egt0 - T0);
+
+    // Thrust reverse handling:
+    if(_reverseThrust) _thrust *= -_reverseEff;
 }
 
 bool Jet::isRunning()