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

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

# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ----------------------------------------------------------------------------------------------------------------------    
 # RCAIDE imports 
import RCAIDE
from RCAIDE.Framework.Core                                         import Units

# package imports
import numpy as np 

# ---------------------------------------------------------------------------------------------------------------------- 
#  calculate_throttle_from_power
# ----------------------------------------------------------------------------------------------------------------------    
[docs] def compute_throttle_from_power(engine,conditions): """ Computes engine throttle setting and fuel consumption based on required power output. 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: - power : numpy.ndarray Required power output [W] 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 ----- This function is the inverse of compute_power_from_throttle, calculating the required throttle setting to achieve a desired power output considering atmospheric conditions. **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) **Theory** The power available is computed using: .. math:: P_{available} = P_{SL} \\frac{\\sigma - 0.117}{0.883} Then throttle is determined by: .. math:: \\text{throttle} = \\frac{P_{required}}{P_{available}} where: - :math:`P_{SL}` is sea-level power - :math:`\\sigma` is the density ratio - :math:`P_{required}` is the requested power output 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_power_from_throttle RCAIDE.Library.Attributes.Atmospheres.Earth.US_Standard_1976 """ # Unpack atmospheric conditions delta_isa = conditions.freestream.delta_ISA altitude = conditions.freestream.altitude # Unpack engine operating conditions engine_conditions = conditions.energy.converters[engine.tag] PSLS = engine.sea_level_power h_flat = engine.flat_rate_altitude P = engine_conditions.power*1.0 PSFC = engine.power_specific_fuel_consumption altitude_virtual = altitude - h_flat altitude_virtual[altitude_virtual<0.] = 0. 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 density ratio sigma = rho / rho0 Pavailable = PSLS * (sigma - 0.117) / 0.883 Pavailable[h_flat > altitude] = PSLS # Compute throttle throttle = P/Pavailable P[P<0.] = 0. # Compute fuel flow rate SFC = PSFC* Units['lb/hp/hr'] a = np.zeros_like(altitude) fuel_flow_rate = np.fmax(P*SFC,a) # Store outputs engine_conditions.power_specific_fuel_consumption = PSFC engine_conditions.fuel_flow_rate = fuel_flow_rate engine_conditions.throttle = throttle return