pycontrails 0.54.3__cp312-cp312-win_amd64.whl → 0.54.5__cp312-cp312-win_amd64.whl

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.

Files changed (62) hide show
  1. pycontrails/__init__.py +2 -2
  2. pycontrails/_version.py +2 -2
  3. pycontrails/core/__init__.py +1 -1
  4. pycontrails/core/aircraft_performance.py +58 -58
  5. pycontrails/core/cache.py +7 -7
  6. pycontrails/core/fleet.py +54 -29
  7. pycontrails/core/flight.py +218 -301
  8. pycontrails/core/interpolation.py +63 -60
  9. pycontrails/core/met.py +193 -125
  10. pycontrails/core/models.py +27 -13
  11. pycontrails/core/polygon.py +15 -15
  12. pycontrails/core/rgi_cython.cp312-win_amd64.pyd +0 -0
  13. pycontrails/core/vector.py +119 -96
  14. pycontrails/datalib/_met_utils/metsource.py +8 -5
  15. pycontrails/datalib/ecmwf/__init__.py +14 -14
  16. pycontrails/datalib/ecmwf/common.py +1 -1
  17. pycontrails/datalib/ecmwf/era5.py +7 -7
  18. pycontrails/datalib/ecmwf/hres.py +3 -3
  19. pycontrails/datalib/ecmwf/ifs.py +1 -1
  20. pycontrails/datalib/gfs/__init__.py +6 -6
  21. pycontrails/datalib/gfs/gfs.py +2 -2
  22. pycontrails/datalib/goes.py +5 -5
  23. pycontrails/ext/empirical_grid.py +1 -1
  24. pycontrails/models/apcemm/apcemm.py +5 -5
  25. pycontrails/models/apcemm/utils.py +1 -1
  26. pycontrails/models/cocip/__init__.py +2 -2
  27. pycontrails/models/cocip/cocip.py +23 -24
  28. pycontrails/models/cocip/cocip_params.py +2 -11
  29. pycontrails/models/cocip/cocip_uncertainty.py +24 -18
  30. pycontrails/models/cocip/contrail_properties.py +331 -316
  31. pycontrails/models/cocip/output_formats.py +53 -53
  32. pycontrails/models/cocip/radiative_forcing.py +135 -131
  33. pycontrails/models/cocip/radiative_heating.py +135 -135
  34. pycontrails/models/cocip/unterstrasser_wake_vortex.py +90 -87
  35. pycontrails/models/cocip/wake_vortex.py +92 -92
  36. pycontrails/models/cocip/wind_shear.py +8 -8
  37. pycontrails/models/cocipgrid/cocip_grid.py +37 -96
  38. pycontrails/models/dry_advection.py +60 -19
  39. pycontrails/models/emissions/__init__.py +2 -2
  40. pycontrails/models/emissions/black_carbon.py +108 -108
  41. pycontrails/models/emissions/emissions.py +87 -87
  42. pycontrails/models/emissions/ffm2.py +35 -35
  43. pycontrails/models/humidity_scaling/humidity_scaling.py +23 -23
  44. pycontrails/models/issr.py +2 -2
  45. pycontrails/models/ps_model/__init__.py +1 -1
  46. pycontrails/models/ps_model/ps_aircraft_params.py +8 -4
  47. pycontrails/models/ps_model/ps_grid.py +76 -66
  48. pycontrails/models/ps_model/ps_model.py +16 -16
  49. pycontrails/models/ps_model/ps_operational_limits.py +20 -18
  50. pycontrails/models/tau_cirrus.py +8 -1
  51. pycontrails/physics/geo.py +67 -67
  52. pycontrails/physics/jet.py +79 -79
  53. pycontrails/physics/units.py +14 -14
  54. pycontrails/utils/json.py +1 -2
  55. pycontrails/utils/types.py +12 -7
  56. {pycontrails-0.54.3.dist-info → pycontrails-0.54.5.dist-info}/METADATA +2 -2
  57. {pycontrails-0.54.3.dist-info → pycontrails-0.54.5.dist-info}/NOTICE +1 -1
  58. pycontrails-0.54.5.dist-info/RECORD +111 -0
  59. pycontrails-0.54.3.dist-info/RECORD +0 -111
  60. {pycontrails-0.54.3.dist-info → pycontrails-0.54.5.dist-info}/LICENSE +0 -0
  61. {pycontrails-0.54.3.dist-info → pycontrails-0.54.5.dist-info}/WHEEL +0 -0
  62. {pycontrails-0.54.3.dist-info → pycontrails-0.54.5.dist-info}/top_level.txt +0 -0
