199 if (_serviceable_node->getBoolValue())
202 if( !_freeze_node->getBoolValue() && std::numeric_limits<double>::min() < fabs(dt))
204 double pressure_inhg = _pressure_node->getDoubleValue();
205 double sea_inhg = _sea_node->getDoubleValue();
208 double rate_sea_inhg_per_s = ( sea_inhg - _internal_sea_inhg ) / dt;
212 double rate_inhg_per_s = ( pressure_inhg - _internal_pressure_inhg ) / dt;
217 double altitude_ft = _altitude_table->interpolate(
SEA_LEVEL_INHG - pressure_inhg );
218 double slope_inhg = _pressure_table->interpolate( altitude_ft );
221 double last_speed_ft_per_s = _speed_ft_per_s;
224 _speed_ft_per_s = - rate_inhg_per_s * 2952.75591 / slope_inhg;
227 _speed_ft_per_s =
fgGetLowPass( last_speed_ft_per_s, _speed_ft_per_s,
231 _speed_node->setDoubleValue( _speed_ft_per_s );
232 _speed_min_node->setDoubleValue( _speed_ft_per_s * 60.0 );
235 _internal_pressure_inhg = pressure_inhg;
236 _internal_sea_inhg = sea_inhg;