Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Open Aircraft Performance Model (OpenAP) Toolkit

This repository contains all OpenAP databases and a Python implementation which facilitates the data access and aircraft performance computation.

Download the related research paper

Databases:

  • Aircraft
  • Engines
  • Drag polar
  • Kinematic (WRAP)
  • Navigation

Install

To install latest version from the GitHub:

pip install git+https://github.com/junzis/openap

Libraries

  • prop: aircraft and engine properties
  • thrust: model to compute aircraft thrust
  • drag: model to compute aircraft drag
  • fuel: model to compute fuel consumption
  • kinematic: a utility library to access WRAP data
  • aero: common aeronautical conversions
  • nav: model to access navigation information
  • segment: a utility library to determine climb, cruise, descent, level flight
  • phase: a wrapper around segment, providing identification of all flight phases
  • traj: package contains a set of tools related with trajectory generation

Examples

Get the aircraft and engine data:

from openap import prop

aircraft = prop.aircraft('A320')
engine = prop.engine('CFM56-5B4')

Compute maximum aircraft engine thrust:

from openap import Thrust

thrust = Thrust(ac='A320', eng='CFM56-5B4')

T = thrust.takeoff(tas=100, alt=0)
T = thrust.climb(tas=200, alt=20000, roc=1000)
T = thrust.cruise(tas=230, alt=32000)

Compute the aircraft drag:

from openap import Drag

drag = Drag(ac='A320')

D = drag.clean(mass=60000, tas=200, alt=20000, path_angle=5)
D = drag.nonclean(mass=60000, tas=150, alt=100, flap_angle=20,
                  path_angle=10, landing_gear=True)

Compute the fuel flow:

from openap import FuelFlow

ff = FuelFlow(ac='A320', eng='CFM56-5B4')

FF = ff.at_thrust(thr=50000, alt=30000)
FF = ff.takeoff(tas=100, alt=0, throttle=1)
FF = ff.enroute(mass=60000, tas=200, alt=20000, path_angle=3)
FF = ff.enroute(mass=60000, tas=230, alt=32000, path_angle=0)

Accessing the WRAP parameters:

from openap import WRAP

wrap = WRAP(ac='A320')

param = wrap.takeoff_speed()
param = wrap.takeoff_distance()
param = wrap.takeoff_acceleration()
param = wrap.initclimb_vcas()
param = wrap.initclimb_vs()
param = wrap.climb_range()
param = wrap.climb_const_vcas()
param = wrap.climb_const_mach()
param = wrap.climb_cross_alt_concas()
param = wrap.climb_cross_alt_conmach()
param = wrap.climb_vs_pre_concas()
param = wrap.climb_vs_concas()
param = wrap.climb_vs_conmach()
param = wrap.cruise_range()
param = wrap.cruise_alt()
param = wrap.cruise_init_alt()
param = wrap.cruise_mach()
param = wrap.descent_range()
param = wrap.descent_const_mach()
param = wrap.descent_const_vcas()
param = wrap.descent_cross_alt_conmach()
param = wrap.descent_cross_alt_concas()
param = wrap.descent_vs_conmach()
param = wrap.descent_vs_concas()
param = wrap.descent_vs_post_concas()
param = wrap.finalapp_vcas()
param = wrap.finalapp_vs()
param = wrap.landing_speed()
param = wrap.landing_distance()
param = wrap.landing_acceleration()

Generating trajectories

from openap.traj import Generator

trajgen = Generator(ac='a320')

trajgen.enable_noise()   # enable Gaussian noise in trajectory data

data_cl = trajgen.climb(dt=10, random=True)  # using radom paramerters
data_cl = trajgen.climb(dt=10, cas_const_cl=280, mach_const_cl=0.78, alt_cr=35000)

data_de = trajgen.descent(dt=10, random=True)
data_de = trajgen.descent(dt=10, cas_const_de=280, mach_const_de=0.78, alt_cr=35000)

data_cr = trajgen.cruise(dt=60, random=True)
data_cr = trajgen.cruise(dt=60, range_cr=2000, alt_cr=35000, m_cr=0.78)

data_all = trajgen.complete(dt=10, random=True)
data_all = trajgen.complete(dt=10, alt_cr=35000, m_cr=0.78,
                            cas_const_cl=280, mach_const_cl=0.78,
                            cas_const_de=280, mach_const_de=0.78)

Release files for openap1 1.0.dev1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openap1 1.0.dev1
File Size Uploaded
openap1-1.0.dev1.tar.gz 2.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for openap1 1.0.dev1
File Interpreter ABI Platform
openap1-1.0.dev1-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 5.3 MB

Release files / openap1-1.0.dev1.tar.gz

Download URL openap1-1.0.dev1.tar.gz
Size 2.6 MB
Tags Source
SHA-256 checksum
How to use checksums
3779967da1e9ec13b2241d1bfb5792f0fb424e76d6be88fd447b5b393217c806
BLAKE2b-256 checksum
How to use checksums
f3475a91669e726d477722dbd1305adc91ce897dec90f8b09820c21b15354bf2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.3

Release files / openap1-1.0.dev1-py2.py3-none-any.whl

Download URL openap1-1.0.dev1-py2.py3-none-any.whl
Size 2.7 MB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
acd819673f4329d33ed148d412929f19a8f4c334504eaeb3b91162e74c067f29
BLAKE2b-256 checksum
How to use checksums
911d8bce4ed97cd9bb88bf28fd538a1dc5d8a1f5c3d6630949bd30fd4146fcad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.3

Release history Release notifications | RSS feed

This release

1.0.dev1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page