Skip to main content

Open Aircraft Performance Model (OpenAP) in Python

Project description

OpenAP: Open Aircraft Performance Model and Toolkit

PyPI version PyPI - Python Version License: LGPL v3

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

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 provides Thrust() class for computing aircraft thrust.
  • drag: Module provides Drag() class for computing aircraft drag.
  • fuel: Module provides FuelFlow() class for computing fuel consumption.
  • emission: Module provides Emission() class for computing aircraft emissions.
  • kinematic: Module provides WRAP() class for accessing kinematic performance data.
  • phase: Module provides FlightPhase() class for determining flight phases.
  • gen: Module provides FlightGenerator() 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

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}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openap-2.6.0.tar.gz (9.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openap-2.6.0-py3-none-any.whl (2.7 MB view details)

Uploaded Python 3

File details

Details for the file openap-2.6.0.tar.gz.

File metadata

  • Download URL: openap-2.6.0.tar.gz
  • Upload date:
  • Size: 9.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for openap-2.6.0.tar.gz
Algorithm Hash digest
SHA256 be47e75c5ade7c56b9476fbf45d506a385ed3abfc2185197da6ee7e20ea8ada3
MD5 38d32700f9e4911a663f8a78194574bf
BLAKE2b-256 cc3eee62c66def7c570d1aec06e6e0e04c46492028d7ae4c135ab24aa8ce4978

See more details on using hashes here.

File details

Details for the file openap-2.6.0-py3-none-any.whl.

File metadata

  • Download URL: openap-2.6.0-py3-none-any.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for openap-2.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aed9a19f232f57744bbe3276e1e044f74f1984dc16a72d00797aa70f54800fab
MD5 b9bfd6621f2c4269f14d8f971ed8b641
BLAKE2b-256 66b14263c069ca2177d9c71d2c19046e2b587b13b6936f22df9e082233b5ec64

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page