Source code for RCAIDE.Library.Methods.Powertrain.Converters.Ram.compute_ram_performance

# RCAIDE/Library/Methods/Powertrain/Converters/Ram/compute_ram_performance.py
# 
# Created:  Jun 2024, M. Clarke    

# ----------------------------------------------------------------------------------------------------------------------
# compute_ram_performance
# ----------------------------------------------------------------------------------------------------------------------     
[docs] def compute_ram_performance(ram, conditions): """ Computes the thermodynamic properties of air at the inlet of a propulsion system. Parameters ---------- ram : RCAIDE.Library.Components.Converters.Ram Ram air converter component with the following attributes: - tag : str Identifier for the ram air converter - working_fluid : Data Working fluid properties object conditions : RCAIDE.Framework.Mission.Common.Conditions Flight conditions with: - freestream : Data Freestream properties - pressure : numpy.ndarray Freestream static pressure [Pa] - temperature : numpy.ndarray Freestream static temperature [K] - mach_number : numpy.ndarray Freestream Mach number Returns ------- None Results are stored in: conditions.freestream: - stagnation_temperature : numpy.ndarray Freestream stagnation temperature [K] - stagnation_pressure : numpy.ndarray Freestream stagnation pressure [Pa] - isentropic_expansion_factor : numpy.ndarray Ratio of specific heats (gamma) [unitless] - specific_heat_at_constant_pressure : numpy.ndarray Specific heat at constant pressure [J/(kg·K)] - gas_specific_constant : numpy.ndarray Gas specific constant [J/(kg·K)] - speed_of_sound : numpy.ndarray Speed of sound [m/s] conditions.energy.converters[ram.tag].outputs: - stagnation_temperature : numpy.ndarray Stagnation temperature [K] - stagnation_pressure : numpy.ndarray Stagnation pressure [Pa] - isentropic_expansion_factor : numpy.ndarray Ratio of specific heats (gamma) [unitless] - specific_heat_at_constant_pressure : numpy.ndarray Specific heat at constant pressure [J/(kg·K)] - gas_specific_constant : numpy.ndarray Gas specific constant [J/(kg·K)] - static_temperature : numpy.ndarray Static temperature [K] - static_pressure : numpy.ndarray Static pressure [Pa] - mach_number : numpy.ndarray Mach number - velocity : numpy.ndarray Velocity [m/s] - speed_of_sound : numpy.ndarray Speed of sound [m/s] Notes ----- This function computes the stagnation (total) properties of the air at the inlet of a propulsion system based on the freestream conditions. It calculates the stagnation temperature and pressure using isentropic flow relations, and also computes various thermodynamic properties of the working fluid. The computation follows these steps: 1. Extract freestream conditions (pressure, temperature, Mach number) 2. Compute working fluid properties (gamma, Cp, R, speed of sound) 3. Calculate freestream velocity from Mach number and speed of sound 4. Compute stagnation temperature and pressure using isentropic flow relations 5. Store results in both freestream and ram output conditions **Major Assumptions** * Isentropic flow from freestream to inlet * No losses in the inlet * Working fluid properties are computed at freestream conditions **Theory** The stagnation temperature and pressure are calculated using the following isentropic relations: .. math:: T_0 = T \\left(1 + \\frac{\\gamma - 1}{2} M^2 \\right) .. math:: P_0 = P \\left(1 + \\frac{\\gamma - 1}{2} M^2 \\right)^{\\gamma/(\\gamma-1)} where: - :math:`T_0` is the stagnation temperature - :math:`T` is the static temperature - :math:`P_0` is the stagnation pressure - :math:`P` is the static pressure - :math:`\\gamma` is the ratio of specific heats - :math:`M` is the Mach number References ---------- [1] Cantwell, B., "AA283 Course Notes", Stanford University https://web.stanford.edu/~cantwell/AA283_Course_Material/AA283_Course_Notes/ See Also -------- RCAIDE.Library.Methods.Powertrain.Converters.Compressor.compute_compressor_performance """ # Unpack flight conditions M0 = conditions.freestream.mach_number P0 = conditions.freestream.pressure T0 = conditions.freestream.temperature # Unpack ram inputs working_fluid = ram.working_fluid ram_conditions = conditions.energy.converters[ram.tag] # Compute the working fluid properties R = working_fluid.gas_specific_constant gamma = working_fluid.compute_gamma(T0,P0) Cp = working_fluid.compute_cp(T0,P0) a = working_fluid.compute_speed_of_sound(T0,P0) V0 = a*M0 # Compute the stagnation quantities from the input static quantities stagnation_pressure = P0*((1.+(gamma-1.)/2.*M0*M0 )**(gamma/(gamma-1.))) stagnation_temperature = T0*(1.+((gamma-1.)/2.*M0*M0)) # Store values into flight conditions data structure conditions.freestream.isentropic_expansion_factor = gamma conditions.freestream.specific_heat_at_constant_pressure = Cp conditions.freestream.gas_specific_constant = R conditions.freestream.stagnation_temperature = stagnation_temperature conditions.freestream.stagnation_pressure = stagnation_pressure # Store values into compoment outputs ram_conditions.outputs.isentropic_expansion_factor = gamma ram_conditions.outputs.specific_heat_at_constant_pressure = Cp ram_conditions.outputs.gas_specific_constant = R ram_conditions.outputs.stagnation_temperature = stagnation_temperature ram_conditions.outputs.stagnation_pressure = stagnation_pressure ram_conditions.outputs.static_temperature = T0 ram_conditions.outputs.static_pressure = P0 ram_conditions.outputs.mach_number = M0 ram_conditions.outputs.velocity = V0 ram_conditions.outputs.speed_of_sound = a return