Source code for aerosandbox.library.propulsion_turbofan
importaerosandbox.numpyasnp
[docs]defthrust_turbofan(mass_turbofan:float,)->float:""" Estimates the maximum rated dry thrust of a turbofan engine. A regression to historical data. Based on data for both civilian and military turbofans, available in: `aerosandbox/library/datasets/turbine_engines/data.xlsx` Applicable to both turbojets and turbofans, and with sizes ranging from micro-turbines (<1 kg) to large transport aircraft turbofans. See studies in `/AeroSandbox/studies/TurbofanStudies/make_fit_thrust.py` for model details. Args: mass_turbofan: The mass of the turbofan engine. [kg] Returns: The maximum (rated takeoff) dry thrust of the turbofan engine. [N] """p={"a":12050.719283568596,"w":0.9353861810025565}returnp["a"]*mass_turbofan**p["w"]
[docs]defthrust_specific_fuel_consumption_turbofan(mass_turbofan:float,bypass_ratio:float,)->float:""" Estimates the thrust-specific fuel consumption (TSFC) of a turbofan engine. A regression to historical data. Based on data for both civilian and military turbofans, available in: `aerosandbox/library/datasets/turbine_engines/data.xlsx` Applicable to both turbojets and turbofans, and with sizes ranging from micro-turbines (<1 kg) to large transport aircraft turbofans. See studies in `/AeroSandbox/studies/TurbofanStudies/make_fit_tsfc.py` for model details. """p={"a":3.2916082331121034e-05,"Weight [kg]":-0.07792863839756586,"BPR":-0.3438158689838915,"BPR2":0.29880079602955967,}return(p["a"]*mass_turbofan**p["Weight [kg]"]*(bypass_ratio+p["BPR2"])**p["BPR"])
[docs]defmass_turbofan(m_dot_core_corrected,overall_pressure_ratio,bypass_ratio,diameter_fan,):""" Computes the combined mass of a bare turbofan, nacelle, and accessory and pylon weights. Bare weight depends on m_dot, OPR, and BPR. Nacelle weight is a function of various areas and fan diameter. From TASOPT documentation by Mark Drela, available here: http://web.mit.edu/drela/Public/web/tasopt/TASOPT_doc.pdf Section: "Turbofan Weight Model from Historical Data" Args: m_dot_core_corrected: The mass flow of the core only, corrected to standard conditions. [kg/s] overall_pressure_ratio: The overall pressure ratio (OPR) [-] bypass_ratio: The bypass ratio (BPR) [-] diameter_fan: The diameter of the fan. [m] Returns: The total engine mass. [kg] """kg_to_lbm=2.20462262m_to_ft=1/0.3048##### Compute bare turbofan weightm_dot_core_corrected_lbm_per_sec=(m_dot_core_corrected*kg_to_lbm)# Converts from kg/s to lbm/s### Parameters determined via least-squares fitting by Drela in TASOPT doc.b_m=1b_pi=1b_alpha=1.2W_0_lbm=1684.5W_pi_lbm=17.7W_alpha_lbm=1662.2W_bare_lbm=(m_dot_core_corrected_lbm_per_sec/100)**b_m*(W_0_lbm+W_pi_lbm*(overall_pressure_ratio/30)**b_pi+W_alpha_lbm*(bypass_ratio/5)**b_alpha)W_bare=W_bare_lbm/kg_to_lbm##### Compute nacelle weight### Nondimensional parameters, given by Drela in TASOPT doc.r_s_nace=12f_inlet=0.4f_fan=0.2f_exit=0.4r_core=12### Fan size in imperial unitsd_fan_ft=diameter_fan*m_to_ftd_fan_in=d_fan_ft*12### Compute the diameter of the LPC based on fan diameter and BPR.d_LPC_ft=d_fan_ft*(bypass_ratio)**-0.5### Models from Drela in TASOPTS_nace_sqft=r_s_nace*np.pi*(d_fan_ft/2)**2A_inlet_sqft=f_inlet*S_nace_sqftA_fan_sqft=f_fan*S_nace_sqftA_exit_sqft=f_exit*S_nace_sqftA_core_sqft=r_core*np.pi*(d_LPC_ft/2)**2W_inlet_lbm=A_inlet_sqft*(2.5+0.0238*d_fan_in)W_fan_lbm=A_fan_sqft*1.9W_exit_lbm=A_exit_sqft*(2.5*0.0363*d_fan_in)W_core_lbm=A_core_sqft*1.9W_nace_lbm=W_inlet_lbm+W_fan_lbm+W_exit_lbm+W_core_lbmW_nace=W_nace_lbm/kg_to_lbm##### Compute accessory and pylon weights### Nondimensional parameters, given by Drela in TASOPT docf_add=0.10f_pylon=0.10W_add=f_add*W_bareW_pylon=f_pylon*(W_bare+W_add+W_nace)##### Compute the total weightW_engine=W_bare+W_add+W_nace+W_pylonreturnW_engine
[docs]defm_dot_corrected_over_m_dot(temperature_total_2,pressure_total_2,):""" Computes the ratio `m_dot_corrected / m_dot`, where: * `m_dot_corrected` is the corrected mass flow rate, where corrected refers to correction to ISO 3977 standard temperature and pressure conditions (15C, 101325 Pa). * `m_dot` is the raw mass flow rate, at some other conditions. Args: temperature_total_2: The total temperature at the compressor inlet face, at the conditions to be evaluated. [K] pressure_total_2: The total pressure at the compressor inlet face, at the conditions to be evaluated. [Pa] Returns: The ratio `m_dot_corrected / m_dot`. """temperature_standard=273.15+15pressure_standard=101325return(temperature_total_2/temperature_standard)**0.5/(pressure_total_2/pressure_standard)
op_point=asb.OperatingPoint(atmo,velocity=0.80*atmo.speed_of_sound())m_dot_corrected_over_m_dot_ratio=m_dot_corrected_over_m_dot(temperature_total_2=op_point.total_temperature(),pressure_total_2=op_point.total_pressure(),)### CFM56-2 engine testmass_cfm56_2=mass_turbofan(# Data here from Wikipedia, cross-referenced to other sources for sanity check.m_dot_core_corrected=364/(5.95+1),overall_pressure_ratio=31.2,bypass_ratio=5.95,diameter_fan=1.73,)# real mass: (2139 to 2200 kg bare, ~3400 kg installed)