"min throttle" tunable from Maik:
Background are problems modeling the rotax 912 engine. The idle speed of the real engine is about half of the speed I could achieve with the default minimum manifold pressure. While on ground I can switch off the engine by pulling the throttle. The audible difference between the different minimum idle speed (real vs. simulated) is extreme. With the patch I get quite realistic sound. For the rotax engine I use min-throttle="0.05" which is half of the former default value.
This commit is contained in:
parent
8b98937e4d
commit
4a683bed1e
3 changed files with 12 additions and 1 deletions
src/FDM/YASim
|
@ -801,6 +801,9 @@ void FGFDM::parsePistonEngine(XMLAttributes* a)
|
||||||
if(a->hasAttribute("compression"))
|
if(a->hasAttribute("compression"))
|
||||||
eng->setCompression(attrf(a, "compression"));
|
eng->setCompression(attrf(a, "compression"));
|
||||||
|
|
||||||
|
if(a->hasAttribute("min-throttle"))
|
||||||
|
eng->setMinThrottle(attrf(a, "min-throttle"));
|
||||||
|
|
||||||
if(a->hasAttribute("turbo-mul")) {
|
if(a->hasAttribute("turbo-mul")) {
|
||||||
float mul = attrf(a, "turbo-mul");
|
float mul = attrf(a, "turbo-mul");
|
||||||
float mp = attrf(a, "wastegate-mp", 1e6) * INHG2PA;
|
float mp = attrf(a, "wastegate-mp", 1e6) * INHG2PA;
|
||||||
|
|
|
@ -36,6 +36,7 @@ PistonEngine::PistonEngine(float power, float speed)
|
||||||
_mixCoeff = realFlow * 1.1f / _omega0;
|
_mixCoeff = realFlow * 1.1f / _omega0;
|
||||||
|
|
||||||
_turbo = 1;
|
_turbo = 1;
|
||||||
|
_minthrottle = 0.1;
|
||||||
_maxMP = 1e6; // No waste gate on non-turbo engines.
|
_maxMP = 1e6; // No waste gate on non-turbo engines.
|
||||||
_wastegate = 1;
|
_wastegate = 1;
|
||||||
_charge = 1;
|
_charge = 1;
|
||||||
|
@ -72,6 +73,11 @@ void PistonEngine::setCompression(float c)
|
||||||
_compression = c;
|
_compression = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PistonEngine::setMinThrottle(float m)
|
||||||
|
{
|
||||||
|
_minthrottle = m;
|
||||||
|
}
|
||||||
|
|
||||||
float PistonEngine::getMaxPower()
|
float PistonEngine::getMaxPower()
|
||||||
{
|
{
|
||||||
return _power0;
|
return _power0;
|
||||||
|
@ -147,7 +153,7 @@ void PistonEngine::calc(float pressure, float temp, float speed)
|
||||||
// We need to adjust the minimum manifold pressure to get a
|
// We need to adjust the minimum manifold pressure to get a
|
||||||
// reasonable idle speed (a "closed" throttle doesn't suck a total
|
// reasonable idle speed (a "closed" throttle doesn't suck a total
|
||||||
// vacuum in real manifolds). This is a hack.
|
// vacuum in real manifolds). This is a hack.
|
||||||
float _minMP = (-0.008 * _turbo ) + 0.1;
|
float _minMP = (-0.008 * _turbo ) + _minthrottle;
|
||||||
|
|
||||||
_mp = pressure * _charge;
|
_mp = pressure * _charge;
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ public:
|
||||||
void setTurboParams(float mul, float maxMP);
|
void setTurboParams(float mul, float maxMP);
|
||||||
void setDisplacement(float d);
|
void setDisplacement(float d);
|
||||||
void setCompression(float c);
|
void setCompression(float c);
|
||||||
|
void setMinThrottle(float m);
|
||||||
void setWastegate(float norm) { _wastegate = norm; }
|
void setWastegate(float norm) { _wastegate = norm; }
|
||||||
void setSupercharger(bool hasSuper) { _hasSuper = hasSuper; }
|
void setSupercharger(bool hasSuper) { _hasSuper = hasSuper; }
|
||||||
void setTurboLag(float lag) { _turboLag = lag; }
|
void setTurboLag(float lag) { _turboLag = lag; }
|
||||||
|
@ -47,6 +48,7 @@ private:
|
||||||
float _wastegate; // wastegate setting, [0:1]
|
float _wastegate; // wastegate setting, [0:1]
|
||||||
float _displacement; // piston stroke volume
|
float _displacement; // piston stroke volume
|
||||||
float _compression; // compression ratio (>1)
|
float _compression; // compression ratio (>1)
|
||||||
|
float _minthrottle; // minimum throttle [0:1]
|
||||||
|
|
||||||
// Runtime state/output:
|
// Runtime state/output:
|
||||||
float _mp;
|
float _mp;
|
||||||
|
|
Loading…
Add table
Reference in a new issue