pycontrails 0.54.11__cp312-cp312-win_amd64.whl → 0.55.0__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.

@@ -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, ArrayScalarLike, apply_nan_mask_to_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 _e_sat_liquid_prime(T) - G
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 * _e_sat_liquid_prime(T) / G_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
@@ -51,7 +51,7 @@ M_v: float = 18.0153e-3
51
51
  #: Ratio of heat capacities, TODO: which heat capacities?
52
52
  gamma: float = 1.4
53
53
 
54
- #: molar gas constant :math:`[J \ mol^{-1} \ K^{-1}]`
54
+ #: Molar gas constant :math:`[J \ mol^{-1} \ K^{-1}]`
55
55
  R: float = 8.314462618
56
56
 
57
57
  #: Gas constant of dry air :math:`[J \ kg^{-1} \ K^{-1}]`
@@ -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: npt.NDArray[np.floating] | float,
377
- dist: npt.NDArray[np.floating] | float,
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
 
@@ -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 e_sat_liquid(T: ArrayScalarLike) -> ArrayScalarLike:
146
- r"""Calculate saturation pressure of water vapor over liquid water.
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
- References
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
- - :cite:`sonntag1994`
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
- # Magnus Tetens (Murray, 1967)
166
- # 6.1078 * np.exp(17.269388 * (T - 273.16) / (T - 35.86))
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
- # Sonntag (1994) is used in CoCiP
241
+ def sonntag_e_sat_liquid_prime(T: ArrayScalarLike) -> ArrayScalarLike:
242
+ """Calculate the derivative of :func:`sonntag_e_sat_liquid`.
172
243
 
