Source code for RCAIDE.Library.Methods.Powertrain.Converters.Fan.compute_fan_performance

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

# ---------------------------------------------------------------------------------------------------------------------- 
# Imports 
# ----------------------------------------------------------------------------------------------------------------------
import numpy as np

# ----------------------------------------------------------------------------------------------------------------------
#  Fan 
# ----------------------------------------------------------------------------------------------------------------------            
[docs] def compute_fan_performance(fan, conditions): """ Computes the thermodynamic performance of a fan in a gas turbine engine. Parameters ---------- fan : RCAIDE.Library.Components.Converters.Fan Fan component with the following attributes: - tag : str Identifier for the fan - working_fluid : Data Working fluid properties object - pressure_ratio : float Pressure ratio across the fan - polytropic_efficiency : float Polytropic efficiency of the compression process conditions : RCAIDE.Framework.Mission.Common.Conditions Flight conditions with: - energy : Data Energy conditions - converters : dict Converter energy conditions indexed by tag - inputs : Data Input conditions - stagnation_temperature : numpy.ndarray Stagnation temperature at fan inlet [K] - stagnation_pressure : numpy.ndarray Stagnation pressure at fan inlet [Pa] - static_pressure : numpy.ndarray Static pressure at fan inlet [Pa] - static_temperature : numpy.ndarray Static temperature at fan inlet [K] - mach_number : numpy.ndarray Mach number at fan inlet Returns ------- None Results are stored in conditions.energy.converters[fan.tag].outputs: - stagnation_temperature : numpy.ndarray Stagnation temperature at fan exit [K] - stagnation_pressure : numpy.ndarray Stagnation pressure at fan exit [Pa] - static_temperature : numpy.ndarray Static temperature at fan exit [K] - static_pressure : numpy.ndarray Static pressure at fan exit [Pa] - stagnation_enthalpy : numpy.ndarray Stagnation enthalpy at fan exit [J/kg] - work_done : numpy.ndarray Work done by the fan [J/kg] - mach_number : numpy.ndarray Mach number at fan exit Notes ----- This function computes the thermodynamic properties at the fan exit based on the inlet conditions and fan characteristics. It calculates the temperature rise, pressure rise, and work done by the fan during the compression process. The computation follows these steps: 1. Extract inlet conditions (temperature, pressure, Mach number) 2. Compute working fluid properties (gamma, Cp) 3. Calculate stagnation pressure at exit using pressure ratio 4. Compute stagnation temperature at exit using polytropic efficiency 5. Calculate static temperature and pressure at exit based on exit Mach number 6. Compute stagnation enthalpy at inlet and exit 7. Calculate work done by the fan (exit - inlet stagnation enthalpy) 8. Store all results in the conditions data structure **Major Assumptions** * Constant polytropic efficiency and pressure ratio * Mach number is preserved from inlet to exit **Theory** The stagnation temperature ratio across the fan is related to the pressure ratio by: .. math:: \\frac{T_{t,out}}{T_{t,in}} = \\left(\\frac{P_{t,out}}{P_{t,in}}\\right)^{\\frac{\\gamma-1}{\\gamma \\eta_{p}}} where: - :math:`T_{t,out}` is the exit stagnation temperature - :math:`T_{t,in}` is the inlet stagnation temperature - :math:`P_{t,out}` is the exit stagnation pressure - :math:`P_{t,in}` is the inlet stagnation pressure - :math:`\\gamma` is the ratio of specific heats - :math:`\\eta_{p}` is the polytropic efficiency 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 from fan PR = fan.pressure_ratio etapold = fan.polytropic_efficiency fan_conditions = conditions.energy.converters[fan.tag] Tt_in = fan_conditions.inputs.stagnation_temperature Pt_in = fan_conditions.inputs.stagnation_pressure P0 = fan_conditions.inputs.static_pressure T0 = fan_conditions.inputs.static_temperature M0 = fan_conditions.inputs.mach_number # Unpack ram inputs working_fluid = fan.working_fluid # Compute the working fluid properties gamma = working_fluid.compute_gamma(T0,P0) Cp = working_fluid.compute_cp(T0,P0) # Compute the output quantities Pt_out = Pt_in*PR Tt_out = Tt_in*PR**((gamma-1)/(gamma*etapold)) T_out = Tt_out/(1.+(gamma-1.)/2.*M0*M0) P_out = Pt_out/((1.+(gamma-1.)/2.*M0*M0)**(gamma/(gamma-1.))) ht_out = Tt_out*Cp ht_in = Tt_in*Cp M_out = np.sqrt( (((Pt_out/P_out)**((gamma-1.)/gamma))-1.) *2./(gamma-1.) ) # Compute the work done by the fan (normalized by mass flow i.e. J/(kg/s) work_done = ht_out - ht_in # Store computed quantities into outputs fan_conditions.outputs.stagnation_temperature = Tt_out fan_conditions.outputs.stagnation_pressure = Pt_out fan_conditions.outputs.static_temperature = T_out fan_conditions.outputs.static_pressure = P_out fan_conditions.outputs.work_done = work_done fan_conditions.outputs.stagnation_enthalpy = ht_out fan_conditions.outputs.mach_number = M_out return