Source code for aerosandbox.atmosphere._diff_atmo_functions

import aerosandbox.numpy as np
from pathlib import Path
from aerosandbox.modeling.interpolation import InterpolatedModel
from aerosandbox.atmosphere._isa_atmo_functions import pressure_isa, temperature_isa, isa_base_altitude

# Define the altitudes of knot points

altitude_knot_points = np.array(
    [
        0,
        5e3,
        10e3,
        13e3,
        18e3,
        22e3,
        30e3, 34e3,
        45e3, 49e3,
        53e3,
        69e3, 73e3,
        77e3,
        83e3, 87e3,
    ] +
    list(87e3 + np.geomspace(5e3, 2000e3, 11)) +
    list(0 - np.geomspace(5e3, 5000e3, 11))
)

[docs]altitude_knot_points = np.sort(np.unique(altitude_knot_points))
[docs]temperature_knot_points = temperature_isa(altitude_knot_points)
[docs]pressure_knot_points = pressure_isa(altitude_knot_points)
# creates interpolated model for temperature and pressure
[docs]interpolated_temperature = InterpolatedModel( x_data_coordinates=altitude_knot_points, y_data_structured=temperature_knot_points, )
[docs]interpolated_log_pressure = InterpolatedModel( x_data_coordinates=altitude_knot_points, y_data_structured=np.log(pressure_knot_points), )
[docs]def pressure_differentiable(altitude): """ Computes the pressure at a given altitude with a differentiable model. Args: altitude: Geopotential altitude [m] Returns: Pressure [Pa] """ return np.exp(interpolated_log_pressure(altitude))
[docs]def temperature_differentiable(altitude): """ Computes the temperature at a given altitude with a differentiable model. Args: altitude: Geopotential altitude [m] Returns: Temperature [K] """ return interpolated_temperature(altitude)