#include <Main/fg_props.hxx>
#include <Main/util.hxx>
#include <simgear/constants.h>
+#include <simgear/math/SGMisc.hxx>
+#include <simgear/math/SGLimits.hxx>
+#include <simgear/math/SGMathFwd.hxx>
#include <simgear/sg_inlines.h>
:
_name(node->getStringValue("name", "static")),
_num(node->getIntValue("number", 0)),
- _tau(node->getDoubleValue("tau", 1)),
+ _tau(SGMiscd::max(.0,node->getDoubleValue("tau", 1))),
_error_factor(node->getDoubleValue("error-factor", 0)),
_type(node->getIntValue("type", 0))
{
double beta;
double alpha;
double mach;
- double trat = _tau ? dt/_tau : 100;
+ double trat = _tau ? dt/_tau : SGLimitsd::max();
double proj_factor = 0;
double pt;
proj_factor = sqrt( 1.0 - cos(beta)*cos(beta) * cos(alpha)*cos(alpha) );
}
- if ( (_type ==1) or (_type == 2) ) {
+ if ( (_type ==1) || (_type == 2) ) {
mach = _mach_node->getDoubleValue();
pt = p_new * pow(1 + 0.2 * mach*mach*proj_factor*proj_factor, 3.5 ); //total pressure perpendicular to static port (=perpendicular to body x-axis)
qc_part = (pt - p_new) * _error_factor ; //part of impact pressure to be added to static pressure (due to sideslip)
p_new = p_new + qc_part;
}
- _pressure_out_node->setDoubleValue(fgGetLowPass(p, p_new, trat)); //setting new pressure in static system
+ _pressure_out_node->setDoubleValue(
+ _tau > .0 ? fgGetLowPass(p, p_new, trat) : p_new
+ ); //setting new pressure in static system
}
}