[docs]isa_base_temperature=isa_table["Base Temperature [C]"].values+273.15
### Calculate pressure at each ISA level programmatically using the barometric pressure equation with linear temperature.
[docs]defbarometric_formula(P_b,T_b,L_b,h,h_b,):""" The barometric pressure equation, from here: https://en.wikipedia.org/wiki/Barometric_formula Args: P_b: Pressure at the base of the layer, in Pa T_b: Temperature at the base of the layer, in K L_b: Temperature lapse rate, in K/m h: Altitude, in m h_b: Returns: """T=T_b+L_b*(h-h_b)T=np.fmax(T,1)# Keep temperature nonnegative, no matter the inputs.ifL_b!=0:returnP_b*(T/T_b)**(-g/(gas_constant_air*L_b))else:returnP_b*np.exp(np.clip(-g*(h-h_b)/(gas_constant_air*T_b),-500,500))
[docs]defpressure_isa(altitude):""" Computes the pressure at a given altitude based on the International Standard Atmosphere. Uses the Barometric formula, as implemented here: https://en.wikipedia.org/wiki/Barometric_formula Args: altitude: Geopotential altitude [m] Returns: Pressure [Pa] """pressure=0*altitude# Initialize the pressure to all zeros.foriinrange(len(isa_table)):pressure=np.where(altitude>isa_base_altitude[i],barometric_formula(P_b=isa_pressure[i],T_b=isa_base_temperature[i],L_b=isa_lapse_rate[i],h=altitude,h_b=isa_base_altitude[i],),pressure,)### Add lower bound casepressure=np.where(altitude<=isa_base_altitude[0],barometric_formula(P_b=isa_pressure[0],T_b=isa_base_temperature[0],L_b=isa_lapse_rate[0],h=altitude,h_b=isa_base_altitude[0],),pressure,)returnpressure
[docs]deftemperature_isa(altitude):""" Computes the temperature at a given altitude based on the International Standard Atmosphere. Args: altitude: Geopotential altitude [m] Returns: Temperature [K] """temp=0*altitude# Initialize the temperature to all zeros.foriinrange(len(isa_table)):temp=np.where(altitude>isa_base_altitude[i],(altitude-isa_base_altitude[i])*isa_lapse_rate[i]+isa_base_temperature[i],temp,)### Add lower bound casetemp=np.where(altitude<=isa_base_altitude[0],(altitude-isa_base_altitude[0])*isa_lapse_rate[0]+isa_base_temperature[0],temp,)returntemp