Source code for RCAIDE.Library.Methods.Powertrain.Converters.Compressor.compute_compressor_performance

# RCAIDE/Library/Methods/Powertrain/Converters/Compressor/compute_compressor_performance.py
# (c) Copyright 2023 Aerospace Research Community LLC
# 
# Created:  Jun 2024, M. Clarke

# ---------------------------------------------------------------------------------------------------------------------- 
# Imports 
# ---------------------------------------------------------------------------------------------------------------------- 
import numpy as np
from copy import  deepcopy

# ---------------------------------------------------------------------------------------------------------------------- 
# compute_compression_nozzle_performance
# ----------------------------------------------------------------------------------------------------------------------
[docs] def compute_compressor_performance(compressor, conditions): """ Computes the performance of a compressor based on its polytropic efficiency. Parameters ---------- compressor : RCAIDE.Library.Components.Converters.Compressor Compressor component with the following attributes: - tag : str Identifier for the compressor - pressure_ratio : float Pressure ratio across compressor - polytropic_efficiency : float Polytropic efficiency of compression - working_fluid : Data Working fluid properties object conditions : RCAIDE.Framework.Mission.Common.Conditions Flight conditions with: - energy.converters[compressor.tag].inputs : Data Input conditions - stagnation_temperature : numpy.ndarray Inlet stagnation temperature [K] - stagnation_pressure : numpy.ndarray Inlet stagnation pressure [Pa] - static_temperature : numpy.ndarray Inlet static temperature [K] - static_pressure : numpy.ndarray Inlet static pressure [Pa] - mach_number : numpy.ndarray Inlet Mach number - energy.hybrid_power_split_ratio : float Ratio of power split for hybrid systems Returns ------- None Results are stored in conditions.energy.converters[compressor.tag].outputs: - work_done : numpy.ndarray Specific work done by compressor [J/kg] - stagnation_temperature : numpy.ndarray Exit stagnation temperature [K] - stagnation_pressure : numpy.ndarray Exit stagnation pressure [Pa] - stagnation_enthalpy : numpy.ndarray Exit stagnation enthalpy [J/kg] - static_temperature : numpy.ndarray Exit static temperature [K] - static_pressure : numpy.ndarray Exit static pressure [Pa] - mach_number : numpy.ndarray Exit Mach number - gas_constant : numpy.ndarray Gas constant [J/(kg·K)] - gamma : numpy.ndarray Ratio of specific heats - cp : numpy.ndarray Specific heat at constant pressure [J/(kg·K)] Notes ----- This function implements the thermodynamic calculations for a compressor with a specified pressure ratio and polytropic efficiency. The work done is adjusted by the hybrid power split ratio if applicable. **Major Assumptions** * Constant polytropic efficiency * Constant pressure ratio * Ideal gas behavior * Adiabatic process **Theory** The compression process follows the polytropic relation: .. math:: T_{t,out}/T_{t,in} = (P_{t,out}/P_{t,in})^{(\\gamma-1)/(\\gamma \\eta_{p})} where :math:`\\eta_{p}` is the polytropic efficiency. Enthalpy is calculated using the specific heat at constant pressure and the stagnation temperature. .. math:: h_{t} = C_{p} T_{t} References ---------- [1] Cantwell, B., "AA283 Course Notes", Stanford University https://web.stanford.edu/~cantwell/AA283_Course_Material/AA283_Course_BOOK/AA283_Aircraft_and_Rocket_Propulsion_BOOK_Brian_J_Cantwell_May_28_2024.pdf See Also -------- RCAIDE.Library.Methods.Powertrain.Converters.Compressor.append_compressor_conditions """ # Unpack component inputs PR = compressor.pressure_ratio etapold = compressor.polytropic_efficiency working_fluid = compressor.working_fluid compressor_conditions = conditions.energy.converters[compressor.tag] Tt_in = compressor_conditions.inputs.stagnation_temperature Pt_in = compressor_conditions.inputs.stagnation_pressure T0 = compressor_conditions.inputs.static_temperature P0 = compressor_conditions.inputs.static_pressure M0 = compressor_conditions.inputs.mach_number # Compute the working fluid properties gamma = working_fluid.compute_gamma(T0,P0) Cp = working_fluid.compute_cp(T0,P0) R = working_fluid.compute_R(T0,P0) # Compute the output properties based on the pressure ratio of the component ht_in = Tt_in*Cp Pt_out = Pt_in*PR Tt_out = Tt_in*(PR**((gamma-1)/(gamma*etapold))) ht_out = Tt_out*Cp T_out = Tt_out/(1.+(gamma-1.)/2.*M0*M0) P_out = Pt_out/((1.+(gamma-1.)/2.*M0*M0)**(gamma/(gamma-1.))) M_out = np.sqrt( (((Pt_out/P_out)**((gamma-1.)/gamma))-1.) *2./(gamma-1.) ) # Compute the work done by the compressor (normalized by mass flow i.e. J/(kg/s) work_done = ht_out - ht_in phi = conditions.energy.hybrid_power_split_ratio # Pack results compressor_conditions.outputs.work_done = (1-phi)*work_done compressor_conditions.outputs.stagnation_temperature = Tt_out compressor_conditions.outputs.stagnation_pressure = Pt_out compressor_conditions.outputs.stagnation_enthalpy = ht_out compressor_conditions.outputs.static_temperature = T_out compressor_conditions.outputs.static_pressure = P_out compressor_conditions.outputs.mach_number = M_out compressor_conditions.outputs.gas_constant = R compressor_conditions.outputs.gamma = gamma compressor_conditions.outputs.cp = Cp return