foxes 0.7.2__py3-none-any.whl → 0.7.3__py3-none-any.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 foxes might be problematic. Click here for more details.

Files changed (60) hide show
  1. foxes/VERSION +1 -1
  2. foxes/algorithms/downwind/downwind.py +57 -45
  3. foxes/algorithms/downwind/models/farm_wakes_calc.py +17 -6
  4. foxes/algorithms/downwind/models/point_wakes_calc.py +13 -45
  5. foxes/algorithms/iterative/iterative.py +1 -1
  6. foxes/algorithms/iterative/models/farm_wakes_calc.py +18 -4
  7. foxes/constants.py +5 -0
  8. foxes/core/__init__.py +2 -1
  9. foxes/core/ground_model.py +254 -0
  10. foxes/core/model.py +3 -2
  11. foxes/core/partial_wakes_model.py +19 -3
  12. foxes/core/states.py +33 -0
  13. foxes/core/wake_model.py +138 -2
  14. foxes/data/__init__.py +1 -1
  15. foxes/data/states/WRF-Timeseries-3000.nc +0 -0
  16. foxes/data/states/windio_timeseries_5000.nc +0 -0
  17. foxes/data/static_data.py +7 -0
  18. foxes/data/windio/DTU_10MW_turbine.yaml +10 -0
  19. foxes/data/windio/__init__.py +0 -0
  20. foxes/data/windio/windio_5turbines_timeseries.yaml +63 -0
  21. foxes/input/states/__init__.py +1 -0
  22. foxes/input/states/multi_height.py +225 -6
  23. foxes/input/windio/__init__.py +6 -1
  24. foxes/input/windio/get_states.py +115 -0
  25. foxes/input/windio/read_attributes.py +321 -0
  26. foxes/input/windio/read_farm.py +163 -0
  27. foxes/input/windio/read_fields.py +164 -0
  28. foxes/input/windio/runner.py +105 -0
  29. foxes/input/windio/windio.py +136 -254
  30. foxes/models/__init__.py +1 -0
  31. foxes/models/ground_models/__init__.py +2 -0
  32. foxes/models/ground_models/no_ground.py +12 -0
  33. foxes/models/ground_models/wake_mirror.py +161 -0
  34. foxes/models/model_book.py +68 -149
  35. foxes/models/partial_wakes/axiwake.py +27 -4
  36. foxes/models/partial_wakes/top_hat.py +26 -4
  37. foxes/models/turbine_types/PCt_file.py +1 -0
  38. foxes/models/turbine_types/PCt_from_two.py +92 -0
  39. foxes/models/wake_frames/yawed_wakes.py +41 -38
  40. foxes/models/wake_models/__init__.py +0 -1
  41. foxes/models/wake_models/induction/__init__.py +1 -0
  42. foxes/models/wake_models/induction/rankine_half_body.py +1 -1
  43. foxes/models/wake_models/induction/vortex_sheet.py +227 -0
  44. foxes/models/wake_models/ti/crespo_hernandez.py +26 -24
  45. foxes/models/wake_models/ti/iec_ti.py +33 -26
  46. foxes/models/wake_models/wind/bastankhah14.py +11 -32
  47. foxes/models/wake_models/wind/bastankhah16.py +30 -34
  48. foxes/models/wake_models/wind/jensen.py +13 -29
  49. foxes/models/wake_models/wind/turbopark.py +31 -61
  50. foxes/output/grids.py +6 -6
  51. foxes/output/output.py +6 -6
  52. foxes/utils/__init__.py +1 -1
  53. foxes/utils/factory.py +203 -11
  54. {foxes-0.7.2.dist-info → foxes-0.7.3.dist-info}/METADATA +8 -6
  55. {foxes-0.7.2.dist-info → foxes-0.7.3.dist-info}/RECORD +59 -45
  56. {foxes-0.7.2.dist-info → foxes-0.7.3.dist-info}/WHEEL +1 -1
  57. foxes/models/wake_models/wake_mirror.py +0 -196
  58. {foxes-0.7.2.dist-info → foxes-0.7.3.dist-info}/LICENSE +0 -0
  59. {foxes-0.7.2.dist-info → foxes-0.7.3.dist-info}/top_level.txt +0 -0
  60. {foxes-0.7.2.dist-info → foxes-0.7.3.dist-info}/zip-safe +0 -0
