pycontrails 0.51.0__tar.gz → 0.51.1__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.
Potentially problematic release.
This version of pycontrails might be problematic. Click here for more details.
- {pycontrails-0.51.0 → pycontrails-0.51.1}/CHANGELOG.md +18 -1
- {pycontrails-0.51.0 → pycontrails-0.51.1}/PKG-INFO +1 -1
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/_version.py +2 -2
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/flight.py +44 -6
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/rgi_cython.c +125 -125
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/ps_model/ps_aircraft_params.py +19 -3
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/ps_model/ps_grid.py +21 -21
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/ps_model/ps_model.py +41 -6
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/ps_model/ps_operational_limits.py +15 -6
- pycontrails-0.51.0/pycontrails/models/ps_model/static/ps-aircraft-params-20240417.csv → pycontrails-0.51.1/pycontrails/models/ps_model/static/ps-aircraft-params-20240524.csv +16 -12
- pycontrails-0.51.1/pycontrails/models/ps_model/static/ps-synonym-list-20240524.csv +103 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails.egg-info/PKG-INFO +1 -1
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails.egg-info/SOURCES.txt +2 -1
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_flight.py +19 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_ps_model.py +31 -18
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.github/dependabot.yaml +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.github/pull_request_template.md +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.github/workflows/benchmark.yaml +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.github/workflows/docs.yaml +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.github/workflows/doctest.yaml +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.github/workflows/release.yaml +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.github/workflows/scorecard.yaml +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.github/workflows/test.yaml +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.gitignore +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.pre-commit-config.yaml +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/.zenodo.json +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/CONTRIBUTING.md +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/LICENSE +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/Makefile +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/NOTICE +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/README.md +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/RELEASE.md +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/_static/css/style.css +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/_static/img/colab.png +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/_static/img/favicon.png +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/_static/img/logo-dark.png +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/_static/img/logo.png +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/_static/pycontrails.bib +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/api.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/changelog.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/conf.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/contributing.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/develop.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/flight.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/index.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/install.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/integrations/ACCF.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/literature.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/meteorology.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/models.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/ARCO-ERA5.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/AircraftPerformance.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/Cache.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/CoCiP.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/ECMWF.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/Flight.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/GFS.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/GOES.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/ISSR.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/Meteorology.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/SAC.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/advection.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/airports.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/data/.gitignore +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/data/flight-ap.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/data/flight-cocip.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/data/flight-fdr.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/data/flight-noisy.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/data/flight.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/flightplan.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/model-levels.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/run-cocip-on-flight.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/run-cocip-with-fdr.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks/specific-humidity-interpolation.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/notebooks.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/observations.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/tutorials.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/docs/utilities.rst +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/aircraft_performance.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/airports.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/cache.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/coordinates.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/datalib.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/fleet.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/flightplan.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/fuel.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/interpolation.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/met.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/met_var.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/models.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/polygon.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/rgi_cython.pyx +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/core/vector.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/ecmwf/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/ecmwf/arco_era5.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/ecmwf/common.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/ecmwf/era5.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/ecmwf/era5_model_level.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/ecmwf/hres.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/ecmwf/hres_model_level.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/ecmwf/ifs.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/ecmwf/model_levels.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/ecmwf/static/model_level_dataframe_v20240418.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/ecmwf/variables.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/gfs/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/gfs/gfs.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/gfs/variables.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/goes.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/spire/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/datalib/spire/spire.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/ext/bada.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/ext/cirium.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/ext/empirical_grid.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/ext/synthetic_flight.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/accf.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocip/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocip/cocip.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocip/cocip_params.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocip/cocip_uncertainty.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocip/contrail_properties.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocip/output_formats.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocip/radiative_forcing.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocip/radiative_heating.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocip/unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocip/wake_vortex.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocip/wind_shear.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocipgrid/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocipgrid/cocip_grid.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/dry_advection.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/emissions/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/emissions/black_carbon.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/emissions/emissions.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/emissions/ffm2.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/emissions/static/default-engine-uids.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/emissions/static/edb-gaseous-v29b-engines.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/emissions/static/edb-nvpm-v29b-engines.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/humidity_scaling/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/humidity_scaling/humidity_scaling.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/issr.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/pcc.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/pcr.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/ps_model/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/sac.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/models/tau_cirrus.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/physics/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/physics/constants.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/physics/geo.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/physics/jet.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/physics/thermo.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/physics/units.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/py.typed +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/utils/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/utils/dependencies.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/utils/iteration.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/utils/json.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/utils/temp.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails/utils/types.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails.egg-info/dependency_links.txt +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails.egg-info/requires.txt +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pycontrails.egg-info/top_level.txt +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/pyproject.toml +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/setup.cfg +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/setup.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/_deprecated.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/benchmark/cocip/Makefile +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/benchmark/cocip/README.md +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/benchmark/cocip/benchmark.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/benchmark/cocip/compare.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/benchmark/cocip/data.md +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/benchmark/cocip/output.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/benchmark/cocip/review.ipynb +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/benchmark/cocip-fortran/README.md +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/benchmark/north-atlantic-study/README.md +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/benchmark/north-atlantic-study/support.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/benchmark/north-atlantic-study/validate.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/fixtures/cocip-met.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/fixtures/cocip-met2.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/fixtures/ecmwf-met.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/fixtures/gfs-met.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/__init__.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/conftest.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/cocip-contrail-output.json +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/cocip-contrail-output2.json +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/cocip-flight-output.json +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/cocip-flight-output2.json +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/cocip-output-contrail-edges.json +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/cocip-output-flts-20190101-eu.pq +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/flight-cocip2.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/flight-meridian.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/flight-metadata.json +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/flight-spire-data-cleaning.pq +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/flight.csv +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/flt-wypts-20190101-eu.pq +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/met-20190101-eu.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/met-accf-pl.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/met-accf-sl.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/met-ecmwf-pl.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/met-ecmwf-sl.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/met-era5-cocip1.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/met-era5-cocip2.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/met-gfs.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/polygon-bug.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/rad-20190101-eu.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/rad-era5-cocip1.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/rad-era5-cocip2.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/static/rad-gfs.nc +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_accf.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_airports.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_cache.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_cocip.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_cocip_grid.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_cocip_grid_parity.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_cocip_radiative_forcing.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_cocip_uncertainty.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_coordinates.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_datalib.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_dry_advection.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_dtypes.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_ecmwf.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_emissions.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_fleet.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_flightplan.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_fuel.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_geo.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_gfs.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_goes.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_grid_to_netcdf.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_humidity_scaling.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_init.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_interpolation.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_met.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_met_cache.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_models.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_pcc.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_polygons.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_sac_issr.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_spire.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_tau_cirrus.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_thermo_sac.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_units.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_utils.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_vector.py +0 -0
- {pycontrails-0.51.0 → pycontrails-0.51.1}/tests/unit/test_zarr.py +0 -0
|
@@ -1,6 +1,23 @@
|
|
|
1
|
-
|
|
2
1
|
# Changelog
|
|
3
2
|
|
|
3
|
+
## v0.51.1
|
|
4
|
+
|
|
5
|
+
### Breaking changes
|
|
6
|
+
|
|
7
|
+
- Average fuel burn in the PS model is increased by 2.5\% unless `engine_deterioration_factor` is overriden.
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
- PS model: Support four aircraft types, including `E75L`, `E75S`, `E290`, and `E295`
|
|
12
|
+
- PS model: Integrate `ps_synonym_list` to increase PS model aircraft type coverage to 102
|
|
13
|
+
- PS model: Account for increase in fuel consumption due to engine deterioration between maintenance cycle
|
|
14
|
+
|
|
15
|
+
### Internals
|
|
16
|
+
|
|
17
|
+
- Calculate rate of climb and descent (ROCD) using hydrostatic equation to improve accuracy.
|
|
18
|
+
- PS model: Move engine performance buffer from `c_t_available` to `tr_max`.
|
|
19
|
+
- Set `tr_max` buffer to +20%, as recommended by Ian Poll.
|
|
20
|
+
|
|
4
21
|
## v0.51.0
|
|
5
22
|
|
|
6
23
|
### Breaking changes
|
|
@@ -728,9 +728,17 @@ class Flight(GeoVectorDataset):
|
|
|
728
728
|
"""
|
|
729
729
|
return units.tas_to_mach_number(true_airspeed, air_temperature)
|
|
730
730
|
|
|
731
|
-
def segment_rocd(
|
|
731
|
+
def segment_rocd(
|
|
732
|
+
self,
|
|
733
|
+
air_temperature: None | npt.NDArray[np.float64] = None,
|
|
734
|
+
) -> npt.NDArray[np.float64]:
|
|
732
735
|
"""Calculate the rate of climb and descent (ROCD).
|
|
733
736
|
|
|
737
|
+
Parameters
|
|
738
|
+
----------
|
|
739
|
+
air_temperature: None | npt.NDArray[np.float64]
|
|
740
|
+
Air temperature of each flight waypoint, [:math:`K`]
|
|
741
|
+
|
|
734
742
|
Returns
|
|
735
743
|
-------
|
|
736
744
|
npt.NDArray[np.float64]
|
|
@@ -740,12 +748,13 @@ class Flight(GeoVectorDataset):
|
|
|
740
748
|
--------
|
|
741
749
|
:func:`segment_rocd`
|
|
742
750
|
"""
|
|
743
|
-
return segment_rocd(self.segment_duration(), self.altitude_ft)
|
|
751
|
+
return segment_rocd(self.segment_duration(), self.altitude_ft, air_temperature)
|
|
744
752
|
|
|
745
753
|
def segment_phase(
|
|
746
754
|
self,
|
|
747
755
|
threshold_rocd: float = 250.0,
|
|
748
756
|
min_cruise_altitude_ft: float = 20000.0,
|
|
757
|
+
air_temperature: None | npt.NDArray[np.float64] = None,
|
|
749
758
|
) -> npt.NDArray[np.uint8]:
|
|
750
759
|
"""Identify the phase of flight (climb, cruise, descent) for each segment.
|
|
751
760
|
|
|
@@ -759,6 +768,8 @@ class Flight(GeoVectorDataset):
|
|
|
759
768
|
This is specific for each aircraft type,
|
|
760
769
|
and can be approximated as 50% of the altitude ceiling.
|
|
761
770
|
Defaults to 20000 ft.
|
|
771
|
+
air_temperature: None | npt.NDArray[np.float64]
|
|
772
|
+
Air temperature of each flight waypoint, [:math:`K`]
|
|
762
773
|
|
|
763
774
|
Returns
|
|
764
775
|
-------
|
|
@@ -773,7 +784,7 @@ class Flight(GeoVectorDataset):
|
|
|
773
784
|
:func:`segment_rocd`
|
|
774
785
|
"""
|
|
775
786
|
return segment_phase(
|
|
776
|
-
self.segment_rocd(),
|
|
787
|
+
self.segment_rocd(air_temperature),
|
|
777
788
|
self.altitude_ft,
|
|
778
789
|
threshold_rocd=threshold_rocd,
|
|
779
790
|
min_cruise_altitude_ft=min_cruise_altitude_ft,
|
|
@@ -1952,6 +1963,7 @@ def filter_altitude(
|
|
|
1952
1963
|
altitude_ft: npt.NDArray[np.float64],
|
|
1953
1964
|
kernel_size: int = 17,
|
|
1954
1965
|
cruise_threshold: float = 120,
|
|
1966
|
+
air_temperature: None | npt.NDArray[np.float64] = None,
|
|
1955
1967
|
) -> npt.NDArray[np.float64]:
|
|
1956
1968
|
"""
|
|
1957
1969
|
Filter noisy altitude on a single flight.
|
|
@@ -1971,6 +1983,8 @@ def filter_altitude(
|
|
|
1971
1983
|
Passed also to :func:`scipy.signal.medfilt`
|
|
1972
1984
|
cruise_theshold : int, optional
|
|
1973
1985
|
Minimal length of time, in seconds, for a flight to be in cruise to apply median filter
|
|
1986
|
+
air_temperature: None | npt.NDArray[np.float64]
|
|
1987
|
+
Air temperature of each flight waypoint, [:math:`K`]
|
|
1974
1988
|
|
|
1975
1989
|
Returns
|
|
1976
1990
|
-------
|
|
@@ -2017,7 +2031,7 @@ def filter_altitude(
|
|
|
2017
2031
|
|
|
2018
2032
|
# Find cruise phase in filtered profile
|
|
2019
2033
|
seg_duration = segment_duration(time)
|
|
2020
|
-
seg_rocd = segment_rocd(seg_duration, altitude_filt)
|
|
2034
|
+
seg_rocd = segment_rocd(seg_duration, altitude_filt, air_temperature)
|
|
2021
2035
|
seg_phase = segment_phase(seg_rocd, altitude_filt)
|
|
2022
2036
|
is_cruise = seg_phase == FlightPhase.CRUISE
|
|
2023
2037
|
|
|
@@ -2153,7 +2167,9 @@ def segment_phase(
|
|
|
2153
2167
|
|
|
2154
2168
|
|
|
2155
2169
|
def segment_rocd(
|
|
2156
|
-
segment_duration: npt.NDArray[np.float64],
|
|
2170
|
+
segment_duration: npt.NDArray[np.float64],
|
|
2171
|
+
altitude_ft: npt.NDArray[np.float64],
|
|
2172
|
+
air_temperature: None | npt.NDArray[np.float64] = None,
|
|
2157
2173
|
) -> npt.NDArray[np.float64]:
|
|
2158
2174
|
"""Calculate the rate of climb and descent (ROCD).
|
|
2159
2175
|
|
|
@@ -2165,12 +2181,22 @@ def segment_rocd(
|
|
|
2165
2181
|
See output from :func:`segment_duration`.
|
|
2166
2182
|
altitude_ft: npt.NDArray[np.float64]
|
|
2167
2183
|
Altitude of each waypoint, [:math:`ft`]
|
|
2184
|
+
air_temperature: None | npt.NDArray[np.float64]
|
|
2185
|
+
Air temperature of each flight waypoint, [:math:`K`]
|
|
2168
2186
|
|
|
2169
2187
|
Returns
|
|
2170
2188
|
-------
|
|
2171
2189
|
npt.NDArray[np.float64]
|
|
2172
2190
|
Rate of climb and descent over segment, [:math:`ft min^{-1}`]
|
|
2173
2191
|
|
|
2192
|
+
Notes
|
|
2193
|
+
-----
|
|
2194
|
+
The hydrostatic equation will be used to estimate the ROCD if `air_temperature` is provided.
|
|
2195
|
+
This will improve the accuracy of the estimated ROCD with a temperature correction. The
|
|
2196
|
+
estimated ROCD with the temperature correction are expected to differ by up to +-5% compared to
|
|
2197
|
+
those without the correction. These differences are important when the ROCD estimates are used
|
|
2198
|
+
as inputs to aircraft performance models.
|
|
2199
|
+
|
|
2174
2200
|
See Also
|
|
2175
2201
|
--------
|
|
2176
2202
|
:func:`segment_duration`
|
|
@@ -2181,7 +2207,19 @@ def segment_rocd(
|
|
|
2181
2207
|
out[:-1] = np.diff(altitude_ft) / dt_min[:-1]
|
|
2182
2208
|
out[-1] = np.nan
|
|
2183
2209
|
|
|
2184
|
-
|
|
2210
|
+
if air_temperature is None:
|
|
2211
|
+
return out
|
|
2212
|
+
|
|
2213
|
+
else:
|
|
2214
|
+
altitude_m = units.ft_to_m(altitude_ft)
|
|
2215
|
+
T_isa = units.m_to_T_isa(altitude_m)
|
|
2216
|
+
|
|
2217
|
+
T_correction = np.empty_like(altitude_ft)
|
|
2218
|
+
T_correction[:-1] = (0.5 * (air_temperature[:-1] + air_temperature[1:])) / (
|
|
2219
|
+
0.5 * (T_isa[:-1] + T_isa[1:])
|
|
2220
|
+
)
|
|
2221
|
+
T_correction[-1] = np.nan
|
|
2222
|
+
return T_correction * out
|
|
2185
2223
|
|
|
2186
2224
|
|
|
2187
2225
|
def _resample_to_freq(df: pd.DataFrame, freq: str) -> tuple[pd.DataFrame, pd.DatetimeIndex]:
|