Source code for RCAIDE.Library.Methods.Powertrain.Converters.Turboshaft.compute_power

# RCAIDE/Library/Methods/Energy/Converters/Turboshaft/compute_power.py
# 
# 
# Created:  Jul 2023, M. Clarke
# Modified: Jun 2024, M. Guidotti  

# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ---------------------------------------------------------------------------------------------------------------------- 
 
# Python package imports
import numpy                               as np

# ----------------------------------------------------------------------------------------------------------------------
#  compute_power
# ----------------------------------------------------------------------------------------------------------------------
[docs] def compute_power(turboshaft,conditions): """ Computes power and other performance properties for a turboshaft engine. Parameters ---------- turboshaft : RCAIDE.Library.Components.Converters.Turboshaft Turboshaft engine component with the following attributes: - tag : str Identifier for the turboshaft - fuel_type : Data Fuel properties object - lower_heating_value : float Fuel lower heating value [J/kg] - working_fluid : Data Working fluid properties object - reference_temperature : float Reference temperature for mass flow scaling [K] - reference_pressure : float Reference pressure for mass flow scaling [Pa] - compressor : Data Compressor component - pressure_ratio : float Compressor pressure ratio - mass_flow_rate : float Design mass flow rate [kg/s] - conversion_efficiency : float Efficiency of converting thermal energy to shaft power - inverse_calculation : bool Flag for inverse calculation mode (power to throttle) conditions : RCAIDE.Framework.Mission.Common.Conditions Flight conditions with: - freestream : Data Freestream properties - isentropic_expansion_factor : numpy.ndarray Ratio of specific heats (gamma) - speed_of_sound : numpy.ndarray Speed of sound [m/s] - mach_number : numpy.ndarray Flight Mach number - gravity : numpy.ndarray Gravitational acceleration [m/s²] - energy.converters[turboshaft.tag] : Data Turboshaft operating conditions - throttle : numpy.ndarray Throttle setting [0-1] - total_temperature_reference : numpy.ndarray Reference total temperature [K] - total_pressure_reference : numpy.ndarray Reference total pressure [Pa] - combustor_stagnation_temperature : numpy.ndarray Combustor exit stagnation temperature [K] - power : numpy.ndarray Required power output (for inverse calculation) [W] Returns ------- None Notes ----- This function implements a thermodynamic model for a turboshaft engine with a free power turbine. It can operate in two modes: direct (throttle to power) or inverse (power to throttle). **Major Assumptions** * Perfect gas behavior * Turboshaft engine with free power turbine * Constant component efficiencies **Theory** The turboshaft performance is calculated using gas turbine cycle analysis. The power output is determined by the temperature rise in the combustor, the compressor pressure ratio, and the component efficiencies. References ---------- [1] Mattingly, J.D., "Elements of Gas Turbine Propulsion", 2nd Edition, AIAA Education Series, 2005. https://soaneemrana.org/onewebmedia/ELEMENTS%20OF%20GAS%20TURBINE%20PROPULTION2.pdf [2] Stuyvenberg, L., "Helicopter Turboshafts", University of Colorado, 2015. https://www.colorado.edu/faculty/kantha/sites/default/files/attached-files/70652-116619_-_luke_stuyvenberg_-_dec_17_2015_1258_pm_-_stuyvenberg_helicopterturboshafts.pdf See Also -------- RCAIDE.Library.Methods.Powertrain.Converters.Turbine.compute_turbine_performance """ #unpack the values working_fluid = turboshaft.working_fluid Tref = turboshaft.reference_temperature Pref = turboshaft.reference_pressure eta_c = turboshaft.conversion_efficiency SFC_adjustment = turboshaft.specific_fuel_consumption_reduction_factor pi_c = turboshaft.compressor.pressure_ratio m_dot_compressor = turboshaft.compressor.mass_flow_rate LHV = turboshaft.fuel_type.lower_heating_value gamma = conditions.freestream.isentropic_expansion_factor a0 = conditions.freestream.speed_of_sound M0 = conditions.freestream.mach_number turboshaft_conditions = conditions.energy.converters[turboshaft.tag] Tt4 = turboshaft_conditions.combustor_stagnation_temperature total_temperature_reference = turboshaft_conditions.total_temperature_reference total_pressure_reference = turboshaft_conditions.total_pressure_reference Power = turboshaft_conditions.power Cp = working_fluid.compute_cp(total_temperature_reference,total_pressure_reference) #unpacking from turboshaft tau_lambda = Tt4/total_temperature_reference tau_r = 1 + ((gamma - 1)/2)*M0**2 tau_c = pi_c**((gamma - 1)/gamma) tau_t = (1/(tau_r*tau_c)) + ((gamma - 1)*M0**2)/(2*tau_lambda*eta_c**2) tau_tH = 1 - (tau_r/tau_lambda)*(tau_c - 1) tau_tL = tau_t/tau_tH x = tau_t*tau_r*tau_c # Computing Specifc Thrust and Power Tsp = a0*(((2/(gamma - 1))*(tau_lambda/(tau_r*tau_c))*(tau_r*tau_c*tau_t - 1))**eta_c - M0) Psp = Cp*total_temperature_reference*tau_lambda*tau_tH*(1 - tau_tL)*eta_c if turboshaft.inverse_calculation == False: m_dot_air = m_dot_compressor*turboshaft_conditions.throttle*np.sqrt(Tref/total_temperature_reference)*(total_pressure_reference/Pref) Power = Psp*m_dot_air else: m_dot_air = Power / Psp turboshaft_conditions.throttle = m_dot_air / (m_dot_compressor*np.sqrt(Tref/total_temperature_reference)*(total_pressure_reference/Pref) ) #fuel to air ratio f = (Cp*total_temperature_reference/LHV)*(tau_lambda - tau_r*tau_c) fuel_flow_rate = (1 - SFC_adjustment) *f*m_dot_air #Computing the PSFC PSFC = f/Psp #Computing the thermal efficiency eta_T = 1 - (tau_r*(tau_c - 1))/(tau_lambda*(1 - x/(tau_r*tau_c))) #pack outputs turboshaft_conditions.power_specific_fuel_consumption = PSFC turboshaft_conditions.fuel_flow_rate = fuel_flow_rate turboshaft_conditions.power = Power turboshaft_conditions.non_dimensional_power = Psp turboshaft_conditions.non_dimensional_thrust = Tsp turboshaft_conditions.thermal_efficiency = eta_T return