pycontrails 0.54.1__tar.gz → 0.54.3__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.54.1 → pycontrails-0.54.3}/.github/workflows/docs.yaml +17 -17
- {pycontrails-0.54.1 → pycontrails-0.54.3}/.github/workflows/doctest.yaml +12 -14
- {pycontrails-0.54.1 → pycontrails-0.54.3}/.github/workflows/release.yaml +29 -15
- {pycontrails-0.54.1 → pycontrails-0.54.3}/.github/workflows/test.yaml +13 -32
- {pycontrails-0.54.1 → pycontrails-0.54.3}/CHANGELOG.md +50 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/Makefile +2 -2
- {pycontrails-0.54.1/pycontrails.egg-info → pycontrails-0.54.3}/PKG-INFO +5 -4
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/_static/pycontrails.bib +106 -17
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/api.rst +1 -1
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/conf.py +2 -1
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/install.rst +31 -6
- pycontrails-0.54.3/docs/integrations/ACCF.ipynb +826 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/literature.rst +7 -2
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/ECMWF.ipynb +2 -2
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/_version.py +2 -2
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/aircraft_performance.py +24 -5
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/cache.py +14 -10
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/fleet.py +22 -12
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/flight.py +25 -15
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/met.py +34 -22
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/rgi_cython.c +155 -155
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/vector.py +38 -38
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/ecmwf/arco_era5.py +10 -5
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/ecmwf/common.py +7 -2
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/ecmwf/era5.py +9 -4
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/ecmwf/era5_model_level.py +9 -5
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/ecmwf/hres.py +12 -7
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/ecmwf/hres_model_level.py +10 -5
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/ecmwf/ifs.py +11 -6
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/ecmwf/variables.py +1 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/gfs/gfs.py +52 -34
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/gfs/variables.py +6 -2
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/landsat.py +5 -8
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/sentinel.py +7 -11
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/ext/bada.py +3 -2
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/ext/synthetic_flight.py +3 -2
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/accf.py +40 -19
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/apcemm/apcemm.py +2 -1
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocip/cocip.py +8 -4
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocipgrid/cocip_grid.py +25 -20
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/dry_advection.py +50 -54
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/humidity_scaling/humidity_scaling.py +12 -7
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/ps_model/__init__.py +2 -1
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/ps_model/ps_aircraft_params.py +3 -2
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/ps_model/ps_grid.py +187 -1
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/ps_model/ps_model.py +12 -10
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/ps_model/ps_operational_limits.py +39 -52
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/physics/geo.py +149 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/physics/jet.py +141 -11
- pycontrails-0.54.3/pycontrails/physics/static/iata-cargo-load-factors-20241115.csv +71 -0
- pycontrails-0.54.3/pycontrails/physics/static/iata-passenger-load-factors-20241115.csv +71 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3/pycontrails.egg-info}/PKG-INFO +5 -4
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails.egg-info/SOURCES.txt +2 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails.egg-info/requires.txt +6 -3
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pyproject.toml +10 -13
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_accf.py +15 -1
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_cocip.py +1 -1
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_cocip_grid.py +4 -15
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_flight.py +56 -5
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_geo.py +43 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_humidity_scaling.py +7 -2
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_ps_model.py +63 -2
- pycontrails-0.54.1/docs/integrations/ACCF.ipynb +0 -832
- {pycontrails-0.54.1 → pycontrails-0.54.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/.github/dependabot.yaml +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/.github/pull_request_template.md +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/.github/workflows/scorecard.yaml +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/.gitignore +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/.pre-commit-config.yaml +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/.zenodo.json +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/CONTRIBUTING.md +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/LICENSE +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/NOTICE +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/README.md +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/RELEASE.md +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/_static/css/style.css +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/_static/img/colab.png +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/_static/img/favicon.png +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/_static/img/logo-dark.png +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/_static/img/logo.png +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/changelog.rst +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/contributing.rst +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/develop.rst +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/flight.rst +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/index.rst +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/integrations/APCEMM.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/meteorology.rst +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/models.rst +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/ARCO-ERA5.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/AircraftPerformance.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/Cache.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/CoCiP.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/CoCiPGrid.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/Flight.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/GFS.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/GOES.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/ISSR.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/Landsat.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/Meteorology.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/SAC.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/Sentinel.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/advection.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/airports.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/data/.gitignore +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/data/flight-ap.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/data/flight-cocip.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/data/flight-fdr.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/data/flight-noisy.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/data/flight.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/data/iagos-flight-landsat.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/data/iagos-flight-sentinel.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/flightplan.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/model-levels.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/run-cocip-on-flight.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/run-cocip-with-fdr.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks/specific-humidity-interpolation.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/notebooks.rst +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/observations.rst +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/tutorials.rst +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/docs/utilities.rst +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/airports.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/coordinates.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/flightplan.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/fuel.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/interpolation.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/met_var.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/models.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/polygon.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/core/rgi_cython.pyx +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/_leo_utils/search.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/_leo_utils/static/bq_roi_query.sql +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/_leo_utils/vis.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/_met_utils/metsource.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/ecmwf/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/ecmwf/model_levels.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/ecmwf/static/model_level_dataframe_v20240418.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/gfs/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/goes.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/datalib/spire.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/ext/cirium.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/ext/empirical_grid.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/apcemm/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/apcemm/inputs.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/apcemm/static/apcemm_yaml_template.yaml +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/apcemm/utils.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocip/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocip/cocip_params.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocip/cocip_uncertainty.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocip/contrail_properties.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocip/output_formats.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocip/radiative_forcing.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocip/radiative_heating.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocip/unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocip/wake_vortex.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocip/wind_shear.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocipgrid/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/emissions/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/emissions/black_carbon.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/emissions/emissions.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/emissions/ffm2.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/emissions/static/default-engine-uids.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/emissions/static/edb-gaseous-v29b-engines.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/emissions/static/edb-nvpm-v29b-engines.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/humidity_scaling/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/issr.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/pcc.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/pcr.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/ps_model/static/ps-aircraft-params-20240524.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/ps_model/static/ps-synonym-list-20240524.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/sac.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/models/tau_cirrus.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/physics/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/physics/constants.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/physics/thermo.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/physics/units.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/py.typed +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/utils/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/utils/dependencies.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/utils/iteration.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/utils/json.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/utils/temp.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails/utils/types.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails.egg-info/dependency_links.txt +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/pycontrails.egg-info/top_level.txt +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/setup.cfg +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/setup.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/_deprecated.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/benchmark/cocip/Makefile +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/benchmark/cocip/README.md +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/benchmark/cocip/benchmark.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/benchmark/cocip/compare.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/benchmark/cocip/data.md +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/benchmark/cocip/output.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/benchmark/cocip/review.ipynb +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/benchmark/cocip-fortran/README.md +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/benchmark/north-atlantic-study/README.md +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/benchmark/north-atlantic-study/support.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/benchmark/north-atlantic-study/validate.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/fixtures/cocip-met.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/fixtures/cocip-met2.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/fixtures/ecmwf-met.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/fixtures/gfs-met.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/__init__.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/conftest.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/cocip-contrail-output.json +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/cocip-contrail-output2.json +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/cocip-flight-output.json +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/cocip-flight-output2.json +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/cocip-output-contrail-edges.json +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/cocip-output-flts-20190101-eu.pq +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/flight-cocip2.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/flight-meridian.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/flight-metadata.json +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/flight-spire-data-cleaning.pq +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/flight.csv +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/flt-wypts-20190101-eu.pq +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/met-20190101-eu.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/met-accf-pl.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/met-accf-sl.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/met-ecmwf-lnsp.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/met-ecmwf-ml.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/met-ecmwf-pl.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/met-ecmwf-sl.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/met-era5-cocip1.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/met-era5-cocip2.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/met-gfs.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/polygon-bug.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/rad-20190101-eu.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/rad-era5-cocip1.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/rad-era5-cocip2.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/static/rad-gfs.nc +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_airports.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_apcemm.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_cache.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_cocip_grid_parity.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_cocip_radiative_forcing.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_cocip_uncertainty.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_coordinates.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_datalib_metsource.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_dry_advection.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_dtypes.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_ecmwf.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_emissions.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_fleet.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_flightplan.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_fuel.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_gfs.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_goes.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_grid_to_netcdf.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_init.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_interpolation.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_leo.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_met.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_met_cache.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_models.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_pcc.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_polygons.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_sac_issr.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_spire.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_tau_cirrus.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_thermo_sac.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_units.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_utils.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_vector.py +0 -0
- {pycontrails-0.54.1 → pycontrails-0.54.3}/tests/unit/test_zarr.py +0 -0
|
@@ -14,10 +14,6 @@ on:
|
|
|
14
14
|
# Allows run manually from the Actions tab
|
|
15
15
|
workflow_dispatch:
|
|
16
16
|
|
|
17
|
-
# Global variables
|
|
18
|
-
env:
|
|
19
|
-
PYCONTRAILS_CACHE_DIR: '${{ github.workspace }}/.cache/pycontrails'
|
|
20
|
-
|
|
21
17
|
# disable all permissions at the top level
|
|
22
18
|
# https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs
|
|
23
19
|
permissions: {}
|
|
@@ -39,29 +35,33 @@ jobs:
|
|
|
39
35
|
with:
|
|
40
36
|
fetch-depth: 0
|
|
41
37
|
|
|
38
|
+
# Remove any .dev suffix from the version
|
|
39
|
+
# This is useful when running between tags from a workflow-dispatch
|
|
40
|
+
- name: Get the pycontrails version
|
|
41
|
+
id: get_version
|
|
42
|
+
run: echo "version=$(git describe --tags --abbrev=0)" >> $GITHUB_OUTPUT
|
|
43
|
+
|
|
42
44
|
- uses: actions/setup-python@v5
|
|
43
45
|
with:
|
|
44
|
-
python-version: '3.
|
|
45
|
-
cache:
|
|
46
|
+
python-version: '3.13'
|
|
47
|
+
cache: pip
|
|
46
48
|
cache-dependency-path: pyproject.toml
|
|
47
49
|
|
|
48
|
-
- name:
|
|
49
|
-
uses:
|
|
50
|
+
- name: Authenticate to Google Cloud
|
|
51
|
+
uses: google-github-actions/auth@v2
|
|
50
52
|
with:
|
|
51
|
-
credentials_json:
|
|
52
|
-
|
|
53
|
-
- name: 'Set up Cloud SDK'
|
|
54
|
-
uses: 'google-github-actions/setup-gcloud@v2'
|
|
53
|
+
credentials_json: ${{ secrets.GCP_SERVICE_ACCOUNT }}
|
|
55
54
|
|
|
56
55
|
- name: Install pycontrails (dev)
|
|
57
56
|
run: make dev-install
|
|
57
|
+
env:
|
|
58
|
+
SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYCONTRAILS: ${{ steps.get_version.outputs.version }}
|
|
58
59
|
|
|
59
|
-
|
|
60
|
+
# https://cloud.google.com/artifact-registry/docs/python/authentication
|
|
61
|
+
- name: Install latest pycontrails-bada
|
|
60
62
|
run: |
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
chmod 600 ~/.ssh/id_rsa
|
|
64
|
-
pip install "pycontrails-bada @ git+ssh://git@github.com/contrailcirrus/pycontrails-bada.git"
|
|
63
|
+
pip install keyring keyrings.google-artifactregistry-auth
|
|
64
|
+
pip install -U -i https://us-central1-python.pkg.dev/contrails-301217/pycontrails/simple pycontrails-bada
|
|
65
65
|
|
|
66
66
|
# TODO: Execute notebooks for docs
|
|
67
67
|
# - name: Execute notebooks
|
|
@@ -41,17 +41,17 @@ jobs:
|
|
|
41
41
|
|
|
42
42
|
- uses: actions/setup-python@v5
|
|
43
43
|
with:
|
|
44
|
-
python-version: '3.
|
|
45
|
-
cache:
|
|
44
|
+
python-version: '3.13'
|
|
45
|
+
cache: pip
|
|
46
46
|
cache-dependency-path: pyproject.toml
|
|
47
47
|
|
|
48
|
-
- name:
|
|
49
|
-
uses:
|
|
48
|
+
- name: Authenticate to Google Cloud
|
|
49
|
+
uses: google-github-actions/auth@v2
|
|
50
50
|
with:
|
|
51
|
-
credentials_json:
|
|
51
|
+
credentials_json: ${{ secrets.GCP_SERVICE_ACCOUNT }}
|
|
52
52
|
|
|
53
|
-
- name:
|
|
54
|
-
uses:
|
|
53
|
+
- name: Set up Cloud SDK
|
|
54
|
+
uses: google-github-actions/setup-gcloud@v2
|
|
55
55
|
|
|
56
56
|
# put bada files in the default location
|
|
57
57
|
- name: BADA files
|
|
@@ -69,16 +69,14 @@ jobs:
|
|
|
69
69
|
- name: Install pycontrails (dev)
|
|
70
70
|
run: make dev-install
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
# https://cloud.google.com/artifact-registry/docs/python/authentication
|
|
73
|
+
- name: Install pycontrails-bada
|
|
73
74
|
run: |
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
chmod 600 ~/.ssh/id_rsa
|
|
77
|
-
pip install "pycontrails-bada @ git+ssh://git@github.com/contrailcirrus/pycontrails-bada.git"
|
|
75
|
+
pip install keyring keyrings.google-artifactregistry-auth
|
|
76
|
+
pip install -U -i https://us-central1-python.pkg.dev/contrails-301217/pycontrails/simple pycontrails-bada
|
|
78
77
|
|
|
79
78
|
- name: Test notebooks
|
|
80
|
-
run:
|
|
81
|
-
make nb-test
|
|
79
|
+
run: make nb-test
|
|
82
80
|
|
|
83
81
|
# The doctests require numpy 2.0 or higher
|
|
84
82
|
- name: Test docstrings
|
|
@@ -25,7 +25,7 @@ jobs:
|
|
|
25
25
|
- name: Check main test status
|
|
26
26
|
run: make main-test-status
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
build-wheels:
|
|
29
29
|
name: Build wheels on ${{ matrix.os }}
|
|
30
30
|
runs-on: ${{ matrix.os }}
|
|
31
31
|
strategy:
|
|
@@ -46,7 +46,7 @@ jobs:
|
|
|
46
46
|
CIBW_SKIP: '*-win32 *-manylinux_i686 *-musllinux*'
|
|
47
47
|
CIBW_BUILD_VERBOSITY: 3
|
|
48
48
|
CIBW_ARCHS_MACOS: x86_64 arm64
|
|
49
|
-
CIBW_TEST_SKIP: '*-macosx_arm64
|
|
49
|
+
CIBW_TEST_SKIP: '*-macosx_arm64'
|
|
50
50
|
# Completely isolate tests to prevent cibuildwheel from importing the
|
|
51
51
|
# source instead of the wheel. This happens when tests/__init__.py is read.
|
|
52
52
|
CIBW_TEST_EXTRAS: "complete,dev"
|
|
@@ -65,7 +65,7 @@ jobs:
|
|
|
65
65
|
name: wheels-${{ matrix.os }}-artifact
|
|
66
66
|
path: ./wheelhouse/*.whl
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
build-sdist:
|
|
69
69
|
name: Build source distribution
|
|
70
70
|
runs-on: ubuntu-latest
|
|
71
71
|
steps:
|
|
@@ -82,9 +82,21 @@ jobs:
|
|
|
82
82
|
name: sdist-artifact
|
|
83
83
|
path: dist/*.tar.gz
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
# Publish using PyPI trusted publishing
|
|
86
|
+
# https://docs.pypi.org/trusted-publishers/using-a-publisher/
|
|
87
|
+
# https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/
|
|
88
|
+
publish-to-testpypi:
|
|
89
|
+
needs:
|
|
90
|
+
- build-wheels
|
|
91
|
+
- build-sdist
|
|
87
92
|
runs-on: ubuntu-latest
|
|
93
|
+
|
|
94
|
+
environment:
|
|
95
|
+
name: testpypi
|
|
96
|
+
url: https://test.pypi.org/p/pycontrails
|
|
97
|
+
permissions:
|
|
98
|
+
id-token: write
|
|
99
|
+
|
|
88
100
|
steps:
|
|
89
101
|
- name: Download artifacts
|
|
90
102
|
uses: actions/download-artifact@v4
|
|
@@ -101,16 +113,23 @@ jobs:
|
|
|
101
113
|
- name: Publish distribution 📦 to Test PyPI
|
|
102
114
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
103
115
|
with:
|
|
104
|
-
user: __token__
|
|
105
|
-
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
|
|
106
116
|
repository-url: https://test.pypi.org/legacy/
|
|
107
117
|
verbose: true
|
|
108
|
-
verify-metadata: true
|
|
109
118
|
|
|
110
|
-
|
|
119
|
+
publish-to-pypi:
|
|
111
120
|
if: ${{ github.event_name == 'release'}}
|
|
112
|
-
needs:
|
|
121
|
+
needs:
|
|
122
|
+
- build-wheels
|
|
123
|
+
- build-sdist
|
|
124
|
+
- check-main-test-status
|
|
113
125
|
runs-on: ubuntu-latest
|
|
126
|
+
|
|
127
|
+
environment:
|
|
128
|
+
name: pypi
|
|
129
|
+
url: https://pypi.org/p/pycontrails
|
|
130
|
+
permissions:
|
|
131
|
+
id-token: write
|
|
132
|
+
|
|
114
133
|
steps:
|
|
115
134
|
- name: Download artifacts
|
|
116
135
|
uses: actions/download-artifact@v4
|
|
@@ -126,8 +145,3 @@ jobs:
|
|
|
126
145
|
|
|
127
146
|
- name: Publish distribution 📦 to PyPI
|
|
128
147
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
129
|
-
with:
|
|
130
|
-
user: __token__
|
|
131
|
-
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
132
|
-
verbose: true
|
|
133
|
-
verify-metadata: true
|
|
@@ -38,8 +38,7 @@ jobs:
|
|
|
38
38
|
fail-fast: false
|
|
39
39
|
matrix:
|
|
40
40
|
os: [ubuntu-latest, windows-latest]
|
|
41
|
-
|
|
42
|
-
pyversion: ['3.10', '3.11', '3.12']
|
|
41
|
+
pyversion: ['3.10', '3.11', '3.12', '3.13']
|
|
43
42
|
runs-on: ${{ matrix.os }}
|
|
44
43
|
|
|
45
44
|
steps:
|
|
@@ -50,11 +49,10 @@ jobs:
|
|
|
50
49
|
- uses: actions/setup-python@v5
|
|
51
50
|
with:
|
|
52
51
|
python-version: ${{ matrix.pyversion }}
|
|
53
|
-
cache:
|
|
52
|
+
cache: pip
|
|
54
53
|
cache-dependency-path: pyproject.toml
|
|
55
54
|
|
|
56
55
|
- name: Cache mypy and pytest
|
|
57
|
-
id: cache-test
|
|
58
56
|
uses: actions/cache@v4
|
|
59
57
|
with:
|
|
60
58
|
# Note the caches are specific to branches, so we don't need to specify here
|
|
@@ -64,13 +62,13 @@ jobs:
|
|
|
64
62
|
${{ github.workspace }}/.mypy_cache
|
|
65
63
|
${{ github.workspace }}/.pytest_cache
|
|
66
64
|
|
|
67
|
-
- name:
|
|
68
|
-
uses:
|
|
65
|
+
- name: Authenticate to Google Cloud
|
|
66
|
+
uses: google-github-actions/auth@v2
|
|
69
67
|
with:
|
|
70
|
-
credentials_json:
|
|
68
|
+
credentials_json: ${{ secrets.GCP_SERVICE_ACCOUNT }}
|
|
71
69
|
|
|
72
|
-
- name:
|
|
73
|
-
uses:
|
|
70
|
+
- name: Set up Cloud SDK
|
|
71
|
+
uses: google-github-actions/setup-gcloud@v2
|
|
74
72
|
|
|
75
73
|
# download BADA files for testing
|
|
76
74
|
- name: BADA files
|
|
@@ -82,33 +80,16 @@ jobs:
|
|
|
82
80
|
|
|
83
81
|
- name: Install make - windows
|
|
84
82
|
if: ${{ matrix.os == 'windows-latest' }}
|
|
85
|
-
run:
|
|
86
|
-
choco install make
|
|
83
|
+
run: choco install make
|
|
87
84
|
|
|
88
85
|
- name: Install pycontrails (dev)
|
|
89
|
-
run:
|
|
90
|
-
make dev-install
|
|
86
|
+
run: make dev-install
|
|
91
87
|
|
|
92
|
-
#
|
|
93
|
-
|
|
94
|
-
# Instead don't pre-create the known_hosts file
|
|
95
|
-
- name: Install pycontrails-bada - windows
|
|
96
|
-
if: ${{ matrix.os == 'windows-latest' }}
|
|
97
|
-
run: |
|
|
98
|
-
mkdir -p $HOME/.ssh/
|
|
99
|
-
gcloud secrets versions access latest --secret="contrails-301217-github-ssh-key" --out-file="$HOME/.ssh/id_rsa"
|
|
100
|
-
pip install "pycontrails-bada @ git+ssh://git@github.com/contrailcirrus/pycontrails-bada.git"
|
|
101
|
-
env:
|
|
102
|
-
GIT_SSH_COMMAND: "ssh -o StrictHostKeyChecking=no"
|
|
103
|
-
|
|
104
|
-
- name: Install pycontrails-bada - linux
|
|
105
|
-
if: ${{ matrix.os == 'ubuntu-latest' }}
|
|
88
|
+
# https://cloud.google.com/artifact-registry/docs/python/authentication
|
|
89
|
+
- name: Install pycontrails-bada
|
|
106
90
|
run: |
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
gcloud secrets versions access latest --secret="contrails-301217-github-ssh-key" > $HOME/.ssh/id_rsa
|
|
110
|
-
chmod 600 $HOME/.ssh/id_rsa
|
|
111
|
-
pip install "pycontrails-bada @ git+ssh://git@github.com/contrailcirrus/pycontrails-bada.git"
|
|
91
|
+
pip install keyring keyrings.google-artifactregistry-auth
|
|
92
|
+
pip install -U -i https://us-central1-python.pkg.dev/contrails-301217/pycontrails/simple pycontrails-bada
|
|
112
93
|
|
|
113
94
|
- name: Show environment
|
|
114
95
|
run: |
|
|
@@ -1,5 +1,55 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.54.3
|
|
4
|
+
|
|
5
|
+
### Breaking changes
|
|
6
|
+
|
|
7
|
+
- Update the default load factor from 70% to 83% to be consistent with historical data. This is used whenever an aircraft performance model is run without a specified load factor.
|
|
8
|
+
- By default, the `CocipGrid.create_source` static method will return latitude values from -90 to 90 degrees. This change is motivated by the new advection scheme used near the poles. Previously, this method returned latitude values from -80 to 80 degrees.
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
- Create new function `ps_grid.ps_nominal_optimize_mach` which computes the optimal mach number given a set of operating conditions.
|
|
13
|
+
- Add a new `jet.aircraft_load_factor` function to estimate aircraft (passenger/cargo) load factor based on historical monthly and regional load factors provided by IATA. This improves upon the default load factor assumption. Historical load factor databases will be continuously updated as new data is released.
|
|
14
|
+
- Use a 2D Cartesian-like plane to advect particles near the poles (>80° in latitude) to avoid numerical instabilities and singularities caused by convergence of meridians. This new advection scheme is used for contrail advection in the `Cocip`, `CocipGrid`, and `DryAdvection` models. See the `geo.advect_horizontal` function for more details.
|
|
15
|
+
|
|
16
|
+
### Fixes
|
|
17
|
+
|
|
18
|
+
- Ensure the fuel type is preserved when calling `Flight.resample_and_fill`.
|
|
19
|
+
- Update the CLIMaCCF dependency to pull the head of the main branch in [CLIMaCCF](https://github.com/dlr-pa/climaccf). Update the installation instructions.
|
|
20
|
+
- Update the `ACCFParams.forecast_step` to None, which allows CLIMaCCF to automatically determine the forecast step based on the `met` data.
|
|
21
|
+
- Update the `ACCF` NOx parameter for the latest CLIMaCCF version.
|
|
22
|
+
- Ensure a custom "horizontal_resolution" param passed into `ACCF` is not overwritten.
|
|
23
|
+
- Remove duplicated variable in `ACCF.met_variables`.
|
|
24
|
+
- Allow the `ACCF` model to accept relative humidity as a percentage or as a proportion.
|
|
25
|
+
- Include `ecmwf.RelativeHumidity` in `ACCF.met_variables` so that `ERA5(..., variables=ACCF.met_variables)` no longer raises an error.
|
|
26
|
+
|
|
27
|
+
### Internals
|
|
28
|
+
|
|
29
|
+
- Improve computation of mach limits to accept vectorized input/output.
|
|
30
|
+
- Test against python 3.13 in the GitHub Actions CI. Use python 3.13 in the docs and doctest workflows.
|
|
31
|
+
- Publish to PyPI using [trusted publishing](https://docs.pypi.org/trusted-publishers/using-a-publisher/).
|
|
32
|
+
- Update `pycontrails-bada` installation instructions. Install `pycontrails-bada` from GCP artifact repository in the test workflow.
|
|
33
|
+
- Floor the pycontrails version when running the docs workflow. This ensures that the [hosted documentation](https://py.contrails.org) references the last stable release.
|
|
34
|
+
- Update literature and bibliography in the documentation.
|
|
35
|
+
- Move the `engine_deterioration_factor` from `PSFlightParams` to `AircraftPerformanceParams` so it can be used by both the PS model and BADA.
|
|
36
|
+
- Include `engine_deterioration_factor` in `AircraftPerformanceGridParams`.
|
|
37
|
+
|
|
38
|
+
## v0.54.2
|
|
39
|
+
|
|
40
|
+
### Features
|
|
41
|
+
|
|
42
|
+
- Add `cache_download` parameter to the `GFSForecast` interface. When set to `True`, downloaded grib data is cached locally. This is consistent with the behavior of the `ERA5ModelLevel` and `HRESModelLevel` interfaces.
|
|
43
|
+
|
|
44
|
+
### Fixes
|
|
45
|
+
|
|
46
|
+
- Update GFS variable names "uswrf" -> "suswrf" and "ulwrf" -> "sulwrf". This accommodates a breaking change introduced in [eccodes 2.38](https://confluence.ecmwf.int/display/MTG2US/Changes+in+ecCodes+version+2.38.0+compared+to+the+previous+version#ChangesinecCodesversion2.38.0comparedtothepreviousversion-Changedshortnames).
|
|
47
|
+
|
|
48
|
+
### Internals
|
|
49
|
+
|
|
50
|
+
- Remove `overrides` dependency. Require `typing-extensions` for python < 3.12.
|
|
51
|
+
- Upgrade some type hints for more modern python language features.
|
|
52
|
+
|
|
3
53
|
## v0.54.1
|
|
4
54
|
|
|
5
55
|
### Features
|
|
@@ -24,8 +24,8 @@ pip-install:
|
|
|
24
24
|
python -m pip install -U pip wheel
|
|
25
25
|
python -m pip install -e ".[complete]"
|
|
26
26
|
|
|
27
|
-
#
|
|
28
|
-
#
|
|
27
|
+
# open3d wheels not available for latest python versions; install manually
|
|
28
|
+
# pip install -e ".[open3d]"
|
|
29
29
|
|
|
30
30
|
# development installation
|
|
31
31
|
dev-install: pip-install
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pycontrails
|
|
3
|
-
Version: 0.54.
|
|
3
|
+
Version: 0.54.3
|
|
4
4
|
Summary: Python library for modeling aviation climate impacts
|
|
5
5
|
Author-email: Breakthrough Energy <py@contrails.org>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -29,9 +29,9 @@ License-File: LICENSE
|
|
|
29
29
|
License-File: NOTICE
|
|
30
30
|
Requires-Dist: dask>=2022.3
|
|
31
31
|
Requires-Dist: numpy>=1.22
|
|
32
|
-
Requires-Dist: overrides>=6.1
|
|
33
32
|
Requires-Dist: pandas>=2.2
|
|
34
33
|
Requires-Dist: scipy>=1.10
|
|
34
|
+
Requires-Dist: typing-extensions>=4.5; python_version < "3.12"
|
|
35
35
|
Requires-Dist: xarray>=2022.3
|
|
36
36
|
Provides-Extra: complete
|
|
37
37
|
Requires-Dist: pycontrails[ecmwf,gcp,gfs,jupyter,pyproj,sat,vis,zarr]; extra == "complete"
|
|
@@ -67,7 +67,7 @@ Requires-Dist: sphinxext.opengraph>=0.8; extra == "docs"
|
|
|
67
67
|
Provides-Extra: ecmwf
|
|
68
68
|
Requires-Dist: cdsapi>=0.4; extra == "ecmwf"
|
|
69
69
|
Requires-Dist: cfgrib>=0.9; extra == "ecmwf"
|
|
70
|
-
Requires-Dist: eccodes>=
|
|
70
|
+
Requires-Dist: eccodes>=2.38; extra == "ecmwf"
|
|
71
71
|
Requires-Dist: ecmwf-api-client>=1.6; extra == "ecmwf"
|
|
72
72
|
Requires-Dist: netcdf4>=1.6.1; extra == "ecmwf"
|
|
73
73
|
Requires-Dist: platformdirs>=3.0; extra == "ecmwf"
|
|
@@ -79,7 +79,8 @@ Requires-Dist: tqdm>=4.61; extra == "gcp"
|
|
|
79
79
|
Provides-Extra: gfs
|
|
80
80
|
Requires-Dist: boto3>=1.20; extra == "gfs"
|
|
81
81
|
Requires-Dist: cfgrib>=0.9; extra == "gfs"
|
|
82
|
-
Requires-Dist: eccodes>=
|
|
82
|
+
Requires-Dist: eccodes>=2.38; extra == "gfs"
|
|
83
|
+
Requires-Dist: netcdf4>=1.6.1; extra == "gfs"
|
|
83
84
|
Requires-Dist: platformdirs>=3.0; extra == "gfs"
|
|
84
85
|
Requires-Dist: tqdm>=4.61; extra == "gfs"
|
|
85
86
|
Provides-Extra: jupyter
|
|
@@ -197,6 +197,18 @@
|
|
|
197
197
|
langid = {english}
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
+
@misc{engbergForecastingContrailClimate2024,
|
|
201
|
+
title = {Forecasting Contrail Climate Forcing for Flight Planning and Air Traffic Management Applications: {{The CocipGrid}} Model in Pycontrails 0.51.0},
|
|
202
|
+
shorttitle = {Forecasting Contrail Climate Forcing for Flight Planning and Air Traffic Management Applications},
|
|
203
|
+
author = {Engberg, Zebediah and Teoh, Roger and Dean, Thomas and Stettler, Marc E. J. and Shapiro, Marc L.},
|
|
204
|
+
year = {2024},
|
|
205
|
+
month = jun,
|
|
206
|
+
doi = {10.5194/egusphere-2024-1361},
|
|
207
|
+
urldate = {2024-07-10},
|
|
208
|
+
abstract = {Abstract. The global annual mean contrail net radiative forcing may exceed that of aviation's cumulative CO2 emissions by at least two-fold. As only around 2--3 \% of all flights are likely responsible for 80 \% of the global annual contrail climate forcing, re-routing these flights could reduce the formation of strongly warming contrails. Here, we develop a contrail forecasting model that produces global predictions of persistent contrail formation and their associated climate forcing. This model builds on the methods of the existing contrail cirrus prediction model (CoCiP) to efficiently evaluate infinitesimal contrail segments initialized at each point in a regular 4D spatiotemporal grid until their end-of-life. Outputs are reported in a concise meteorology data format that integrates with existing flight planning and air traffic management workflows. This ``grid-based'' CoCiP is used to conduct a global contrail simulation for 2019 to compare with previous work and analyze spatial trends related to strongly warming/cooling contrails. We explore two approaches for integrating contrail forecasts into existing flight planning and air traffic management systems: (i) using contrail forcing as an additional cost parameter within a flight trajectory optimizer; or (ii) constructing polygons of airspace volumes with strongly-warming contrails to avoid. We demonstrate a probabilistic formulation of the grid-based model by running a Monte Carlo simulation with ensemble meteorology to mask grid cells with significant uncertainties in the simulated contrail climate forcing. This study establishes a working standard for incorporating contrail mitigation within existing flight planning and management workflows and demonstrates how forecasting uncertainty can be incorporated to minimize unintended consequences associated with increased CO2 emissions of avoidance.},
|
|
209
|
+
copyright = {https://creativecommons.org/licenses/by/4.0/}
|
|
210
|
+
}
|
|
211
|
+
|
|
200
212
|
@misc{eurocontrolUSERMANUALBASE2010,
|
|
201
213
|
title = {{{USER MANUAL FOR THE BASE OF Aircraft DATA}} ({{BADA}}) {{REVISION}} 3.8},
|
|
202
214
|
author = {Eurocontrol},
|
|
@@ -209,12 +221,21 @@
|
|
|
209
221
|
langid = {english}
|
|
210
222
|
}
|
|
211
223
|
|
|
212
|
-
@
|
|
213
|
-
title = {
|
|
214
|
-
|
|
215
|
-
author = {
|
|
216
|
-
year = {
|
|
217
|
-
|
|
224
|
+
@article{friasFeasibilityContrailAvoidance2024,
|
|
225
|
+
title = {Feasibility of Contrail Avoidance in a Commercial Flight Planning System: An Operational Analysis},
|
|
226
|
+
shorttitle = {Feasibility of Contrail Avoidance in a Commercial Flight Planning System},
|
|
227
|
+
author = {Frias, A. Martin and Shapiro, M. L. and Engberg, Z. and Zopp, R. and Soler, M. and Stettler, M. E. J.},
|
|
228
|
+
year = {2024},
|
|
229
|
+
month = mar,
|
|
230
|
+
journal = {Environmental Research: Infrastructure and Sustainability},
|
|
231
|
+
volume = {4},
|
|
232
|
+
number = {1},
|
|
233
|
+
pages = {015013},
|
|
234
|
+
publisher = {IOP Publishing},
|
|
235
|
+
issn = {2634-4505},
|
|
236
|
+
doi = {10.1088/2634-4505/ad310c},
|
|
237
|
+
urldate = {2024-05-19},
|
|
238
|
+
abstract = {Aircraft condensation trails, also known as contrails, contribute a substantial portion of aviation's overall climate footprint. Contrail impacts can be reduced through smart flight planning that avoids contrail-forming regions of the atmosphere. While previous studies have explored the operational impacts of contrail avoidance in simulated environments, this paper aims to characterize the feasibility and cost of contrail avoidance precisely within a commercial flight planning system. This study leverages the commercial Flightkeys 5D algorithm, developed by Flightkeys GmbH, with a prototypical contrail forecast model based on the Contrail Cirrus Prediction (CoCiP) model to simulate contrail avoidance on 49 411 flights during the first two weeks of June 2023, and 35 429 flights during the first two weeks of January 2024. The utilization of a commercial flight planning system enables high-accuracy estimates of additional cost and fuel investments by operators to achieve estimated reductions in contrail-energy forcing and overall flight global warming potential. The results show that navigational contrail avoidance will require minimal additional cost (0.08\%) and fuel (0.11\%) investments to achieve notable reductions in contrail climate forcing (-73.0\%). This simulation provides evidence that contrail mitigation entails very low operational risks, even regarding fuel. This study aims to serve as an incentive for operators and air traffic controllers to initiate contrail mitigation testing as soon as possible and begin reducing aviation's non- emissions.},
|
|
218
239
|
langid = {english}
|
|
219
240
|
}
|
|
220
241
|
|
|
@@ -235,19 +256,21 @@
|
|
|
235
256
|
langid = {english}
|
|
236
257
|
}
|
|
237
258
|
|
|
238
|
-
@
|
|
259
|
+
@article{geraedtsScalableSystemMeasure2024,
|
|
239
260
|
title = {A Scalable System to Measure Contrail Formation on a Per-Flight Basis},
|
|
240
261
|
author = {Geraedts, Scott and Brand, Erica and Dean, Thomas R. and Eastham, Sebastian and Elkin, Carl and Engberg, Zebediah and Hager, Ulrike and Langmore, Ian and McCloskey, Kevin and Ng, Joe Yue-Hei and Platt, John C. and Sankar, Tharun and Sarna, Aaron and Shapiro, Marc and Goyal, Nita},
|
|
241
|
-
year = {
|
|
242
|
-
month =
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
262
|
+
year = {2024},
|
|
263
|
+
month = jan,
|
|
264
|
+
journal = {Environmental Research Communications},
|
|
265
|
+
volume = {6},
|
|
266
|
+
number = {1},
|
|
267
|
+
pages = {015008},
|
|
268
|
+
publisher = {IOP Publishing},
|
|
269
|
+
issn = {2515-7620},
|
|
270
|
+
doi = {10.1088/2515-7620/ad11ab},
|
|
271
|
+
urldate = {2024-04-12},
|
|
272
|
+
abstract = {Persistent contrails make up a large fraction of aviation's contribution to global warming. We describe a scalable, automated detection and matching (ADM) system to determine from satellite data whether a flight has made a persistent contrail. The ADM system compares flight segments to contrails detected by a computer vision algorithm running on images from the GOES-16 Advanced Baseline Imager. We develop a flight matching algorithm and use it to label each flight segment as a match or non-match. We perform this analysis on 1.6 million flight segments. The result is an analysis of which flights make persistent contrails several orders of magnitude larger than any previous work. We assess the agreement between our labels and available prediction models based on weather forecasts. Shifting air traffic to avoid regions of contrail formation has been proposed as a possible mitigation with the potential for very low cost/ton-CO2e. Our findings suggest that imperfections in these prediction models increase this cost/ton by about an order of magnitude. Contrail avoidance is a cost-effective climate change mitigation even with this factor taken into account, but our results quantify the need for more accurate contrail prediction methods and establish a benchmark for future development.},
|
|
273
|
+
langid = {english}
|
|
251
274
|
}
|
|
252
275
|
|
|
253
276
|
@article{holzapfelProbabilisticTwoPhaseWake2003,
|
|
@@ -338,6 +361,21 @@
|
|
|
338
361
|
langid = {english}
|
|
339
362
|
}
|
|
340
363
|
|
|
364
|
+
@article{lowGroundbasedContrailObservations2024,
|
|
365
|
+
title = {Ground-Based Contrail Observations: Comparisons with Flight Telemetry and Contrail Model Estimates},
|
|
366
|
+
shorttitle = {Ground-Based Contrail Observations},
|
|
367
|
+
author = {Low, Jade and Teoh, Roger and Ponsonby, Joel and Gryspeerdt, Edward and Shapiro, Marc and Stettler, Marc},
|
|
368
|
+
year = {2024},
|
|
369
|
+
month = jun,
|
|
370
|
+
journal = {EGUsphere},
|
|
371
|
+
pages = {1--25},
|
|
372
|
+
publisher = {Copernicus GmbH},
|
|
373
|
+
doi = {10.5194/egusphere-2024-1458},
|
|
374
|
+
urldate = {2024-07-09},
|
|
375
|
+
abstract = {{$<$}p{$><$}strong class="journal-contentHeaderColor"{$>$}Abstract.{$<$}/strong{$>$} Observations of contrail are vital for improving understanding of contrail formation and lifecycle, informing models, and assessing contrail mitigation strategies. Ground-based cameras offer a cost-effective means to observe the formation and evolution of young contrails and can be used to assess the accuracy of existing models. Here, we develop a methodology to track and analyse contrails from ground-based cameras, comparing these observations against simulations from the contrail cirrus prediction model (CoCiP) with actual flight trajectories. The ground-based contrail observations consist of 14 h of video footage recorded on five different days over Central London, capturing a total of 1,619 flight waypoints from 283 unique flights. Our results suggest that the best agreement between the observed and simulated contrail formation occurs at around 35,000\–40,000 feet and at temperatures at least 10 K below the Schmidt-Appleman Criterion threshold temperature ({$<$}em{$>$}T{$<$}/em{$>$}\textsubscript{SAC}). Conversely, the largest discrepancies occurred when contrails are formed below 30,000 feet and at temperatures within 2.5 K of {$<$}em{$>$}T{$<$}/em{$>$}\textsubscript{SAC}. On average, the simulated contrail width is 17.5 \% smaller than the observed geometric width. This discrepancy could be caused by the underestimation of sub-grid scale wind shear and turbulent mixing in the simulation, and model representation of the contrail cross-sectional shape. Overall, these findings demonstrate the capability of ground-based cameras to inform weather and contrail model development when combined with flight telemetry.{$<$}/p{$>$}},
|
|
376
|
+
langid = {english}
|
|
377
|
+
}
|
|
378
|
+
|
|
341
379
|
@inproceedings{mccloskeyHumanlabeledLandsatContrails2021,
|
|
342
380
|
title = {A Human-Labeled {{Landsat}} Contrails Dataset},
|
|
343
381
|
booktitle = {{{ICML}} 2021 {{Workshop}}: {{Tackling Climate Change}} with {{Machine Learning}}},
|
|
@@ -390,6 +428,23 @@
|
|
|
390
428
|
langid = {english}
|
|
391
429
|
}
|
|
392
430
|
|
|
431
|
+
@article{plattEffectUncertaintyHumidity2024,
|
|
432
|
+
title = {The Effect of Uncertainty in Humidity and Model Parameters on the Prediction of Contrail Energy Forcing},
|
|
433
|
+
author = {Platt, John C. and Shapiro, Marc L. and Engberg, Zebediah and McCloskey, Kevin and Geraedts, Scott and Sankar, Tharun and Stettler, Marc E. J. and Teoh, Roger and Schumann, Ulrich and Rohs, Susanne and Brand, Erica and Arsdale, Christopher Van},
|
|
434
|
+
year = {2024},
|
|
435
|
+
month = sep,
|
|
436
|
+
journal = {Environmental Research Communications},
|
|
437
|
+
volume = {6},
|
|
438
|
+
number = {9},
|
|
439
|
+
pages = {095015},
|
|
440
|
+
publisher = {IOP Publishing},
|
|
441
|
+
issn = {2515-7620},
|
|
442
|
+
doi = {10.1088/2515-7620/ad6ee5},
|
|
443
|
+
urldate = {2024-09-17},
|
|
444
|
+
abstract = {Previous work has shown that while the net effect of aircraft condensation trails (contrails) on the climate is warming, the exact magnitude of the energy forcing per meter of contrail remains uncertain. In this paper, we explore the skill of a Lagrangian contrail model (CoCiP) in identifying flight segments with high contrail energy forcing. We find that skill is greater than climatological predictions alone, even accounting for uncertainty in weather fields and model parameters. We estimate the uncertainty due to humidity by using the ensemble ERA5 weather reanalysis from the European Centre for Medium-Range Weather Forecasts (ECMWF) as Monte Carlo inputs to CoCiP. We unbias and correct under-dispersion on the ERA5 humidity data by forcing a match to the distribution of in situ humidity measurements taken at cruising altitude. We take CoCiP energy forcing estimates calculated using one of the ensemble members as a proxy for ground truth, and report the skill of CoCiP in identifying segments with large positive proxy energy forcing. We further estimate the uncertainty due to model parameters in CoCiP by performing Monte Carlo simulations with CoCiP model parameters drawn from uncertainty distributions consistent with the literature. When CoCiP outputs are averaged over seasons to form climatological predictions, the skill in predicting the proxy is 44\%, while the skill of per-flight CoCiP outputs is 84\%. If these results carry over to the true (unknown) contrail EF, they indicate that per-flight energy forcing predictions can reduce the number of potential contrail avoidance route adjustments by 2x, hence reducing both the cost and fuel impact of contrail avoidance.},
|
|
445
|
+
langid = {english}
|
|
446
|
+
}
|
|
447
|
+
|
|
393
448
|
@article{pollEstimationMethodFuel2021,
|
|
394
449
|
title = {An Estimation Method for the Fuel Burn and Other Performance Characteristics of Civil Transport Aircraft in the Cruise. {{Part}} 1 Fundamental Quantities and Governing Relations for a General Atmosphere},
|
|
395
450
|
author = {Poll, D.I.A. and Schumann, U.},
|
|
@@ -838,6 +893,23 @@
|
|
|
838
893
|
langid = {english}
|
|
839
894
|
}
|
|
840
895
|
|
|
896
|
+
@article{teohGlobalAviationContrail2024,
|
|
897
|
+
title = {Global Aviation Contrail Climate Effects from 2019 to 2021},
|
|
898
|
+
author = {Teoh, Roger and Engberg, Zebediah and Schumann, Ulrich and Voigt, Christiane and Shapiro, Marc and Rohs, Susanne and Stettler, Marc E. J.},
|
|
899
|
+
year = {2024},
|
|
900
|
+
month = may,
|
|
901
|
+
journal = {Atmospheric Chemistry and Physics},
|
|
902
|
+
volume = {24},
|
|
903
|
+
number = {10},
|
|
904
|
+
pages = {6071--6093},
|
|
905
|
+
publisher = {Copernicus GmbH},
|
|
906
|
+
issn = {1680-7316},
|
|
907
|
+
doi = {10.5194/acp-24-6071-2024},
|
|
908
|
+
urldate = {2024-05-28},
|
|
909
|
+
abstract = {The current best-estimate of the global annual mean radiative forcing (RF) attributable to contrail cirrus is thought to be 3 times larger than the RF from aviation's cumulative CO2 emissions. Here, we simulate the global contrail RF for 2019--2021 using reanalysis weather data and improved engine emission estimates along actual flight trajectories derived from Automatic Dependent Surveillance--Broadcast telemetry. Our 2019 global annual mean contrail net RF (62.1 mW m-2) is 44 \% lower than current best estimates for 2018 (111 [33, 189] mW m-2, 95 \% confidence interval). Regionally, the contrail net RF is largest over Europe (876 mW m-2) and the USA (414 mW m-2), while the RF values over East Asia (64 mW m-2) and China (62 mW m-2) are close to the global average, because fewer flights in these regions form persistent contrails resulting from lower cruise altitudes and limited ice supersaturated regions in the subtropics due to the Hadley Circulation. Globally, COVID-19 reduced the flight distance flown and contrail net RF in 2020 (-43 \% and -56 \%, respectively, relative to 2019) and 2021 (-31 \% and -49 \%, respectively) with significant regional variations. Around 14 \% of all flights in 2019 formed a contrail with a net warming effect, yet only 2 \% of all flights caused 80 \% of the annual contrail energy forcing. The spatiotemporal patterns of the most strongly warming and cooling contrail segments can be attributed to flight scheduling, engine particle number emissions, tropopause height, and background radiation fields. Our contrail RF estimates are most sensitive to corrections applied to the global humidity fields, followed by assumptions on the engine particle number emissions, and are least sensitive to radiative heating effects on the contrail plume and contrail--contrail overlapping. Using this sensitivity analysis, we estimate that the 2019 global contrail net RF could range between 34.8 and 74.8 mW m-2.},
|
|
910
|
+
langid = {english}
|
|
911
|
+
}
|
|
912
|
+
|
|
841
913
|
@article{teohHighresolutionGlobalAviation2023,
|
|
842
914
|
title = {A High-Resolution {{Global Aviation}} Emissions {{Inventory}} Based on {{ADS-B}} ({{GAIA}}) for 2019-2021},
|
|
843
915
|
author = {Teoh, Roger and Engberg, Zebediah and Shapiro, Marc and Dray, Lynnette and Stettler, Marc},
|
|
@@ -852,6 +924,23 @@
|
|
|
852
924
|
langid = {english}
|
|
853
925
|
}
|
|
854
926
|
|
|
927
|
+
@article{teohHighresolutionGlobalAviation2024,
|
|
928
|
+
title = {The High-Resolution {{Global Aviation}} Emissions {{Inventory}} Based on {{ADS-B}} ({{GAIA}}) for 2019--2021},
|
|
929
|
+
author = {Teoh, Roger and Engberg, Zebediah and Shapiro, Marc and Dray, Lynnette and Stettler, Marc E. J.},
|
|
930
|
+
year = {2024},
|
|
931
|
+
month = jan,
|
|
932
|
+
journal = {Atmospheric Chemistry and Physics},
|
|
933
|
+
volume = {24},
|
|
934
|
+
number = {1},
|
|
935
|
+
pages = {725--744},
|
|
936
|
+
publisher = {Copernicus GmbH},
|
|
937
|
+
issn = {1680-7316},
|
|
938
|
+
doi = {10.5194/acp-24-725-2024},
|
|
939
|
+
urldate = {2024-01-24},
|
|
940
|
+
abstract = {Aviation emissions that are dispersed into the Earth's atmosphere affect the climate and air pollution, with significant spatiotemporal variation owing to heterogeneous aircraft activity. In this paper, we use historical flight trajectories derived from Automatic Dependent Surveillance--Broadcast (ADS-B) telemetry and reanalysis weather data for 2019--2021 to develop the Global Aviation emissions Inventory based on ADS-B (GAIA). In 2019, 40.2 million flights collectively travelled 61 billion kilometres using 283 Tg of fuel, leading to CO2, NOX and non-volatile particulate matter (nvPM) mass and number emissions of 893 Tg, 4.49 Tg, 21.4 Gg and 2.8 {\texttimes} 1026 respectively. Global responses to COVID-19 led to reductions in the annual flight distance flown and CO2 and NOX emissions in 2020 (-43 \%, -48 \% and -50 \% respectively relative to 2019) and 2021 (-31 \%, -41 \% and -43 \% respectively), with significant regional variability. Short-haul flights with durations \< 3 h accounted for 83 \% of all flights but only for 35 \% of the 2019 CO2 emissions, while long-haul flights with durations \> 6 h (5 \% of all flights) were responsible for 43 \% of CO2 and 49 \% of NOX emissions. Globally, the actual flight trajectories flown are, on average, {$\sim$} 5 \% greater than the great circle path between the origin and destination airports, but this varies by region and flight distance. An evaluation of 8705 unique flights between London and Singapore showed large variabilities in the flight trajectory profile, fuel consumption and emission indices. GAIA captures the spatiotemporal distribution of aviation activity and emissions and is provided for use in future studies to evaluate the negative externalities arising from global aviation.},
|
|
941
|
+
langid = {english}
|
|
942
|
+
}
|
|
943
|
+
|
|
855
944
|
@article{teohMethodologyRelateBlack2019,
|
|
856
945
|
title = {A Methodology to Relate Black Carbon Particle Number and Mass Emissions},
|
|
857
946
|
author = {Teoh, Roger and Stettler, Marc E.J. and Majumdar, Arnab and Schumann, Ulrich and Graves, Brian and Boies, Adam M.},
|
|
@@ -164,7 +164,7 @@ Dry Advection
|
|
|
164
164
|
ACCF
|
|
165
165
|
""""
|
|
166
166
|
|
|
167
|
-
This model is
|
|
167
|
+
This model is an interface over the DLR / UMadrid `climaccf <https://github.com/dlr-pa/climaccf>`__ package.
|
|
168
168
|
See :ref:`accf-install` for more information.
|
|
169
169
|
|
|
170
170
|
.. autosummary::
|
|
@@ -78,6 +78,7 @@ suppress_warnings = ["myst.header"]
|
|
|
78
78
|
# Set up mapping for other projects' docs
|
|
79
79
|
intersphinx_mapping = {
|
|
80
80
|
"numpy": ("https://numpy.org/doc/stable/", None),
|
|
81
|
+
"open3d": ("https://www.open3d.org/docs/release/", None),
|
|
81
82
|
"pandas": ("https://pandas.pydata.org/pandas-docs/dev/", None),
|
|
82
83
|
"pyproj": ("https://pyproj4.github.io/pyproj/stable/", None),
|
|
83
84
|
"python": ("https://docs.python.org/3/", None),
|
|
@@ -170,7 +171,7 @@ autodoc_typehints = "none"
|
|
|
170
171
|
|
|
171
172
|
# autodoc options
|
|
172
173
|
autoclass_content = "class" # only include docstring from Class (not __init__ method)
|
|
173
|
-
autodoc_inherit_docstrings =
|
|
174
|
+
autodoc_inherit_docstrings = True
|
|
174
175
|
autodoc_default_options = {
|
|
175
176
|
"members": None, # means yes/true/on
|
|
176
177
|
"undoc-members": None,
|