Source code for RCAIDE.Library.Methods.Powertrain.Converters.Turbine.compute_turbine_performance

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

# ----------------------------------------------------------------------------------------------------------------------
#  compute_turbine_performance
# ----------------------------------------------------------------------------------------------------------------------     
[docs] def compute_turbine_performance(turbine,conditions): """ Computes turbine performance parameters based on input conditions and component characteristics. Parameters ---------- turbine : RCAIDE.Library.Components.Powertrain.Converters.Turbine Turbine component with the following attributes: - tag : str Identifier for the turbine - working_fluid : Data Working fluid object with methods to compute properties - compute_gamma : function Computes ratio of specific heats - compute_cp : function Computes specific heat at constant pressure - compute_R : function Computes gas constant - mechanical_efficiency : float Mechanical efficiency [unitless] - polytropic_efficiency : float Polytropic efficiency [unitless] 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 - static_temperature : array_like Static temperature [K] - static_pressure : array_like Static pressure [Pa] - mach_number : array_like Mach number [unitless] - stagnation_temperature : array_like Entering stagnation temperature [K] - stagnation_pressure : array_like Entering stagnation pressure [Pa] - bypass_ratio : array_like Bypass ratio [unitless] - fuel_to_air_ratio : array_like Fuel-to-air ratio [unitless] - compressor : Data Compressor data - work_done : array_like Compressor work [J/(kg/s)] - external_shaft_work_done : array_like Shaft power off take [J/(kg/s)] - fan : Data Fan data - work_done : array_like Fan work done [J/(kg/s)] Returns ------- None Results are stored in conditions.energy.converters[turbine.tag].outputs: - stagnation_pressure : array_like Exiting stagnation pressure [Pa] - stagnation_temperature : array_like Exiting stagnation temperature [K] - stagnation_enthalpy : array_like Exiting stagnation enthalpy [J/kg] - static_temperature : array_like Exiting static temperature [K] - static_pressure : array_like Exiting static pressure [Pa] - mach_number : array_like Exiting Mach number [unitless] - gas_constant : array_like Gas constant [J/(kg·K)] - pressure_ratio : array_like Pressure ratio across turbine [unitless] - temperature_ratio : array_like Temperature ratio across turbine [unitless] - gamma : array_like Ratio of specific heats [unitless] - cp : array_like Specific heat at constant pressure [J/(kg·K)] Notes ----- This function calculates the performance of a turbine by computing the energy extraction required to drive the compressor, fan, and any external power loads. It then determines the resulting thermodynamic properties at the turbine exit. The computation follows these steps: 1. Extract turbine parameters and working fluid properties 2. Compute the working fluid properties (gamma, Cp, R) at inlet conditions 3. Calculate the energy drop across the turbine based on compressor/fan work and mechanical efficiency 4. Compute the exit stagnation temperature, enthalpy, and pressure 5. Calculate the exit static temperature and pressure 6. Compute performance ratios (pressure ratio, temperature ratio) 7. Store all results in the conditions data structure **Major Assumptions** * Constant polytropic efficiency throughout the turbine * Constant pressure ratio across the turbine * The working fluid behaves as a perfect gas * Mechanical losses are accounted for through a constant efficiency factor **Theory** The energy balance across the turbine is: .. math:: \\Delta h_t = -\\frac{1}{1+f} \\cdot \\frac{W_{comp} + W_{ext} + \\alpha W_{fan}}{\\eta_{mech}} where: - :math:`\\Delta h_t` is the enthalpy drop across the turbine - :math:`f` is the fuel-to-air ratio - :math:`W_{comp}` is the compressor work - :math:`W_{ext}` is the external shaft work - :math:`W_{fan}` is the fan work - :math:`\\alpha` is the bypass ratio - :math:`\\eta_{mech}` is the mechanical efficiency The exit stagnation temperature is: .. math:: T_{t,out} = T_{t,in} + \\frac{\\Delta h_t}{C_p} The exit stagnation pressure is calculated using the polytropic efficiency: .. math:: P_{t,out} = P_{t,in} \\cdot \\left(\\frac{T_{t,out}}{T_{t,in}}\\right)^{\\frac{\\gamma}{(\\gamma-1)\\eta_{poly}}} References ---------- [1] Mattingly, J.D., "Elements of Gas Turbine Propulsion", AIAA Education Series, 2005 See Also -------- RCAIDE.Library.Methods.Powertrain.Converters.Compressor.compute_compressor_performance RCAIDE.Library.Methods.Powertrain.Converters.Fan.compute_fan_performance """ # Unpack ram inputs working_fluid = turbine.working_fluid turbine_conditions = conditions.energy.converters[turbine.tag] # Compute the working fluid properties T0 = turbine_conditions.inputs.static_temperature P0 = turbine_conditions.inputs.static_pressure M0 = turbine_conditions.inputs.mach_number gamma = working_fluid.compute_gamma(T0,P0) Cp = working_fluid.compute_cp(T0,P0) R = working_fluid.compute_R(T0,P0) #Unpack turbine entering properties eta_mech = turbine.mechanical_efficiency etapolt = turbine.polytropic_efficiency alpha = turbine_conditions.inputs.bypass_ratio Tt_in = turbine_conditions.inputs.stagnation_temperature Pt_in = turbine_conditions.inputs.stagnation_pressure compressor_work = turbine_conditions.inputs.compressor.work_done fan_work = turbine_conditions.inputs.fan.work_done f = turbine_conditions.inputs.fuel_to_air_ratio external_power = turbine_conditions.inputs.compressor.external_shaft_work_done # Using the work done by the compressors/fan and the fuel to air ratio to compute the energy drop across the turbine deltah_ht = -1/(1+f) * (compressor_work + external_power + alpha * fan_work) * 1/eta_mech # Compute the output stagnation quantities from the inputs and the energy drop computed above Tt_out = Tt_in+deltah_ht/Cp ht_out = Cp*Tt_out Pt_out = Pt_in*(Tt_out/Tt_in)**(gamma/((gamma-1)*etapolt)) pi_t = Pt_out/Pt_in tau_t = Tt_out/Tt_in T_out = Tt_out/(1.+(gamma-1.)/2.*M0*M0) P_out = Pt_out/((1.+(gamma-1.)/2.*M0*M0)**(gamma/(gamma-1.))) # Pack outputs of turbine turbine_conditions.outputs.stagnation_pressure = Pt_out turbine_conditions.outputs.stagnation_temperature = Tt_out turbine_conditions.outputs.stagnation_enthalpy = ht_out turbine_conditions.outputs.static_temperature = T_out turbine_conditions.outputs.static_pressure = P_out turbine_conditions.outputs.mach_number = M0 turbine_conditions.outputs.gas_constant = R turbine_conditions.outputs.pressure_ratio = pi_t turbine_conditions.outputs.temperature_ratio = tau_t turbine_conditions.outputs.gamma = gamma turbine_conditions.outputs.cp = Cp return