Source code for RCAIDE.Library.Methods.Powertrain.Converters.Supersonic_Nozzle.compute_supersonic_nozzle_performance
# RCAIDE/Library/Methods/Powertrain/Converters/Compression_Nozzle/compute_supersonic_nozzle_performance.py
# (c) Copyright 2023 Aerospace Research Community LLC
#
# Created: Jun 2024, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
# package imports
import numpy as np
from RCAIDE.Library.Methods.Gas_Dynamics.fm_id import fm_id
# ----------------------------------------------------------------------------------------------------------------------
# compute_compression_nozzle_performance
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def compute_supersonic_nozzle_performance(supersonic_nozzle,conditions):
"""
Computes the performance parameters of a supersonic nozzle based on input conditions.
Parameters
----------
supersonic_nozzle : RCAIDE.Components.Energy.Converters.Supersonic_Nozzle
The supersonic nozzle component for which performance is being computed
conditions : RCAIDE.Framework.Mission.Common.Conditions
Container for flight conditions and energy system states
Returns
-------
None
This function modifies the conditions object in-place
Notes
-----
This function calculates output values from input conditions according to
gas dynamics equations for supersonic nozzles.
**Major Assumptions**
* Constant polytropic efficiency and pressure ratio
* Isentropic flow except for losses accounted by efficiency terms
* Perfect gas behavior
**Theory**
The nozzle performance is calculated using isentropic flow relations. For supersonic flow,
the Mach number is calculated from the pressure ratio:
.. math::
M = \\sqrt{\\frac{2}{\\gamma-1}\\left[\\left(\\frac{P_t}{P_0}\\right)^{\\frac{\\gamma-1}{\\gamma}}-1\\right]}
The static temperature is related to stagnation temperature by:
.. math::
T = \\frac{T_t}{1+\\frac{\\gamma-1}{2}M^2}
**Definitions**
'Pressure ratio'
Ratio of exit pressure to inlet pressure in the nozzle
'Polytropic efficiency'
Measure of the nozzle's thermodynamic efficiency accounting for irreversibilities
References
----------
[1] Cantwell, B. "AA283 Course Material: Course Notes." Stanford University. https://web.stanford.edu/~cantwell/AA283_Course_Material/AA283_Course_Notes/
See Also
--------
RCAIDE.Library.Methods.Gas_Dynamics.fm_id
"""
#unpack the values
#unpack from conditions
gamma = conditions.freestream.isentropic_expansion_factor
Cp = conditions.freestream.specific_heat_at_constant_pressure
Po = conditions.freestream.pressure
Pto = conditions.freestream.stagnation_pressure
Tto = conditions.freestream.stagnation_temperature
R = conditions.freestream.gas_specific_constant
Mo = conditions.freestream.mach_number
s_nozzle_conditions = conditions.energy.converters[supersonic_nozzle.tag]
#unpack from inputs
Tt_in = s_nozzle_conditions.inputs.stagnation_temperature
Pt_in = s_nozzle_conditions.inputs.stagnation_pressure
pid = supersonic_nozzle.pressure_ratio
etapold = supersonic_nozzle.polytropic_efficiency
eta_rec = supersonic_nozzle.pressure_recovery
#Method for computing the nozzle properties
#--Getting the output stagnation quantities
Pt_out = Pt_in*pid*eta_rec
Tt_out = Tt_in*(pid*eta_rec)**((gamma-1)/(gamma)*etapold)
ht_out = Cp*Tt_out
#compute the output Mach number, static quantities and the output velocity
Mach = np.sqrt((((Pt_out/Po)**((gamma-1)/gamma))-1)*2/(gamma-1))
#Remove check on mach numbers fromn expansion nozzle
i_low = Mach < 1.0
#initializing the Pout array
P_out = 1.0 *Mach/Mach
#Computing output pressure and Mach number for the case Mach <1.0
P_out[i_low] = Po[i_low]
Mach[i_low] = np.sqrt((((Pt_out[i_low]/Po[i_low])**((gamma[i_low]-1.)/gamma[i_low]))-1.)*2./(gamma[i_low]-1.))
#Computing the output temperature,enthalpy, velocity and density
T_out = Tt_out/(1.+(gamma-1.)/2.*Mach*Mach)
h_out = Cp*T_out
u_out = np.sqrt(2.*(ht_out-h_out))
rho_out = P_out/(R*T_out)
#Computing the freestream to nozzle area ratio (mainly from thrust computation)
area_ratio = (fm_id(Mo,gamma)/fm_id(Mach,gamma)*(1/(Pt_out/Pto))*(np.sqrt(Tt_out/Tto)))
#pack computed quantities into outputs
s_nozzle_conditions.outputs.stagnation_temperature = Tt_out
s_nozzle_conditions.outputs.stagnation_pressure = Pt_out
s_nozzle_conditions.outputs.stagnation_enthalpy = ht_out
s_nozzle_conditions.outputs.mach_number = Mach
s_nozzle_conditions.outputs.static_temperature = T_out
s_nozzle_conditions.outputs.density = rho_out
s_nozzle_conditions.outputs.static_enthalpy = h_out
s_nozzle_conditions.outputs.velocity = u_out
s_nozzle_conditions.outputs.static_pressure = P_out
s_nozzle_conditions.outputs.area_ratio = area_ratio
return