X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FEnvironment%2Fatmosphere.cxx;h=099669586a82b41f046ef5a7ecedb91d58be26ca;hb=386aefe69358ce41a11c9afeb8f56e26758fe56b;hp=a15c943ed47aba514bddb6212459f38f9a85c3fc;hpb=7b6d15d537308363fa8967e0edda879a80ddaa21;p=flightgear.git diff --git a/src/Environment/atmosphere.cxx b/src/Environment/atmosphere.cxx index a15c943ed..099669586 100644 --- a/src/Environment/atmosphere.cxx +++ b/src/Environment/atmosphere.cxx @@ -260,6 +260,21 @@ double FGAtmo::QNH(const double field_elev, const double field_press) { return rslt; } +// Invert the QNH calculation to get the field pressure from a metar +// report. +// field pressure _in pascals_ +// ... caller gets to convert to inHg or millibars +// Field elevation in m +// Altimeter setting (QNH) in pascals +// Valid for fields within the troposphere only. +double FGAtmo::fieldPressure(const double field_elev, const double qnh) +{ + using namespace atmodel; + static const double nn = ISA::lam0 * Rgas / g / mm; + const double pratio = pow(qnh / ISA::P0, nn); + return ISA::P0 * pow(pratio - field_elev * ISA::lam0 / ISA::T0, 1.0 / nn); +} + void FGAltimeter::dump_stack1(const double Tref) { using namespace atmodel; const int bs(200);