Skip to content

Reduced Order Models (External)

OpenAP Model

OpenAP (Open Aircraft Performance Model and Toolkit) is an open-source Python library developed by researchers at TU Delft for aircraft performance and emission calculations. The library also includes modules for drag, thrust, kinematic modeling, and trajectory generation.

Fuel and Emission Module

The OpenAP fuel module uses polynomial models derived from the ICAO Engine Emissions Databank and the Acropole model.

  • The FuelFlow() class computes instantaneous fuel consumption for different flight phases (taxi, takeoff, climb, cruise, descent) based on aircraft mass, true airspeed (TAS), and altitude.
  • The Emission() class calculates pollutant emissions (NOₓ, CO, HC) using corresponding ICAO engine emission data.

Full Flight Trajectory Input Requirement

The OpenAP model requires a full flight trajectory as a time-series input to compute fuel consumption and emissions across all flight phases. This trajectory is typically provided as a tabular structure (e.g., a Pandas DataFrame) describing the aircraft’s state at regular time intervals.

Required Kinematic Input Columns Description
mass or m0 Aircraft mass (Take-off mass is needed for initialization)
tas True Airspeed throughout the flight
h or altitude Altitude throughout the flight
vs or vertical_rate Vertical speed throughout the flight

Trajectory Acquisition

Flight trajectories can be obtained in two ways:

  1. Generation: Using the FlightGenerator class in the openap.gen module to synthesize representative trajectories.
  2. Actual Flight Data: Importing real flight trajectories from ADS-B data providers such as OpenSky Network, Flightradar24, or airplanes.live.

References

Sun, J., Hoekstra, J. M., & Ellerbroek, J. (2020). OpenAP: An open-source aircraft performance model for air transportation studies and simulations. Aerospace, 7(8), 104. doi:10.3390/aerospace7080104

Warning

The interactive code editor below is based on the Pyodide web assembly Python distribution. It runs Python code in a browser sandbox. This sandbox has certain limitations, such as HTTP client functionality. In order to load a csv file from a URL, instead of:

import pandas as pd
df = pd.read_csv('https://example.com/data.csv')

the following approach must be used:

import pandas as pd
from pyodide.http import open_url
df = pd.read_csv(open_url('https://example.com/data.csv'))

Usage Example

Editor (session: default) Run
from openap import FuelFlow
import pandas as pd
from pyodide.http import open_url

fuelflow = FuelFlow('A319')
mass_takeoff_assumed = 66300  # kg, this model only supports kilograms as input unit

df = pd.read_csv(
    open_url('https://raw.githubusercontent.com/junzis/openap/refs/heads/master/examples/data/flight_a319_opensky.csv'),
    parse_dates=['timestamp'],
    dtype={'icao24': str},
)

# Calculate time deltas between consecutive points
df = df.assign(d_ts=lambda d: d.timestamp.diff().dt.total_seconds().bfill())

# Calculate fuel burn at each trajectory point
mass_current = mass_takeoff_assumed
fuelflow_every_step = []
fuel_every_step = []

for i, row in df.iterrows():
    # Calculate instantaneous fuel flow
    ff = fuelflow.enroute(
        mass=mass_current,
        tas=row.groundspeed,
        alt=row.altitude,
        vs=row.vertical_rate,
    )
    fuel = ff * row.d_ts
    fuelflow_every_step.append(ff)
    fuel_every_step.append(fuel)
    mass_current -= fuel

# Add results to dataframe
df = df.assign(fuel_flow=fuelflow_every_step, fuel=fuel_every_step)

# Calculate total fuel consumed
total_fuel = df.fuel.sum().astype(int)
print(f'Total fuel: {total_fuel} kg')
Output Clear

Travel Impact Model (Google)

The Google Travel Impact Model (TIM) estimates flight fuel consumption and associated emissions using the Tier 3A methodology (flight-specific, Origin-Destination approach) defined in the EMEP/EEA Annex 1.A.3.a Aviation 2023. For each scheduled flight, fuel consumption is calculated by combining data from standard databases for two phases:

  • LTO phase (Taxi, Takeoff, Landing): Fixed fuel burn calculated using ICAO Aircraft Engine Emissions Databank (AEED) standards (LTO cycle fuel flow/emission indices).
  • CCD phase (Climb, Cruise, Descent): Variable fuel burn derived from EUROCONTROL Advanced Emission Model (AEM)/Base of Aircraft Data (BADA) performance modeling, adjusted for real-world routing and calculated via linear interpolation/extrapolation for stage length.

Total fuel is converted to CO₂-equivalent using ISO 14083-compliant Well-to-Wake (WTW) life-cycle factors (3.8359 kg CO₂e/kg fuel). The final passenger estimate is derived via a three-step apportionment process: allocating total emissions between cargo and passenger payloads using the mass-based approach, normalizing passenger count via statistical load factors, and applying cabin class weightings based on actual or median seat configuration data.

This model is integrated into the Google Flights interface and displays the CO₂-equivalent values to users searching for flight options:

Google Flights showing Travel Impact Model emissions Example of CO₂ emissions displayed in Google Flights search results.

Note

The Travel Impact Model can also be accessed via a free, publicly available API provided by Google. The API allows developers to retrieve flight-level CO₂e emission estimates by specifying the following parameters: origin, destination, operating carrier, flight number, and departure date. For more information, see the Google Travel Impact Model API documentation.

Note

The Travel Impact Model in Google Flights only shows emissions for future flights (which can still be booked). It does not provide emissions data for past flights.

Integration with EU Flight Emissions Label (FEL)

The Travel Impact Model (TIM) integrates the EU Flight Emissions Label (FEL) through its distribution network, ensuring interoperability between the two methodologies. For flights with FEL data issued by EASA, these verified values replace TIM estimates and are clearly marked as “EASA” to indicate the source. For more information, see the Flight Emissions Label section of the Travel Impact Model documentation.