From 1d081cdd9328cdcbb74a16e9442a2597f6aa0014 Mon Sep 17 00:00:00 2001 From: ehofman Date: Sat, 2 Oct 2004 13:34:06 +0000 Subject: [PATCH] Move the calculations of Mach to the base class. --- src/AIModel/AIBallistic.cxx | 1 - src/AIModel/AIBallistic.hxx | 1 - src/AIModel/AIBase.cxx | 16 +++++++++++++++- src/AIModel/AIBase.hxx | 3 +++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/AIModel/AIBallistic.cxx b/src/AIModel/AIBallistic.cxx index 5bfadf48b..2a9f97e73 100644 --- a/src/AIModel/AIBallistic.cxx +++ b/src/AIModel/AIBallistic.cxx @@ -36,7 +36,6 @@ FGAIBallistic::FGAIBallistic(FGAIManager* mgr) { gravity = 32; // buoyancy = 64; no_roll = false; - Mach = 0.4; } FGAIBallistic::~FGAIBallistic() { diff --git a/src/AIModel/AIBallistic.hxx b/src/AIModel/AIBallistic.hxx index 83231bcf3..82309ea2b 100644 --- a/src/AIModel/AIBallistic.hxx +++ b/src/AIModel/AIBallistic.hxx @@ -67,7 +67,6 @@ private: bool wind; // if true, local wind will be applied to object double Cd; // drag coefficient double mass; // slugs - double Mach; void Run(double dt); }; diff --git a/src/AIModel/AIBase.cxx b/src/AIModel/AIBase.cxx index 935d5c660..db566a1ef 100644 --- a/src/AIModel/AIBase.cxx +++ b/src/AIModel/AIBase.cxx @@ -98,9 +98,23 @@ void FGAIBase::update(double dt) { } rho = p / (1718 * (T + 459.7)); + + // calculate the speed of sound at altitude + // a = sqrt ( g * R * (T + 459.7)) + // where: + // a = speed of sound [ft/s] + // g = specific heat ratio, which is usually equal to 1.4 + // R = specific gas constant, which equals 1716 ft-lb/slug/°R + + a = sqrt ( 1.4 * 1716 * (T + 459.7)); + + // calculate Mach number + + Mach = speed/a; + +// cout << "Speed(ft/s) "<< speed <<" Altitude(ft) "<< altitude << " Mach " << Mach; } - void FGAIBase::Transform() { if (!invisible) { aip.setPosition(pos.lon(), pos.lat(), pos.elev() * SG_METER_TO_FEET); diff --git a/src/AIModel/AIBase.hxx b/src/AIModel/AIBase.hxx index f8728561d..5cc92b5b4 100644 --- a/src/AIModel/AIBase.hxx +++ b/src/AIModel/AIBase.hxx @@ -182,6 +182,9 @@ public: double rho; double T; // temperature, degs farenheit double p; // pressure lbs/sq ft + double a; // speed of sound at altitude (ft/s) + double Mach; // Mach number + static const double e; static const double lbs_to_slugs;