Skip turbulence calculations with magnitude is 0.
const SGPropertyNode * child = node->getNode(name);
// fragile: depends on not being typed
// as a number
- if (child != 0 && child->getStringValue()[0] != '\0') {
+ if (child != 0 && child->hasValue() &&
+ child->getStringValue()[0] != '\0') {
(env->*setter)(child->getDoubleValue());
return true;
} else {
&FGEnvironment::get_turbulence_magnitude_norm,
&FGEnvironment::set_turbulence_magnitude_norm);
fgSetArchivable("/environment/turbulence/magnitude-norm");
- fgTie("/environment/turbulence/rate_hz", _environment,
+ fgTie("/environment/turbulence/rate-hz", _environment,
&FGEnvironment::get_turbulence_rate_hz,
&FGEnvironment::set_turbulence_rate_hz);
- fgSetArchivable("/environment/turbulence/rate_hz");
+ fgSetArchivable("/environment/turbulence/rate-hz");
for (int i = 0; i < MAX_CLOUD_LAYERS; i++) {
char buf[128];
// turbType = ttBerndt;
TurbGain = 0.0;
TurbRate = 1.0;
-
+
bind();
Debug(0);
}
Calculate(h);
}
- if (turbType != ttNone) {
+ if (turbType != ttNone && TurbGain > 0.0) {
Turbulence();
vWindNED += vTurbulence;
}
vDirectiondAccelDt(eY) = 1 - 2.0*(double(rand())/double(RAND_MAX));
vDirectiondAccelDt(eZ) = 1 - 2.0*(double(rand())/double(RAND_MAX));
- MagnitudedAccelDt = 1 - 2.0*(double(rand())/double(RAND_MAX)) - Magnitude;
+ MagnitudedAccelDt = 1 - 2.0*(double(rand())/double(RAND_MAX));
// Scale the magnitude so that it moves
// away from the peaks
MagnitudedAccelDt = ((MagnitudedAccelDt - Magnitude) /
Atmosphere->SetTurbGain(tmp * tmp * 100.0);
tmp = turbulence_rate->getDoubleValue();
+ if (tmp <= 0)
+ tmp = 1.0;
Atmosphere->SetTurbRate(tmp);
} else {
tmp = turbulence_gain->getDoubleValue();
Atmosphere->SetTurbGain(tmp * tmp * 100.0);
- tmp = turbulence_rate->getDoubleValue();
+ if (turbulence_rate->hasValue())
+ tmp = turbulence_rate->getDoubleValue();
+ else
+ tmp = 1.0;
Atmosphere->SetTurbRate(tmp);
Atmosphere->SetWindNED( wind_from_north->getDoubleValue(),