173
- # FIXME: Presently, mypy is not aware that numpy ufuncs will return `xr.DataArray``
174
- # when xr.DataArray is passed in. This will get fixed at some point in the future
175
- # as `numpy` their typing patterns, after which the "type: ignore" comment can
176
- # get ripped out.
177
- # We could explicitly check for `xr.DataArray` then use `xr.apply_ufunc`, but
178
- # this only renders our code more boilerplate and less performant.
179
- # This comment is pasted several places in `pycontrails` -- they should all be
180
- # addressed at the same time.
181
- return 100.0 * np.exp( # type: ignore[return-value]
182
- -6096.9385 / T + 16.635794 - 0.02711193 * T + 1.673952 * 1e-5 * T**2 + 2.433502 * np.log(T)
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`.
@@ -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, xr.DataArray | np.ndarray)
17
+ ArrayLike = TypeVar("ArrayLike", np.ndarray, xr.DataArray)
18
18
 
19
19
  #: Array or Float (np.ndarray, float)
20
- ArrayOrFloat = TypeVar("ArrayOrFloat", npt.NDArray[np.floating], float)
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pycontrails
3
- Version: 0.54.11
3
+ Version: 0.55.0
4
4
  Summary: Python library for modeling aviation climate impacts
5
5
  Author-email: "Contrails.org" <py@contrails.org>
6
6
  License-Expression: Apache-2.0
@@ -1,5 +1,5 @@
1
1
  pycontrails/__init__.py,sha256=mKNmGUS5wW1n1PukeaOkmLwQVN24i1__mk0odjBzwEE,2107
2
- pycontrails/_version.py,sha256=3ZYGWQZfQ5wgpP3lg8ortMs3pMchQHAI8UBrkGV34P8,536
2
+ pycontrails/_version.py,sha256=4MWnnoBh0SrKnCZ4cFSFP74uSUd0CfncpHHiW3hjbj0,748
3
3
  pycontrails/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  pycontrails/core/__init__.py,sha256=kOAehIZBbvksSW3MuU2DfzsyeE4PaFnOTpYMeq2ZDPE,886
5
5
  pycontrails/core/aircraft_performance.py,sha256=dasanaqfm5eP9XUDhgoKGj-eQHTWwMZ_mN6_ZdFulT0,28911
@@ -15,10 +15,10 @@ pycontrails/core/met.py,sha256=NBboBTRKNt5WFSnKUdm2R_9N68EQTYii4P5A_hs79YQ,10689
15
15
  pycontrails/core/met_var.py,sha256=bFpBFpQnN6osVAuxNNhG6vG_NMThEIhDcL2B9VpXgww,12407
16
16
  pycontrails/core/models.py,sha256=MRDNYVr8WMTF5EJrwZ8zxPHKKMcU09apBcqycimCWwk,45236
17
17
  pycontrails/core/polygon.py,sha256=3_vYmlQoP3x3lmgwFyqQVgl9ziAQ5e160MCm2fwFou0,18619
18
- pycontrails/core/rgi_cython.cp312-win_amd64.pyd,sha256=OfJB__HdRggOtAvFPo2u87X-Ada_aQ61s7MNhvByQkI,243200
18
+ pycontrails/core/rgi_cython.cp312-win_amd64.pyd,sha256=QOXgbm4bCbayz6LD5wizgUS5qx82xpmjTa3FPZ-EXVE,243200
19
19
  pycontrails/core/vector.py,sha256=n9b_HxQSWOUbxvut7mNaK523JlISi3-TLd5YwrmeOwM,75883
20
20
  pycontrails/datalib/__init__.py,sha256=Q2RrnjwtFzfsmJ2tEojDCzDMkd8R0MYw4mQz3YwUsqI,381
21
- pycontrails/datalib/goes.py,sha256=llpiUakz2Jo9B86rafS6yrBIDn53mqWdTojplZdp3AU,35249
21
+ pycontrails/datalib/goes.py,sha256=HTjnh147GZQfYX7R0zGVddwMuCHZQJp4cWqthGLETHY,35321
22
22
  pycontrails/datalib/landsat.py,sha256=YrDpngF5HtvWFVwxN0FLFxCfZIEmeBMiifdkbH7fQTk,20263
23
23
  pycontrails/datalib/sentinel.py,sha256=ukzdSeHKC1UBWEYzehS2LqtKoCpKpaPobLfbZDGy6KU,17679
24
24
  pycontrails/datalib/_leo_utils/search.py,sha256=8JzT56ps3SH1W-5rwL8BWuxLLljwxa_5fjLAuZdL_Vg,8937
@@ -30,7 +30,7 @@ pycontrails/datalib/ecmwf/arco_era5.py,sha256=PojAfT0N12SLcgiecZtHiN96sbRWwFx3PT
30
30
  pycontrails/datalib/ecmwf/common.py,sha256=6fcZC_-3FvWJ3vtlZX89PiiS7-DSQhAOgxrLjwU4iW4,4138
31
31
  pycontrails/datalib/ecmwf/era5.py,sha256=TbZlOqn3fPmfvCUR1XrVBWxNgIBpSXgRx0S4M49TSeY,19506
32
32
  pycontrails/datalib/ecmwf/era5_model_level.py,sha256=NVquyG_3SzdmfoQl25Wvp4oB_pOe7K_AQOfNv7no14E,19844
33
- pycontrails/datalib/ecmwf/hres.py,sha256=JLLxv0O8UD8STT9gnlGPkjxAMdhAXzMV1O8bnmLEs9k,30482
33
+ pycontrails/datalib/ecmwf/hres.py,sha256=3RHmikpMj0BXHyD6m6iqz56x7R8zN0METezISG_sNic,30484
34
34
  pycontrails/datalib/ecmwf/hres_model_level.py,sha256=EfKbCLyib2aMfeeTFuop4dutB7FiVFhX7UWW_hKtESE,18245
35
35
  pycontrails/datalib/ecmwf/ifs.py,sha256=a5QmXuihBNGx1eNN7EJGjR5dL9dO142nqkDSkPYGGlc,11048
36
36
  pycontrails/datalib/ecmwf/model_levels.py,sha256=noLSx45AHZ0rFPiUh3aK3iaEueHgsg6mG_AplHqHeU8,17431
@@ -48,11 +48,12 @@ pycontrails/ext/empirical_grid.py,sha256=mveQltokaGeQcxxbdMSLQ6wQ14oh3XX5dfzjWaF
48
48
  pycontrails/ext/synthetic_flight.py,sha256=dEWm9vrg6SAWieh6GLAE0m1orTrApav8HHP42-4bIHg,17233
49
49
  pycontrails/models/__init__.py,sha256=TKhrXe1Pu1-mV1gctx8cUAMrVxCCAtBkbZi9olfWq8s,34
50
50
  pycontrails/models/accf.py,sha256=rbEn6oTqXsgDPA3Ky0y-bADHWTxGXixa8OwpHH_pXag,13991
51
- pycontrails/models/dry_advection.py,sha256=4oOCMhUkmHJiQDdkLJGoODw0ebE4avoMpMDoF-6L59M,21085
52
- pycontrails/models/issr.py,sha256=J6mh4pze31XpD2_zD9ujzYPXsZFrmSwNcRORCcLoOVI,7588
51
+ pycontrails/models/dry_advection.py,sha256=D1QT8ONFnHjYhuk4iimtjCiGq2TuVHV8l-mRnWNCXOE,21094
52
+ pycontrails/models/extended_k15.py,sha256=Nl6lojJzk1qKaBagJWzWcQbNN51f68_EiYMlcFaGZaw,49385
53
+ pycontrails/models/issr.py,sha256=1pqijM2ecEHhmclSRodyZNnj1f-rCn2H_d44SQYo25I,7614
53
54
  pycontrails/models/pcc.py,sha256=7k8kICqDeZ99O2n2Zpnu7EFNGjEpPka_9cu9nrmP44s,11394
54
- pycontrails/models/pcr.py,sha256=G_0yR5PsCMeJBP6tZFi3M7A6Wcq8s71UvosdA7ozUkI,5502
55
- pycontrails/models/sac.py,sha256=LhEwexJZnkxitj-x5eNVSCDGdkoCdj8Zh_I0WB8FWOY,16405
55
+ pycontrails/models/pcr.py,sha256=YI7kd7BRdkHt970LCg0DhAOj-Bfukw0jclfvXGNo1jE,5528
56
+ pycontrails/models/sac.py,sha256=5DZWCkHtJXpifWc0ltzecdPLVr1XgjctRuyn3w4zcQc,15958
56
57
  pycontrails/models/tau_cirrus.py,sha256=6hVeOahKX2MV8NNED7f5yej_2-z3ENPuTl3gjpKxzzI,5961
57
58
  pycontrails/models/apcemm/__init__.py,sha256=dDsRW3V6jjzKDd43Yoyc74m_Om1fccvftZgp3OFdAYE,183
58
59
  pycontrails/models/apcemm/apcemm.py,sha256=tbG57Vro7_vXwqE0YpXrimPTtvAXsurti2eBAVWGe-Y,40958
@@ -60,18 +61,18 @@ pycontrails/models/apcemm/inputs.py,sha256=zHRSWVVlwYw6ms7PpC0p0I-xFsRDUVY9eDZ1g
60
61
  pycontrails/models/apcemm/utils.py,sha256=gew1MGtuOwKy0CTVKomJ_Lmuhmy4JxsopkughzCeB4o,17519
61
62
  pycontrails/models/apcemm/static/apcemm_yaml_template.yaml,sha256=A3H_FWVOtqkZhG91TWLdblMKaLWIcjRMsKqkfTN6mB4,6928
62
63
  pycontrails/models/cocip/__init__.py,sha256=v8JJN_Jx3_tOHaqGaQG-Es7srEAtSCHI7-gCEnM-n-s,991
63
- pycontrails/models/cocip/cocip.py,sha256=zMJ-sDMO4mTAt6Qgc5uDvc-zJxZxO-Y_pbYvYD7rJCI,106820
64
- pycontrails/models/cocip/cocip_params.py,sha256=pk0fimh_Wz8g8Q75BIrsOlmeH85rbpHKttjp6rkcFGY,12833
65
- pycontrails/models/cocip/cocip_uncertainty.py,sha256=fKQVAg-HyviegwNauxLgX9wdA0cRpK8XAOCNjZZIRWI,12528
66
- pycontrails/models/cocip/contrail_properties.py,sha256=JUngbMCw3SUCYkNdOWsp66J4v1kK4KtrWh9QajXwH-s,57583
64
+ pycontrails/models/cocip/cocip.py,sha256=wbsCjrqU07CuyIYh2CmbrIeRRKftwS9MrQR0id_yuw8,107589
65
+ pycontrails/models/cocip/cocip_params.py,sha256=SLrK6N1KfadD6bd7f5sVcK-ifZfbYWVe3u8YnPKS55g,13113
66
+ pycontrails/models/cocip/cocip_uncertainty.py,sha256=l7zfcMUw47uZ8vNhFeqF03DBXG67GFOH2tbegAPWBmw,12540
67
+ pycontrails/models/cocip/contrail_properties.py,sha256=p1JBGFCn2wsxmnZAdoUKK_fy7F5FH3phUl6Fxs80oHM,57271
67
68
  pycontrails/models/cocip/output_formats.py,sha256=pffbcl9-7HpcJRWDCABHg7yGxjjX_-90uVyt3rIpLHc,86250
68
- pycontrails/models/cocip/radiative_forcing.py,sha256=qs5pEAPec0DAhqqCKJXJbRRH5hMIz4xwUQqZjCoJIyg,45910
69
+ pycontrails/models/cocip/radiative_forcing.py,sha256=ypgnYi4v3gCQMm_-OQ6rfNocSXyryGxvwLGRgazO1YE,45946
69
70
  pycontrails/models/cocip/radiative_heating.py,sha256=PcOEkqRtQJNq7bxOoz1baBbVV2ku1UQRMrrQXXsRBwc,19504
70
- pycontrails/models/cocip/unterstrasser_wake_vortex.py,sha256=0TE1gK2p0b7RQjBGRGgfg7BmzmdxbJLPJ-9sdlak1gQ,19444
71
- pycontrails/models/cocip/wake_vortex.py,sha256=i6P1UDxde_WPP8SAliPdiaVCdeFMRxCFR7_zKaoNlno,14911
71
+ pycontrails/models/cocip/unterstrasser_wake_vortex.py,sha256=wnkzJlm9L-QXZ4gZD4Pdq_XQEL3odXnvmOYPGCLyidA,19439
72
+ pycontrails/models/cocip/wake_vortex.py,sha256=71bNGy95DYSXjEjDo0jDLGR41XMgia8zrFO7IuAHW6M,14951
72
73
  pycontrails/models/cocip/wind_shear.py,sha256=qhmP3RJ9SEjd-qnXcgRiYis9-apKGF-1d78z6N__tq8,3988
73
74
  pycontrails/models/cocipgrid/__init__.py,sha256=OYSdZ1Htbr_IP7N_HuOAj1Pa_KLHtdEeJfXP-cN-gnU,271
74
- pycontrails/models/cocipgrid/cocip_grid.py,sha256=2EzfbYhHrGfb6jfVuxNDW06PSvyJ2FGJqyRK_1gyH_g,93925
75
+ pycontrails/models/cocipgrid/cocip_grid.py,sha256=X1ssHAHmqFcQLdybA8D5TETUnj1nfewBtZbVs--Ppbg,95230
75
76
  pycontrails/models/cocipgrid/cocip_grid_params.py,sha256=ZpN00VEmeRYaeZhvSfVjnEjrgn6XdClf1eqJC8Ytcuw,6013
76
77
  pycontrails/models/emissions/__init__.py,sha256=phai3wH5VuUyfyVpu5vHOFI0jXSyoYSWvLTknS78xs0,499
77
78
  pycontrails/models/emissions/black_carbon.py,sha256=o8mVfDZLnNlfnvsqk8O-ljXrMn4Y_ApFuPROAQWHaQY,21294
@@ -92,10 +93,10 @@ pycontrails/models/ps_model/ps_operational_limits.py,sha256=95evggmtPbnr3kqNgqfO
92
93
  pycontrails/models/ps_model/static/ps-aircraft-params-20250328.csv,sha256=TKeDak9DHVFByYo3yoEwDZLqOYCJcE32P7lWNm14TnA,26254
93
94
  pycontrails/models/ps_model/static/ps-synonym-list-20250328.csv,sha256=piFhytYtGMMF8bL64GKQausLiGUGQi30KBegknzjecE,1152
94
95
  pycontrails/physics/__init__.py,sha256=AScCMSMSZjKxfL6mssdSLwcja1ml7MzREThQp5PLr9U,45
95
- pycontrails/physics/constants.py,sha256=_MVuhk6GxxZhj5RL_ci6IAgSe4oJyxLZwBvpMuGcl3Q,3319
96
- pycontrails/physics/geo.py,sha256=WyZKLj-63yGCfjePEhiwxLp26be44VCdEiisu9tXtzE,37461
96
+ pycontrails/physics/constants.py,sha256=QninjsmBvmKNj8uHWTuEGKKq9biNh6KmSRkj2SGQHuw,3318
97
+ pycontrails/physics/geo.py,sha256=ceaOy9ffCRb8eu6LlOAvM04mVMKbmqNh1dvw6iXq5bI,37435
97
98
  pycontrails/physics/jet.py,sha256=nUJY-TVowCPYlhrTkEncDocoVKCeN2IAhvP-6vWP2dQ,31326
98
- pycontrails/physics/thermo.py,sha256=HAcg2wmNXW-vJbOF2kOXBoUyJiAosPY0nRWeM37otdY,13238
99
+ pycontrails/physics/thermo.py,sha256=Bm1ERIEYxRwdhkAVzO-xdsmEInp9WZAJNT1TLV0WTVQ,15957
99
100
  pycontrails/physics/units.py,sha256=r6ncLqhFi9Roi73SfGvfjuB_jpwtsjJ39L3yxr8ndIc,12753
100
101
  pycontrails/physics/static/iata-cargo-load-factors-20250221.csv,sha256=ePGCUak5noyY63aL1a8T7EJf8sWzIpeY95-sbaYKF5w,3915
101
102
  pycontrails/physics/static/iata-passenger-load-factors-20250221.csv,sha256=sK9caPg9MvRYBHm_HVvXGA90x4j4OVIxkxFHF1HOKnA,3909
@@ -104,10 +105,10 @@ pycontrails/utils/dependencies.py,sha256=SjEdbDDKfGmmYResWZndMCUySO0W0ptWAeY1aA_
104
105
  pycontrails/utils/iteration.py,sha256=En2YY4NiNwCNtAVO8HL6tv9byBGKs8MKSI7R8P-gZy4,332
105
106
  pycontrails/utils/json.py,sha256=Pqashwoupuf_GfrrSfHclwug9Hg-kYQ4WNxEqay_0Rc,6083
106
107
  pycontrails/utils/temp.py,sha256=5XXqQoEfWjz1OrhoOBZD5vkkCFeuq9LpZkyhc38gIeY,1159
107
- pycontrails/utils/types.py,sha256=hPqUwaeRLgga69nj7LVbPojPg1k7pUSvYzFlGAiPKIM,5154
108
- pycontrails-0.54.11.dist-info/licenses/LICENSE,sha256=HVr8JnZfTaA-12BfKUQZi5hdrB3awOwLWs5X_ga5QzA,10353
109
- pycontrails-0.54.11.dist-info/licenses/NOTICE,sha256=VIhzKNYi4lQx6fpZyqiY6eMHpLuwp-_G0JQkmYYa7h0,2005
110
- pycontrails-0.54.11.dist-info/METADATA,sha256=ATxrKUPw9Q-7nbMQ7r3CFgRfgM3wuEn7OUSUWEUO2CM,9215
111
- pycontrails-0.54.11.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
112
- pycontrails-0.54.11.dist-info/top_level.txt,sha256=Z8J1R_AiBAyCVjNw6jYLdrA68PrQqTg0t3_Yek_IZ0Q,29
113
- pycontrails-0.54.11.dist-info/RECORD,,
108
+ pycontrails/utils/types.py,sha256=WJS3rnYxU4l8eEJuJVWGBRD7-zvEBlRD8TQx-fxKbic,5032
109
+ pycontrails-0.55.0.dist-info/licenses/LICENSE,sha256=HVr8JnZfTaA-12BfKUQZi5hdrB3awOwLWs5X_ga5QzA,10353
110
+ pycontrails-0.55.0.dist-info/licenses/NOTICE,sha256=VIhzKNYi4lQx6fpZyqiY6eMHpLuwp-_G0JQkmYYa7h0,2005
111
+ pycontrails-0.55.0.dist-info/METADATA,sha256=SsZW3aKx-5WzetpZ6_ALJsrJxrXW7biGEELCNLK2JL0,9214
112
+ pycontrails-0.55.0.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
113
+ pycontrails-0.55.0.dist-info/top_level.txt,sha256=Z8J1R_AiBAyCVjNw6jYLdrA68PrQqTg0t3_Yek_IZ0Q,29
114
+ pycontrails-0.55.0.dist-info/RECORD,,