Initial Mass Calculation

Example calculation of aircraft initial mass

=== BADA3 ===
cruiseFuelFlow:          0.698252 kg/s
breguetLeducInitialMass: 52118.40 kg
initMass(limited):       52118.40 kg

=== BADA4 ===
cruiseFuelFlow:          0.657323 kg/s
breguetLeducInitialMass: 54041.18 kg
initMass(limited):       54041.18 kg

=== BADAH ===
cruiseFuelFlow:          0.383962 kg/s
breguetLeducInitialMass: 3955.88 kg
initMass(limited):       2675.00 kg

from pyBADA import atmosphere as atm
from pyBADA import conversions as conv
from pyBADA import trajectoryPrediction as TP
from pyBADA.bada3 import Bada3Aircraft
from pyBADA.bada4 import Bada4Aircraft
from pyBADA.badaH import BadaHAircraft

# calculate estimations for the fuel flow, and aircraft initial mass
AC = Bada3Aircraft(badaVersion="DUMMY", acName="J2M")

# Common inputs
DeltaTemp = 0  # deviation from ISA temperature [K]
M = 0.7  # Mach number [-]
altitude = conv.ft2m(30000)  # cruise altitude [m]
distance = conv.nm2m(100)  # flown distance [m]
payload = 80  # payload mass [% of max payload]
fuelReserve = 3600  # fuel reserve [s]
flightPlanInitMass = None  # planned takeoff mass [kg]

# Precompute atmosphere & speed inputs
theta, delta, sigma = atm.atmosphereProperties(h=altitude, DeltaTemp=DeltaTemp)
TAS = atm.mach2Tas(Mach=M, theta=theta)
GS = TAS  # assume no wind

# Specify acName per model
for model_name, ACClass, acName in [
    ("BADA3", Bada3Aircraft, "J2M"),
    ("BADA4", Bada4Aircraft, "Dummy-TWIN-plus"),
    ("BADAH", BadaHAircraft, "DUMH"),
]:
    print(f"\n=== {model_name} ===")
    AC = ACClass(badaVersion="DUMMY", acName=acName)

    # 1) Cruise fuel flow [kg/s]
    cruiseFuelFlow = TP.cruiseFuelConsumption(
        AC=AC, altitude=altitude, M=M, DeltaTemp=DeltaTemp
    )
    print(f"cruiseFuelFlow:          {cruiseFuelFlow:.6f} kg/s")

    # 2) Distance based initial mass via Breguet–Leduc
    breguetInitialMass = TP.breguetLeducInitialMass(
        AC=AC,
        distance=distance,
        GS=GS,
        cruiseFuelFlow=cruiseFuelFlow,
        payload=payload,
        fuelReserve=fuelReserve,
    )
    print(f"breguetLeducInitialMass: {breguetInitialMass:.2f} kg")

    # 3) Initial mass using limited by flight envelope (OEW, MTOW)
    initMass = TP.getInitialMass(
        AC=AC,
        distance=distance,
        altitude=altitude,
        M=M,
        payload=payload,
        fuelReserve=fuelReserve,
        flightPlanInitialMass=flightPlanInitMass,
        DeltaTemp=DeltaTemp,
    )
    print(f"initMass(limited):       {initMass:.2f} kg")

Total running time of the script: (0 minutes 0.017 seconds)

Gallery generated by Sphinx-Gallery