44 lines
992 B
Python
44 lines
992 B
Python
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
def temperature(altitude):
|
|
if altitude > 25000:
|
|
return -131.21 + 0.00299*altitude
|
|
elif altitude > 11000:
|
|
return -56.46
|
|
else:
|
|
return 15.04 - 0.00649*altitude
|
|
|
|
|
|
def pressure(altitude):
|
|
T = temperature(altitude)
|
|
if altitude > 25000:
|
|
kpa = 2.488 * ((T+273.1)/216.6)**(-11.388)
|
|
elif altitude > 11000:
|
|
kpa = 22.65 * np.exp(1.73 - 0.000157*altitude)
|
|
else:
|
|
kpa = 101.29 * ((T+273.1)/288.08)**5.256
|
|
return 1000*kpa
|
|
|
|
def atmospheric_density(altitude):
|
|
p = pressure(altitude)
|
|
T = temperature(altitude)
|
|
return p / (286.9*(T+273.1))
|
|
|
|
|
|
def Mach(altitude, speed):
|
|
return speed/speed_of_sound(altitude)
|
|
|
|
|
|
def speed_of_sound(altitude):
|
|
gamma = 1.4
|
|
p = pressure(altitude)
|
|
rho = atmospheric_density(altitude)
|
|
return (gamma*p/rho)**0.5
|
|
|
|
|
|
def dynamic_pressure(altitude, speed):
|
|
rho = atmospheric_density(altitude)
|
|
return rho * speed**2 / 2
|