From 1e5d48d1d97cafef7315e3e9688c807142b945b0 Mon Sep 17 00:00:00 2001 From: david Date: Sun, 2 Mar 2003 01:43:39 +0000 Subject: [PATCH] Add spdFromMach() and spdFromVCAS(). --- src/FDM/YASim/Atmosphere.cpp | 19 +++++++++++++++++++ src/FDM/YASim/Atmosphere.hpp | 3 +++ 2 files changed, 22 insertions(+) diff --git a/src/FDM/YASim/Atmosphere.cpp b/src/FDM/YASim/Atmosphere.cpp index 83c6b9748..92d2fbe56 100644 --- a/src/FDM/YASim/Atmosphere.cpp +++ b/src/FDM/YASim/Atmosphere.cpp @@ -102,6 +102,25 @@ float Atmosphere::calcMach(float spd, float temp) return spd / Math::sqrt(GAMMA * R * temp); } +float Atmosphere::spdFromMach(float mach, float temp) +{ + return mach * Math::sqrt(GAMMA * R * temp); +} + +float Atmosphere::spdFromVCAS(float vcas, float pressure, float temp) +{ + // FIXME: does not account for supersonic + float p0 = getStdPressure(0); + float rho0 = getStdDensity(0); + + float tmp = (vcas*vcas)/(7*p0/rho0) + 1; + float cp = ((Math::pow(tmp,(7/2.))-1)/(pressure/p0)) + 1; + + float m2 = (Math::pow(cp,(1/3.5))-1)/0.2; + float vtas= spdFromMach(Math::sqrt(m2), temp); + return vtas; +} + void Atmosphere::calcStaticAir(float p0, float t0, float d0, float v, float* pOut, float* tOut, float* dOut) { diff --git a/src/FDM/YASim/Atmosphere.hpp b/src/FDM/YASim/Atmosphere.hpp index 559707a34..b0cfd3d86 100644 --- a/src/FDM/YASim/Atmosphere.hpp +++ b/src/FDM/YASim/Atmosphere.hpp @@ -13,6 +13,9 @@ public: static float calcVEAS(float spd, float pressure, float temp, float density); static float calcMach(float spd, float temp); static float calcStdDensity(float pressure, float temp); + + static float spdFromMach(float mach, float temp); + static float spdFromVCAS(float vcas, float pressure, float temp); // Given ambient ("0") pressure/density/temperature values, // calculate the properties of static air (air accelerated to the -- 2.39.5