foxes/output/grids.py CHANGED
@@ -108,12 +108,12 @@ def get_grid_xy(
108
108
  n_states = farm_results[FV.H].shape[0]
109
109
 
110
110
  # get base rectangle:
111
- x_min = xmin if xmin is not None else farm_results[FV.X].min() - xspace
112
- y_min = ymin if ymin is not None else farm_results[FV.Y].min() - yspace
113
- z_min = z if z is not None else farm_results[FV.H].min()
114
- x_max = xmax if xmax is not None else farm_results[FV.X].max() + xspace
115
- y_max = ymax if ymax is not None else farm_results[FV.Y].max() + yspace
116
- z_max = z if z is not None else farm_results[FV.H].max()
111
+ x_min = xmin if xmin is not None else farm_results[FV.X].min().to_numpy() - xspace
112
+ y_min = ymin if ymin is not None else farm_results[FV.Y].min().to_numpy() - yspace
113
+ z_min = z if z is not None else farm_results[FV.H].min().to_numpy()
114
+ x_max = xmax if xmax is not None else farm_results[FV.X].max().to_numpy() + xspace
115
+ y_max = ymax if ymax is not None else farm_results[FV.Y].max().to_numpy() + yspace
116
+ z_max = z if z is not None else farm_results[FV.H].max().to_numpy()
117
117
 
118
118
  x_pos, x_res = np.linspace(
119
119
  x_min,
foxes/output/output.py CHANGED
@@ -97,13 +97,13 @@ class Output:
97
97
  print(n)
98
98
 
99
99
  @classmethod
100
- def new(cls, model_type, *args, **kwargs):
100
+ def new(cls, output_type, *args, **kwargs):
101
101
  """
102
102
  Run-time output model factory.
103
103
 
104
104
  Parameters
105
105
  ----------
106
- model_type: string
106
+ output_type: string
107
107
  The selected derived class name
108
108
  args: tuple, optional
109
109
  Additional parameters for the constructor
@@ -112,19 +112,19 @@ class Output:
112
112
 
113
113
  """
114
114
 
115
- if model_type is None:
115
+ if output_type is None:
116
116
  return None
117
117
 
118
118
  allc = all_subclasses(cls)
119
- found = model_type in [scls.__name__ for scls in allc]
119
+ found = output_type in [scls.__name__ for scls in allc]
120
120
 
121
121
  if found:
122
122
  for scls in allc:
123
- if scls.__name__ == model_type:
123
+ if scls.__name__ == output_type:
124
124
  return scls(*args, **kwargs)
125
125
 
126
126
  else:
127
127
  estr = "Output type '{}' is not defined, available types are \n {}".format(
128
- model_type, sorted([i.__name__ for i in allc])
128
+ output_type, sorted([i.__name__ for i in allc])
129
129
  )
130
130
  raise KeyError(estr)
foxes/utils/__init__.py CHANGED
@@ -7,7 +7,7 @@ from .pandas_utils import PandasFileHelper
7
7
  from .xarray_utils import write_nc
8
8
  from .subclasses import all_subclasses
9
9
  from .dict import Dict
10
- from .factory import Factory, FDict
10
+ from .factory import Factory, FDict, WakeKFactory
11
11
  from .data_book import DataBook
12
12
  from .cubic_roots import cubic_roots
13
13
  from .geopandas_utils import read_shp, shp2csv, read_shp_polygons, shp2geom2d
foxes/utils/factory.py CHANGED
@@ -1,6 +1,5 @@
1
- import numpy as np
2
-
3
1
  from .dict import Dict
2
+ import foxes.variables as FV
4
3
 
5
4
 
6
5
  class Factory:
@@ -73,14 +72,10 @@ class Factory:
73
72
  self.var2arg = var2arg
74
73
  self.hints = hints
75
74
 
76
- parts = name_template.split(">")
77
- if len(parts) < 2:
78
- raise ValueError(
79
- f"Factory '{name_template}': Expecting at least one variable in template, pattern '<..>'"
80
- )
81
-
82
75
  self._vars = []
83
76
  self._pre = []
77
+ parts = name_template.split(">")
78
+
84
79
  for i, p in enumerate(parts):
85
80
  if i < len(parts) - 1:
86
81
  parts2 = p.split("<")
@@ -262,6 +257,186 @@ class Factory:
262
257
  return self.base(*self.args, **kwargs)
263
258
 
264
259
 
260
+ class WakeKFactory:
261
+ """
262
+ A factory that automatically handles
263
+ wake_k parameters
264
+
265
+ Attributes
266
+ ----------
267
+ factories: list of Factory
268
+ The individual factories
269
+
270
+ :group: utils
271
+
272
+ """
273
+
274
+ def __init__(self, base, name_template, *args, hints={}, **kwargs):
275
+ """
276
+ Constructor.
277
+
278
+ Parameters
279
+ ----------
280
+ base: class
281
+ The class of which objects are to be created
282
+ name_template: str
283
+ The name template, e.g. 'name_<A>_<B>_<C>' for
284
+ variables A, B, C. Indicate wake_k part by '_[wake_k]'
285
+ args: tuple, optional
286
+ Additional arguments for Factory
287
+ hints: dict
288
+ Hints for print_toc, only for variables for which the
289
+ options are functions or missing
290
+ kwargs: dict
291
+ Additional arguments for Factory
292
+
293
+ """
294
+ self._base = base
295
+ self._kwargs = kwargs
296
+ self._template0 = name_template
297
+ self.factories = []
298
+
299
+ i0 = name_template.find("_[wake_k]")
300
+ i1 = i0 + len("_[wake_k]")
301
+ kw = kwargs.pop("kwargs", {})
302
+
303
+ if i0 < 0:
304
+ raise ValueError(
305
+ f"String '_[wake_k]' not found in name template '{name_template}'"
306
+ )
307
+
308
+ # add case ka, kb:
309
+ t = name_template[:i0] + "_ka<ka>_kb<kb>"
310
+ if len(name_template) > i1:
311
+ t += name_template[i1:]
312
+ h = hints.copy()
313
+ h["ka"] = "(Value, e.g. 04 for 0.4)"
314
+ h["kb"] = "(Value, e.g. 001 for 0.01)"
315
+ kw["ti_var"] = FV.TI
316
+ self.factories.append(
317
+ Factory(
318
+ base,
319
+ t,
320
+ *args,
321
+ hints=h,
322
+ kwargs=kw.copy(),
323
+ **kwargs,
324
+ ka=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
325
+ kb=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
326
+ )
327
+ )
328
+
329
+ # add case ambient ka, kb:
330
+ t = name_template[:i0] + "_ambka<ka>_kb<kb>"
331
+ if len(name_template) > i1:
332
+ t += name_template[i1:]
333
+ h = hints.copy()
334
+ h["ka"] = "(Value, e.g. 04 for 0.4)"
335
+ h["kb"] = "(Value, e.g. 001 for 0.01)"
336
+ kw["ti_var"] = FV.AMB_TI
337
+ self.factories.append(
338
+ Factory(
339
+ base,
340
+ t,
341
+ *args,
342
+ hints=h,
343
+ kwargs=kw.copy(),
344
+ **kwargs,
345
+ ka=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
346
+ kb=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
347
+ )
348
+ )
349
+
350
+ # add case ka:
351
+ t = name_template[:i0] + "_ka<ka>"
352
+ if len(name_template) > i1:
353
+ t += name_template[i1:]
354
+ h = hints.copy()
355
+ h["ka"] = "(Value, e.g. 04 for 0.4)"
356
+ kw["ti_var"] = FV.TI
357
+ self.factories.append(
358
+ Factory(
359
+ base,
360
+ t,
361
+ *args,
362
+ hints=h,
363
+ kwargs=kw.copy(),
364
+ **kwargs,
365
+ ka=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
366
+ )
367
+ )
368
+
369
+ # add case ka:
370
+ t = name_template[:i0] + "_ambka<ka>"
371
+ if len(name_template) > i1:
372
+ t += name_template[i1:]
373
+ h = hints.copy()
374
+ h["ka"] = "(Value, e.g. 04 for 0.4)"
375
+ kw["ti_var"] = FV.AMB_TI
376
+ self.factories.append(
377
+ Factory(
378
+ base,
379
+ t,
380
+ *args,
381
+ hints=h,
382
+ kwargs=kw.copy(),
383
+ **kwargs,
384
+ ka=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
385
+ )
386
+ )
387
+
388
+ # add case k:
389
+ t = name_template[:i0] + "_k<k>"
390
+ if len(name_template) > i1:
391
+ t += name_template[i1:]
392
+ h = hints.copy()
393
+ h["k"] = "(Value, e.g. 004 for 0.04)"
394
+ kw["ti_var"] = FV.TI
395
+ self.factories.append(
396
+ Factory(
397
+ base,
398
+ t,
399
+ *args,
400
+ hints=h,
401
+ kwargs=kw.copy(),
402
+ **kwargs,
403
+ k=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
404
+ )
405
+ )
406
+
407
+ # add case without k:
408
+ t = name_template[:i0]
409
+ if len(name_template) > i1:
410
+ t += name_template[i1:]
411
+ kw["ti_var"] = FV.TI
412
+ self.factories.append(
413
+ Factory(
414
+ base,
415
+ t,
416
+ *args,
417
+ hints=hints,
418
+ kwargs=kw.copy(),
419
+ **kwargs,
420
+ )
421
+ )
422
+
423
+ def __str__(self):
424
+ """String representation"""
425
+ s = f"{self._template0}: {self._base.__name__} with"
426
+ for k, d in self._kwargs.items():
427
+ s += f"\n {k}={d}"
428
+ f0 = self.factories[-1]
429
+ for v in f0.variables:
430
+ if v in f0.options and isinstance(f0.options[v], dict):
431
+ s += f"\n {v} from {list(f0.options[v])}"
432
+ else:
433
+ s += f"\n {v}={f0.hints.get(v, '(value)')}"
434
+ s += (
435
+ f"\n [wake_k]=(None or k<k> or ka<ka> or ka<ka>_kb<kb>, e.g. 004 for 0.04)"
436
+ )
437
+ return s
438
+
439
+
265
440
  class FDict(Dict):
266
441
  """
267
442
  A dictionary with factory support
@@ -295,19 +470,21 @@ class FDict(Dict):
295
470
  self.store_created = store_created
296
471
  self.factories = []
297
472
 
298
- def add_factory(self, *args, **kwargs):
473
+ def add_factory(self, *args, factory=None, **kwargs):
299
474
  """
300
- Constructor.
475
+ Adds a Factory object.
301
476
 
302
477
  Parameters
303
478
  ----------
304
479
  args: tuple, optional
305
480
  Parameters for the Factory constructor
481
+ factory: Factory, optional
482
+ The factory object
306
483
  kwargs: dict, optional
307
484
  Parameters for the Factory constructor
308
485
 
309
486
  """
310
- f = Factory(*args, **kwargs)
487
+ f = Factory(*args, **kwargs) if factory is None else factory
311
488
  i = len(self.factories)
312
489
  for gi in range(len(self.factories) - 1, -1, -1):
313
490
  g = self.factories[gi]
@@ -323,6 +500,21 @@ class FDict(Dict):
323
500
  else:
324
501
  self.factories.insert(i, f)
325
502
 
503
+ def add_k_factory(self, *args, **kwargs):
504
+ """
505
+ Adds a WakeKFactory.
506
+
507
+ Parameters
508
+ ----------
509
+ args: tuple, optional
510
+ Parameters for the Factory constructor
511
+ kwargs: dict, optional
512
+ Parameters for the Factory constructor
513
+
514
+ """
515
+ for f in WakeKFactory(*args, **kwargs).factories:
516
+ self.add_factory(factory=f)
517
+
326
518
  def __contains__(self, key):
327
519
  found = super().__contains__(key)
328
520
  if not found:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: foxes
3
- Version: 0.7.2
3
+ Version: 0.7.3
4
4
  Summary: Farm Optimization and eXtended yield Evaluation Software
5
5
  Author: Fraunhofer IWES
6
6
  Author-email: jonas.schmidt@iwes.fraunhofer.de
@@ -17,16 +17,18 @@ Requires-Python: >=3.8
17
17
  Description-Content-Type: text/markdown
18
18
  License-File: LICENSE
19
19
  Requires-Dist: matplotlib
20
- Requires-Dist: numpy
20
+ Requires-Dist: numpy <2
21
+ Requires-Dist: pandas
21
22
  Requires-Dist: xarray
22
- Requires-Dist: dask[distributed]
23
+ Requires-Dist: dask
24
+ Requires-Dist: distributed
23
25
  Requires-Dist: scipy
24
26
  Requires-Dist: netcdf4
25
27
  Requires-Dist: windrose
26
28
  Requires-Dist: iwopy >=0.1.4
27
29
  Requires-Dist: pyarrow
28
30
  Provides-Extra: all
29
- Requires-Dist: windio >=1.0 ; extra == 'all'
31
+ Requires-Dist: windio >=1 ; extra == 'all'
30
32
  Requires-Dist: flake8 ; extra == 'all'
31
33
  Requires-Dist: pytest ; extra == 'all'
32
34
  Requires-Dist: pymoo >=0.6 ; extra == 'all'
@@ -45,7 +47,7 @@ Requires-Dist: ipywidgets ; extra == 'doc'
45
47
  Requires-Dist: m2r2 ; extra == 'doc'
46
48
  Requires-Dist: lxml-html-clean ; extra == 'doc'
47
49
  Provides-Extra: io
48
- Requires-Dist: windio >=1.0 ; extra == 'io'
50
+ Requires-Dist: windio >=1 ; extra == 'io'
49
51
  Provides-Extra: scripts
50
52
  Provides-Extra: test
51
53
  Requires-Dist: flake8 ; extra == 'test'
@@ -170,7 +172,7 @@ The supported Python versions are:
170
172
  - `Python 3.11`
171
173
  - `Python 3.12`
172
174
 
173
- ### Preparation
175
+ ### Preparation (optional)
174
176
 
175
177
  It is strongly recommend to use the `libmamba` dependency solver instead of the default solver. Install it once by
176
178
 
@@ -1,29 +1,29 @@
1
- foxes/VERSION,sha256=0BdnGL0hTOhHTAbtYcOVyhE_38Ks3YbZqpkztA2bVh4,6
1
+ foxes/VERSION,sha256=nHiKg43B9r_YD6OXV6lflCYAccNQEcmgUwHaHHNQdlc,6
2
2
  foxes/__init__.py,sha256=4ptDOBaQC8fAd_ZH5XH7d5pIgx3JXEY9xLcK3Nrs2Ow,718
3
- foxes/constants.py,sha256=UfflqHQ67uSQYFFktZBSe6rrWntoL2ccpMHnKs7zTcA,2650
3
+ foxes/constants.py,sha256=RDRD9ZkKeq-VXV6Zb1Y-QuZYw0voQezalbUaxprAnq0,2713
4
4
  foxes/variables.py,sha256=I-S25WejH33ffOcVnmN2TDL1pIxWqg0aM1lhIBwZ9NQ,4454
5
5
  foxes/algorithms/__init__.py,sha256=uaXU8OYMT3eclcE6a2b8NkozHVXoM1BF5RJA2XR4DUw,260
6
6
  foxes/algorithms/downwind/__init__.py,sha256=lyygq5GMc6NAPmH0b0mhGeccWyuC8JTOEMZl-UlmE5M,53
7
- foxes/algorithms/downwind/downwind.py,sha256=7TuClA6ZbHNJg2L9oOrWWUQ_qhRsiRTwYuK1BkN8od0,21690
7
+ foxes/algorithms/downwind/downwind.py,sha256=o8d2HZW5m2NDVKhS0uWLhEuyGMuY9CPI5fM-RqBh79U,21862
8
8
  foxes/algorithms/downwind/models/__init__.py,sha256=0ov8rjIQ02w3iB6yYCxaswPvHDlPM_8_di6xPh1TTkQ,300
9
- foxes/algorithms/downwind/models/farm_wakes_calc.py,sha256=nRE_lCwrlVYB9zXJ0XR557IncNb6M7tUbhN9kBPgw_c,5178
9
+ foxes/algorithms/downwind/models/farm_wakes_calc.py,sha256=-O-0hpDYFnR15yaK3GNNd8G_4gNwRZ8pmnam94dANJQ,5535
10
10
  foxes/algorithms/downwind/models/init_farm_data.py,sha256=sTUMYGLU9iHr56prdNRR4cs0yuCFp7gqiCDut685HKM,4022
11
- foxes/algorithms/downwind/models/point_wakes_calc.py,sha256=RHW-VNOjwx8OoZkFLTybVgOmQzjM00LFK2ZxZVE1BIM,5394
11
+ foxes/algorithms/downwind/models/point_wakes_calc.py,sha256=cUIQ439fKF_wLP2AH1uuQe9bWdyq6O5StsJviwIHvuA,4548
12
12
  foxes/algorithms/downwind/models/reorder_farm_output.py,sha256=4BjIQ1bYDiZi5LzPpv5dokEr0T2DqOpXRdZYiPa5bgI,2041
13
13
  foxes/algorithms/downwind/models/set_amb_farm_results.py,sha256=_hBlSnlD1MYzQ2HV6eEXREaLsj4CKsxI4hr9LFFi-qc,1734
14
14
  foxes/algorithms/downwind/models/set_amb_point_results.py,sha256=s72ARemcWCY1UsbZ1jxT1QRJpAbLhd40-RLP4yZgXgY,2219
15
15
  foxes/algorithms/iterative/__init__.py,sha256=Je445cHtS2ERc-dywjhxWttKzdEyHM8JLxPcW5JFtl8,137
16
- foxes/algorithms/iterative/iterative.py,sha256=Up1DaJJD1J0B_DxnnVAASj1cUvgk2_btMieS6KooGc8,9145
16
+ foxes/algorithms/iterative/iterative.py,sha256=Mgbs6v69o5HePbOxwTl85hLxfA1C91u0iWfLdkEpe2A,9148
17
17
  foxes/algorithms/iterative/models/__init__.py,sha256=3lMBUOzq5bKNQBGoV8byVQ7_Keyk1GfwFZDUwaafGsg,152
18
18
  foxes/algorithms/iterative/models/convergence.py,sha256=5fCeTMisYEhgvPRbLKMK0XYsSSr2xWqqzB-pUBrIjYk,6466
19
- foxes/algorithms/iterative/models/farm_wakes_calc.py,sha256=BZIt8QcPBYnFnCC-tF_PW5N6P-JRYCKHdaBCf-Xxn2g,4385
19
+ foxes/algorithms/iterative/models/farm_wakes_calc.py,sha256=nXFR8c1jZw6Q4ewYJlvDvPf8O3Za2W1hNVze410f7UI,4762
20
20
  foxes/algorithms/iterative/models/urelax.py,sha256=wYRHeeKsgCWMmOJ2YnbgUB79VI-D6ceTwEndvvtKBes,2078
21
21
  foxes/algorithms/sequential/__init__.py,sha256=2o05IH9XePnqxNEAn2Fr1qiCM6OooqmH2VtmdJXtK0c,94
22
22
  foxes/algorithms/sequential/sequential.py,sha256=PeQ8j2TuZT2KuxOZTvN4iNoZVT6lYQCcahk2lMprWx8,16242
23
23
  foxes/algorithms/sequential/models/__init__.py,sha256=OneaRLxMPzVWLKL9cR3JIYHojfzVX_CQaPv-LP6mCZI,69
24
24
  foxes/algorithms/sequential/models/plugin.py,sha256=9xa5mUp72gX3rAsdqM76Dibky0jA-gmYO2J4oBNoiHA,1326
25
25
  foxes/algorithms/sequential/models/seq_state.py,sha256=AB2Mf4WbbL9iDN_3mP4nTi44R6G4Gf_-At0ZlicXgrY,3656
26
- foxes/core/__init__.py,sha256=8ghJGFD6wilv7epUpG5wJtqkzeaIu8QGdxY8uorytdc,911
26
+ foxes/core/__init__.py,sha256=2NPeoNWCJx5-Q77TlXDmnSxmzf9gaQEx1JTWIHOWeT4,956
27
27
  foxes/core/algorithm.py,sha256=JIvEuoxf25lnZLX8fze2JSYT73KFirzmp6yfrJMa_x0,15169
28
28
  foxes/core/axial_induction_model.py,sha256=U7g8vmdKBS4xVYXVpD-uNDnKUnpFXccRTWB5LOPDGaY,498
29
29
  foxes/core/data.py,sha256=KjRS5fXaYMeNw_cAaBYarJTX7qCNQJbHDSDWPGLB_70,14581
@@ -31,22 +31,23 @@ foxes/core/data_calc_model.py,sha256=Xtt9-QQes0Y3XFfUcPysB-5YtMbk74ooyatJNUYYjMg
31
31
  foxes/core/farm_controller.py,sha256=8VmqM4uaQ3k8pkMllOJ-MC27P2dHMJUCzhmROMLtlN4,12199
32
32
  foxes/core/farm_data_model.py,sha256=IwlHg10H4mSXHbU5vdfAS7FyvY8kVwArTfaijQHlKLU,6953
33
33
  foxes/core/farm_model.py,sha256=ogFahCjC2dIBcjnCMmy0cTGulKTDA2ufFUzODf0-KnI,265
34
- foxes/core/model.py,sha256=d2B2NjDc1EDLZeAxK_jbB6HAzD2rAi5IKhAldpS3yQ4,17275
35
- foxes/core/partial_wakes_model.py,sha256=PpDx0JWYZbXTO6dsKYVQkMzdiES_npvNlcqvS8oD4WQ,5414
34
+ foxes/core/ground_model.py,sha256=UDGTyGDi1UUmFZmgAHKMwwNbXjPBcVb8YKKqI7gJWrc,6801
35
+ foxes/core/model.py,sha256=ChnoKFkmr5oXvqhp7sIJ8etWy7TZrLI54xcx0Fn-WVI,17290
36
+ foxes/core/partial_wakes_model.py,sha256=8iC6w4TJXgeOObnAZoFKjy6ualYNbd3gLIb5P5TtVvA,5687
36
37
  foxes/core/point_data_model.py,sha256=9-9d8FCZy8rxZoGXC9MwI3fAa4XApsR8tzRCxHaanhU,6666
37
38
  foxes/core/rotor_model.py,sha256=8rvP8iVMDvFM_Dgh1stVqKy4CqiM38maRTkoQCt1PSU,12879
38
- foxes/core/states.py,sha256=XLmRgt3_UwnNz8A91k8Am5K6GVNayAWPyTjfTwJ4HFc,7281
39
+ foxes/core/states.py,sha256=2-3I62ebQCoKxye5Hyz_QT45b8PA1UwMlU_XWvbvi8s,8230
39
40
  foxes/core/turbine.py,sha256=P5qPKmV1qohZdAKW4lPiUerQkRDTxUOhsvBPQqy8mBo,3054
40
41
  foxes/core/turbine_model.py,sha256=IcsU848QNHbUhDN5oqd7VnVWKx_VM5UwRhlPsWK_njw,2049
41
42
  foxes/core/turbine_type.py,sha256=uet3SiJDqt9bPD8tq5xkq-blGV7o1Nd0lNn_2DlqOyk,3151
42
43
  foxes/core/vertical_profile.py,sha256=pgjari78N2CHZOWnidQ_7KGsSs4lTFP9isn-w6e1Yro,1642
43
44
  foxes/core/wake_frame.py,sha256=JbDWjHtZ6nSt-pSSlIsrKea4shwx_7YViZCCl9kNI_0,10239
44
- foxes/core/wake_model.py,sha256=HAnYOVvT5gWr1Gyu1CWUe7_uO0nLTdIAHzQCiFN0X-o,4497
45
+ foxes/core/wake_model.py,sha256=DjcNbEWPzgxBoW4IN5i9CGfPyuaCaJKYPoiK7ctsfC8,8054
45
46
  foxes/core/wake_superposition.py,sha256=_XRgHeIVf_g8MkudwCLAX0DcTBp4Wdy9bDJLRPqkQrM,2811
46
47
  foxes/core/wind_farm.py,sha256=COJ6iLFeU_EiYJKLzcG2f9k9z3YegHKr-NvrAS1X_ks,1708
47
- foxes/data/__init__.py,sha256=SJXiU6ynbvlhYyDg4mnwkBXyE5yWyI5QV_5HCfs1xf0,153
48
+ foxes/data/__init__.py,sha256=efVzdUkpjcgmn8nF8eLAr5HCm1Ym7YF3JomY_bXNVts,161
48
49
  foxes/data/parse.py,sha256=x71oWLyvVsMJ7XVL9VRQXZbflnTXqBaxyBdoMQdZExs,2947
49
- foxes/data/static_data.py,sha256=3_1ngRLCxBHxYAqD_kwz8_EcxlNa-RcB5Wjrx6swfwM,712
50
+ foxes/data/static_data.py,sha256=k5ey-hJWMJTjRZnW5gaEj9dayxAClOBdbM14-IpON60,858
50
51
  foxes/data/farms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
52
  foxes/data/farms/test_farm_67.csv,sha256=TwHt8NVuyP6p2G1VaM_Mi4ENBaHyg4eF6jz0zXQQDro,1872
52
53
  foxes/data/power_ct_curves/DTU-10MW-D178d3-H119.csv,sha256=71C1HTf9QtAvavYLwo6US-JmEGyiByrnvZPysua8muE,410
@@ -54,6 +55,7 @@ foxes/data/power_ct_curves/IEA-15MW-D240-H150.csv,sha256=ITmkbLIG-jsAoxg1eYgJEbx
54
55
  foxes/data/power_ct_curves/IWT-7d5MW-D164-H100.csv,sha256=K9yAhgkCZfRBKZibxKbHtWrKg5mIHnMCswdOVd2uyQ0,851
55
56
  foxes/data/power_ct_curves/NREL-5MW-D126-H90.csv,sha256=u2b6LUCCKL6bYn2lNrB02MqBnwT-veL4CCi6Km4am-E,401
56
57
  foxes/data/power_ct_curves/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ foxes/data/states/WRF-Timeseries-3000.nc,sha256=ZB1b-CTCu_yiLH4sKhQFmb47O-pOh7Ab2qyhx6P0Z5I,453633
57
59
  foxes/data/states/WRF-Timeseries-4464.csv.gz,sha256=bjZxvnVp_iyVmIhd-N9lE5TJUZQvunsuueVXu_MnLpk,427815
58
60
  foxes/data/states/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
61
  foxes/data/states/abl_states_6000.csv.gz,sha256=wzbMKNk3jZ3sRlV4aYJSv_ycncEryXaFT1uQ3oNYJSQ,126124
@@ -62,7 +64,11 @@ foxes/data/states/timeseries_3000.csv.gz,sha256=e6hkBMl2oQ0y9zy1I2uh3xyv4YyH9NbR
62
64
  foxes/data/states/timeseries_8000.csv.gz,sha256=CzayW5CtnP9Y2kxCE4jlsDZwr6G_RMfacnp17mUUQ_4,78694
63
65
  foxes/data/states/wind_rose_bremen.csv,sha256=ixSf8-_esjFsBtfT3Y92k67QrJPDx6dY3uBhOSV-hj4,4943
64
66
  foxes/data/states/wind_rotation.nc,sha256=-ZLfpxa_BJpRUABgJsK5I7c8ogAWTrYNE18un7FxhnU,10990
67
+ foxes/data/states/windio_timeseries_5000.nc,sha256=NbC55qSTSprnawc6_9NalvlM6OEk9kqE8d-tsXAKvzg,78601
65
68
  foxes/data/states/winds100.tab,sha256=X2Cw0H_-HzYEcb7ezn3ntWlKQXIxrWLNONVsrkmsof8,3061
69
+ foxes/data/windio/DTU_10MW_turbine.yaml,sha256=DAvIj0-313fgUWCygp6m96EVfr3QUUVpwjCVa430YAU,732
70
+ foxes/data/windio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
+ foxes/data/windio/windio_5turbines_timeseries.yaml,sha256=KLLpoayiqt8yRLABksbBoPbZp26-kgTwZdKIdL306Yk,1307
66
72
  foxes/input/__init__.py,sha256=qi7BB7FK71gKex5_IFD5a6pvLLLnRWQV9rYKInnpf10,126
67
73
  foxes/input/farm_layout/__init__.py,sha256=EMAA3t-lmvPdMeoll4yJzKz7adVBIpDv5TubjIbrLYk,287
68
74
  foxes/input/farm_layout/from_csv.py,sha256=jFezF0rmxolhgpWrqVvej0AjvKc4q3gJ4I09uGG7mSE,3185
@@ -72,19 +78,24 @@ foxes/input/farm_layout/from_json.py,sha256=5dzFhZdFFaReOnuCKwEmPbK5muf2TTi6AxTG
72
78
  foxes/input/farm_layout/from_random.py,sha256=6ZYKbdV6x11MbQRAHs5nVYBAG-1K295xsMXtfCfAfts,1126
73
79
  foxes/input/farm_layout/grid.py,sha256=7j3l-0rRQ3WojnVkFtuQ-bXmNOFM9ymbDCOOHYFDZ1A,1465
74
80
  foxes/input/farm_layout/row.py,sha256=RR8-vkSrxuWMZXLwyHAROhQIcbKnf0zTLH_zWHZ4gA0,1196
75
- foxes/input/states/__init__.py,sha256=ZSdmWHGE8MTnrv2_-osqkT17WYKkN65T2BgidWfAXxo,290
81
+ foxes/input/states/__init__.py,sha256=gPlMBV0z4y5AcgRKTSqbsK53hVoBJBzGNtQQleUJcMY,361
76
82
  foxes/input/states/field_data_nc.py,sha256=Y7K8gCcUeaMCVKa4C6l8IvUTR_JnhEkx3ObXRDPCo3M,18693
77
- foxes/input/states/multi_height.py,sha256=RoIPfVE80LERHYYBULhx5EMZbv6l_MmHxkILU7-gGzY,12870
83
+ foxes/input/states/multi_height.py,sha256=xkavoXC5TF_-qq19f8PMVEIgAsDkup9dB5h2ZWBgyME,20039
78
84
  foxes/input/states/scan_ws.py,sha256=jdSpylzWF8qsFuIiY8we6djdG0d7b5doh6WSslg3OnQ,4262
79
85
  foxes/input/states/single.py,sha256=6DO1lFenVJ9pjwL4I3B4tKWxcMmKSp_U4L3KqFRuqyk,5989
80
86
  foxes/input/states/states_table.py,sha256=9dq9sxR5PVjS99WRGJClB_1W8gPZ9UNi-viHKSegRR0,15373
81
87
  foxes/input/states/create/__init__.py,sha256=Ocqzmr9SOefeAvGX5DgawsPXfNdGzWOZ2ssvtqEmtAo,134
82
88
  foxes/input/states/create/random_abl_states.py,sha256=45h0a84FmeLZwxbtwtxs5kmoz8_O1_KjsyV-xTc_RoE,3333
83
89
  foxes/input/states/create/random_timeseries.py,sha256=gJpaQ4nEXxOjI4hp3xjNcVbCsmZUm-brXUxoqDb63WE,1266
84
- foxes/input/windio/__init__.py,sha256=Bj9qtJNapfvgFcjThCI_oDia2hvMKN_seNLgm5KhWhw,89
85
- foxes/input/windio/windio.py,sha256=GtUS3IpHdvb_f2WPcoutpbKNQMEZbE4Bc0U3EVfXBEQ,7948
86
- foxes/models/__init__.py,sha256=oLuCuBgSGFPVviqtBhzEu-zo1lxLKeRE0ksqA3dkrz0,406
87
- foxes/models/model_book.py,sha256=34HoVcIEUneqb4EZZYaC0mhtraulEO_Ga50omRJSAhY,26786
90
+ foxes/input/windio/__init__.py,sha256=-WDFDcV-yiu_QC_0Aywm85hpxFso7BcU1WyJGgSHjWY,304
91
+ foxes/input/windio/get_states.py,sha256=2rQ3qrXbqdHoGoCsezpoS_9veajKWyTrnwtNn-FNCDo,3138
92
+ foxes/input/windio/read_attributes.py,sha256=NOrPk1pAaeEv_Chzr-wkr0lmLks9san7KiHT4S5UL3Y,11040
93
+ foxes/input/windio/read_farm.py,sha256=c0oMUPyfUGoZkaAsyuEdgFNvitU0F0pFz-Lo5ATASSE,5222
94
+ foxes/input/windio/read_fields.py,sha256=MjSyu50aAryCpsDNXp8Bp4DcA6okXNQ0EOTaJ1GV7oQ,4239
95
+ foxes/input/windio/runner.py,sha256=9yx8RKsMKFG9TjiV4z779JXy-moRfONUzqPNiLdeJJc,2861
96
+ foxes/input/windio/windio.py,sha256=r_deloAeGqVVdAasRaQJavRjsDRB6y3CnDm2SbUw-B0,4930
97
+ foxes/models/__init__.py,sha256=8eOGCieghW7ILjpkxMHzp4GN2zFF3xlKPl7Df7sMxoU,434
98
+ foxes/models/model_book.py,sha256=YF6iKJAS7HUxn-QoAWFhwcvMM1o01xHVNrrBXLmQmDE,23509
88
99
  foxes/models/axial_induction/__init__.py,sha256=CdYOzu45DWu7xrzpRpFIQ6CGZIMABjjy_lqAszjj9lg,78
89
100
  foxes/models/axial_induction/betz.py,sha256=rAaq7pnu-FmfYh61BU5Af1h4_bG2AAimP4Qah1aZo88,894
90
101
  foxes/models/axial_induction/madsen.py,sha256=_-ycfh8SnIpCKWm1uwx5VH7f49FQvR0y1Nbb_U8xWyU,1403
@@ -92,13 +103,16 @@ foxes/models/farm_controllers/__init__.py,sha256=oDdW_fA3GSkJBzn9Vsd3T9bBVhB9-j_
92
103
  foxes/models/farm_controllers/basic.py,sha256=6pinNXiyfoG3apXhqQWcnxx4vN_7Q63YryXX5Z7kTE0,249
93
104
  foxes/models/farm_models/__init__.py,sha256=WoC1Cmeo5-LLdC5I_S9hwZhZOtBnWDL6azjaUTcoOuY,66
94
105
  foxes/models/farm_models/turbine2farm.py,sha256=XO6-6YGWOcbwB6z0Ttey3rQlOR7sg7ETE1sAlTqiEao,2278
106
+ foxes/models/ground_models/__init__.py,sha256=RR6p8B4jacbzcK1LwnSUqYFXi9h7Qx4RhKiTTGXKxZo,82
107
+ foxes/models/ground_models/no_ground.py,sha256=pDuHAFHHgpEVIi1spie9ooR7OG-4l8_KPrGYQhdCT3I,149
108
+ foxes/models/ground_models/wake_mirror.py,sha256=Ad9x5eYDdEjhRDzjTBkUT4DjoqYjKkvuQL1tMWy7KVQ,4324
95
109
  foxes/models/partial_wakes/__init__.py,sha256=qlV4zgjTSBfpz4dVh7DSoxCZXkaK_-dW43t8-LcDYEg,245
96
- foxes/models/partial_wakes/axiwake.py,sha256=BmZpa036sXda1QbKq4E8DeBHg4QF94LIRwnLl92PZUo,6037
110
+ foxes/models/partial_wakes/axiwake.py,sha256=Rxv3yE4YvYodEjbHzn5lzRwvVBwhm6Jvz3-e5e3FpfY,6559
97
111
  foxes/models/partial_wakes/centre.py,sha256=mIX0eiPJUFCJ82gjZCrf6ajRmJp7CgKpM7QQXiE6UEI,963
98
112
  foxes/models/partial_wakes/grid.py,sha256=SOymgn0MGvUFSAWd9YKDCzXYtizsuiNV-yP0oqrKS1E,600
99
113
  foxes/models/partial_wakes/rotor_points.py,sha256=M5G5jJbfwv2htbI8dhoUTykIeUxXOuy3kPoBn1g-JeA,2783
100
114
  foxes/models/partial_wakes/segregated.py,sha256=iGa9wDTGkSap5L5Q63o3UMeOJN2Nq6qxYrw-hJ-E7kU,4370
101
- foxes/models/partial_wakes/top_hat.py,sha256=AIfRHQKP_4GAcoym1iOQ75V-PGpwmNrOdBmwVFQzl-8,5045
115
+ foxes/models/partial_wakes/top_hat.py,sha256=jcbLImoN9aiztm0PqIwfz9iSduOUvrrtAISc6rD2jmY,5550
102
116
  foxes/models/point_models/__init__.py,sha256=kb6pBrrPGWWKcnlAqOdBLMT7l-Y7yFAitrUr4eFiWcM,131
103
117
  foxes/models/point_models/set_uniform_data.py,sha256=LkQMwrvDaAWyVRQnHUUrT4W7d6Xz33E2nVdWJNONp1c,4476
104
118
  foxes/models/point_models/tke2ti.py,sha256=ZwCwqPm8H6PlyjS_D6vODFdm38WrpcFtgBL8UCgzWAk,1409
@@ -121,8 +135,8 @@ foxes/models/turbine_models/yaw2yawm.py,sha256=7AE7J9UAeSQq4ZC_K9W0y6WqCie1eWpYc
121
135
  foxes/models/turbine_models/yawm2yaw.py,sha256=42NFAi3_BtJfeHa3jC9L9dbRVSiDQQK4Uf-5MZdf0Vg,1592
122
136
  foxes/models/turbine_types/CpCt_file.py,sha256=EnDZE4FH07wh-bFHAtd_Zz0BDKOheM699yeefq1wEL4,2048
123
137
  foxes/models/turbine_types/CpCt_from_two.py,sha256=uf4F4c3CXSwjWCOMrDmhMan5hyQm-pMpygeyp5-B7mM,2692
124
- foxes/models/turbine_types/PCt_file.py,sha256=AA6kJH3gvXWuSTEazaPfsNWZLefI8XzQYlZorcq95Y0,10239
125
- foxes/models/turbine_types/PCt_from_two.py,sha256=kQOnw9AYc-bIbA94C0byIR4UYGCj50gB9CVFs13VXjg,9058
138
+ foxes/models/turbine_types/PCt_file.py,sha256=ttJDPz5vNLhHUVX-oegsUihyMK6s81dlJV3rk7ubLgs,10300
139
+ foxes/models/turbine_types/PCt_from_two.py,sha256=1Yg1Yukqint7aMByba3u11g-CN5keqIFR9FY9O4z5rI,11863
126
140
  foxes/models/turbine_types/__init__.py,sha256=rrERO5zveJZTFWuzRBmv9ZFPtW1TmtYrw9t46rxM0yM,296
127
141
  foxes/models/turbine_types/null_type.py,sha256=86cJiJk43YTw1eiz9mQAikVypGcbd4Ynl8NoAUmkoz4,1314
128
142
  foxes/models/turbine_types/wsrho2PCt_from_two.py,sha256=giN9OoavTT_oKtvC28Mvvlj08Hz44rGF8m-7utBmqas,11143
@@ -141,26 +155,26 @@ foxes/models/wake_frames/rotor_wd.py,sha256=MThraqng_b2ZUAl8Aod9tESPkDYXKom-oGJC
141
155
  foxes/models/wake_frames/seq_dynamic_wakes.py,sha256=mccB7-feKqDGa8UP2t_iaREDyUyLzrOvU557GXVBtHw,10987
142
156
  foxes/models/wake_frames/streamlines.py,sha256=noI30oNLgX88V1piOij8Rt9Y_vuNvj9Zcc3LqsJIErg,8868
143
157
  foxes/models/wake_frames/timelines.py,sha256=XkZV00ij7Oy3E_aMgrVHf_nEk-VbCOHO5Yjs-ptOcMk,9568
144
- foxes/models/wake_frames/yawed_wakes.py,sha256=V36y7r_D7b4_5UfLXTmS7GvePHJmaHOTJQyFI8rRWfk,8772
145
- foxes/models/wake_models/__init__.py,sha256=3D1dhpiIGQYjo3Z88fHeh9ON49ZajnmGn6C9qUvjAmU,303
158
+ foxes/models/wake_frames/yawed_wakes.py,sha256=ODTuPxCeMsoxinMEVSCOsemdT57c0IBEbeSHS93L6Ik,9001
159
+ foxes/models/wake_models/__init__.py,sha256=hwoJF5RzDlr2g5zKgZ532H93F6Hcoo0Gfkc3XLiAJ1Q,253
146
160
  foxes/models/wake_models/axisymmetric.py,sha256=3dS-1Br9ZvDaGa_KVy0sotnuMku4QpL_Nz3T5dyQXm8,2788
147
161
  foxes/models/wake_models/dist_sliced.py,sha256=MsKBm8s9SqQ5g6vLFcfynebzvbRpYlP88uC4sr8t3QE,5883
148
162
  foxes/models/wake_models/gaussian.py,sha256=hchArmoqbdUthh2q7D9PEfC838217ySDHc2fbvtihD4,2760
149
163
  foxes/models/wake_models/top_hat.py,sha256=DMFEQGjJol08XHY_TyN74xXf4l2yFNSEE4k4yCKt15I,5885
150
- foxes/models/wake_models/wake_mirror.py,sha256=ycv1_-_juCNPlXSLp6uOJ9c4a7onA8aeLYRnkElfetg,4975
151
- foxes/models/wake_models/induction/__init__.py,sha256=Zmtxo-fVkuf6hDmeDb_gZE8KFtIjNxYpxgQBkwmDN34,193
152
- foxes/models/wake_models/induction/rankine_half_body.py,sha256=D8WOCeGEybNbhoP9_6Rlgnjq6Tbw8idtLIZHH-9sDeQ,7808
164
+ foxes/models/wake_models/induction/__init__.py,sha256=kl5hRnV0q1zyaqTdwhEdsNiOV-Fu0ySRIUQH418npyI,231
165
+ foxes/models/wake_models/induction/rankine_half_body.py,sha256=SGPQwLv7NVfFIOcHbo8jWs3ghlxr2HvE3yM5W2HK2PE,7816
153
166
  foxes/models/wake_models/induction/rathmann.py,sha256=ydUcXNlaqpBY5Cf7RQR_2StCxcXua-KYToZcOYgk2ms,6262
154
167
  foxes/models/wake_models/induction/self_similar.py,sha256=1Ji4Cg_PZQfYnz-SMNQvCrQeuocthBozfT4n6e5oS-U,7011
155
168
  foxes/models/wake_models/induction/self_similar2020.py,sha256=D8yQxa5NQFII2gvKggcbJvuSDnrIRSy0Q5aCC3DoTPc,1634
169
+ foxes/models/wake_models/induction/vortex_sheet.py,sha256=CIrVmM7EEe5fVr94FND4Vvfj_KPnKl02-oTE2QPwBAM,6341
156
170
  foxes/models/wake_models/ti/__init__.py,sha256=EOlqFHL2mzcKGFRZqlVYTiqGJqPb6dx7I5UWUDshy2U,125
157
- foxes/models/wake_models/ti/crespo_hernandez.py,sha256=i02Ye9b5DU6rexYmKWPOvCgerpmws39AKT_02km43C0,8811
158
- foxes/models/wake_models/ti/iec_ti.py,sha256=kQRqwElW9uL9TJeZ7wNkFs9vLVJfighRCOtAjyn1jh8,6203
171
+ foxes/models/wake_models/ti/crespo_hernandez.py,sha256=Vi05vWV7aY02ixcgtAR4YVy5Y43ZaEI60ww8W2zdqu8,8844
172
+ foxes/models/wake_models/ti/iec_ti.py,sha256=L9Yw34_oUGXdvGSVhjJMjmSNh2S1sJsUUKsFxGuGA8Q,6422
159
173
  foxes/models/wake_models/wind/__init__.py,sha256=X_QdQ_f3fKCIrZZ9K_CzzsHSl13AyvPRcWdEZ1y9Bk4,223
160
- foxes/models/wake_models/wind/bastankhah14.py,sha256=zPSi3oCiZlzR1XHx6UBb_n3hOBH2tZW16uGVud1I56I,5602
161
- foxes/models/wake_models/wind/bastankhah16.py,sha256=V3onz6hXBkW0bb9le4n8srjWq23Ama2Fq69iUdM9LHM,17629
162
- foxes/models/wake_models/wind/jensen.py,sha256=jEBBIARBHydqEC9YHRd5B7WExhBnTpxfty6Ldxd_Q8Y,4639
163
- foxes/models/wake_models/wind/turbopark.py,sha256=PCo9pKVFTB0r5sFfOyd2co6xQZv8H9rm52Po7d8MyRE,15250
174
+ foxes/models/wake_models/wind/bastankhah14.py,sha256=zDJBKkRRETrD9NA2eQUYrccfGv2EQV_eeH9YhkNTYWw,5166
175
+ foxes/models/wake_models/wind/bastankhah16.py,sha256=XTRLJguNBSjERVCCquFXaxEnTx52lFrB9uPBRd3PLrc,17527
176
+ foxes/models/wake_models/wind/jensen.py,sha256=6L1-thpjC79wy8fXGvTMuzFnoASIu5uPlREZyvcOsHk,4247
177
+ foxes/models/wake_models/wind/turbopark.py,sha256=hqyp3wVoFlBvzdw69d5uhwZM_bHcG5PQfIhptICwJkE,14524
164
178
  foxes/models/wake_superpositions/__init__.py,sha256=p_pI_bUC-JjpGfg-7hyo3EpB_qVYqg5CCFt_vSG9DF4,371
165
179
  foxes/models/wake_superpositions/ti_linear.py,sha256=T9lP5PsHzi04Neq5dS3HDZGwyV7Qzvx_umCbk9M7Zks,3911
166
180
  foxes/models/wake_superpositions/ti_max.py,sha256=fnfYmr_Wt9EPZftHoHnqRlTwFWAawrEheGgLA0NwIlA,3936
@@ -203,8 +217,8 @@ foxes/output/calc_points.py,sha256=QRZuZ6joHbhkEYDBX87QgEWwMMYbohAK3ZFuVwErK3Q,4
203
217
  foxes/output/farm_layout.py,sha256=PGQUIhza5BrGDIPU69O7hm91tjKJLFQq7N8rmXeVXAY,10981
204
218
  foxes/output/farm_results_eval.py,sha256=LAv8A5XQ7gMKmT77ILzbRsIptiqBAWf89bR3Xh68cT4,17663
205
219
  foxes/output/flow_plots_2d.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
- foxes/output/grids.py,sha256=skMoJam5acoVNcjS0Ki-G4yy1ame_8aa-5GV3-lybaw,19701
207
- foxes/output/output.py,sha256=zHndVrdNLzXhNFOjWEvhn9L5VeEgsAAWGggT0Mv5xic,3454
220
+ foxes/output/grids.py,sha256=va7sPdzjZEGEzVYW4m_KmAYBE7S7x5C2BXfroQY-kao,19767
221
+ foxes/output/output.py,sha256=wUxKlNbfjwqDzU-lTWfIZMfK-h_R3rpmthSlgunTyw8,3460
208
222
  foxes/output/results_writer.py,sha256=H8UptENDq2THwbRRe41I_d9OAdc4osnWER4QSTvrAQ0,5833
209
223
  foxes/output/rose_plot.py,sha256=t4sO9FCV6BJvTLv3vudsBajaSQblOaS6INS5GltCkT0,11090
210
224
  foxes/output/rotor_point_plots.py,sha256=R44fcseBC5g8YsuR4irRrvYN8Nj94_lpJgpsBst2kjE,3165
@@ -216,12 +230,12 @@ foxes/output/flow_plots_2d/__init__.py,sha256=2d4RyQYPOYr-HiBCbp1swSPG4Nf3NGezTr
216
230
  foxes/output/flow_plots_2d/flow_plots.py,sha256=RYdYZui11IlJE5Mm_R3dtkkQDC0XbAz2JyOT1U25PAA,28209
217
231
  foxes/output/flow_plots_2d/get_fig.py,sha256=gGMOfzNCukq_l0FZLmi3zSBl0ANkQi2WoKaGTpB6xhc,6169
218
232
  foxes/output/flow_plots_2d/seq_flow_ani_plugin.py,sha256=RFlzbZG2L9A583d7wSqZHogP561YEtfcu5M5FaCqIIE,2782
219
- foxes/utils/__init__.py,sha256=enB6w5vHEYTVR37UEIh7oIzqIg83XmDMlcEmZQ7bP8g,739
233
+ foxes/utils/__init__.py,sha256=VkT0l3ety_dhfP-RdoI3nLmBeHvJetfIuo2-rz8_Biw,753
220
234
  foxes/utils/cubic_roots.py,sha256=u2Pf-yHZ6EASpFONMfkv0mvldmd1E1VRZxj69YabDoc,3321
221
235
  foxes/utils/data_book.py,sha256=DgxusriNH-fhHNN_v6TY3QWcAnrAcw20Wgz7lDfbMeg,5302
222
236
  foxes/utils/dict.py,sha256=s922OY22wOKBMbzQ_g-T-MhEw1dga0d3CCwFwd0nI78,886
223
237
  foxes/utils/exec_python.py,sha256=BRylxWOyYHpjIZXCuoOp_A-P9VMoQZ13P2vpHs-lqj8,1714
224
- foxes/utils/factory.py,sha256=_EO9H2xS-ceNJh9okS5FtQYKEGQUdcmhmCPZg6iLZ7w,10036
238
+ foxes/utils/factory.py,sha256=c-Zz1BxVjt5aICoTB0Lz-K16J-RqFdLjTEPmtkykXMU,15647
225
239
  foxes/utils/geopandas_helpers.py,sha256=inVQHMco6Op7YN3VFH1DGAJZWREuveJUS7gyoRudw2A,7895
226
240
  foxes/utils/geopandas_utils.py,sha256=inVQHMco6Op7YN3VFH1DGAJZWREuveJUS7gyoRudw2A,7895
227
241
  foxes/utils/load.py,sha256=7jrCX2GQ_GTgrSu3nz-jfxiyswa7Q3XXCYqobl6bkyk,1290
@@ -250,9 +264,9 @@ foxes/utils/geom2d/half_plane.py,sha256=kzZD6pkZxZ03MK9WAboWzXb5Ws5dWLQY9GIahD4D
250
264
  foxes/utils/geom2d/polygon.py,sha256=8ASfy7No_-Pt_xDSeNsDtLEkCjBWsNZK8nIxDQtqeOE,5534
251
265
  foxes/utils/runners/__init__.py,sha256=-WL4ZmdgNYldkqhCV6dR-aXCumBrH-Ea-V1shsRhsbs,55
252
266
  foxes/utils/runners/runners.py,sha256=Sc06qsCzPduMyxbywgf6G3uHRioDs1qWRSc6GZbLFAY,6932
253
- foxes-0.7.2.dist-info/LICENSE,sha256=bBCH6mYTPzSepk2s2UUZ3II_ZYXrn1bnSqB85-aZHxU,1071
254
- foxes-0.7.2.dist-info/METADATA,sha256=4M2qRnVI00yQWjqJ9Fc6srHQh1M-6pSypZlNaeDzVP0,9520
255
- foxes-0.7.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
256
- foxes-0.7.2.dist-info/top_level.txt,sha256=B4spGR6JHsVHz7CEXsa68xsjYalAA70nBwHa1gfyRHc,6
257
- foxes-0.7.2.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
258
- foxes-0.7.2.dist-info/RECORD,,
267
+ foxes-0.7.3.dist-info/LICENSE,sha256=bBCH6mYTPzSepk2s2UUZ3II_ZYXrn1bnSqB85-aZHxU,1071
268
+ foxes-0.7.3.dist-info/METADATA,sha256=hJpbjNSdAuAfTyLSOxwe8t58lV7Z8ILiDqOvqGCDf3k,9566
269
+ foxes-0.7.3.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
270
+ foxes-0.7.3.dist-info/top_level.txt,sha256=B4spGR6JHsVHz7CEXsa68xsjYalAA70nBwHa1gfyRHc,6
271
+ foxes-0.7.3.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
272
+ foxes-0.7.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (70.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5