@@ -1259,9 +1259,9 @@ def radiation_time_slice_statistics(
1259
1259
 
1260
1260
 
1261
1261
  def area_mean_ice_water_path(
1262
- iwc: npt.NDArray[np.float64],
1263
- plume_mass_per_m: npt.NDArray[np.float64],
1264
- segment_length: npt.NDArray[np.float64],
1262
+ iwc: npt.NDArray[np.floating],
1263
+ plume_mass_per_m: npt.NDArray[np.floating],
1264
+ segment_length: npt.NDArray[np.floating],
1265
1265
  domain_area: float,
1266
1266
  ) -> float:
1267
1267
  """
@@ -1271,12 +1271,12 @@ def area_mean_ice_water_path(
1271
1271
 
1272
1272
  Parameters
1273
1273
  ----------
1274
- iwc : npt.NDArray[np.float64]
1274
+ iwc : npt.NDArray[np.floating]
1275
1275
  Contrail ice water content, i.e., contrail ice mass per kg of
1276
1276
  air, [:math:`kg_{H_{2}O}/kg_{air}`]
1277
- plume_mass_per_m : npt.NDArray[np.float64]
1277
+ plume_mass_per_m : npt.NDArray[np.floating]
1278
1278
  Contrail plume mass per unit length, [:math:`kg m^{-1}`]
1279
- segment_length : npt.NDArray[np.float64]
1279
+ segment_length : npt.NDArray[np.floating]
1280
1280
  Contrail segment length for each waypoint, [:math:`m`]
1281
1281
  domain_area : float
1282
1282
  Domain surface area, [:math:`m^{2}`]
@@ -1290,20 +1290,20 @@ def area_mean_ice_water_path(
1290
1290
 
1291
1291
 
1292
1292
  def area_mean_ice_particle_radius(
1293
- r_ice_vol: npt.NDArray[np.float64],
1294
- n_ice_per_m: npt.NDArray[np.float64],
1295
- segment_length: npt.NDArray[np.float64],
1293
+ r_ice_vol: npt.NDArray[np.floating],
1294
+ n_ice_per_m: npt.NDArray[np.floating],
1295
+ segment_length: npt.NDArray[np.floating],
1296
1296
  ) -> float:
1297
1297
  r"""
1298
1298
  Calculate the area-mean contrail ice particle radius.
1299
1299
 
1300
1300
  Parameters
1301
1301
  ----------
1302
- r_ice_vol : npt.NDArray[np.float64]
1302
+ r_ice_vol : npt.NDArray[np.floating]
1303
1303
  Ice particle volume mean radius for each waypoint, [:math:`m`]
1304
- n_ice_per_m : npt.NDArray[np.float64]
1304
+ n_ice_per_m : npt.NDArray[np.floating]
1305
1305
  Number of ice particles per distance for each waypoint, [:math:`m^{-1}`]
1306
- segment_length : npt.NDArray[np.float64]
1306
+ segment_length : npt.NDArray[np.floating]
1307
1307
  Contrail segment length for each waypoint, [:math:`m`]
1308
1308
 
1309
1309
  Returns
@@ -1324,20 +1324,20 @@ def area_mean_ice_particle_radius(
1324
1324
 
1325
1325
 
1326
1326
  def volume_mean_ice_particle_radius(
1327
- r_ice_vol: npt.NDArray[np.float64],
1328
- n_ice_per_m: npt.NDArray[np.float64],
1329
- segment_length: npt.NDArray[np.float64],
1327
+ r_ice_vol: npt.NDArray[np.floating],
1328
+ n_ice_per_m: npt.NDArray[np.floating],
1329
+ segment_length: npt.NDArray[np.floating],
1330
1330
  ) -> float:
1331
1331
  r"""
1332
1332
  Calculate the volume-mean contrail ice particle radius.
1333
1333
 
1334
1334
  Parameters
1335
1335
  ----------
1336
- r_ice_vol : npt.NDArray[np.float64]
1336
+ r_ice_vol : npt.NDArray[np.floating]
1337
1337
  Ice particle volume mean radius for each waypoint, [:math:`m`]
1338
- n_ice_per_m : npt.NDArray[np.float64]
1338
+ n_ice_per_m : npt.NDArray[np.floating]
1339
1339
  Number of ice particles per distance for each waypoint, [:math:`m^{-1}`]
1340
- segment_length : npt.NDArray[np.float64]
1340
+ segment_length : npt.NDArray[np.floating]
1341
1341
  Contrail segment length for each waypoint, [:math:`m`]
1342
1342
 
1343
1343
  Returns
@@ -1356,20 +1356,20 @@ def volume_mean_ice_particle_radius(
1356
1356
 
1357
1357
 
1358
1358
  def mean_ice_particle_effective_radius(
1359
- r_ice_vol: npt.NDArray[np.float64],
1360
- n_ice_per_m: npt.NDArray[np.float64],
1361
- segment_length: npt.NDArray[np.float64],
1359
+ r_ice_vol: npt.NDArray[np.floating],
1360
+ n_ice_per_m: npt.NDArray[np.floating],
1361
+ segment_length: npt.NDArray[np.floating],
1362
1362
  ) -> float:
1363
1363
  r"""
1364
1364
  Calculate the mean contrail ice particle effective radius.
1365
1365
 
1366
1366
  Parameters
1367
1367
  ----------
1368
- r_ice_vol : npt.NDArray[np.float64]
1368
+ r_ice_vol : npt.NDArray[np.floating]
1369
1369
  Ice particle volume mean radius for each waypoint, [:math:`m`]
1370
- n_ice_per_m : npt.NDArray[np.float64]
1370
+ n_ice_per_m : npt.NDArray[np.floating]
1371
1371
  Number of ice particles per distance for each waypoint, [:math:`m^{-1}`]
1372
- segment_length : npt.NDArray[np.float64]
1372
+ segment_length : npt.NDArray[np.floating]
1373
1373
  Contrail segment length for each waypoint, [:math:`m`]
1374
1374
 
1375
1375
  Returns
@@ -1391,20 +1391,20 @@ def mean_ice_particle_effective_radius(
1391
1391
 
1392
1392
 
1393
1393
  def _total_ice_particle_cross_sectional_area(
1394
- r_ice_vol: npt.NDArray[np.float64],
1395
- n_ice_per_m: npt.NDArray[np.float64],
1396
- segment_length: npt.NDArray[np.float64],
1394
+ r_ice_vol: npt.NDArray[np.floating],
1395
+ n_ice_per_m: npt.NDArray[np.floating],
1396
+ segment_length: npt.NDArray[np.floating],
1397
1397
  ) -> float:
1398
1398
  """
1399
1399
  Calculate total contrail ice particle cross-sectional area.
1400
1400
 
1401
1401
  Parameters
1402
1402
  ----------
1403
- r_ice_vol : npt.NDArray[np.float64]
1403
+ r_ice_vol : npt.NDArray[np.floating]
1404
1404
  Ice particle volume mean radius for each waypoint, [:math:`m`]
1405
- n_ice_per_m : npt.NDArray[np.float64]
1405
+ n_ice_per_m : npt.NDArray[np.floating]
1406
1406
  Number of ice particles per distance for each waypoint, [:math:`m^{-1}`]
1407
- segment_length : npt.NDArray[np.float64]
1407
+ segment_length : npt.NDArray[np.floating]
1408
1408
  Contrail segment length for each waypoint, [:math:`m`]
1409
1409
 
1410
1410
  Returns
@@ -1417,20 +1417,20 @@ def _total_ice_particle_cross_sectional_area(
1417
1417
 
1418
1418
 
1419
1419
  def _total_ice_particle_volume(
1420
- r_ice_vol: npt.NDArray[np.float64],
1421
- n_ice_per_m: npt.NDArray[np.float64],
1422
- segment_length: npt.NDArray[np.float64],
1420
+ r_ice_vol: npt.NDArray[np.floating],
1421
+ n_ice_per_m: npt.NDArray[np.floating],
1422
+ segment_length: npt.NDArray[np.floating],
1423
1423
  ) -> float:
1424
1424
  """
1425
1425
  Calculate total contrail ice particle volume.
1426
1426
 
1427
1427
  Parameters
1428
1428
  ----------
1429
- r_ice_vol : npt.NDArray[np.float64]
1429
+ r_ice_vol : npt.NDArray[np.floating]
1430
1430
  Ice particle volume mean radius for each waypoint, [:math:`m`]
1431
- n_ice_per_m : npt.NDArray[np.float64]
1431
+ n_ice_per_m : npt.NDArray[np.floating]
1432
1432
  Number of ice particles per distance for each waypoint, [:math:`m^{-1}`]
1433
- segment_length : npt.NDArray[np.float64]
1433
+ segment_length : npt.NDArray[np.floating]
1434
1434
  Contrail segment length for each waypoint, [:math:`m`]
1435
1435
 
1436
1436
  Returns
@@ -1443,16 +1443,16 @@ def _total_ice_particle_volume(
1443
1443
 
1444
1444
 
1445
1445
  def _total_ice_particle_number(
1446
- n_ice_per_m: npt.NDArray[np.float64], segment_length: npt.NDArray[np.float64]
1446
+ n_ice_per_m: npt.NDArray[np.floating], segment_length: npt.NDArray[np.floating]
1447
1447
  ) -> float:
1448
1448
  """
1449
1449
  Calculate total number of contrail ice particles.
1450
1450
 
1451
1451
  Parameters
1452
1452
  ----------
1453
- n_ice_per_m : npt.NDArray[np.float64]
1453
+ n_ice_per_m : npt.NDArray[np.floating]
1454
1454
  Number of ice particles per distance for each waypoint, [:math:`m^{-1}`]
1455
- segment_length : npt.NDArray[np.float64]
1455
+ segment_length : npt.NDArray[np.floating]
1456
1456
  Contrail segment length for each waypoint, [:math:`m`]
1457
1457
 
1458
1458
  Returns
@@ -1464,9 +1464,9 @@ def _total_ice_particle_number(
1464
1464
 
1465
1465
 
1466
1466
  def area_mean_contrail_property(
1467
- contrail_property: npt.NDArray[np.float64],
1468
- segment_length: npt.NDArray[np.float64],
1469
- width: npt.NDArray[np.float64],
1467
+ contrail_property: npt.NDArray[np.floating],
1468
+ segment_length: npt.NDArray[np.floating],
1469
+ width: npt.NDArray[np.floating],
1470
1470
  domain_area: float,
1471
1471
  ) -> float:
1472
1472
  """
@@ -1477,11 +1477,11 @@ def area_mean_contrail_property(
1477
1477
 
1478
1478
  Parameters
1479
1479
  ----------
1480
- contrail_property : npt.NDArray[np.float64]
1480
+ contrail_property : npt.NDArray[np.floating]
1481
1481
  Selected contrail property for each waypoint
1482
- segment_length : npt.NDArray[np.float64]
1482
+ segment_length : npt.NDArray[np.floating]
1483
1483
  Contrail segment length for each waypoint, [:math:`m`]
1484
- width : npt.NDArray[np.float64]
1484
+ width : npt.NDArray[np.floating]
1485
1485
  Contrail width for each waypoint, [:math:`m`]
1486
1486
  domain_area : float
1487
1487
  Domain surface area, [:math:`m^{2}`]
@@ -2009,26 +2009,26 @@ def natural_cirrus_properties_to_hi_res_grid(
2009
2009
 
2010
2010
 
2011
2011
  def _hi_res_grid_coordinates(
2012
- lon_coords: npt.NDArray[np.float64],
2013
- lat_coords: npt.NDArray[np.float64],
2012
+ lon_coords: npt.NDArray[np.floating],
2013
+ lat_coords: npt.NDArray[np.floating],
2014
2014
  *,
2015
2015
  spatial_grid_res: float = 0.05,
2016
- ) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
2016
+ ) -> tuple[npt.NDArray[np.floating], npt.NDArray[np.floating]]:
2017
2017
  r"""
2018
2018
  Calculate longitude and latitude coordinates for the high resolution grid.
2019
2019
 
2020
2020
  Parameters
2021
2021
  ----------
2022
- lon_coords : npt.NDArray[np.float64]
2022
+ lon_coords : npt.NDArray[np.floating]
2023
2023
  Longitude coordinates provided by the original `MetDataset`.
2024
- lat_coords : npt.NDArray[np.float64]
2024
+ lat_coords : npt.NDArray[np.floating]
2025
2025
  Latitude coordinates provided by the original `MetDataset`.
2026
2026
  spatial_grid_res : float
2027
2027
  Spatial grid resolution for the output, [:math:`\deg`]
2028
2028
 
2029
2029
  Returns
2030
2030
  -------
2031
- tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]
2031
+ tuple[npt.NDArray[np.floating], npt.NDArray[np.floating]
2032
2032
  Longitude and latitude coordinates for the high resolution grid.
2033
2033
  """
2034
2034
  d_lon = np.abs(np.diff(lon_coords)[0])
@@ -2058,8 +2058,8 @@ def _hi_res_grid_coordinates(
2058
2058
 
2059
2059
 
2060
2060
  def _repeat_rows_and_columns(
2061
- array_2d: npt.NDArray[np.float64], *, n_reps: int
2062
- ) -> npt.NDArray[np.float64]:
2061
+ array_2d: npt.NDArray[np.floating], *, n_reps: int
2062
+ ) -> npt.NDArray[np.floating]:
2063
2063
  """
2064
2064
  Repeat the elements in `array_2d` along each row and column.
2065
2065