pycontrails 0.54.11__cp313-cp313-macosx_10_13_x86_64.whl → 0.54.12__cp313-cp313-macosx_10_13_x86_64.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.
- pycontrails/_version.py +16 -3
- pycontrails/core/rgi_cython.cpython-313-darwin.so +0 -0
- pycontrails/datalib/ecmwf/hres.py +1 -0
- pycontrails/datalib/goes.py +3 -3
- pycontrails/models/issr.py +1 -1
- pycontrails/models/pcr.py +1 -1
- pycontrails/models/sac.py +5 -22
- pycontrails/physics/geo.py +3 -3
- pycontrails/physics/thermo.py +121 -21
- pycontrails/utils/types.py +3 -10
- {pycontrails-0.54.11.dist-info → pycontrails-0.54.12.dist-info}/METADATA +1 -1
- {pycontrails-0.54.11.dist-info → pycontrails-0.54.12.dist-info}/RECORD +16 -16
- {pycontrails-0.54.11.dist-info → pycontrails-0.54.12.dist-info}/WHEEL +0 -0
- {pycontrails-0.54.11.dist-info → pycontrails-0.54.12.dist-info}/licenses/LICENSE +0 -0
- {pycontrails-0.54.11.dist-info → pycontrails-0.54.12.dist-info}/licenses/NOTICE +0 -0
- {pycontrails-0.54.11.dist-info → pycontrails-0.54.12.dist-info}/top_level.txt +0 -0
pycontrails/_version.py
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
# file generated by setuptools-scm
|
|
2
2
|
# don't change, don't track in version control
|
|
3
3
|
|
|
4
|
-
__all__ = [
|
|
4
|
+
__all__ = [
|
|
5
|
+
"__version__",
|
|
6
|
+
"__version_tuple__",
|
|
7
|
+
"version",
|
|
8
|
+
"version_tuple",
|
|
9
|
+
"__commit_id__",
|
|
10
|
+
"commit_id",
|
|
11
|
+
]
|
|
5
12
|
|
|
6
13
|
TYPE_CHECKING = False
|
|
7
14
|
if TYPE_CHECKING:
|
|
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
|
|
|
9
16
|
from typing import Union
|
|
10
17
|
|
|
11
18
|
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
19
|
+
COMMIT_ID = Union[str, None]
|
|
12
20
|
else:
|
|
13
21
|
VERSION_TUPLE = object
|
|
22
|
+
COMMIT_ID = object
|
|
14
23
|
|
|
15
24
|
version: str
|
|
16
25
|
__version__: str
|
|
17
26
|
__version_tuple__: VERSION_TUPLE
|
|
18
27
|
version_tuple: VERSION_TUPLE
|
|
28
|
+
commit_id: COMMIT_ID
|
|
29
|
+
__commit_id__: COMMIT_ID
|
|
19
30
|
|
|
20
|
-
__version__ = version = '0.54.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 54,
|
|
31
|
+
__version__ = version = '0.54.12'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 54, 12)
|
|
33
|
+
|
|
34
|
+
__commit_id__ = commit_id = 'g5920a0c98'
|
|
Binary file
|
|
@@ -155,6 +155,7 @@ class HRES(ECMWFAPI):
|
|
|
155
155
|
- "scda" = short cut-off high resolution forecast, atmospheric fields,
|
|
156
156
|
run at hours 06Z and 18Z
|
|
157
157
|
- "enfo" = ensemble forecast, atmospheric fields, run at hours 00Z, 06Z, 12Z, and 18Z
|
|
158
|
+
|
|
158
159
|
Defaults to "oper" (HRES).
|
|
159
160
|
If the stream is incompatible with a provided forecast_time, a ``ValueError`` is raised.
|
|
160
161
|
See the `ECMWF documentation <https://confluence.ecmwf.int/display/DAC/ECMWF+open+data%3A+real-time+forecasts+from+IFS+and+AIFS>`_
|
pycontrails/datalib/goes.py
CHANGED
|
@@ -593,10 +593,10 @@ class GOES:
|
|
|
593
593
|
da = da_dict.popitem()[1]
|
|
594
594
|
elif "C02" in da_dict:
|
|
595
595
|
da2 = da_dict.pop("C02")
|
|
596
|
-
|
|
597
|
-
da = _concat_c02(
|
|
596
|
+
da = xr.concat(da_dict.values(), dim="band_id", coords="different", compat="equals")
|
|
597
|
+
da = _concat_c02(da, da2)
|
|
598
598
|
else:
|
|
599
|
-
da = xr.concat(da_dict.values(), dim="band_id")
|
|
599
|
+
da = xr.concat(da_dict.values(), dim="band_id", coords="different", compat="equals")
|
|
600
600
|
|
|
601
601
|
else:
|
|
602
602
|
ds = _load_via_tempfile(data)
|
pycontrails/models/issr.py
CHANGED
|
@@ -134,7 +134,7 @@ class ISSR(Model):
|
|
|
134
134
|
if scale_humidity:
|
|
135
135
|
humidity_scaling.eval(self.source, copy_source=False)
|
|
136
136
|
|
|
137
|
-
self.source["issr"] = issr(
|
|
137
|
+
self.source["issr"] = issr( # type: ignore[type-var]
|
|
138
138
|
air_temperature=self.source.data["air_temperature"],
|
|
139
139
|
specific_humidity=self.source.data["specific_humidity"],
|
|
140
140
|
air_pressure=self.source.data["air_pressure"],
|
pycontrails/models/pcr.py
CHANGED
|
@@ -90,7 +90,7 @@ class PCR(Model):
|
|
|
90
90
|
sac_model = sac.SAC(met=None, params=sac_params, copy_source=False)
|
|
91
91
|
sac_model.eval(self.source)
|
|
92
92
|
|
|
93
|
-
pcr_ = _pcr_from_issr_and_sac(self.source.data["issr"], self.source.data["sac"])
|
|
93
|
+
pcr_ = _pcr_from_issr_and_sac(self.source.data["issr"], self.source.data["sac"]) # type: ignore[type-var]
|
|
94
94
|
self.source["pcr"] = pcr_
|
|
95
95
|
|
|
96
96
|
return self.source
|
pycontrails/models/sac.py
CHANGED
|
@@ -17,7 +17,7 @@ from pycontrails.core.models import Model, ModelParams
|
|
|
17
17
|
from pycontrails.core.vector import GeoVectorDataset
|
|
18
18
|
from pycontrails.models.humidity_scaling import HumidityScaling
|
|
19
19
|
from pycontrails.physics import constants, thermo
|
|
20
|
-
from pycontrails.utils.types import ArrayLike,
|
|
20
|
+
from pycontrails.utils.types import ArrayLike, apply_nan_mask_to_arraylike
|
|
21
21
|
|
|
22
22
|
# -----------------
|
|
23
23
|
# Models as classes
|
|
@@ -133,8 +133,8 @@ class SAC(Model):
|
|
|
133
133
|
|
|
134
134
|
G = slope_mixing_line(specific_humidity, air_pressure, engine_efficiency, ei_h2o, q_fuel)
|
|
135
135
|
T_sat_liquid_ = T_sat_liquid(G)
|
|
136
|
-
rh_crit_sac = rh_critical_sac(air_temperature, T_sat_liquid_, G)
|
|
137
|
-
rh = thermo.rh(specific_humidity, air_temperature, air_pressure)
|
|
136
|
+
rh_crit_sac = rh_critical_sac(air_temperature, T_sat_liquid_, G) # type: ignore[type-var]
|
|
137
|
+
rh = thermo.rh(specific_humidity, air_temperature, air_pressure) # type: ignore[type-var]
|
|
138
138
|
sac_ = sac(rh, rh_crit_sac)
|
|
139
139
|
|
|
140
140
|
# Attaching some intermediate artifacts onto the source
|
|
@@ -239,23 +239,6 @@ def T_sat_liquid(G: ArrayLike) -> ArrayLike:
|
|
|
239
239
|
return -46.46 - constants.absolute_zero + 9.43 * log_ + 0.72 * log_**2 # type: ignore[return-value]
|
|
240
240
|
|
|
241
241
|
|
|
242
|
-
def _e_sat_liquid_prime(T: ArrayScalarLike) -> ArrayScalarLike:
|
|
243
|
-
r"""Calculate derivative of :func:`thermo.e_sat_liquid`.
|
|
244
|
-
|
|
245
|
-
Parameters
|
|
246
|
-
----------
|
|
247
|
-
T : ArrayScalarLike
|
|
248
|
-
Temperature, [:math:`K`].
|
|
249
|
-
|
|
250
|
-
Returns
|
|
251
|
-
-------
|
|
252
|
-
ArrayScalarLike
|
|
253
|
-
Derivative of :func:`thermo.e_sat_liquid`, [:math:``Pa \ K^{-1}`].
|
|
254
|
-
"""
|
|
255
|
-
d_inside = 6096.9385 / (T**2) - 0.02711193 + 1.673952 * 1e-5 * 2 * T + 2.433502 / T
|
|
256
|
-
return thermo.e_sat_liquid(T) * d_inside
|
|
257
|
-
|
|
258
|
-
|
|
259
242
|
def T_sat_liquid_high_accuracy(
|
|
260
243
|
G: ArrayLike,
|
|
261
244
|
maxiter: int = 5,
|
|
@@ -293,7 +276,7 @@ def T_sat_liquid_high_accuracy(
|
|
|
293
276
|
|
|
294
277
|
def func(T: ArrayLike) -> ArrayLike:
|
|
295
278
|
"""Equation (10) from Schumann 1996."""
|
|
296
|
-
return
|
|
279
|
+
return thermo.e_sat_liquid_prime(T) - G
|
|
297
280
|
|
|
298
281
|
return scipy.optimize.newton(func, init_guess, maxiter=maxiter)
|
|
299
282
|
|
|
@@ -441,7 +424,7 @@ def T_critical_sac(
|
|
|
441
424
|
return T - T_LM_filt + (e_L_of_T_LM_filt - U_filt * thermo.e_sat_liquid(T)) / G_filt
|
|
442
425
|
|
|
443
426
|
def fprime(T: ArrayLike) -> ArrayLike:
|
|
444
|
-
return 1.0 - U_filt *
|
|
427
|
+
return 1.0 - U_filt * thermo.e_sat_liquid_prime(T) / G_filt
|
|
445
428
|
|
|
446
429
|
# This initial guess should be less than T_LM.
|
|
447
430
|
# For relative_humidity away from 1, Newton's method converges quickly, and so
|
pycontrails/physics/geo.py
CHANGED
|
@@ -7,7 +7,7 @@ import numpy.typing as npt
|
|
|
7
7
|
import xarray as xr
|
|
8
8
|
|
|
9
9
|
from pycontrails.physics import constants, units
|
|
10
|
-
from pycontrails.utils.types import ArrayLike
|
|
10
|
+
from pycontrails.utils.types import ArrayLike, ArrayOrFloat
|
|
11
11
|
|
|
12
12
|
# ------------------
|
|
13
13
|
# Spherical Geometry
|
|
@@ -373,8 +373,8 @@ def segment_length(
|
|
|
373
373
|
def forward_azimuth(
|
|
374
374
|
lons: npt.NDArray[np.floating],
|
|
375
375
|
lats: npt.NDArray[np.floating],
|
|
376
|
-
az:
|
|
377
|
-
dist:
|
|
376
|
+
az: ArrayOrFloat,
|
|
377
|
+
dist: ArrayOrFloat,
|
|
378
378
|
) -> tuple[npt.NDArray[np.floating], npt.NDArray[np.floating]]:
|
|
379
379
|
r"""Calculate coordinates along forward azimuth.
|
|
380
380
|
|
pycontrails/physics/thermo.py
CHANGED
|
@@ -87,6 +87,42 @@ def p_vapor(q: ArrayScalarLike, p: ArrayScalarLike) -> ArrayScalarLike:
|
|
|
87
87
|
return q * p * (constants.R_v / constants.R_d)
|
|
88
88
|
|
|
89
89
|
|
|
90
|
+
def water_vapor_partial_pressure_along_mixing_line(
|
|
91
|
+
specific_humidity: ArrayScalarLike,
|
|
92
|
+
air_pressure: ArrayScalarLike,
|
|
93
|
+
T_plume: ArrayScalarLike,
|
|
94
|
+
T_ambient: ArrayScalarLike,
|
|
95
|
+
G: ArrayScalarLike,
|
|
96
|
+
) -> ArrayScalarLike:
|
|
97
|
+
"""
|
|
98
|
+
Calculate water vapor partial pressure along mixing line.
|
|
99
|
+
|
|
100
|
+
Parameters
|
|
101
|
+
----------
|
|
102
|
+
specific_humidity : ArrayScalarLike
|
|
103
|
+
Specific humidity at each waypoint, [:math:`kg_{H_{2}O} / kg_{air}`]
|
|
104
|
+
air_pressure : ArrayScalarLike
|
|
105
|
+
Pressure altitude at each waypoint, [:math:`Pa`]
|
|
106
|
+
T_plume : ArrayScalarLike
|
|
107
|
+
Plume temperature evolution along mixing line, [:math:`K`]
|
|
108
|
+
T_ambient : ArrayScalarLike
|
|
109
|
+
Ambient temperature for each waypoint, [:math:`K`]
|
|
110
|
+
G : ArrayScalarLike
|
|
111
|
+
Slope of the mixing line in a temperature-humidity diagram.
|
|
112
|
+
|
|
113
|
+
Returns
|
|
114
|
+
-------
|
|
115
|
+
ArrayScalarLike
|
|
116
|
+
Water vapor partial pressure along mixing line (p_mw), [:math:`Pa`]
|
|
117
|
+
|
|
118
|
+
References
|
|
119
|
+
----------
|
|
120
|
+
Eq. (2) of Karcher et al. (2015).
|
|
121
|
+
"""
|
|
122
|
+
p_wa = p_vapor(specific_humidity, air_pressure)
|
|
123
|
+
return p_wa + G * (T_plume - T_ambient)
|
|
124
|
+
|
|
125
|
+
|
|
90
126
|
# -------------------
|
|
91
127
|
# Saturation Pressure
|
|
92
128
|
# -------------------
|
|
@@ -142,8 +178,8 @@ def e_sat_ice(T: ArrayScalarLike) -> ArrayScalarLike:
|
|
|
142
178
|
)
|
|
143
179
|
|
|
144
180
|
|
|
145
|
-
def
|
|
146
|
-
|
|
181
|
+
def sonntag_e_sat_liquid(T: ArrayScalarLike) -> ArrayScalarLike:
|
|
182
|
+
"""Calculate saturation pressure of water vapor over liquid water using Sonntag (1994).
|
|
147
183
|
|
|
148
184
|
Parameters
|
|
149
185
|
----------
|
|
@@ -154,35 +190,99 @@ def e_sat_liquid(T: ArrayScalarLike) -> ArrayScalarLike:
|
|
|
154
190
|
-------
|
|
155
191
|
ArrayScalarLike
|
|
156
192
|
Saturation pressure of water vapor over liquid water, [:math:`Pa`]
|
|
193
|
+
"""
|
|
194
|
+
return 100.0 * np.exp( # type: ignore[return-value]
|
|
195
|
+
-6096.9385 / T + 16.635794 - 0.02711193 * T + 1.673952 * 1e-5 * T**2 + 2.433502 * np.log(T)
|
|
196
|
+
)
|
|
157
197
|
|
|
158
|
-
|
|
198
|
+
|
|
199
|
+
def mk05_e_sat_liquid(T: ArrayScalarLike) -> ArrayScalarLike:
|
|
200
|
+
"""Calculate saturation pressure of water vapor over liquid water using Murphy and Koop (2005).
|
|
201
|
+
|
|
202
|
+
Parameters
|
|
159
203
|
----------
|
|
160
|
-
|
|
204
|
+
T : ArrayScalarLike
|
|
205
|
+
Temperature, [:math:`K`]
|
|
206
|
+
|
|
207
|
+
Returns
|
|
208
|
+
-------
|
|
209
|
+
ArrayScalarLike
|
|
210
|
+
Saturation pressure of water vapor over liquid water, [:math:`Pa`]
|
|
211
|
+
|
|
212
|
+
Notes
|
|
213
|
+
-----
|
|
214
|
+
Several formulations exist for the saturation vapor pressure over liquid water.
|
|
215
|
+
|
|
216
|
+
Buck (Buck Research Manual 1996)..
|
|
217
|
+
|
|
218
|
+
6.1121 * np.exp((18.678 * (T - 273.15) / 234.5) * (T - 273.15) / (257.14 + (T - 273.15)))
|
|
219
|
+
|
|
220
|
+
Magnus Tetens (Murray, 1967)..
|
|
221
|
+
|
|
222
|
+
6.1078 * np.exp(17.269388 * (T - 273.16) / (T - 35.86))
|
|
223
|
+
|
|
224
|
+
Guide to Meteorological Instruments and Methods of Observation (CIMO Guide) (WMO, 2008)..
|
|
225
|
+
|
|
226
|
+
6.112 * np.exp(17.62 * (T - 273.15) / (243.12 + T - 273.15))
|
|
227
|
+
|
|
228
|
+
Sonntag (1994) (see :func:`sonntag_e_sat_liquid`) is used in older versions of CoCiP.
|
|
161
229
|
"""
|
|
162
|
-
# Buck (Buck Research Manual 1996)
|
|
163
|
-
# 6.1121 * np.exp((18.678 * (T - 273.15) / 234.5) * (T - 273.15) / (257.14 + (T - 273.15)))
|
|
164
230
|
|
|
165
|
-
#
|
|
166
|
-
|
|
231
|
+
return np.exp( # type: ignore[return-value]
|
|
232
|
+
54.842763
|
|
233
|
+
- 6763.22 / T
|
|
234
|
+
- 4.21 * np.log(T)
|
|
235
|
+
+ 0.000367 * T
|
|
236
|
+
+ np.tanh(0.0415 * (T - 218.8))
|
|
237
|
+
* (53.878 - 1331.22 / T - 9.44523 * np.log(T) + 0.014025 * T)
|
|
238
|
+
)
|
|
167
239
|
|
|
168
|
-
# Guide to Meteorological Instruments and Methods of Observation (CIMO Guide) (WMO, 2008)
|
|
169
|
-
# 6.112 * np.exp(17.62 * (T - 273.15) / (243.12 + T - 273.15))
|
|
170
240
|
|
|
171
|
-
|
|
241
|
+
def sonntag_e_sat_liquid_prime(T: ArrayScalarLike) -> ArrayScalarLike:
|
|
242
|
+
"""Calculate the derivative of :func:`sonntag_e_sat_liquid`.
|
|
172
243
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
244
|
+
Parameters
|
|
245
|
+
----------
|
|
246
|
+
T : ArrayScalarLike
|
|
247
|
+
Temperature, [:math:`K`].
|
|
248
|
+
|
|
249
|
+
Returns
|
|
250
|
+
-------
|
|
251
|
+
ArrayScalarLike
|
|
252
|
+
Derivative of :func:`sonntag_e_sat_liquid`
|
|
253
|
+
"""
|
|
254
|
+
d_inside = 6096.9385 / (T**2) - 0.02711193 + 1.673952 * 1e-5 * 2 * T + 2.433502 / T
|
|
255
|
+
return sonntag_e_sat_liquid(T) * d_inside
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
def mk05_e_sat_liquid_prime(T: ArrayScalarLike) -> ArrayScalarLike:
|
|
259
|
+
"""Calculate the derivative of :func:`mk05_e_sat_liquid`.
|
|
260
|
+
|
|
261
|
+
Parameters
|
|
262
|
+
----------
|
|
263
|
+
T : ArrayScalarLike
|
|
264
|
+
Temperature, [:math:`K`].
|
|
265
|
+
|
|
266
|
+
Returns
|
|
267
|
+
-------
|
|
268
|
+
ArrayScalarLike
|
|
269
|
+
Derivative of :func:`mk05_e_sat_liquid`
|
|
270
|
+
"""
|
|
271
|
+
tanh_term = np.tanh(0.0415 * (T - 218.8))
|
|
272
|
+
return mk05_e_sat_liquid(T) * ( # type: ignore[return-value]
|
|
273
|
+
6763.22 / T**2
|
|
274
|
+
- 4.21 / T
|
|
275
|
+
+ 0.000367
|
|
276
|
+
+ 0.0415 * (1 - tanh_term**2) * (53.878 - 1331.22 / T - 9.44523 * np.log(T) + 0.014025 * T)
|
|
277
|
+
+ tanh_term * (1331.22 / T**2 - 9.44523 / T + 0.014025)
|
|
183
278
|
)
|
|
184
279
|
|
|
185
280
|
|
|
281
|
+
# Set aliases. These could be swapped out or made configurable.
|
|
282
|
+
e_sat_liquid = mk05_e_sat_liquid
|
|
283
|
+
e_sat_liquid_prime = mk05_e_sat_liquid_prime
|
|
284
|
+
|
|
285
|
+
|
|
186
286
|
@support_arraylike
|
|
187
287
|
def _e_sat_piecewise(T: np.ndarray) -> np.ndarray:
|
|
188
288
|
"""Calculate `e_sat_liquid` when T is above freezing otherwise `e_sat_ice`.
|
pycontrails/utils/types.py
CHANGED
|
@@ -14,20 +14,13 @@ import pandas as pd
|
|
|
14
14
|
import xarray as xr
|
|
15
15
|
|
|
16
16
|
#: Array like (np.ndarray, xr.DataArray)
|
|
17
|
-
ArrayLike = TypeVar("ArrayLike", np.ndarray, xr.DataArray
|
|
17
|
+
ArrayLike = TypeVar("ArrayLike", np.ndarray, xr.DataArray)
|
|
18
18
|
|
|
19
19
|
#: Array or Float (np.ndarray, float)
|
|
20
|
-
ArrayOrFloat = TypeVar("ArrayOrFloat",
|
|
20
|
+
ArrayOrFloat = TypeVar("ArrayOrFloat", np.ndarray, float)
|
|
21
21
|
|
|
22
22
|
#: Array like input (np.ndarray, xr.DataArray, float)
|
|
23
|
-
ArrayScalarLike = TypeVar(
|
|
24
|
-
"ArrayScalarLike",
|
|
25
|
-
np.ndarray,
|
|
26
|
-
xr.DataArray,
|
|
27
|
-
float,
|
|
28
|
-
np.ndarray | float,
|
|
29
|
-
xr.DataArray | np.ndarray,
|
|
30
|
-
)
|
|
23
|
+
ArrayScalarLike = TypeVar("ArrayScalarLike", np.ndarray, xr.DataArray, float)
|
|
31
24
|
|
|
32
25
|
#: Datetime like input (datetime, pd.Timestamp, np.datetime64)
|
|
33
26
|
DatetimeLike = TypeVar("DatetimeLike", datetime, pd.Timestamp, np.datetime64, str)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
pycontrails-0.54.
|
|
2
|
-
pycontrails-0.54.
|
|
3
|
-
pycontrails-0.54.
|
|
4
|
-
pycontrails-0.54.
|
|
5
|
-
pycontrails-0.54.
|
|
6
|
-
pycontrails-0.54.
|
|
7
|
-
pycontrails/_version.py,sha256=
|
|
1
|
+
pycontrails-0.54.12.dist-info/RECORD,,
|
|
2
|
+
pycontrails-0.54.12.dist-info/WHEEL,sha256=0rn5ODYhsjI3KEHrk9RXNWLZT7Rowo6wA0Jh2iAIJLk,138
|
|
3
|
+
pycontrails-0.54.12.dist-info/top_level.txt,sha256=Z8J1R_AiBAyCVjNw6jYLdrA68PrQqTg0t3_Yek_IZ0Q,29
|
|
4
|
+
pycontrails-0.54.12.dist-info/METADATA,sha256=UaUC4O8LMv-iJ_7xbgDskuRMX_GjT6dTodRHeda75Zc,9037
|
|
5
|
+
pycontrails-0.54.12.dist-info/licenses/LICENSE,sha256=gJ-h7SFFD1mCfR6a7HILvEtodDT6Iig8bLXdgqR6ucA,10175
|
|
6
|
+
pycontrails-0.54.12.dist-info/licenses/NOTICE,sha256=fiBPdjYibMpDzf8hqcn7TvAQ-yeK10q_Nqq24DnskYg,1962
|
|
7
|
+
pycontrails/_version.py,sha256=UTr-0gLpdmG3tPVgS4kgxnF4fjydZpe2yN5_iKvXWmU,716
|
|
8
8
|
pycontrails/__init__.py,sha256=9ypSB2fKZlKghTvSrjWo6OHm5qfASwiTIvlMew3Olu4,2037
|
|
9
9
|
pycontrails/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
pycontrails/core/vector.py,sha256=X_g8lzY6plJ6oeUHigSjt9qcPv34a3m1DeK1pqocrDw,73627
|
|
@@ -16,14 +16,14 @@ pycontrails/core/fuel.py,sha256=kJZ3P1lPm1L6rdPREM55XQ-VfJ_pt35cP4sO2Nnvmjs,4332
|
|
|
16
16
|
pycontrails/core/polygon.py,sha256=g7YqWzUbOHWT65XrLqLUZLrQXYcx_x1NcJ041-Cj7UY,18070
|
|
17
17
|
pycontrails/core/cache.py,sha256=IIyx726zN7JzNSKV0JJDksMI9OhCLdnJShmBVStRqzI,28154
|
|
18
18
|
pycontrails/core/__init__.py,sha256=p0O09HxdeXU0X5Z3zrHMlTfXa92YumT3fJ8wJBI5ido,856
|
|
19
|
-
pycontrails/core/rgi_cython.cpython-313-darwin.so,sha256=
|
|
19
|
+
pycontrails/core/rgi_cython.cpython-313-darwin.so,sha256=YZO-mUoGdIaEm08Yb6n3AKF2TZRyeWb3XJ9SwGcuUXw,299024
|
|
20
20
|
pycontrails/core/flightplan.py,sha256=0mvA3IO19Sap-7gwpmEIV35_mg6ChvajwhurvjZZt_U,7521
|
|
21
21
|
pycontrails/core/met.py,sha256=O9W6RaEwUsg7ZERR47Q-6fYjg13BzOZtcQdw92444xg,103987
|
|
22
22
|
pycontrails/core/aircraft_performance.py,sha256=Kk_Rb61jDOWPmCQHwn2jR5vMPmB8b3aq1iTWfiUMj9U,28232
|
|
23
23
|
pycontrails/core/airports.py,sha256=ubYo-WvxKPd_dUcADx6yew9Tqh1a4VJDgX7aFqLYwB8,6775
|
|
24
24
|
pycontrails/core/met_var.py,sha256=lAbp3cko_rzMk_u0kq-F27sUXUxUKikUvCNycwp9ILY,12020
|
|
25
25
|
pycontrails/core/coordinates.py,sha256=0ySsHtqTon7GMbuwmmxMbI92j3ueMteJZh4xxNm5zto,5391
|
|
26
|
-
pycontrails/datalib/goes.py,sha256=
|
|
26
|
+
pycontrails/datalib/goes.py,sha256=_TB32tGWxumASOEZUQ_PwGWz8QMZPTJf8pG4jbPR-WY,34358
|
|
27
27
|
pycontrails/datalib/landsat.py,sha256=r6366rEF7fOA7mT5KySCPGJplgGE5LvBw5fMqk-U1oM,19697
|
|
28
28
|
pycontrails/datalib/__init__.py,sha256=hW9NWdFPC3y_2vHMteQ7GgQdop3917MkDaf5ZhU2RBY,369
|
|
29
29
|
pycontrails/datalib/sentinel.py,sha256=hYSxIlQnyJHqtHWlKn73HOK_1pm-_IbGebmkHnh4UcA,17172
|
|
@@ -31,7 +31,7 @@ pycontrails/datalib/_met_utils/metsource.py,sha256=B4Gd9gkfMMlXe-xc_xcNNZAJ0gOeR
|
|
|
31
31
|
pycontrails/datalib/ecmwf/arco_era5.py,sha256=7HXQU5S02PzX9Ew2ZrDKSp0tDEG1eeVAvbP3decmm20,12437
|
|
32
32
|
pycontrails/datalib/ecmwf/era5.py,sha256=4ULNdDlUN0kP6Tbp8D_-Bc12nAsLf0iNfZaDoj_AoZU,18952
|
|
33
33
|
pycontrails/datalib/ecmwf/era5_model_level.py,sha256=AO7ePIGZtavx5nQSPYP4p07RNZeg3bbzmoZC7RUC4Gg,19354
|
|
34
|
-
pycontrails/datalib/ecmwf/hres.py,sha256=
|
|
34
|
+
pycontrails/datalib/ecmwf/hres.py,sha256=isRQkybVZyKxVvqpQyGQsMtePFfv_qqAMBQ98wDLYtc,29680
|
|
35
35
|
pycontrails/datalib/ecmwf/variables.py,sha256=lU3BNe265XVhCXvdMwZqfkWQwtsetZxVRLSfPqHFKAE,9913
|
|
36
36
|
pycontrails/datalib/ecmwf/hres_model_level.py,sha256=CcxMKiFJyLvM9njmBVywAXJxyWE7atsgHXBubKJQqHM,17779
|
|
37
37
|
pycontrails/datalib/ecmwf/__init__.py,sha256=wdfhplEaW2UKTItIoshTtVEjbPyfDYoprTJNxbKZuvA,2021
|
|
@@ -54,18 +54,18 @@ pycontrails/ext/empirical_grid.py,sha256=FPNQA0x4nVwBXFlbs3DgIapSrXFYhoc8b8IX0M4
|
|
|
54
54
|
pycontrails/ext/bada.py,sha256=YlQq4nnFyWza1Am2e2ZucpaICHDuUFRTrtVzIKMzf9s,1091
|
|
55
55
|
pycontrails/utils/iteration.py,sha256=q_vb39VjxRr4hqTyPYko3gK4sboJOJf_Evq6m_2DL-g,319
|
|
56
56
|
pycontrails/utils/__init__.py,sha256=Gt_57sBgfliFSxx9sDpuchykFDxmM11Wg9xAeSqPcnI,32
|
|
57
|
-
pycontrails/utils/types.py,sha256=
|
|
57
|
+
pycontrails/utils/types.py,sha256=1AaY1x_qGlYAl08xg6PS0MPKm3OZwFBM7xLI_nHK7EY,4869
|
|
58
58
|
pycontrails/utils/temp.py,sha256=lGU0b_R8ze4yKlsOusHIIBaoNFBrmrB3vBjgHRlfcXk,1109
|
|
59
59
|
pycontrails/utils/json.py,sha256=oTiO8xh603esfBGaGVmA5eUzR0NhAqNpQCegMMgnSbg,5896
|
|
60
60
|
pycontrails/utils/dependencies.py,sha256=ATP45xYdUbIyGFzgbOe5SbokMytvB84TcexUEFnEUZE,2559
|
|
61
61
|
pycontrails/models/pcc.py,sha256=0Qdl4u8PmUEpNYd398glTChkbTwsh83wYPt0Bmi8qd8,11068
|
|
62
62
|
pycontrails/models/tau_cirrus.py,sha256=2Z4egt-QFprkyITRgtarA5alOTTQRQbjzgmSqE49_1g,5778
|
|
63
63
|
pycontrails/models/__init__.py,sha256=dQTOLQb7RdUdUwslt5se__5y_ymbInBexQmNrmAeOdE,33
|
|
64
|
-
pycontrails/models/issr.py,sha256=
|
|
65
|
-
pycontrails/models/sac.py,sha256=
|
|
64
|
+
pycontrails/models/issr.py,sha256=_qIKDgO0Owxeb0Q4WJlxcn1FJEvF3QDU-cqh2fpDsBo,7404
|
|
65
|
+
pycontrails/models/sac.py,sha256=8Vx5wg4-Kb8l4GK67wp7VNVpdFM4Wyux1xKuNrjZ_IQ,15516
|
|
66
66
|
pycontrails/models/accf.py,sha256=_tunWpw1sYW8ES8RvpdhNahXwaf4LwdHMEdXhv7-cCI,13566
|
|
67
67
|
pycontrails/models/dry_advection.py,sha256=8vkHesYx3rM858LrIpXCZ9xQ6GmL3tZeOhj5MJh42Q0,20483
|
|
68
|
-
pycontrails/models/pcr.py,sha256=
|
|
68
|
+
pycontrails/models/pcr.py,sha256=Xde0aF8cMV9jTQ_uI2UvdHSLqotVUgPutb1Wgq7LtfY,5374
|
|
69
69
|
pycontrails/models/emissions/__init__.py,sha256=CZB2zIkLUI3NGNmq2ddvRYjEtiboY6PWJjiEiXj_zII,478
|
|
70
70
|
pycontrails/models/emissions/ffm2.py,sha256=mAvBHnp-p3hIn2fjKGq50eaMHi0jcb5hA5uXbJGeE9I,12068
|
|
71
71
|
pycontrails/models/emissions/emissions.py,sha256=qt689n4MuWw4XZ0NneBTNR2RqVG3XRYafgkkdSc1yEw,47757
|
|
@@ -103,11 +103,11 @@ pycontrails/models/ps_model/static/ps-synonym-list-20250328.csv,sha256=phtrf0m-U
|
|
|
103
103
|
pycontrails/models/cocipgrid/cocip_grid_params.py,sha256=l4vBPrOKCJDz5Y1uMjmOGVyUcSWgfZtFWbjW968OPz8,5875
|
|
104
104
|
pycontrails/models/cocipgrid/__init__.py,sha256=ar6bF_8Pusbb-myujz_q5ntFylQTNH8yiM8fxP7Zk30,262
|
|
105
105
|
pycontrails/models/cocipgrid/cocip_grid.py,sha256=OTltSP9wWNEZbi0Pcr19sDeBlbRWssmJy085X5TZ-lo,91401
|
|
106
|
-
pycontrails/physics/geo.py,sha256=
|
|
106
|
+
pycontrails/physics/geo.py,sha256=ITK23l1A2lzjNPTFC8ZKyQH59I5Cy_TvuvM_gbALo94,36297
|
|
107
107
|
pycontrails/physics/units.py,sha256=p-6PzFLpVCMpvmfrhXVh3Hs-nMJw9Y1x-hvgnL9Lo9c,12281
|
|
108
108
|
pycontrails/physics/constants.py,sha256=xWy7OkDOJNM6umq5dYiuzwG0aTEl5aECLxEpg3Z2SBQ,3202
|
|
109
109
|
pycontrails/physics/__init__.py,sha256=_1eWbEy6evEWdfJCEkwDiSdpiDNzNWEPVqaPekHyhwU,44
|
|
110
|
-
pycontrails/physics/thermo.py,sha256=
|
|
110
|
+
pycontrails/physics/thermo.py,sha256=v7-66PE31SJXz45MXAB9Iq9XfPg1Sn5FpOsTngLaDDI,15406
|
|
111
111
|
pycontrails/physics/jet.py,sha256=Je1d3vgbBEaVIAL1WZ3C-4p2f9fy9dWOjP5vFVsGGh8,30358
|
|
112
112
|
pycontrails/physics/static/iata-cargo-load-factors-20250221.csv,sha256=ixsnQk1DyGxHMo0pDy4aOoQIwgOyrGfhMRPumEwPMBc,3841
|
|
113
113
|
pycontrails/physics/static/iata-passenger-load-factors-20250221.csv,sha256=Q2olRIqUpbOaavvM5ikG8m1v1YQAN3KLNHeFDPvM53Q,3835
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|