Source code for RCAIDE.Library.Methods.Powertrain.Converters.Engine.compute_power_from_throttle

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

# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ----------------------------------------------------------------------------------------------------------------------    
 # RCAIDE imports 
import RCAIDE

# package imports
import numpy as np 

# ---------------------------------------------------------------------------------------------------------------------- 
# compute_power_from_throttle
# ----------------------------------------------------------------------------------------------------------------------    
[docs] def compute_power_from_throttle(engine,conditions): """ Computes engine power output and performance metrics based on throttle setting and atmospheric conditions. Parameters ---------- engine : RCAIDE.Library.Components.Propulsors Engine instance with the following attributes: - sea_level_power : float Maximum power output at sea level [W] - flat_rate_altitude : float Altitude below which power remains constant [m] - power_specific_fuel_consumption : float Power specific fuel consumption [kg/(W·s)] engine_conditions : RCAIDE.Framework.Mission.Common.Conditions Engine operating conditions with: - throttle : numpy.ndarray Throttle setting [dimensionless] - speed : numpy.ndarray Engine angular velocity [rad/s] conditions : RCAIDE.Framework.Mission.Common.Conditions Flight conditions with: - freestream.altitude : numpy.ndarray Current altitude [m] - freestream.delta_ISA : numpy.ndarray Temperature offset from standard atmosphere [K] Returns ------- None Notes ----- Power available is computed using the Gagg and Ferrar model, which accounts for atmospheric density effects on engine performance. **Major Assumptions** * Power varies linearly with density ratio above flat-rate altitude * Power remains constant below flat-rate altitude * Standard atmosphere conditions apply except for ISA temperature offset * Minimum power output is zero (negative values are clipped) * Power is directly proportional to throttle setting **Theory** The power available is computed using: .. math:: P_{available} = P_{SL} \\frac{\\sigma - 0.117}{0.883} where: - :math:`P_{SL}` is sea-level power - :math:`\\sigma` is the density ratio References ---------- [1] Gudmundsson, S. (2014). General Aviation Aircraft Design: Applied Methods and Procedures. Butterworth-Heinemann. [2] Gagg and Ferrar See Also -------- RCAIDE.Library.Methods.Powertrain.Converters.Engine.compute_throttle_from_power """ # Unpack altitude = conditions.freestream.altitude delta_isa = conditions.freestream.delta_ISA PSLS = engine.sea_level_power h_flat = engine.flat_rate_altitude engine_conditions = conditions.energy.converters[engine.tag] omega = engine_conditions.omega PSFC = engine.power_specific_fuel_consumption # shift in power lapse due to flat rate altitude_virtual = altitude - h_flat altitude_virtual[altitude_virtual<0.] = 0. # Compute the sea-level ISA atmosphere conditions atmo = RCAIDE.Framework.Analyses.Atmospheric.US_Standard_1976() atmo_values_0 = atmo.compute_values(0,0) rho0 = atmo_values_0.density[0,0] atmo_values = atmo.compute_values(altitude_virtual,delta_isa) rho = atmo_values.density # Compute the density ratio: sigma = rho / rho0 # Compute available power Pavailable = PSLS * (sigma - 0.117) / 0.883 Pavailable[h_flat > altitude] = PSLS # Regulate using throttle P = Pavailable * engine_conditions.throttle m_dot = PSFC * P # Compute engine torque torque = P/omega # Determine fuel flow rate and cap at 0 fuel_flow_rate = np.fmax(m_dot,np.zeros_like(altitude)) # Store results engine_conditions.power = P engine_conditions.power_specific_fuel_consumption = PSFC engine_conditions.fuel_flow_rate = fuel_flow_rate engine_conditions.torque = torque return