Source code for RCAIDE.Library.Methods.Performance.estimate_take_off_weight_given_TOFL

# RCAIDE/Library/Methods/Performance/estimate_take_off_weight_given_TOFL.py

# Created: Apr 2025, M. Clarke  
# ----------------------------------------------------------------------
#   Imports
# ----------------------------------------------------------------------
import RCAIDE
from RCAIDE.Library.Methods.Performance.estimate_take_off_field_length import estimate_take_off_field_length
from RCAIDE.Library.Mission.Common.Pre_Process  import geometry_preprocess_routine  

import numpy as np

# ----------------------------------------------------------------------
#  Find Takeoff Weight Given TOFL
# ----------------------------------------------------------------------
[docs] def estimate_take_off_weight_given_TOFL(analyses=None,target_tofl=0.0,altitude = 0, delta_isa = 0): """ Estimates the maximum allowable takeoff weight for a given takeoff field length requirement. Parameters ---------- vehicle : Vehicle The vehicle instance containing: - mass_properties.operating_empty : float Operating empty weight [kg] - mass_properties.max_takeoff : float Maximum takeoff weight [kg] analyses : Analyses Container with atmosphere and aerodynamic analyses target_tofl : float or ndarray Target takeoff field length(s) [m] altitude : float, optional Airport altitude [m], default 0 delta_isa : float, optional Temperature offset from ISA conditions [K], default 0 Returns ------- max_tow : ndarray Maximum allowable takeoff weight(s) for given field length(s) [kg] Notes ----- Uses an interpolation approach by: 1. Creating array of possible takeoff weights between OEW and 110% MTOW 2. Computing TOFL for each weight 3. Interpolating to find weight that gives target TOFL **Major Assumptions** * Linear interpolation between computed points is valid * Target TOFL is within achievable range * Meets assumptions from estimate_take_off_field_length **Theory** Takeoff field length varies approximately with W/T where: * W = aircraft weight * T = available thrust .. math:: TOFL \propto \\frac{W}{T} See Also -------- RCAIDE.Library.Methods.Performance.estimate_take_off_field_length """ if type(analyses) != RCAIDE.Framework.Analyses.Vehicle: raise AttributeError('RCAIDE analyses must be defined') if target_tofl ==0.0: raise AttributeError('Takeoff field length must be greater than zero') # ---------------------------------------------- # Preprocess Geometry # ---------------------------------------------- geometry_preprocess_routine(analyses) #unpack vehicle = analyses.vehicle tow_lower = vehicle.mass_properties.operating_empty tow_upper = 1.10 * vehicle.mass_properties.max_takeoff #saving initial reference takeoff weight tow_ref = vehicle.mass_properties.max_takeoff tow_vec = np.linspace(tow_lower,tow_upper,50) tofl = np.zeros_like(tow_vec) for id,tow in enumerate(tow_vec): vehicle.mass_properties.takeoff = tow tofl[id], _ = estimate_take_off_field_length(analyses,altitude = 0, delta_isa = 0) target_tofl = np.atleast_1d(target_tofl) max_tow = np.zeros_like(target_tofl) for id,toflid in enumerate(target_tofl): max_tow[id] = np.interp(toflid,tofl,tow_vec) #reset the initial takeoff weight vehicle.mass_properties.max_takeoff = tow_ref return max_tow