OpenAP: Open Aircraft Performance Model and Toolkit
Open-source aircraft performance model and toolkit for Python. Calculate aircraft performance, fuel consumption, and emissions for air transportation studies and simulations.
Requirements: Python 3.11+
🕮 User Guide
The OpenAP handbook is available at openap.dev.
Installation
Install the latest stable release from PyPI:
pip install --upgrade openap
Install the development branch from GitHub (may not be stable):
pip install --upgrade git+https://github.com/junzis/openap
Plotting is optional. Install the plotting dependencies when needed:
pip install "openap[plot]"
Aircraft models, flight-phase identification, filtering, and statistical fitting
work without Matplotlib. Plotting functions load Matplotlib only when called.
The openap[all] extra includes plotting and both optional backends.
Content
Model Data
Data in this repository includes:
- Aircraft data: Collected from open literature.
- Engine data: Primarily from the ICAO emission data-bank, including fuel flow and emissions.
- Drag polar model data: Exclusively derived from open data (reference).
- Fuel model data: Polynomial models derived from the acropole model by @JarryGabriel.
- Kinematic data: The kinematic model describes speed, altitude, and vertical rate (reference).
- Navigation data: Airport and waypoints obtained from X-Plane.
Python Packages
The OpenAP Python library includes the following packages:
prop: Module for accessing aircraft and engine properties.aero: Module for common aeronautical conversions.nav: Module for accessing navigation information.thrust: Module providesThrust()class for computing aircraft thrust.drag: Module providesDrag()class for computing aircraft drag.fuel: Module providesFuelFlow()class for computing fuel consumption.emission: Module providesEmission()class for computing aircraft emissions.kinematic: Module providesWRAP()class for accessing kinematic performance data.phase: Module providesFlightPhase()class for determining flight phases.gen: Module providesFlightGenerator()class for trajectory generation.
Example:
import openap
# Get aircraft properties
aircraft = openap.prop.aircraft("A320")
print(aircraft["mtow"]) # max takeoff weight: 78000 (kg)
# Calculate fuel flow during cruise
fuelflow = openap.FuelFlow("A320")
ff = fuelflow.enroute(mass=60000, tas=250, alt=30000)
print(ff) # fuel flow: 0.92 (kg/s)
Units: Input parameters can be scalar, list, or ndarray. Speeds are in knots, altitudes in feet, vertical rates in feet/min. Mass is in kilograms (SI).
Add-ons
The OpenAP library can also be used to interact with BADA performance models if you have access to the BADA data from EUROCONTROL. You can use the following code:
from openap.addon import bada4
fuelflow = bada4.FuelFlow()
The methods and attributes of openap.addon.bada4.FuelFlow() are the same as those of openap.FuelFlow().
Alternative Backends: CasADi and JAX
OpenAP supports multiple computational backends beyond NumPy:
- CasADi: For symbolic computations and optimization
- JAX: For automatic differentiation and GPU acceleration
Installation
Install with optional backend support:
pip install openap[casadi] # CasADi backend
pip install openap[jax] # JAX backend
pip install openap[all] # Both backends and plotting
Usage
# CasADi backend
import openap.casadi as oc
fuelflow = oc.FuelFlow("A320")
fuelflow.enroute(mass, tas, alt) # works with CasADi DM, SX, or MX types
# JAX backend
import openap.jax as oj
fuelflow = oj.FuelFlow("A320")
fuelflow.enroute(mass, tas, alt) # works with JAX arrays
The API is identical to the standard openap module. The backends are implemented using a protocol-based architecture in openap/backends/.
Citing OpenAP
@article{sun2020openap,
title={OpenAP: An open-source aircraft performance model for air transportation studies and simulations},
author={Sun, Junzi and Hoekstra, Jacco M and Ellerbroek, Joost},
journal={Aerospace},
volume={7},
number={8},
pages={104},
year={2020},
publisher={Multidisciplinary Digital Publishing Institute}
}
Metadata
Release files for openap 2.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| openap-2.6.1.tar.gz | 10.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| openap-2.6.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.8 MB
Release files / openap-2.6.1.tar.gz
| Download URL | openap-2.6.1.tar.gz |
|---|---|
| Size | 10.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c861704a0f487ccdf3dcafb9244e6977971bead3f1aab8aded03e8697eb93d36
|
|
BLAKE2b-256 checksum How to use checksums |
c154c96e28751e5aade0af4e7f51e7cd7d6acb06a05c1061715d71d92481e0cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / openap-2.6.1-py3-none-any.whl
| Download URL | openap-2.6.1-py3-none-any.whl |
|---|---|
| Size | 2.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
969222ed90f6f50928376ef4b36ed1052f8ecbca4d7b6cb0a74a087d8aba66d1
|
|
BLAKE2b-256 checksum How to use checksums |
8f03297230e5a126d889aea49b6cec8f6605c1f201909f7f8e95bd7e56a7656e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|