openap 2.0__tar.gz → 2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openap-2.2/.github/workflows/build-publish.yml +33 -0
- openap-2.2/.gitignore +97 -0
- openap-2.2/PKG-INFO +127 -0
- openap-2.2/README.md +102 -0
- openap-2.2/examples/data/flight_a319_opensky.csv +117 -0
- openap-2.2/examples/data/flight_a320_qar.csv +7797 -0
- openap-2.2/examples/example_fuel_emission_opensky_data.ipynb +359 -0
- openap-2.2/examples/example_fuel_qar_data.ipynb +243 -0
- {openap-2.0 → openap-2.2}/openap/__init__.py +1 -0
- openap-2.2/openap/addon/__init__.py +0 -0
- openap-2.2/openap/addon/bada4.py +461 -0
- openap-2.2/openap/base.py +90 -0
- {openap-2.0 → openap-2.2}/openap/casadi/__init__.py +2 -2
- {openap-2.0 → openap-2.2}/openap/casadi/aero_override.py +55 -41
- openap-2.2/openap/data/engine/engines.csv +418 -0
- openap-2.2/openap/data/fuel/fuel_models.csv +16 -0
- {openap-2.0 → openap-2.2}/openap/drag.py +42 -43
- {openap-2.0 → openap-2.2}/openap/emission.py +10 -8
- openap-2.2/openap/extra/__init__.py +61 -0
- {openap-2.0 → openap-2.2}/openap/extra/aero.py +55 -35
- {openap-2.0 → openap-2.2}/openap/fuel.py +56 -49
- {openap-2.0/openap/traj → openap-2.2/openap}/gen.py +171 -163
- {openap-2.0 → openap-2.2}/openap/kinematic.py +1 -1
- {openap-2.0 → openap-2.2}/openap/prop.py +18 -4
- {openap-2.0 → openap-2.2}/openap/thrust.py +21 -18
- {openap-2.0 → openap-2.2}/pyproject.toml +28 -20
- openap-2.2/scripts/README.md +4 -0
- openap-2.2/scripts/acropole_aircraft_params.csv +30 -0
- openap-2.2/scripts/build_fuel_model.py +315 -0
- openap-2.2/scripts/db/airports.csv +13794 -0
- openap-2.2/scripts/db/emission.csv +400 -0
- openap-2.2/scripts/engine2.py +24 -0
- openap-2.2/scripts/extract.py +95 -0
- openap-2.2/scripts/fuel_flow_correction_factor.py +19 -0
- openap-2.2/scripts/gen_airport_database.py +78 -0
- openap-2.2/scripts/gen_engine_cruise_perf.py +25 -0
- openap-2.2/scripts/gen_engine_data_v27.py +300 -0
- openap-2.2/scripts/input/civtfspec.csv +736 -0
- openap-2.2/scripts/input/civtfspec.xls +29515 -0
- openap-2.2/scripts/input/edb-emissions-databank v23 (web).xlsx +0 -0
- openap-2.2/scripts/input/edb-emissions-databank v25a (web).xlsx +0 -0
- openap-2.2/scripts/input/edb-emissions-databank v27 (web).xlsx +0 -0
- openap-2.2/scripts/input/edb-emissions-databank v28B (web).xlsx +0 -0
- openap-2.2/scripts/input/engine_cruise_performance.csv +183 -0
- openap-2.2/scripts/input/wrap/a319.csv +36 -0
- openap-2.2/scripts/input/wrap/a320.csv +36 -0
- openap-2.2/scripts/input/wrap/a321.csv +36 -0
- openap-2.2/scripts/input/wrap/a332.csv +36 -0
- openap-2.2/scripts/input/wrap/a333.csv +36 -0
- openap-2.2/scripts/input/wrap/a343.csv +36 -0
- openap-2.2/scripts/input/wrap/a388.csv +36 -0
- openap-2.2/scripts/input/wrap/b737.csv +36 -0
- openap-2.2/scripts/input/wrap/b738.csv +36 -0
- openap-2.2/scripts/input/wrap/b739.csv +36 -0
- openap-2.2/scripts/input/wrap/b744.csv +36 -0
- openap-2.2/scripts/input/wrap/b752.csv +36 -0
- openap-2.2/scripts/input/wrap/b763.csv +36 -0
- openap-2.2/scripts/input/wrap/b77w.csv +36 -0
- openap-2.2/scripts/input/wrap/b788.csv +36 -0
- openap-2.2/scripts/input/wrap/b789.csv +36 -0
- openap-2.2/scripts/input/wrap/e190.csv +36 -0
- openap-2.2/scripts/inspect_engine_ff_emission.py +66 -0
- openap-2.2/scripts/plot_fuel_model.py +31 -0
- openap-2.2/scripts/test_acropole.py +196 -0
- openap-2.2/scripts/wrap_csv_to_fwf.py +83 -0
- openap-2.2/test/data/flight_phase_test.csv +1175 -0
- openap-2.2/test/data/flight_phlab.csv +5127 -0
- openap-2.2/test/flights/C550/phlab_20170320_08.csv +5472 -0
- openap-2.2/test/flights/C550/phlab_20170320_10.csv +5059 -0
- openap-2.2/test/flights/C550/phlab_20170320_12.csv +5457 -0
- openap-2.2/test/flights/C550/phlab_20170320_14.csv +5258 -0
- openap-2.2/test/test_actypes.py +20 -0
- openap-2.2/test/test_bada.py +90 -0
- openap-2.2/test/test_drag.py +36 -0
- openap-2.2/test/test_emission.py +82 -0
- openap-2.2/test/test_fuel.py +35 -0
- openap-2.2/test/test_kinematic.py +8 -0
- openap-2.2/test/test_nav.py +17 -0
- openap-2.2/test/test_phase.py +79 -0
- openap-2.2/test/test_prop.py +10 -0
- openap-2.2/test/test_thrust.py +61 -0
- openap-2.2/test/test_trajectory.py +81 -0
- openap-2.2/uv.lock +874 -0
- openap-2.0/PKG-INFO +0 -99
- openap-2.0/README.md +0 -69
- openap-2.0/openap/data/fuel/_synonym.csv +0 -32
- openap-2.0/openap/data/fuel/a318.yml +0 -5
- openap-2.0/openap/data/fuel/a319.yml +0 -5
- openap-2.0/openap/data/fuel/a320.yml +0 -5
- openap-2.0/openap/data/fuel/a321.yml +0 -5
- openap-2.0/openap/data/fuel/a332.yml +0 -5
- openap-2.0/openap/data/fuel/a333.yml +0 -5
- openap-2.0/openap/data/fuel/b734.yml +0 -5
- openap-2.0/openap/data/fuel/b737.yml +0 -5
- openap-2.0/openap/data/fuel/b738.yml +0 -5
- openap-2.0/openap/data/fuel/b739.yml +0 -5
- openap-2.0/openap/data/fuel/e170.yml +0 -5
- openap-2.0/openap/data/fuel/e190.yml +0 -5
- openap-2.0/openap/data/fuel/e195.yml +0 -5
- openap-2.0/openap/data/fuel/e75l.yml +0 -5
- openap-2.0/openap/extra/__init__.py +0 -24
- openap-2.0/openap/traj/__init__.py +0 -1
- {openap-2.0 → openap-2.2}/LICENSE +0 -0
- {openap-2.0 → openap-2.2}/openap/casadi/numpy_override.py +0 -0
- {openap-2.0 → openap-2.2}/openap/contrail.py +0 -0
- {openap-2.0 → openap-2.2}/openap/data/.gitignore +0 -0
- {openap-2.0 → openap-2.2}/openap/data/LICENSE +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/_synonym.csv +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/a19n.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/a20n.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/a21n.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/a318.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/a319.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/a320.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/a321.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/a332.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/a333.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/a343.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/a359.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/a388.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b37m.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b38m.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b39m.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b3xm.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b734.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b737.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b738.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b739.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b744.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b748.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b752.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b763.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b772.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b773.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b77w.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b788.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/b789.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/c550.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/e145.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/e170.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/e190.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/e195.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/e75l.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/aircraft/glf6.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/_synonym.csv +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/a20n.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/a319.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/a320.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/a321.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/a332.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/a333.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/a343.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/a359.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/a388.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/b38m.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/b734.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/b737.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/b738.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/b739.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/b744.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/b748.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/b752.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/b772.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/b77w.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/b788.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/b789.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/c550.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/e190.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/e195.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/e75l.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/dragpolar/glf6.yml +0 -0
- {openap-2.0 → openap-2.2}/openap/data/nav/airports.csv +0 -0
- {openap-2.0 → openap-2.2}/openap/data/nav/fix.dat +0 -0
- {openap-2.0 → openap-2.2}/openap/data/nav/nav.dat +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/_synonym.csv +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/a319.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/a320.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/a321.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/a332.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/a333.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/a343.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/a388.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/b737.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/b738.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/b739.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/b744.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/b752.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/b763.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/b77w.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/b788.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/b789.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/data/wrap/e190.txt +0 -0
- {openap-2.0 → openap-2.2}/openap/extra/filters.py +0 -0
- {openap-2.0 → openap-2.2}/openap/extra/fuzzy.py +0 -0
- {openap-2.0 → openap-2.2}/openap/extra/nav.py +0 -0
- {openap-2.0 → openap-2.2}/openap/extra/statistics.py +0 -0
- {openap-2.0 → openap-2.2}/openap/phase.py +0 -0
- {openap-2.0/openap/data/engine → openap-2.2/scripts/db}/engines.csv +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: build and publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types:
|
|
6
|
+
- published
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
deploy:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
|
|
15
|
+
- name: Install uv
|
|
16
|
+
uses: astral-sh/setup-uv@v3
|
|
17
|
+
with:
|
|
18
|
+
enable-cache: true
|
|
19
|
+
|
|
20
|
+
- name: Set up Python
|
|
21
|
+
uses: actions/setup-python@v5
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.11"
|
|
24
|
+
|
|
25
|
+
- name: Build packages
|
|
26
|
+
run: |
|
|
27
|
+
uvx --with hatch-vcs hatchling build
|
|
28
|
+
|
|
29
|
+
- name: Publish a Python distribution to PyPI
|
|
30
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
31
|
+
with:
|
|
32
|
+
user: __token__
|
|
33
|
+
password: ${{ secrets.PYPI_API_TOKEN_OPENAP }}
|
openap-2.2/.gitignore
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
tmp
|
|
2
|
+
|
|
3
|
+
# Byte-compiled / optimized / DLL files
|
|
4
|
+
__pycache__/
|
|
5
|
+
*.py[cod]
|
|
6
|
+
*$py.class
|
|
7
|
+
|
|
8
|
+
.pytest_cache
|
|
9
|
+
|
|
10
|
+
# C extensions
|
|
11
|
+
*.so
|
|
12
|
+
|
|
13
|
+
# Distribution / packaging
|
|
14
|
+
.Python
|
|
15
|
+
env/
|
|
16
|
+
build/
|
|
17
|
+
develop-eggs/
|
|
18
|
+
dist/
|
|
19
|
+
downloads/
|
|
20
|
+
eggs/
|
|
21
|
+
.eggs/
|
|
22
|
+
lib/
|
|
23
|
+
lib64/
|
|
24
|
+
parts/
|
|
25
|
+
sdist/
|
|
26
|
+
var/
|
|
27
|
+
*.egg-info/
|
|
28
|
+
.installed.cfg
|
|
29
|
+
*.egg
|
|
30
|
+
|
|
31
|
+
# PyInstaller
|
|
32
|
+
# Usually these files are written by a python script from a template
|
|
33
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
34
|
+
*.manifest
|
|
35
|
+
*.spec
|
|
36
|
+
|
|
37
|
+
# Installer logs
|
|
38
|
+
pip-log.txt
|
|
39
|
+
pip-delete-this-directory.txt
|
|
40
|
+
|
|
41
|
+
# Unit test / coverage reports
|
|
42
|
+
htmlcov/
|
|
43
|
+
.tox/
|
|
44
|
+
.coverage
|
|
45
|
+
.coverage.*
|
|
46
|
+
.cache
|
|
47
|
+
nosetests.xml
|
|
48
|
+
coverage.xml
|
|
49
|
+
*,cover
|
|
50
|
+
.hypothesis/
|
|
51
|
+
|
|
52
|
+
# Translations
|
|
53
|
+
*.mo
|
|
54
|
+
*.pot
|
|
55
|
+
|
|
56
|
+
# Django stuff:
|
|
57
|
+
*.log
|
|
58
|
+
local_settings.py
|
|
59
|
+
|
|
60
|
+
# Flask stuff:
|
|
61
|
+
instance/
|
|
62
|
+
.webassets-cache
|
|
63
|
+
|
|
64
|
+
# Scrapy stuff:
|
|
65
|
+
.scrapy
|
|
66
|
+
|
|
67
|
+
# Sphinx documentation
|
|
68
|
+
docs/_build/
|
|
69
|
+
|
|
70
|
+
# PyBuilder
|
|
71
|
+
target/
|
|
72
|
+
|
|
73
|
+
# IPython Notebook
|
|
74
|
+
.ipynb_checkpoints
|
|
75
|
+
|
|
76
|
+
# pyenv
|
|
77
|
+
.python-version
|
|
78
|
+
|
|
79
|
+
# celery beat schedule file
|
|
80
|
+
celerybeat-schedule
|
|
81
|
+
|
|
82
|
+
# dotenv
|
|
83
|
+
.env
|
|
84
|
+
|
|
85
|
+
# virtualenv
|
|
86
|
+
venv/
|
|
87
|
+
ENV/
|
|
88
|
+
|
|
89
|
+
# Spyder project settings
|
|
90
|
+
.spyderproject
|
|
91
|
+
|
|
92
|
+
# Rope project settings
|
|
93
|
+
.ropeproject
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
#vs code
|
|
97
|
+
.vscode
|
openap-2.2/PKG-INFO
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: openap
|
|
3
|
+
Version: 2.2
|
|
4
|
+
Summary: Open Aircraft Performance Model (OpenAP) in Python
|
|
5
|
+
Project-URL: homepage, https://openap.dev
|
|
6
|
+
Project-URL: repository, https://github.com/junzis/openap
|
|
7
|
+
Project-URL: issues, https://github.com/junzis/openap/issues
|
|
8
|
+
Author-email: Junzi Sun <j.sun-1@tudelft.nl>
|
|
9
|
+
License: GNU LGPL v3
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: Information Technology
|
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
|
15
|
+
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
|
+
Requires-Python: >=3.9
|
|
19
|
+
Requires-Dist: matplotlib>=3.1
|
|
20
|
+
Requires-Dist: numpy>=1.24
|
|
21
|
+
Requires-Dist: pandas>=1.2
|
|
22
|
+
Requires-Dist: pyyaml>=5.1
|
|
23
|
+
Requires-Dist: scipy>=1.7
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
|
|
26
|
+
# OpenAP: Open Aircraft Performance Model and Toolkit
|
|
27
|
+
|
|
28
|
+
This repository contains the OpenAP model data and Python packages for aircraft performance and emission calculations.
|
|
29
|
+
|
|
30
|
+
## 🕮 User Guide
|
|
31
|
+
|
|
32
|
+
The OpenAP handbook is available at [openap.dev](https://openap.dev/).
|
|
33
|
+
|
|
34
|
+
## Installation
|
|
35
|
+
|
|
36
|
+
Install the latest stable release from PyPI:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
pip install --upgrade openap
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Install the development branch from GitHub (may not be stable):
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
pip install --upgrade git+https://github.com/junzis/openap
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Content
|
|
49
|
+
|
|
50
|
+
### Model Data
|
|
51
|
+
|
|
52
|
+
Data in this repository includes:
|
|
53
|
+
|
|
54
|
+
- Aircraft data: Collected from open literature.
|
|
55
|
+
- Engine data: Primarily from the ICAO emission data-bank, including fuel flow and emissions.
|
|
56
|
+
- Drag polar model data: Exclusively derived from open data ([reference](https://research.tudelft.nl/files/71038050/published_OpenAP_drag_polar.pdf)).
|
|
57
|
+
- Fuel model data: Polynomial models derived from the [acropole model](https://github.com/DGAC/Acropole) by [@JarryGabriel](https://github.com/JarryGabriel).
|
|
58
|
+
- Kinematic data: The kinematic model describes speed, altitude, and vertical rate ([reference](https://github.com/junzis/wrap)).
|
|
59
|
+
- Navigation data: Airport and waypoints obtained from [X-Plane](https://developer.x-plane.com/docs/data-development-documentation/).
|
|
60
|
+
|
|
61
|
+
### Python Packages
|
|
62
|
+
|
|
63
|
+
The OpenAP Python library includes the following packages:
|
|
64
|
+
|
|
65
|
+
- `prop`: Module for accessing aircraft and engine properties.
|
|
66
|
+
- `aero`: Module for common aeronautical conversions.
|
|
67
|
+
- `nav`: Module for accessing navigation information.
|
|
68
|
+
- `thrust`: Module provides `Thrust()` class for computing aircraft thrust.
|
|
69
|
+
- `drag`: Module provides `Drag()` class for computing aircraft drag.
|
|
70
|
+
- `fuel`: Module provides `FuelFlow()` class for computing fuel consumption.
|
|
71
|
+
- `emission`: Module provides `Emission()` class for computing aircraft emissions.
|
|
72
|
+
- `kinematic`: Module provides `WRAP()` class for accessing kinematic performance data.
|
|
73
|
+
- `phase`: Module provides `FlightPhase()` class for determining flight phases.
|
|
74
|
+
- `gen`: Module provides `FlightGenerator()` class for trajectory generation.
|
|
75
|
+
|
|
76
|
+
Examples:
|
|
77
|
+
|
|
78
|
+
```python
|
|
79
|
+
import openap
|
|
80
|
+
|
|
81
|
+
openap.prop.aircraft("A320")
|
|
82
|
+
fuelflow = openap.FuelFlow("A320")
|
|
83
|
+
fuelflow.enroute(mass, tas, alt) # -> kg/s
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The input parameters can be scalar, list, or ndarray. Most of the OpenAP methods' parameters are in aeronautical units, such as knots, feet, feet/min. The mass is always in SI units, i.e., kilograms.
|
|
87
|
+
|
|
88
|
+
### Add-ons
|
|
89
|
+
|
|
90
|
+
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:
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
from openap.addon import bada4
|
|
94
|
+
|
|
95
|
+
fuelflow = bada4.FuelFlow()
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
The methods and attributes of `openap.addon.bada4.FuelFlow()` are the same as those of `openap.FuelFlow()`.
|
|
99
|
+
|
|
100
|
+
## Symbolic Implementation for CasADi
|
|
101
|
+
|
|
102
|
+
The OpenAP model can also be used with the CasADi library for symbolic computations. The symbolic model is available in the `openap.casadi` package. For example, you can use the following code to create a symbolic model for fuel flow:
|
|
103
|
+
|
|
104
|
+
```python
|
|
105
|
+
from openap.casadi import FuelFlow
|
|
106
|
+
|
|
107
|
+
fuelflow = FuelFlow()
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
All the methods of `openap.casadi.FuelFlow()` are the same as those of `openap.FuelFlow()`, and they are now symbolic functions that can be used to compute fuel flow for given flight conditions in CasADi `DM`, `SX`, or `MX` types.
|
|
111
|
+
|
|
112
|
+
How did we implement this? When the `casadi` module is initiated, a metaclass is used to replace the `sci` function from `numpy`, which overrides all the `numpy` functions with `casadi` functions. For more details, check the `openap/casadi/__init__.py` code.
|
|
113
|
+
|
|
114
|
+
## Citing OpenAP
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
@article{sun2020openap,
|
|
118
|
+
title={OpenAP: An open-source aircraft performance model for air transportation studies and simulations},
|
|
119
|
+
author={Sun, Junzi and Hoekstra, Jacco M and Ellerbroek, Joost},
|
|
120
|
+
journal={Aerospace},
|
|
121
|
+
volume={7},
|
|
122
|
+
number={8},
|
|
123
|
+
pages={104},
|
|
124
|
+
year={2020},
|
|
125
|
+
publisher={Multidisciplinary Digital Publishing Institute}
|
|
126
|
+
}
|
|
127
|
+
```
|
openap-2.2/README.md
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# OpenAP: Open Aircraft Performance Model and Toolkit
|
|
2
|
+
|
|
3
|
+
This repository contains the OpenAP model data and Python packages for aircraft performance and emission calculations.
|
|
4
|
+
|
|
5
|
+
## 🕮 User Guide
|
|
6
|
+
|
|
7
|
+
The OpenAP handbook is available at [openap.dev](https://openap.dev/).
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
Install the latest stable release from PyPI:
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
pip install --upgrade openap
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Install the development branch from GitHub (may not be stable):
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
pip install --upgrade git+https://github.com/junzis/openap
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Content
|
|
24
|
+
|
|
25
|
+
### Model Data
|
|
26
|
+
|
|
27
|
+
Data in this repository includes:
|
|
28
|
+
|
|
29
|
+
- Aircraft data: Collected from open literature.
|
|
30
|
+
- Engine data: Primarily from the ICAO emission data-bank, including fuel flow and emissions.
|
|
31
|
+
- Drag polar model data: Exclusively derived from open data ([reference](https://research.tudelft.nl/files/71038050/published_OpenAP_drag_polar.pdf)).
|
|
32
|
+
- Fuel model data: Polynomial models derived from the [acropole model](https://github.com/DGAC/Acropole) by [@JarryGabriel](https://github.com/JarryGabriel).
|
|
33
|
+
- Kinematic data: The kinematic model describes speed, altitude, and vertical rate ([reference](https://github.com/junzis/wrap)).
|
|
34
|
+
- Navigation data: Airport and waypoints obtained from [X-Plane](https://developer.x-plane.com/docs/data-development-documentation/).
|
|
35
|
+
|
|
36
|
+
### Python Packages
|
|
37
|
+
|
|
38
|
+
The OpenAP Python library includes the following packages:
|
|
39
|
+
|
|
40
|
+
- `prop`: Module for accessing aircraft and engine properties.
|
|
41
|
+
- `aero`: Module for common aeronautical conversions.
|
|
42
|
+
- `nav`: Module for accessing navigation information.
|
|
43
|
+
- `thrust`: Module provides `Thrust()` class for computing aircraft thrust.
|
|
44
|
+
- `drag`: Module provides `Drag()` class for computing aircraft drag.
|
|
45
|
+
- `fuel`: Module provides `FuelFlow()` class for computing fuel consumption.
|
|
46
|
+
- `emission`: Module provides `Emission()` class for computing aircraft emissions.
|
|
47
|
+
- `kinematic`: Module provides `WRAP()` class for accessing kinematic performance data.
|
|
48
|
+
- `phase`: Module provides `FlightPhase()` class for determining flight phases.
|
|
49
|
+
- `gen`: Module provides `FlightGenerator()` class for trajectory generation.
|
|
50
|
+
|
|
51
|
+
Examples:
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
import openap
|
|
55
|
+
|
|
56
|
+
openap.prop.aircraft("A320")
|
|
57
|
+
fuelflow = openap.FuelFlow("A320")
|
|
58
|
+
fuelflow.enroute(mass, tas, alt) # -> kg/s
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The input parameters can be scalar, list, or ndarray. Most of the OpenAP methods' parameters are in aeronautical units, such as knots, feet, feet/min. The mass is always in SI units, i.e., kilograms.
|
|
62
|
+
|
|
63
|
+
### Add-ons
|
|
64
|
+
|
|
65
|
+
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:
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
from openap.addon import bada4
|
|
69
|
+
|
|
70
|
+
fuelflow = bada4.FuelFlow()
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
The methods and attributes of `openap.addon.bada4.FuelFlow()` are the same as those of `openap.FuelFlow()`.
|
|
74
|
+
|
|
75
|
+
## Symbolic Implementation for CasADi
|
|
76
|
+
|
|
77
|
+
The OpenAP model can also be used with the CasADi library for symbolic computations. The symbolic model is available in the `openap.casadi` package. For example, you can use the following code to create a symbolic model for fuel flow:
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
from openap.casadi import FuelFlow
|
|
81
|
+
|
|
82
|
+
fuelflow = FuelFlow()
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
All the methods of `openap.casadi.FuelFlow()` are the same as those of `openap.FuelFlow()`, and they are now symbolic functions that can be used to compute fuel flow for given flight conditions in CasADi `DM`, `SX`, or `MX` types.
|
|
86
|
+
|
|
87
|
+
How did we implement this? When the `casadi` module is initiated, a metaclass is used to replace the `sci` function from `numpy`, which overrides all the `numpy` functions with `casadi` functions. For more details, check the `openap/casadi/__init__.py` code.
|
|
88
|
+
|
|
89
|
+
## Citing OpenAP
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
@article{sun2020openap,
|
|
93
|
+
title={OpenAP: An open-source aircraft performance model for air transportation studies and simulations},
|
|
94
|
+
author={Sun, Junzi and Hoekstra, Jacco M and Ellerbroek, Joost},
|
|
95
|
+
journal={Aerospace},
|
|
96
|
+
volume={7},
|
|
97
|
+
number={8},
|
|
98
|
+
pages={104},
|
|
99
|
+
year={2020},
|
|
100
|
+
publisher={Multidisciplinary Digital Publishing Institute}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
timestamp,icao24,typecode,callsign,origin,destination,latitude,longitude,altitude,groundspeed,track,vertical_rate
|
|
2
|
+
2018-01-02 19:53:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,49.085861206054695,2.3496657151442313,8200.0,255.0,327.8042660652868,1920.0
|
|
3
|
+
2018-01-02 19:54:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,49.15342712402346,2.3108614408052888,9475.0,290.0,9.72201801381101,960.0
|
|
4
|
+
2018-01-02 19:55:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,49.23336740267481,2.3611209267064153,9975.0,332.0,23.24391944367926,640.0
|
|
5
|
+
2018-01-02 19:56:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,49.319915771484375,2.418471116286056,11225.0,353.0,23.51796167369224,2752.0
|
|
6
|
+
2018-01-02 19:57:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,49.41165161132812,2.478895920973556,14175.0,368.0,23.56691545099568,3584.0
|
|
7
|
+
2018-01-02 19:58:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,49.5051859192929,2.540811074746623,17725.0,351.0,23.348747585296735,3776.0
|
|
8
|
+
2018-01-02 19:59:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,49.59689382779397,2.601607039168076,19850.0,374.0,23.48023884658039,2176.0
|
|
9
|
+
2018-01-02 20:00:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,49.69428110930879,2.6667084565033776,21900.0,390.0,23.410724709134342,1728.0
|
|
10
|
+
2018-01-02 20:01:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,49.794042554952334,2.733739904455236,23850.0,403.0,23.572334589698528,1664.0
|
|
11
|
+
2018-01-02 20:02:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,49.894874702065685,2.8225955447635145,25550.0,426.0,32.1620454014718,1536.0
|
|
12
|
+
2018-01-02 20:03:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,49.99496201337395,2.92065594647382,27375.0,434.0,32.18745180416772,1472.0
|
|
13
|
+
2018-01-02 20:04:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,50.098617553710945,3.022830360814145,28650.0,449.0,32.45162406090128,1024.0
|
|
14
|
+
2018-01-02 20:05:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,50.205378128310386,3.1283569335937504,30000.0,457.0,31.221650272108775,1344.0
|
|
15
|
+
2018-01-02 20:06:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,50.317108154296875,3.2137178119860206,31400.0,451.0,24.2335415525842,1408.0
|
|
16
|
+
2018-01-02 20:07:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,50.43063354492189,3.297922234786184,32925.0,451.0,29.744881296942197,448.0
|
|
17
|
+
2018-01-02 20:08:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,50.53308105468749,3.411038047388978,33000.0,459.0,36.84491039077176,0.0
|
|
18
|
+
2018-01-02 20:09:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,50.62788391113282,3.541067023026314,33000.0,461.0,36.96941257749569,0.0
|
|
19
|
+
2018-01-02 20:10:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,50.7370046841896,3.651885986328125,33000.0,457.0,36.895005347792164,0.0
|
|
20
|
+
2018-01-02 20:11:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,50.863677978515625,3.8027541701858123,32975.0,460.0,37.318095383748584,0.0
|
|
21
|
+
2018-01-02 20:12:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,50.965436515161535,3.9250183105468754,33000.0,458.0,37.19501206727989,0.0
|
|
22
|
+
2018-01-02 20:13:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,51.03854370117188,4.013350203230576,33000.0,444.0,37.489845817396315,-64.0
|
|
23
|
+
2018-01-02 20:14:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,51.15907287597657,4.158919050886825,32975.0,433.0,37.399173856045365,0.0
|
|
24
|
+
2018-01-02 20:15:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,51.23129634533898,4.247131347656252,33000.0,435.0,37.399173856045365,0.0
|
|
25
|
+
2018-01-02 20:16:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,51.3265422239142,4.363632202148439,33000.0,436.0,37.55258314980483,0.0
|
|
26
|
+
2018-01-02 20:17:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,51.42333984375,4.482570338893581,33025.0,438.0,37.76016260337798,0.0
|
|
27
|
+
2018-01-02 20:18:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,51.51866330938824,4.600753784179688,33025.0,436.0,37.73675525941542,0.0
|
|
28
|
+
2018-01-02 20:19:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,51.61427307128907,4.719518713048988,32975.0,436.0,37.921078395387724,0.0
|
|
29
|
+
2018-01-02 20:20:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,51.70948093220339,4.838943481445312,32975.0,435.0,37.89810543334306,0.0
|
|
30
|
+
2018-01-02 20:21:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,51.80435439287607,4.958114624023437,33000.0,434.0,37.979220854798825,0.0
|
|
31
|
+
2018-01-02 20:22:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,51.89254760742188,5.088303024704392,32975.0,432.0,37.85171160545963,0.0
|
|
32
|
+
2018-01-02 20:23:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,51.99128723144532,5.19378662109375,32975.0,431.0,38.11988575616397,0.0
|
|
33
|
+
2018-01-02 20:24:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,52.086460954051915,5.315028599330358,32975.0,429.0,38.097285948048466,-64.0
|
|
34
|
+
2018-01-02 20:25:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,52.17472399695444,5.428030831473215,32950.0,432.0,38.328502777056144,0.0
|
|
35
|
+
2018-01-02 20:26:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,52.274505615234375,5.5565643310546875,33000.0,434.0,38.350215916764796,0.0
|
|
36
|
+
2018-01-02 20:27:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,52.365463256835945,5.674514770507812,33025.0,433.0,38.535925680623166,0.0
|
|
37
|
+
2018-01-02 20:28:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,52.48576354980469,5.831756591796876,33000.0,434.0,38.82480644308316,0.0
|
|
38
|
+
2018-01-02 20:29:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,52.55594027244439,5.92429896763393,33000.0,435.0,38.742159299808804,0.0
|
|
39
|
+
2018-01-02 20:30:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,52.64978027343751,6.048583984375001,33000.0,434.0,38.82480644308316,0.0
|
|
40
|
+
2018-01-02 20:31:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,52.74252164161811,6.171883719308036,32950.0,435.0,39.029984019142944,0.0
|
|
41
|
+
2018-01-02 20:32:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,52.8365478515625,6.29783630371094,32975.0,438.0,39.06847307508025,0.0
|
|
42
|
+
2018-01-02 20:33:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,52.930938720703125,6.424484252929689,33000.0,439.0,39.27104871525512,0.0
|
|
43
|
+
2018-01-02 20:34:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,53.0487888142214,6.584420340401786,33025.0,439.0,39.27104871525512,0.0
|
|
44
|
+
2018-01-02 20:35:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,53.12489318847656,6.685259137834823,33000.0,438.0,39.53775753812636,0.0
|
|
45
|
+
2018-01-02 20:36:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,53.21328735351563,6.80924769810268,33000.0,438.0,39.43679117925603,0.0
|
|
46
|
+
2018-01-02 20:37:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,53.30515198788402,6.936008228975185,32975.0,436.0,39.603707760100974,0.0
|
|
47
|
+
2018-01-02 20:38:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,53.39886474609375,7.065935407366072,32975.0,436.0,39.78874413841322,0.0
|
|
48
|
+
2018-01-02 20:39:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,53.491360939155186,7.194671630859377,33000.0,434.0,39.95754893082909,0.0
|
|
49
|
+
2018-01-02 20:40:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,53.58334350585939,7.323800223214286,32975.0,432.0,39.924547621521015,0.0
|
|
50
|
+
2018-01-02 20:41:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,53.675354003906264,7.453517368861609,32975.0,430.0,39.907884875501054,0.0
|
|
51
|
+
2018-01-02 20:42:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,53.765972590042374,7.582101260914522,32975.0,429.0,40.07938396363596,0.0
|
|
52
|
+
2018-01-02 20:43:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,53.85302527476165,7.706262925091911,33000.0,428.0,40.16559369373675,0.0
|
|
53
|
+
2018-01-02 20:44:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,53.94673492948889,7.8414109173943025,33000.0,426.0,40.42607874009906,0.0
|
|
54
|
+
2018-01-02 20:45:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,54.03529357910156,7.968462262834823,33000.0,424.0,40.41084657788639,0.0
|
|
55
|
+
2018-01-02 20:46:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,54.12565612792968,8.099748883928571,32975.0,423.0,40.498561543881806,0.0
|
|
56
|
+
2018-01-02 20:47:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,54.2149223715572,8.230052274816176,33075.0,425.0,40.70371293647872,0.0
|
|
57
|
+
2018-01-02 20:48:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,54.31274414062501,8.362696030560661,33775.0,437.0,40.82860128093307,1024.0
|
|
58
|
+
2018-01-02 20:49:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,54.396652221679695,8.498247931985293,34775.0,442.0,41.051657500403564,960.0
|
|
59
|
+
2018-01-02 20:50:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,54.48948669433593,8.66166956284467,35000.0,435.0,37.05438203892504,0.0
|
|
60
|
+
2018-01-02 20:51:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,54.591064453125,8.742037686434658,35000.0,435.0,30.692642879589698,0.0
|
|
61
|
+
2018-01-02 20:52:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,54.69483947753906,8.849164177389705,35700.0,441.0,31.097312885779445,448.0
|
|
62
|
+
2018-01-02 20:53:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,54.79261779785158,8.982534969554228,36000.0,453.0,46.78991060824603,-64.0
|
|
63
|
+
2018-01-02 20:54:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,54.877733133607,9.139875932173297,36450.0,457.0,46.773296715560775,704.0
|
|
64
|
+
2018-01-02 20:55:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,54.96546936035156,9.303238812614888,36950.0,471.0,47.15296278910046,320.0
|
|
65
|
+
2018-01-02 20:56:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,55.05422973632812,9.470376407398897,37000.0,472.0,47.318053833864155,0.0
|
|
66
|
+
2018-01-02 20:57:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,55.14280157574153,9.637423428622158,37000.0,471.0,47.40741384434011,0.0
|
|
67
|
+
2018-01-02 20:58:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,55.23064564850371,9.805214621803977,37000.0,469.0,47.504553780280105,0.0
|
|
68
|
+
2018-01-02 20:59:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,55.31785583496095,9.972354664522058,37000.0,469.0,47.59471023879496,0.0
|
|
69
|
+
2018-01-02 21:00:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,55.405030331369176,10.14088023792613,37000.0,464.0,47.792702365713296,0.0
|
|
70
|
+
2018-01-02 21:01:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,55.49050024000266,10.30672073364258,36975.0,462.0,47.98511284226544,0.0
|
|
71
|
+
2018-01-02 21:02:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,55.576400756835945,10.47529740767045,36950.0,462.0,47.8930376570579,0.0
|
|
72
|
+
2018-01-02 21:03:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,55.66102108712924,10.64231872558594,36975.0,464.0,48.315258014403355,0.0
|
|
73
|
+
2018-01-02 21:04:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,55.7443495928231,10.8079719543457,37000.0,464.0,48.4074814400351,0.0
|
|
74
|
+
2018-01-02 21:05:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,55.83168159096928,10.98255157470703,37000.0,465.0,48.57090503932585,0.0
|
|
75
|
+
2018-01-02 21:06:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,55.916965290651476,11.15455627441406,37000.0,468.0,48.80258580707056,0.0
|
|
76
|
+
2018-01-02 21:07:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.003036499023445,11.32923473011363,37025.0,466.0,48.82563339364799,0.0
|
|
77
|
+
2018-01-02 21:08:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.08735656738282,11.50201970880682,37025.0,461.0,48.95424771552109,0.0
|
|
78
|
+
2018-01-02 21:09:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.171585083007805,11.67522083629261,36975.0,457.0,48.990913098429814,0.0
|
|
79
|
+
2018-01-02 21:10:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.25265502929689,11.84351140802557,36975.0,454.0,49.01573616547938,0.0
|
|
80
|
+
2018-01-02 21:11:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.33583068847657,12.01704545454545,36975.0,455.0,49.54905175959681,0.0
|
|
81
|
+
2018-01-02 21:12:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.41786193847658,12.1900801225142,36975.0,455.0,49.63067080629372,0.0
|
|
82
|
+
2018-01-02 21:13:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.4987030029297,12.36120050603693,36975.0,458.0,49.77832162366474,0.0
|
|
83
|
+
2018-01-02 21:14:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.58146667480468,12.5379805131392,36975.0,463.0,49.81446799301841,64.0
|
|
84
|
+
2018-01-02 21:15:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.66510009765626,12.718133926391602,37025.0,468.0,49.943477194058744,0.0
|
|
85
|
+
2018-01-02 21:16:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.748550415039055,12.8990650177002,37025.0,469.0,50.100629625344766,0.0
|
|
86
|
+
2018-01-02 21:17:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.83113098144531,13.0792236328125,37025.0,468.0,50.116027506869216,0.0
|
|
87
|
+
2018-01-02 21:18:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.913803100585945,13.26127052307129,37000.0,468.0,50.46084609368535,0.0
|
|
88
|
+
2018-01-02 21:19:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,56.99646513340837,13.444784841229842,36975.0,467.0,50.555367142918044,0.0
|
|
89
|
+
2018-01-02 21:20:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,57.07841491699219,13.628110885620123,36975.0,468.0,50.727835321605426,0.0
|
|
90
|
+
2018-01-02 21:21:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,57.15995659262448,13.81176364037298,37000.0,466.0,50.84047604826708,0.0
|
|
91
|
+
2018-01-02 21:22:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,57.24156188964844,13.99692535400391,36975.0,466.0,51.01355938508675,0.0
|
|
92
|
+
2018-01-02 21:23:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,57.32228424589514,14.18148902154738,36975.0,467.0,50.99538680407545,0.0
|
|
93
|
+
2018-01-02 21:24:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,57.40319203522246,14.368079400831652,36950.0,469.0,51.321105877357695,0.0
|
|
94
|
+
2018-01-02 21:25:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,57.48390197753907,14.555511474609382,37000.0,468.0,51.41663703679018,0.0
|
|
95
|
+
2018-01-02 21:26:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,57.56469726562501,14.744853973388672,37025.0,470.0,51.81542785713032,0.0
|
|
96
|
+
2018-01-02 21:27:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,57.64585876464843,14.93608474731445,37025.0,469.0,51.76035326399631,-64.0
|
|
97
|
+
2018-01-02 21:28:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,57.725752491061975,15.126136041456652,37000.0,466.0,51.801314823981556,0.0
|
|
98
|
+
2018-01-02 21:29:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,57.80397033691408,15.31405541204637,36950.0,463.0,52.19010050816274,0.0
|
|
99
|
+
2018-01-02 21:30:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,57.8822021484375,15.50303797568044,36950.0,463.0,52.287942297000086,0.0
|
|
100
|
+
2018-01-02 21:31:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,57.96038818359377,15.69361532888105,36975.0,466.0,52.41640318442296,0.0
|
|
101
|
+
2018-01-02 21:32:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.04022216796876,15.889508647303431,36975.0,470.0,52.520595777480764,0.0
|
|
102
|
+
2018-01-02 21:33:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.11831665039062,16.08345277847782,36075.0,469.0,52.88577215284187,-2368.0
|
|
103
|
+
2018-01-02 21:34:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.197233555680604,16.28045654296875,33325.0,471.0,53.03270205781769,-2752.0
|
|
104
|
+
2018-01-02 21:35:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.274324061506874,16.47445678710938,30975.0,456.0,53.104994652207836,-2048.0
|
|
105
|
+
2018-01-02 21:36:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.348854194253185,16.6629638671875,28775.0,437.0,53.47114463301483,-1984.0
|
|
106
|
+
2018-01-02 21:37:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.41905496888241,16.84295654296875,26650.0,421.0,53.40228928289309,-1920.0
|
|
107
|
+
2018-01-02 21:38:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.48720744504767,17.018096923828118,24575.0,406.0,53.80679269443527,-1856.0
|
|
108
|
+
2018-01-02 21:39:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.55319213867189,17.18988233996976,22600.0,395.0,53.652541791114686,-1856.0
|
|
109
|
+
2018-01-02 21:40:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.61700439453125,17.35680364793347,20650.0,387.0,54.048890204881786,-1920.0
|
|
110
|
+
2018-01-02 21:41:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.704885709083676,17.46633911132812,18275.0,383.0,24.357311844388448,-1728.0
|
|
111
|
+
2018-01-02 21:42:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.79942321777343,17.54897579070061,16475.0,367.0,24.469798612454156,-1664.0
|
|
112
|
+
2018-01-02 21:43:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.890256720074156,17.62869999326509,14775.0,358.0,24.563017646582693,-1472.0
|
|
113
|
+
2018-01-02 21:44:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,58.97865941969014,17.70664609711746,13250.0,343.0,24.471620533704936,-1408.0
|
|
114
|
+
2018-01-02 21:45:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,59.062825865664735,17.781087941136846,11800.0,326.0,24.44395478041656,-1344.0
|
|
115
|
+
2018-01-02 21:46:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,59.14260864257813,17.85205078125,10400.0,307.0,24.39768632787934,-1216.0
|
|
116
|
+
2018-01-02 21:47:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,59.217286190744176,17.918701171875,9125.0,291.0,24.541617946364283,-1216.0
|
|
117
|
+
2018-01-02 21:48:00+00:00,3946e9,a319,AFR91HL,LBG,BMA,59.28950500488282,17.9901123046875,8075.0,291.0,28.500577483805785,-960.0
|