foxes 0.8.2__py3-none-any.whl → 1.1.0.2__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 (215) hide show
  1. docs/source/conf.py +353 -0
  2. examples/abl_states/run.py +160 -0
  3. examples/compare_rotors_pwakes/run.py +217 -0
  4. examples/compare_wakes/run.py +241 -0
  5. examples/dyn_wakes/run.py +311 -0
  6. examples/field_data_nc/run.py +121 -0
  7. examples/induction/run.py +201 -0
  8. examples/multi_height/run.py +113 -0
  9. examples/power_mask/run.py +249 -0
  10. examples/random_timeseries/run.py +210 -0
  11. examples/scan_row/run.py +193 -0
  12. examples/sector_management/run.py +162 -0
  13. examples/sequential/run.py +209 -0
  14. examples/single_state/run.py +201 -0
  15. examples/states_lookup_table/run.py +137 -0
  16. examples/streamline_wakes/run.py +138 -0
  17. examples/tab_file/run.py +142 -0
  18. examples/timelines/run.py +267 -0
  19. examples/timeseries/run.py +190 -0
  20. examples/timeseries_slurm/run.py +185 -0
  21. examples/wind_rose/run.py +141 -0
  22. examples/windio/run.py +29 -0
  23. examples/yawed_wake/run.py +196 -0
  24. foxes/__init__.py +4 -8
  25. foxes/algorithms/__init__.py +1 -1
  26. foxes/algorithms/downwind/downwind.py +247 -111
  27. foxes/algorithms/downwind/models/farm_wakes_calc.py +12 -7
  28. foxes/algorithms/downwind/models/init_farm_data.py +2 -2
  29. foxes/algorithms/downwind/models/point_wakes_calc.py +6 -7
  30. foxes/algorithms/downwind/models/reorder_farm_output.py +1 -2
  31. foxes/algorithms/downwind/models/set_amb_farm_results.py +1 -1
  32. foxes/algorithms/downwind/models/set_amb_point_results.py +5 -3
  33. foxes/algorithms/iterative/iterative.py +74 -34
  34. foxes/algorithms/iterative/models/farm_wakes_calc.py +12 -7
  35. foxes/algorithms/iterative/models/urelax.py +3 -3
  36. foxes/algorithms/sequential/models/plugin.py +5 -5
  37. foxes/algorithms/sequential/models/seq_state.py +1 -1
  38. foxes/algorithms/sequential/sequential.py +126 -255
  39. foxes/constants.py +22 -7
  40. foxes/core/__init__.py +1 -0
  41. foxes/core/algorithm.py +632 -147
  42. foxes/core/data.py +252 -20
  43. foxes/core/data_calc_model.py +15 -291
  44. foxes/core/engine.py +640 -0
  45. foxes/core/farm_controller.py +38 -10
  46. foxes/core/farm_data_model.py +16 -1
  47. foxes/core/ground_model.py +2 -2
  48. foxes/core/model.py +249 -182
  49. foxes/core/partial_wakes_model.py +1 -1
  50. foxes/core/point_data_model.py +17 -2
  51. foxes/core/rotor_model.py +27 -21
  52. foxes/core/states.py +17 -1
  53. foxes/core/turbine_type.py +28 -0
  54. foxes/core/wake_frame.py +30 -34
  55. foxes/core/wake_model.py +5 -5
  56. foxes/core/wake_superposition.py +1 -1
  57. foxes/data/windio/windio_5turbines_timeseries.yaml +31 -15
  58. foxes/engines/__init__.py +17 -0
  59. foxes/engines/dask.py +982 -0
  60. foxes/engines/default.py +75 -0
  61. foxes/engines/futures.py +72 -0
  62. foxes/engines/mpi.py +38 -0
  63. foxes/engines/multiprocess.py +71 -0
  64. foxes/engines/numpy.py +167 -0
  65. foxes/engines/pool.py +249 -0
  66. foxes/engines/ray.py +79 -0
  67. foxes/engines/single.py +141 -0
  68. foxes/input/farm_layout/__init__.py +1 -0
  69. foxes/input/farm_layout/from_csv.py +4 -0
  70. foxes/input/farm_layout/from_json.py +2 -2
  71. foxes/input/farm_layout/grid.py +2 -2
  72. foxes/input/farm_layout/ring.py +65 -0
  73. foxes/input/farm_layout/row.py +2 -2
  74. foxes/input/states/__init__.py +7 -0
  75. foxes/input/states/create/random_abl_states.py +1 -1
  76. foxes/input/states/field_data_nc.py +158 -33
  77. foxes/input/states/multi_height.py +128 -14
  78. foxes/input/states/one_point_flow.py +577 -0
  79. foxes/input/states/scan_ws.py +74 -3
  80. foxes/input/states/single.py +1 -1
  81. foxes/input/states/slice_data_nc.py +681 -0
  82. foxes/input/states/states_table.py +204 -35
  83. foxes/input/windio/__init__.py +2 -2
  84. foxes/input/windio/get_states.py +44 -23
  85. foxes/input/windio/read_attributes.py +48 -17
  86. foxes/input/windio/read_farm.py +116 -102
  87. foxes/input/windio/read_fields.py +16 -6
  88. foxes/input/windio/read_outputs.py +71 -24
  89. foxes/input/windio/runner.py +31 -17
  90. foxes/input/windio/windio.py +41 -23
  91. foxes/models/farm_models/turbine2farm.py +1 -1
  92. foxes/models/ground_models/wake_mirror.py +10 -6
  93. foxes/models/model_book.py +58 -20
  94. foxes/models/partial_wakes/axiwake.py +3 -3
  95. foxes/models/partial_wakes/rotor_points.py +3 -3
  96. foxes/models/partial_wakes/top_hat.py +2 -2
  97. foxes/models/point_models/set_uniform_data.py +1 -1
  98. foxes/models/point_models/tke2ti.py +1 -1
  99. foxes/models/point_models/wake_deltas.py +1 -1
  100. foxes/models/rotor_models/centre.py +4 -0
  101. foxes/models/rotor_models/grid.py +24 -25
  102. foxes/models/rotor_models/levels.py +4 -5
  103. foxes/models/turbine_models/calculator.py +4 -6
  104. foxes/models/turbine_models/kTI_model.py +22 -6
  105. foxes/models/turbine_models/lookup_table.py +30 -4
  106. foxes/models/turbine_models/rotor_centre_calc.py +4 -3
  107. foxes/models/turbine_models/set_farm_vars.py +103 -34
  108. foxes/models/turbine_types/PCt_file.py +27 -3
  109. foxes/models/turbine_types/PCt_from_two.py +27 -3
  110. foxes/models/turbine_types/TBL_file.py +80 -0
  111. foxes/models/turbine_types/__init__.py +2 -0
  112. foxes/models/turbine_types/lookup.py +316 -0
  113. foxes/models/turbine_types/null_type.py +51 -1
  114. foxes/models/turbine_types/wsrho2PCt_from_two.py +29 -5
  115. foxes/models/turbine_types/wsti2PCt_from_two.py +31 -7
  116. foxes/models/vertical_profiles/__init__.py +1 -1
  117. foxes/models/vertical_profiles/data_profile.py +1 -1
  118. foxes/models/wake_frames/__init__.py +1 -0
  119. foxes/models/wake_frames/dynamic_wakes.py +424 -0
  120. foxes/models/wake_frames/farm_order.py +25 -5
  121. foxes/models/wake_frames/rotor_wd.py +6 -4
  122. foxes/models/wake_frames/seq_dynamic_wakes.py +61 -74
  123. foxes/models/wake_frames/streamlines.py +21 -22
  124. foxes/models/wake_frames/timelines.py +330 -129
  125. foxes/models/wake_frames/yawed_wakes.py +7 -4
  126. foxes/models/wake_models/dist_sliced.py +2 -4
  127. foxes/models/wake_models/induction/rankine_half_body.py +5 -5
  128. foxes/models/wake_models/induction/rathmann.py +78 -24
  129. foxes/models/wake_models/induction/self_similar.py +78 -28
  130. foxes/models/wake_models/induction/vortex_sheet.py +86 -48
  131. foxes/models/wake_models/ti/crespo_hernandez.py +6 -4
  132. foxes/models/wake_models/ti/iec_ti.py +40 -21
  133. foxes/models/wake_models/top_hat.py +1 -1
  134. foxes/models/wake_models/wind/bastankhah14.py +8 -6
  135. foxes/models/wake_models/wind/bastankhah16.py +17 -16
  136. foxes/models/wake_models/wind/jensen.py +4 -3
  137. foxes/models/wake_models/wind/turbopark.py +16 -13
  138. foxes/models/wake_superpositions/ti_linear.py +1 -1
  139. foxes/models/wake_superpositions/ti_max.py +1 -1
  140. foxes/models/wake_superpositions/ti_pow.py +1 -1
  141. foxes/models/wake_superpositions/ti_quadratic.py +1 -1
  142. foxes/models/wake_superpositions/ws_linear.py +8 -7
  143. foxes/models/wake_superpositions/ws_max.py +8 -7
  144. foxes/models/wake_superpositions/ws_pow.py +8 -7
  145. foxes/models/wake_superpositions/ws_product.py +5 -5
  146. foxes/models/wake_superpositions/ws_quadratic.py +8 -7
  147. foxes/output/__init__.py +4 -1
  148. foxes/output/farm_layout.py +16 -12
  149. foxes/output/farm_results_eval.py +1 -1
  150. foxes/output/flow_plots_2d/__init__.py +0 -1
  151. foxes/output/flow_plots_2d/flow_plots.py +70 -30
  152. foxes/output/grids.py +92 -22
  153. foxes/output/results_writer.py +2 -2
  154. foxes/output/rose_plot.py +3 -3
  155. foxes/output/seq_plugins/__init__.py +2 -0
  156. foxes/output/{flow_plots_2d → seq_plugins}/seq_flow_ani_plugin.py +64 -22
  157. foxes/output/seq_plugins/seq_wake_debug_plugin.py +145 -0
  158. foxes/output/slice_data.py +131 -111
  159. foxes/output/state_turbine_map.py +19 -14
  160. foxes/output/state_turbine_table.py +19 -19
  161. foxes/utils/__init__.py +1 -1
  162. foxes/utils/abl/neutral.py +2 -2
  163. foxes/utils/abl/stable.py +2 -2
  164. foxes/utils/abl/unstable.py +2 -2
  165. foxes/utils/data_book.py +1 -1
  166. foxes/utils/dev_utils.py +42 -0
  167. foxes/utils/dict.py +24 -1
  168. foxes/utils/exec_python.py +1 -1
  169. foxes/utils/factory.py +176 -53
  170. foxes/utils/geom2d/circle.py +1 -1
  171. foxes/utils/geom2d/polygon.py +1 -1
  172. foxes/utils/geopandas_utils.py +2 -2
  173. foxes/utils/load.py +2 -2
  174. foxes/utils/pandas_helpers.py +3 -2
  175. foxes/utils/wind_dir.py +0 -2
  176. foxes/utils/xarray_utils.py +24 -14
  177. foxes/variables.py +39 -2
  178. {foxes-0.8.2.dist-info → foxes-1.1.0.2.dist-info}/METADATA +75 -33
  179. foxes-1.1.0.2.dist-info/RECORD +309 -0
  180. {foxes-0.8.2.dist-info → foxes-1.1.0.2.dist-info}/WHEEL +1 -1
  181. foxes-1.1.0.2.dist-info/top_level.txt +4 -0
  182. tests/0_consistency/iterative/test_iterative.py +92 -0
  183. tests/0_consistency/partial_wakes/test_partial_wakes.py +90 -0
  184. tests/1_verification/flappy_0_6/PCt_files/flappy/run.py +85 -0
  185. tests/1_verification/flappy_0_6/PCt_files/test_PCt_files.py +103 -0
  186. tests/1_verification/flappy_0_6/abl_states/flappy/run.py +85 -0
  187. tests/1_verification/flappy_0_6/abl_states/test_abl_states.py +87 -0
  188. tests/1_verification/flappy_0_6/partial_top_hat/flappy/run.py +82 -0
  189. tests/1_verification/flappy_0_6/partial_top_hat/test_partial_top_hat.py +82 -0
  190. tests/1_verification/flappy_0_6/row_Jensen_linear_centre/flappy/run.py +92 -0
  191. tests/1_verification/flappy_0_6/row_Jensen_linear_centre/test_row_Jensen_linear_centre.py +93 -0
  192. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/flappy/run.py +92 -0
  193. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/test_row_Jensen_linear_tophat.py +96 -0
  194. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/flappy/run.py +94 -0
  195. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/test_row_Jensen_linear_tophat_IECTI_2005.py +122 -0
  196. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/flappy/run.py +94 -0
  197. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/test_row_Jensen_linear_tophat_IECTI_2019.py +122 -0
  198. tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/flappy/run.py +92 -0
  199. tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/test_row_Jensen_quadratic_centre.py +93 -0
  200. tests/1_verification/flappy_0_6_2/grid_rotors/flappy/run.py +85 -0
  201. tests/1_verification/flappy_0_6_2/grid_rotors/test_grid_rotors.py +130 -0
  202. tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/flappy/run.py +96 -0
  203. tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/test_row_Bastankhah_Crespo.py +116 -0
  204. tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/flappy/run.py +93 -0
  205. tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/test_row_Bastankhah_linear_centre.py +99 -0
  206. tests/3_examples/test_examples.py +34 -0
  207. foxes/VERSION +0 -1
  208. foxes/output/flow_plots_2d.py +0 -0
  209. foxes/utils/geopandas_helpers.py +0 -294
  210. foxes/utils/runners/__init__.py +0 -1
  211. foxes/utils/runners/runners.py +0 -280
  212. foxes-0.8.2.dist-info/RECORD +0 -247
  213. foxes-0.8.2.dist-info/top_level.txt +0 -1
  214. foxes-0.8.2.dist-info/zip-safe +0 -1
  215. {foxes-0.8.2.dist-info → foxes-1.1.0.2.dist-info}/LICENSE +0 -0
foxes/utils/load.py CHANGED
@@ -20,7 +20,7 @@ def import_module(name, package=None, hint=None):
20
20
  Returns
21
21
  -------
22
22
  mdl: module
23
- The imnported package
23
+ The imported package
24
24
 
25
25
  :group: utils
26
26
 
@@ -35,7 +35,7 @@ def import_module(name, package=None, hint=None):
35
35
 
36
36
  def load_module(name, path):
37
37
  """
38
- Imports a module from file path
38
+ Imports a module from a file path
39
39
 
40
40
  Parameters
41
41
  ----------
@@ -41,7 +41,7 @@ class PandasFileHelper:
41
41
  "csv.gz": {},
42
42
  "csv.bz2": {},
43
43
  "csv.zip": {},
44
- "h5": {"key": "flappy", "mode": "w"},
44
+ "h5": {"key": "foxes", "mode": "w"},
45
45
  "nc": {},
46
46
  }
47
47
 
@@ -138,7 +138,8 @@ class PandasFileHelper:
138
138
 
139
139
  """
140
140
 
141
- fdict = deepcopy(cls.DEFAULT_FORMAT_DICT)
141
+ digits = {c: FV.get_default_digits(c) for c in data.columns}
142
+ fdict = {c: "{:." + str(d) + "f}" for c, d in digits.items() if d is not None}
142
143
  fdict.update(format_dict)
143
144
 
144
145
  out = pd.DataFrame(index=data.index)
foxes/utils/wind_dir.py CHANGED
@@ -24,7 +24,6 @@ def wd2wdvec(wd, ws=1.0, axis=-1):
24
24
  :group: utils
25
25
 
26
26
  """
27
-
28
27
  wdr = wd * np.pi / 180.0
29
28
  n = np.stack([np.sin(wdr), np.cos(wdr)], axis=axis)
30
29
 
@@ -79,7 +78,6 @@ def uv2wd(uv, axis=-1):
79
78
  :group: utils
80
79
 
81
80
  """
82
-
83
81
  if axis == -1:
84
82
  u = uv[..., 0]
85
83
  v = uv[..., 1]
@@ -1,16 +1,20 @@
1
1
  import netCDF4
2
+ from pathlib import Path
2
3
 
3
- def write_nc(ds, fpath, round="auto", complevel=5, verbosity=1, **kwargs):
4
+ from foxes.variables import get_default_digits
5
+
6
+
7
+ def write_nc(ds, fpath, round={}, complevel=9, verbosity=1, **kwargs):
4
8
  """
5
- Writes a dataset to netCFD file
9
+ Writes a dataset to netCDF file
6
10
 
7
11
  Parameters
8
12
  ----------
9
13
  fpath: str
10
14
  Path to the output file, should be nc
11
- round: dict or str, optional
12
- The rounding definitions, or auto for
13
- default settings
15
+ round: dict
16
+ The rounding digits, falling back to defaults
17
+ if variable not found
14
18
  complevel: int
15
19
  The compression level
16
20
  verbosity: int
@@ -19,21 +23,27 @@ def write_nc(ds, fpath, round="auto", complevel=5, verbosity=1, **kwargs):
19
23
  Additional parameters for xarray.to_netcdf
20
24
 
21
25
  """
22
-
26
+ fpath = Path(fpath)
23
27
  if round is not None:
24
28
  for v in ds.coords.keys():
25
- if v in round:
29
+ d = round.get(v, get_default_digits(v))
30
+ if d is not None:
26
31
  if verbosity > 1:
27
- print(f"Rounding {v} to {round[v]} decimals")
28
- ds[v].data = ds[v].data.round(decimals=round[v])
32
+ print(f"File {fpath.name}: Rounding {v} to {d} decimals")
33
+ ds[v].data = ds[v].data.round(decimals=d)
29
34
  for v in ds.data_vars.keys():
30
- if v in round:
35
+ d = round.get(v, get_default_digits(v))
36
+ if d is not None:
31
37
  if verbosity > 1:
32
- print(f"Rounding {v} to {round[v]} decimals")
33
- ds[v].data = ds[v].data.round(decimals=round[v])
38
+ print(f"File {fpath.name}: Rounding {v} to {d} decimals")
39
+ ds[v].data = ds[v].data.round(decimals=d)
40
+
41
+ enc = None
42
+ if complevel is not None and complevel > 0:
43
+ if verbosity > 1:
44
+ print(f"File {fpath.name}: Compression level = {complevel}")
45
+ enc = {k: {"zlib": True, "complevel": complevel} for k in ds.data_vars}
34
46
 
35
47
  if verbosity > 0:
36
48
  print("Writing file", fpath)
37
-
38
- enc = {k: {"zlib": True, "complevel": complevel} for k in ds.data_vars}
39
49
  ds.to_netcdf(fpath, encoding=enc, **kwargs)
foxes/variables.py CHANGED
@@ -4,7 +4,7 @@ X = "X"
4
4
  """
5
5
 
6
6
  Y = "Y"
7
- """ The y coordinate in
7
+ """ The y coordinate in m
8
8
  :group: foxes.variables
9
9
  """
10
10
 
@@ -257,7 +257,7 @@ Z0 = "z0"
257
257
  """
258
258
 
259
259
  MOL = "MOL"
260
- """ The Monin-Ubukhof length in m
260
+ """ The Monin–Obukhov length in m
261
261
  :group: foxes.variables
262
262
  """
263
263
 
@@ -276,3 +276,40 @@ PA_BETA = "PA_beta"
276
276
  """ The beta parameter of the PorteAgel wake model
277
277
  :group: foxes.variables
278
278
  """
279
+
280
+ DEFAULT_DIGITS = {
281
+ WD: 3,
282
+ WS: 4,
283
+ TI: 6,
284
+ RHO: 5,
285
+ P: 3,
286
+ CT: 6,
287
+ T: 3,
288
+ YLD: 3,
289
+ CAP: 5,
290
+ EFF: 5,
291
+ }
292
+ """ The default output digits
293
+ :group: foxes.variables
294
+ """
295
+
296
+
297
+ def get_default_digits(variable):
298
+ """
299
+ Gets the default number of output digits
300
+
301
+ Parameters
302
+ ----------
303
+ variable: str
304
+ The variable name
305
+
306
+ Returns
307
+ -------
308
+ digits: int
309
+ The default number of output digits
310
+
311
+ """
312
+ v = amb2var.get(variable, variable)
313
+ if v in [REWS, REWS2, REWS3]:
314
+ v = WS
315
+ return DEFAULT_DIGITS.get(v, None)
@@ -1,13 +1,36 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: foxes
3
- Version: 0.8.2
3
+ Version: 1.1.0.2
4
4
  Summary: Farm Optimization and eXtended yield Evaluation Software
5
- Author: Fraunhofer IWES
6
- Author-email: jonas.schulte@iwes.fraunhofer.de
7
- License: MIT
8
- Project-URL: Source Code, https://github.com/FraunhoferIWES/foxes
9
- Project-URL: Bug Tracker, https://github.com/FraunhoferIWES/foxes/issues
5
+ Author: Jonas Schulte
6
+ Maintainer: Jonas Schulte
7
+ License: MIT License
8
+
9
+ Copyright (c) 2022 FraunhoferIWES
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ of this software and associated documentation files (the "Software"), to deal
13
+ in the Software without restriction, including without limitation the rights
14
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ copies of the Software, and to permit persons to whom the Software is
16
+ furnished to do so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
28
+
29
+ Project-URL: Homepage, https://github.com/FraunhoferIWES/foxes
10
30
  Project-URL: Documentation, https://fraunhoferiwes.github.io/foxes.docs/index.html
31
+ Project-URL: Repository, https://github.com/FraunhoferIWES/foxes.git
32
+ Project-URL: Bug Tracker, https://github.com/FraunhoferIWES/foxes/issues
33
+ Project-URL: Changelog, https://github.com/FraunhoferIWES/foxes/blob/main/CHANGELOG.md
11
34
  Keywords: Wind farm,Wake modelling,Wind farm optimization
12
35
  Classifier: Topic :: Scientific/Engineering
13
36
  Classifier: Intended Audience :: Developers
@@ -18,6 +41,7 @@ Classifier: Programming Language :: Python :: 3.9
18
41
  Classifier: Programming Language :: Python :: 3.10
19
42
  Classifier: Programming Language :: Python :: 3.11
20
43
  Classifier: Programming Language :: Python :: 3.12
44
+ Classifier: Programming Language :: Python :: 3.13
21
45
  Classifier: License :: OSI Approved :: MIT License
22
46
  Classifier: Operating System :: OS Independent
23
47
  Classifier: Development Status :: 4 - Beta
@@ -28,40 +52,53 @@ Requires-Dist: matplotlib
28
52
  Requires-Dist: numpy
29
53
  Requires-Dist: pandas
30
54
  Requires-Dist: xarray
31
- Requires-Dist: dask
32
- Requires-Dist: distributed
33
55
  Requires-Dist: scipy
34
56
  Requires-Dist: netcdf4
35
57
  Requires-Dist: windrose
36
58
  Requires-Dist: cycler
37
- Provides-Extra: all
38
- Requires-Dist: windio >=1 ; extra == 'all'
39
- Requires-Dist: flake8 ; extra == 'all'
40
- Requires-Dist: pytest ; extra == 'all'
41
- Requires-Dist: foxes-opt ; extra == 'all'
42
- Requires-Dist: sphinx ; extra == 'all'
43
- Requires-Dist: sphinx-immaterial ; extra == 'all'
44
- Requires-Dist: nbsphinx ; extra == 'all'
45
- Requires-Dist: ipykernel ; extra == 'all'
46
- Requires-Dist: ipywidgets ; extra == 'all'
47
- Requires-Dist: m2r2 ; extra == 'all'
48
- Requires-Dist: lxml-html-clean ; extra == 'all'
59
+ Requires-Dist: tqdm
60
+ Requires-Dist: pyyaml
61
+ Provides-Extra: dask
62
+ Requires-Dist: dask; extra == "dask"
63
+ Requires-Dist: distributed; extra == "dask"
64
+ Requires-Dist: dask-jobqueue; extra == "dask"
65
+ Requires-Dist: setuptools; extra == "dask"
66
+ Provides-Extra: dev
67
+ Requires-Dist: flake8; extra == "dev"
68
+ Requires-Dist: pytest; extra == "dev"
69
+ Requires-Dist: jupyter; extra == "dev"
70
+ Requires-Dist: objsize; extra == "dev"
71
+ Requires-Dist: black[jupyter]; extra == "dev"
49
72
  Provides-Extra: doc
50
- Requires-Dist: sphinx ; extra == 'doc'
51
- Requires-Dist: sphinx-immaterial ; extra == 'doc'
52
- Requires-Dist: nbsphinx ; extra == 'doc'
53
- Requires-Dist: ipykernel ; extra == 'doc'
54
- Requires-Dist: ipywidgets ; extra == 'doc'
55
- Requires-Dist: m2r2 ; extra == 'doc'
56
- Requires-Dist: lxml-html-clean ; extra == 'doc'
73
+ Requires-Dist: sphinx; extra == "doc"
74
+ Requires-Dist: sphinx-immaterial; extra == "doc"
75
+ Requires-Dist: nbsphinx; extra == "doc"
76
+ Requires-Dist: ipykernel; extra == "doc"
77
+ Requires-Dist: ipywidgets; extra == "doc"
78
+ Requires-Dist: m2r2; extra == "doc"
79
+ Requires-Dist: lxml-html-clean; extra == "doc"
80
+ Provides-Extra: eng
81
+ Requires-Dist: multiprocess; extra == "eng"
82
+ Requires-Dist: dask; extra == "eng"
83
+ Requires-Dist: distributed; extra == "eng"
84
+ Requires-Dist: dask-jobqueue; extra == "eng"
85
+ Requires-Dist: setuptools; extra == "eng"
86
+ Requires-Dist: mpi4py; extra == "eng"
87
+ Requires-Dist: ray; extra == "eng"
88
+ Provides-Extra: eng0
89
+ Requires-Dist: multiprocess; extra == "eng0"
90
+ Requires-Dist: dask; extra == "eng0"
91
+ Requires-Dist: distributed; extra == "eng0"
92
+ Requires-Dist: dask-jobqueue; extra == "eng0"
93
+ Requires-Dist: setuptools; extra == "eng0"
94
+ Requires-Dist: ray; extra == "eng0"
57
95
  Provides-Extra: io
58
- Requires-Dist: windio >=1 ; extra == 'io'
96
+ Requires-Dist: windIO>=1.0; extra == "io"
59
97
  Provides-Extra: opt
60
- Requires-Dist: foxes-opt ; extra == 'opt'
61
- Provides-Extra: scripts
98
+ Requires-Dist: foxes-opt; extra == "opt"
62
99
  Provides-Extra: test
63
- Requires-Dist: flake8 ; extra == 'test'
64
- Requires-Dist: pytest ; extra == 'test'
100
+ Requires-Dist: flake8; extra == "test"
101
+ Requires-Dist: pytest; extra == "test"
65
102
 
66
103
  # Welcome to foxes
67
104
 
@@ -76,7 +113,12 @@ The software `foxes` is a modular wind farm simulation and wake modelling toolbo
76
113
  - Wake model studies, comparison and validation,
77
114
  - Wind farm simulations invoking complex model chains.
78
115
 
79
- The calculation is fully vectorized and its fast performance is owed to [dask](https://www.dask.org/). Also the parallelization on local or remote clusters is enabled via `dask`. The wind farm
116
+ The fast performance of `foxes` is owed to vectorization and parallelization,
117
+ and it is intended to be used for large wind farms and large timeseries inflow data.
118
+ The parallelization on local or remote clusters is supported, based on
119
+ [mpi4py](https://mpi4py.readthedocs.io/en/stable/) or
120
+ [dask.distributed](https://distributed.dask.org/en/stable/).
121
+ The wind farm
80
122
  optimization capabilities invoke the [iwopy](https://github.com/FraunhoferIWES/iwopy) package which
81
123
  as well supports vectorization.
82
124
 
@@ -0,0 +1,309 @@
1
+ docs/source/conf.py,sha256=Csc7xdfs9rt3K5sC7c2b7sNKq0I6KGl738-OHzRKbTc,12253
2
+ examples/abl_states/run.py,sha256=_r74o2H8bZWE__faIQMlKOw_187MXh29femgLXhP8YM,4530
3
+ examples/compare_rotors_pwakes/run.py,sha256=EAODYtY4ZMJnmon4OSBmUBOle41OqUwaCPY3t-RZKEY,6643
4
+ examples/compare_wakes/run.py,sha256=WFn74BBkPNOStdBvKR3mN3kv34M7u-SAmWTwtgqxUqA,7355
5
+ examples/dyn_wakes/run.py,sha256=8LksX9zGCQn776BMZUVOsbfSRW1XAn93cJ9BpEKHDDI,8700
6
+ examples/field_data_nc/run.py,sha256=bGC2KAKy2vqPvHtus93wEuxEFd_TZl1VZgyVU3CQFQI,3484
7
+ examples/induction/run.py,sha256=FnfzFJj5i3xB8myje2U8j1Sj7UfHjHwaPfi9VOvyqts,6270
8
+ examples/multi_height/run.py,sha256=KsY5tN8z9QHitQQdxnTjHzPSPlYPn5pkcMskjd94D74,3288
9
+ examples/power_mask/run.py,sha256=YK8RU0TLd7TgBJkPZQVrn8log-UQNZ7L3B3-yE8qu64,7584
10
+ examples/random_timeseries/run.py,sha256=UMB8VQL3DlDoUO_zsU21e20o5fFtF2BOQNfq4BiBc-A,6130
11
+ examples/scan_row/run.py,sha256=nWGm1M4yJzYaAoEe1PbxLCmQD6b34Xr2C-a4sCNUdmU,5700
12
+ examples/sector_management/run.py,sha256=Lyu69rs4IxlBBPy2r3go8xHu443K-wV-AfbZVBZ7yb0,4368
13
+ examples/sequential/run.py,sha256=CnNGrHp9OzijuQ0GFRN5FWW-RR4h9UBHvu5S9U3j0ac,5974
14
+ examples/single_state/run.py,sha256=zdtFG_GuXI1dUJO0mbEBVxXhQiOG4zZP6h25ySx1KJU,6093
15
+ examples/states_lookup_table/run.py,sha256=NE8Z_yOp7NWi8JHnxNoOUp6rF5Oq9dG5hWZA_7EXHuI,3916
16
+ examples/streamline_wakes/run.py,sha256=MO-UPuQqG9P1pinTMZo9CSF8sYkcgJUrBy5HVtkKanI,4004
17
+ examples/tab_file/run.py,sha256=eOr1oY_BuY77kXvvfy034D7TbVOROlAz72fSJ_BD4kE,4370
18
+ examples/timelines/run.py,sha256=UVsUX6-G2oNvw5giqVVDim0pmj2EnsO-X-N7aFUpUK4,7559
19
+ examples/timeseries/run.py,sha256=DE1ZjXJbh3AVZZ4tyjkHX21px2Z6g1fWpqSVTV1Gqbk,5329
20
+ examples/timeseries_slurm/run.py,sha256=GE3diBIMmKkm82CFu6tSL80EnrDQXrl7ISh-mi1o_ew,5517
21
+ examples/wind_rose/run.py,sha256=3x3ZC8xkvWHlv67R0ffmh-pzD8lpYosmSyUhXyqi3Tc,4239
22
+ examples/windio/run.py,sha256=ZB_HQwYOiUhsknNdEUDBHS7NxBCoA_IXNCUo76tWgyc,814
23
+ examples/yawed_wake/run.py,sha256=66gJBuIoYMswa53jNG3HHiehdgAAmTW0kez-kZ4kOT0,6102
24
+ foxes/__init__.py,sha256=oklaGE5jyAAxV5l4wYxatLzIzFalMy_KQeEX2fHTm3w,639
25
+ foxes/constants.py,sha256=hME5GzFoSOI61p7Xxx4jrRcEt2SjYRgyrDC3ZCE_hZ8,3013
26
+ foxes/variables.py,sha256=bNebCA8eToDPA2Wh6AqkNkzor98nS1JVVMhd8gfakKc,5035
27
+ foxes/algorithms/__init__.py,sha256=gCr5DK2wXhAAJf8eylkevN8yiwPdEC-pqY_LgjKzMv8,249
28
+ foxes/algorithms/downwind/__init__.py,sha256=lyygq5GMc6NAPmH0b0mhGeccWyuC8JTOEMZl-UlmE5M,53
29
+ foxes/algorithms/downwind/downwind.py,sha256=wgnpL78g9F9cNgPLVgEwYLcbrMQ6t81y8MGeGGLyTaI,24866
30
+ foxes/algorithms/downwind/models/__init__.py,sha256=0ov8rjIQ02w3iB6yYCxaswPvHDlPM_8_di6xPh1TTkQ,300
31
+ foxes/algorithms/downwind/models/farm_wakes_calc.py,sha256=IiO8_hhyT7aqPaMym2d__ZvwnjedoDgGj-x00muqOYg,5735
32
+ foxes/algorithms/downwind/models/init_farm_data.py,sha256=G-SeB2b3H3TEbmVrIGn4uvp8XdhJKizTW1qjUz5KAgc,4032
33
+ foxes/algorithms/downwind/models/point_wakes_calc.py,sha256=Tou3SZ-CF2I2SaTGKXY_4rcPf9TXVg1L2hk8_5w_JRA,4515
34
+ foxes/algorithms/downwind/models/reorder_farm_output.py,sha256=6C2i7C1OWV0pe6nr9BjJiWVETcW2U_lnt_Iv150oV5I,2038
35
+ foxes/algorithms/downwind/models/set_amb_farm_results.py,sha256=_xYNjFZiofHLGIFNw671izXUn37psX-NhSIO63IRwvA,1732
36
+ foxes/algorithms/downwind/models/set_amb_point_results.py,sha256=riXnM_XLixuLmtFBbH8-WNTW-Ih5oJoTDNuzY0cQbZo,2293
37
+ foxes/algorithms/iterative/__init__.py,sha256=Je445cHtS2ERc-dywjhxWttKzdEyHM8JLxPcW5JFtl8,137
38
+ foxes/algorithms/iterative/iterative.py,sha256=DN4i9hmtLvTMZWTvKqUDr5e6X15Nndlb-faHO83TO78,9958
39
+ foxes/algorithms/iterative/models/__init__.py,sha256=3lMBUOzq5bKNQBGoV8byVQ7_Keyk1GfwFZDUwaafGsg,152
40
+ foxes/algorithms/iterative/models/convergence.py,sha256=5fCeTMisYEhgvPRbLKMK0XYsSSr2xWqqzB-pUBrIjYk,6466
41
+ foxes/algorithms/iterative/models/farm_wakes_calc.py,sha256=8xSDI9u5deiud80VKyFmXCOT_0THIKSIRPqnGK2wfr0,4946
42
+ foxes/algorithms/iterative/models/urelax.py,sha256=412fHSpi_4MATE1qRzqcZDFff6iJpV1h3QIBL_7giQE,2076
43
+ foxes/algorithms/sequential/__init__.py,sha256=2o05IH9XePnqxNEAn2Fr1qiCM6OooqmH2VtmdJXtK0c,94
44
+ foxes/algorithms/sequential/sequential.py,sha256=BL2YHZtBtoLdSj-HTPyG81ObfnL50faj__R8n4QvQLI,12349
45
+ foxes/algorithms/sequential/models/__init__.py,sha256=OneaRLxMPzVWLKL9cR3JIYHojfzVX_CQaPv-LP6mCZI,69
46
+ foxes/algorithms/sequential/models/plugin.py,sha256=HhCeHM_YoJRMXuZKa8rXUJZDhWf5rNl28_UfDLSGWvA,1330
47
+ foxes/algorithms/sequential/models/seq_state.py,sha256=J1PorBVV5xZFWobHvCrGDCD-q7Egz_Op1p4PDiacBy0,3654
48
+ foxes/core/__init__.py,sha256=3dOuKrFeSM6fCMxfLxTbzUsBPVTZiRp0sFhnibniBko,1021
49
+ foxes/core/algorithm.py,sha256=ZxqC8yud7hXJulHS0SE6lg41NvvQfDiqRRDZQDhUNes,26521
50
+ foxes/core/axial_induction_model.py,sha256=U7g8vmdKBS4xVYXVpD-uNDnKUnpFXccRTWB5LOPDGaY,498
51
+ foxes/core/data.py,sha256=g5_vOSaTWSvysIQes2xoiV4Zo2Nu9ZKkQaXx-FZNbA0,21888
52
+ foxes/core/data_calc_model.py,sha256=Hhl2ZapafsIvq5z_YWlGqB3kkF64txohU_MHlfHAvpk,1334
53
+ foxes/core/engine.py,sha256=yyX1dN8tyMy-AdyQrkZMXhdw0JIy5ihTa9dsBf-wfXk,19764
54
+ foxes/core/farm_controller.py,sha256=h6xGoRuXQjLyC9LFnup8wbEtbmL7unlhbX9B2lKGCBg,12830
55
+ foxes/core/farm_data_model.py,sha256=xtvRkDjSCaocJrmwUQ4VanH9stSQzs9zLT43kKs1cfo,7301
56
+ foxes/core/farm_model.py,sha256=ogFahCjC2dIBcjnCMmy0cTGulKTDA2ufFUzODf0-KnI,265
57
+ foxes/core/ground_model.py,sha256=SmOfNfGwyFGLFxbwYWEDhxIRiseXjvQULPrGDhN37ds,6803
58
+ foxes/core/model.py,sha256=caB8mOmvDAh4MSeoHu1nGdgyzCR2kbbDo8xxRDaVe_Q,19620
59
+ foxes/core/partial_wakes_model.py,sha256=iWbIoqZXwDeA43VbG_06PLmpS00pNPPaZUrUsHALxvk,5688
60
+ foxes/core/point_data_model.py,sha256=uS3dDUaMF-p9FPkgEK0LNx5zq1euv1LtPzTAZ8WWmuw,7022
61
+ foxes/core/rotor_model.py,sha256=ZMi0KHF-I4F_ZH-c1--s0Y1IkBFtGzIx4F5mz0Wyl8A,13157
62
+ foxes/core/states.py,sha256=otcz9VmlaFEJbVLVB4BBem5a66n927tCl_VM9L1YhH4,8764
63
+ foxes/core/turbine.py,sha256=P5qPKmV1qohZdAKW4lPiUerQkRDTxUOhsvBPQqy8mBo,3054
64
+ foxes/core/turbine_model.py,sha256=IcsU848QNHbUhDN5oqd7VnVWKx_VM5UwRhlPsWK_njw,2049
65
+ foxes/core/turbine_type.py,sha256=tsBz97e_D6Fj18J33bYE-3Vk13zoONZHVI_HlaTNjEU,3635
66
+ foxes/core/vertical_profile.py,sha256=pgjari78N2CHZOWnidQ_7KGsSs4lTFP9isn-w6e1Yro,1642
67
+ foxes/core/wake_frame.py,sha256=2QN_w1iQY7_ZqHO5sPXGR_UOM8VH7jcaJ8CRWVG7CvA,9649
68
+ foxes/core/wake_model.py,sha256=Snr-bQeCU638n0HWM_T2zvj0G4SuTDA9ZSVqJb41dA4,8076
69
+ foxes/core/wake_superposition.py,sha256=FKVMe2WpXgDmJbM-Sv1teEJLJs9dBZjajB9-r2LacLs,2812
70
+ foxes/core/wind_farm.py,sha256=iYetYGFPaPz9Rh-2bLoeknOCiromXqlicZ4snRtSEIc,1755
71
+ foxes/data/__init__.py,sha256=efVzdUkpjcgmn8nF8eLAr5HCm1Ym7YF3JomY_bXNVts,161
72
+ foxes/data/parse.py,sha256=x71oWLyvVsMJ7XVL9VRQXZbflnTXqBaxyBdoMQdZExs,2947
73
+ foxes/data/static_data.py,sha256=k5ey-hJWMJTjRZnW5gaEj9dayxAClOBdbM14-IpON60,858
74
+ foxes/data/farms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
+ foxes/data/farms/test_farm_67.csv,sha256=TwHt8NVuyP6p2G1VaM_Mi4ENBaHyg4eF6jz0zXQQDro,1872
76
+ foxes/data/power_ct_curves/DTU-10MW-D178d3-H119.csv,sha256=71C1HTf9QtAvavYLwo6US-JmEGyiByrnvZPysua8muE,410
77
+ foxes/data/power_ct_curves/IEA-15MW-D240-H150.csv,sha256=ITmkbLIG-jsAoxg1eYgJEbxohEE414pRUO7bzwkv6VU,300
78
+ foxes/data/power_ct_curves/IWT-7d5MW-D164-H100.csv,sha256=K9yAhgkCZfRBKZibxKbHtWrKg5mIHnMCswdOVd2uyQ0,851
79
+ foxes/data/power_ct_curves/NREL-5MW-D126-H90.csv,sha256=u2b6LUCCKL6bYn2lNrB02MqBnwT-veL4CCi6Km4am-E,401
80
+ foxes/data/power_ct_curves/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
+ foxes/data/states/WRF-Timeseries-3000.nc,sha256=ZB1b-CTCu_yiLH4sKhQFmb47O-pOh7Ab2qyhx6P0Z5I,453633
82
+ foxes/data/states/WRF-Timeseries-4464.csv.gz,sha256=bjZxvnVp_iyVmIhd-N9lE5TJUZQvunsuueVXu_MnLpk,427815
83
+ foxes/data/states/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ foxes/data/states/abl_states_6000.csv.gz,sha256=wzbMKNk3jZ3sRlV4aYJSv_ycncEryXaFT1uQ3oNYJSQ,126124
85
+ foxes/data/states/timeseries_100.csv.gz,sha256=7jIJPuseoMyc6kB-4JTzWJuPmugfXjg5gP5AKnvOdIs,501
86
+ foxes/data/states/timeseries_3000.csv.gz,sha256=e6hkBMl2oQ0y9zy1I2uh3xyv4YyH9NbRnLwbR4EU1Jc,29085
87
+ foxes/data/states/timeseries_8000.csv.gz,sha256=CzayW5CtnP9Y2kxCE4jlsDZwr6G_RMfacnp17mUUQ_4,78694
88
+ foxes/data/states/wind_rose_bremen.csv,sha256=ixSf8-_esjFsBtfT3Y92k67QrJPDx6dY3uBhOSV-hj4,4943
89
+ foxes/data/states/wind_rotation.nc,sha256=-ZLfpxa_BJpRUABgJsK5I7c8ogAWTrYNE18un7FxhnU,10990
90
+ foxes/data/states/windio_timeseries_5000.nc,sha256=NbC55qSTSprnawc6_9NalvlM6OEk9kqE8d-tsXAKvzg,78601
91
+ foxes/data/states/winds100.tab,sha256=X2Cw0H_-HzYEcb7ezn3ntWlKQXIxrWLNONVsrkmsof8,3061
92
+ foxes/data/windio/DTU_10MW_turbine.yaml,sha256=DAvIj0-313fgUWCygp6m96EVfr3QUUVpwjCVa430YAU,732
93
+ foxes/data/windio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
+ foxes/data/windio/windio_5turbines_timeseries.yaml,sha256=M4fX-Fp3oHT-jzfK25dxfGUGq5v91aZpM3kK6A3Yl10,1921
95
+ foxes/engines/__init__.py,sha256=3lBlGmFw97bBM5aFhhVZSHTqlq0Ps7F7PS6twEnpSwU,408
96
+ foxes/engines/dask.py,sha256=FLVgaG5bGj8jrCQd1BiDH-WyujPli0qmIhyXPXB-pGU,29759
97
+ foxes/engines/default.py,sha256=W5vzdX53THwwSDty8FceGtPKMYdUJxpr3TexGkq0uNs,1869
98
+ foxes/engines/futures.py,sha256=_VQXNLb0AxTtTouy96LhBnwPldHiG0xldHjpChKyNxs,1503
99
+ foxes/engines/mpi.py,sha256=lIIfdA-NVqOaDO9iwDhHP4LjEekyff7TSsMcmkbVcy4,821
100
+ foxes/engines/multiprocess.py,sha256=trx9p6sin7lS9wj0TwSL473B7vALXeWc_8-UELHb9x8,1522
101
+ foxes/engines/numpy.py,sha256=c0SmcGLecB9XAZOlak-COpwpn4mgMoyr29CztmquU28,5185
102
+ foxes/engines/pool.py,sha256=IePdCy28O3GFY9yhKG51BlxXM5V-6XbmEKcq4hJt4ew,7373
103
+ foxes/engines/ray.py,sha256=J6GDwiXTfnRrr2DylZlW0BC0S07tvlTJG1lb426BI_8,1646
104
+ foxes/engines/single.py,sha256=L8QL4s_BHvLSz8h7oBt_okPTMyWOY9NfBNVeJqAo7JM,4024
105
+ foxes/input/__init__.py,sha256=qi7BB7FK71gKex5_IFD5a6pvLLLnRWQV9rYKInnpf10,126
106
+ foxes/input/farm_layout/__init__.py,sha256=rEY4-10kZCNxXM43iJTDguGvbPndXaRSLpbKnaoSqrU,314
107
+ foxes/input/farm_layout/from_csv.py,sha256=nJT27SorW_w4MlFvb1txY0q8iWw5AmSzGiMGorxSDAI,3365
108
+ foxes/input/farm_layout/from_df.py,sha256=F5CKXHyL2rcrpCQqqqOr2HHX-BJ5VU1JQymzywmkBtc,574
109
+ foxes/input/farm_layout/from_file.py,sha256=SNdJ1DVb_ZMQS48TB-TELOLc7vqU9aGwl9jIe1iaGtU,1578
110
+ foxes/input/farm_layout/from_json.py,sha256=fM4mpl2JYZU-Ox8DsBgBwKB9XVywXuhBVWSj3EmV5Ko,1642
111
+ foxes/input/farm_layout/from_random.py,sha256=6ZYKbdV6x11MbQRAHs5nVYBAG-1K295xsMXtfCfAfts,1126
112
+ foxes/input/farm_layout/grid.py,sha256=rjdmSpDnHvqIqnGibLwGL_okl1hbFLOgnwf5q45y_jk,1467
113
+ foxes/input/farm_layout/ring.py,sha256=ghfLkVVQciWDJJNqGs4jZVnM0XCII9ae3hAh9Wb4938,1455
114
+ foxes/input/farm_layout/row.py,sha256=Bx9woFNkXbFXJg51GX2p2PbVgdxV3Ckxr-3TkB04PS4,1198
115
+ foxes/input/states/__init__.py,sha256=Se7F2n3ZJZd6lsdwG0peIOJUKjoGPqKwfVI2gw1oHQY,564
116
+ foxes/input/states/field_data_nc.py,sha256=rzMVIqiflxOi3m0YdauwmRhLylusgSVbmGN46DZ60gY,22419
117
+ foxes/input/states/multi_height.py,sha256=ghGvRQtjE6dKwPgw1_2ckqgkxxGi-GFupzBIUQ2xETE,23407
118
+ foxes/input/states/one_point_flow.py,sha256=3O_FpxbmZD565hK5qSAq89k6qTRXW3XAzfrm4MAbNm8,17703
119
+ foxes/input/states/scan_ws.py,sha256=if6YYWkvaljwgx4BR7k3KeE6saAO59VnE6kyinrsPOI,6166
120
+ foxes/input/states/single.py,sha256=dxQKBIQ0AbRHp5Osx4Ykaw43pBFAFTLAazIDPm57F1o,5987
121
+ foxes/input/states/slice_data_nc.py,sha256=k1z30ywXw0-Kvb7I-oENNDGidirVO5pQkduZyyAkylw,21532
122
+ foxes/input/states/states_table.py,sha256=YaocrL75-LOx4b908-hch9jG1VmgPBMPD6ZKCdZRcMI,20147
123
+ foxes/input/states/create/__init__.py,sha256=Ocqzmr9SOefeAvGX5DgawsPXfNdGzWOZ2ssvtqEmtAo,134
124
+ foxes/input/states/create/random_abl_states.py,sha256=K442PZd2MkdRi72UhSRYQbR4IXGaU2FQybo1IO07-5o,3334
125
+ foxes/input/states/create/random_timeseries.py,sha256=gJpaQ4nEXxOjI4hp3xjNcVbCsmZUm-brXUxoqDb63WE,1266
126
+ foxes/input/windio/__init__.py,sha256=c6XnSJXXXI-HzUzAZxDtzot3gWpf3vpExyHhkXrKS8s,342
127
+ foxes/input/windio/get_states.py,sha256=3Ds2iaCb6NnY2U_q8vARfmQfOpRFTTBcGSORB3WSOv8,6057
128
+ foxes/input/windio/read_attributes.py,sha256=aSmTP90JDoXjtVlllCVRZZdDOWnldym2AaASJkdzdgs,12749
129
+ foxes/input/windio/read_farm.py,sha256=qIbEWq61cE6-YSQrEaqZVqNG2yboGc9VhbZfPLf5dGw,6076
130
+ foxes/input/windio/read_fields.py,sha256=NeLTyHDhFXrRVO-_4_57Mc9PAEiDqkRJ2FRRxzJQRIA,4630
131
+ foxes/input/windio/read_outputs.py,sha256=fjpRYsrpjcZLbWMI5Md4g9ZbM9tiMzemblNay0Xctas,5949
132
+ foxes/input/windio/runner.py,sha256=wBYW88I1g4GoTTOi5WTCiALcPuc0XgrlXHPxz2fSnU8,5611
133
+ foxes/input/windio/windio.py,sha256=YZpiX7dCY9368ackQcPmgg4GhBjPx692gN9Fu9ZSf-U,5597
134
+ foxes/models/__init__.py,sha256=8eOGCieghW7ILjpkxMHzp4GN2zFF3xlKPl7Df7sMxoU,434
135
+ foxes/models/model_book.py,sha256=NOht0AfOggeKX0ybdpJOu0FMbwD9kSQCM6yh1oOM9Nc,24965
136
+ foxes/models/axial_induction/__init__.py,sha256=CdYOzu45DWu7xrzpRpFIQ6CGZIMABjjy_lqAszjj9lg,78
137
+ foxes/models/axial_induction/betz.py,sha256=rAaq7pnu-FmfYh61BU5Af1h4_bG2AAimP4Qah1aZo88,894
138
+ foxes/models/axial_induction/madsen.py,sha256=_-ycfh8SnIpCKWm1uwx5VH7f49FQvR0y1Nbb_U8xWyU,1403
139
+ foxes/models/farm_controllers/__init__.py,sha256=oDdW_fA3GSkJBzn9Vsd3T9bBVhB9-j_IglFjYV4G2rU,72
140
+ foxes/models/farm_controllers/basic.py,sha256=6pinNXiyfoG3apXhqQWcnxx4vN_7Q63YryXX5Z7kTE0,249
141
+ foxes/models/farm_models/__init__.py,sha256=WoC1Cmeo5-LLdC5I_S9hwZhZOtBnWDL6azjaUTcoOuY,66
142
+ foxes/models/farm_models/turbine2farm.py,sha256=LuK-qAy4aVXBqFCM4-1qogwAA4qfHsjYRFsrZy_OUro,2276
143
+ foxes/models/ground_models/__init__.py,sha256=RR6p8B4jacbzcK1LwnSUqYFXi9h7Qx4RhKiTTGXKxZo,82
144
+ foxes/models/ground_models/no_ground.py,sha256=pDuHAFHHgpEVIi1spie9ooR7OG-4l8_KPrGYQhdCT3I,149
145
+ foxes/models/ground_models/wake_mirror.py,sha256=qpj6IFgXAIw2nwteDyTGHR95Lv2p4Bjwen2A6HtQ2AA,4465
146
+ foxes/models/partial_wakes/__init__.py,sha256=qlV4zgjTSBfpz4dVh7DSoxCZXkaK_-dW43t8-LcDYEg,245
147
+ foxes/models/partial_wakes/axiwake.py,sha256=OqaIJl9alkFbTVXYLCjl6odCtuHYIT_yckk1PpAUTGQ,6549
148
+ foxes/models/partial_wakes/centre.py,sha256=mIX0eiPJUFCJ82gjZCrf6ajRmJp7CgKpM7QQXiE6UEI,963
149
+ foxes/models/partial_wakes/grid.py,sha256=SOymgn0MGvUFSAWd9YKDCzXYtizsuiNV-yP0oqrKS1E,600
150
+ foxes/models/partial_wakes/rotor_points.py,sha256=qXBP-0TAjSONF80W-9Sh9RGmEOmakc0FaqZTaeucVI0,2785
151
+ foxes/models/partial_wakes/segregated.py,sha256=iGa9wDTGkSap5L5Q63o3UMeOJN2Nq6qxYrw-hJ-E7kU,4370
152
+ foxes/models/partial_wakes/top_hat.py,sha256=TPk9GoyoYDbxxZbcFufNDyNu-Yhnzn4GUwS7X3WelbQ,5557
153
+ foxes/models/point_models/__init__.py,sha256=kb6pBrrPGWWKcnlAqOdBLMT7l-Y7yFAitrUr4eFiWcM,131
154
+ foxes/models/point_models/set_uniform_data.py,sha256=TA6elvV0NqrJhYACdgLmI_FMZnlRHBHgVf-wAVMr7mI,4474
155
+ foxes/models/point_models/tke2ti.py,sha256=0mrhpGy0xP_zCqp26_ts81WAHdCqyz_fC6A9BgXIrrI,1407
156
+ foxes/models/point_models/wake_deltas.py,sha256=nwpallRan2tfSPU9acESHiSg30_gpShsDd-nU65FAIA,2035
157
+ foxes/models/rotor_models/__init__.py,sha256=peLe_ykp4e_ls_iGDa-1z7-jCTtjurE3ig2R9tJy7Bg,114
158
+ foxes/models/rotor_models/centre.py,sha256=xmEip2GAgLlj0DAgJNXQ_huBxy4OYK03buv4SQDVp2g,5632
159
+ foxes/models/rotor_models/grid.py,sha256=TL1ll6n_nUctwGyOPzUpLEmxSX4ZMDveh4B6kC5fRe8,4437
160
+ foxes/models/rotor_models/levels.py,sha256=siiM9Lcrm6E1Fe87SJh39d2Wiz9stssT6x0wUB3ZWjc,3949
161
+ foxes/models/turbine_models/__init__.py,sha256=eCS66-AS3ivW9qm-yPPfO_0_eHQox5Sp7bQantVPwg0,428
162
+ foxes/models/turbine_models/calculator.py,sha256=R5EwXvRCWg8zwrRGDmmX-SnCi6XraBmeQzgbHKkcRv8,2776
163
+ foxes/models/turbine_models/kTI_model.py,sha256=CbHvO6r5Xy435RAsOMjzHfgtHCAoWDOkXyfy1K4ydGQ,3521
164
+ foxes/models/turbine_models/lookup_table.py,sha256=iUU4wX6KtPHRhvaJuS0LhnD0sFuQYLMy2dEkl4L-LCg,7231
165
+ foxes/models/turbine_models/power_mask.py,sha256=OX0LFS3fO4OjOjADE-Q9oeeyFuzHl6-F6FKzbn_Td9k,5848
166
+ foxes/models/turbine_models/rotor_centre_calc.py,sha256=I-0zH6RSkN9iLH3WQGpOLMouh3IxJrPh4HXwXA-M8Fs,3542
167
+ foxes/models/turbine_models/sector_management.py,sha256=v_m95oUHhxdlUVlC2sg4S-2xJtUlUogeTWj8gmdqKMo,7114
168
+ foxes/models/turbine_models/set_farm_vars.py,sha256=DuEJ-SSiQqnSlEKMqwb7qrQRXYGZ5_8GulFH0vdjiLU,7728
169
+ foxes/models/turbine_models/table_factors.py,sha256=-JmhxR5fEsr0YJr5w9UU4_i0pdsrBK4PvfN1AtOns9k,4666
170
+ foxes/models/turbine_models/thrust2ct.py,sha256=mr26P7PoPD7QIgKCxylL1aMsr3g-ulNmP08T5g52MGw,2289
171
+ foxes/models/turbine_models/yaw2yawm.py,sha256=7AE7J9UAeSQq4ZC_K9W0y6WqCie1eWpYcgHmcAhVvic,1601
172
+ foxes/models/turbine_models/yawm2yaw.py,sha256=42NFAi3_BtJfeHa3jC9L9dbRVSiDQQK4Uf-5MZdf0Vg,1592
173
+ foxes/models/turbine_types/CpCt_file.py,sha256=EnDZE4FH07wh-bFHAtd_Zz0BDKOheM699yeefq1wEL4,2048
174
+ foxes/models/turbine_types/CpCt_from_two.py,sha256=uf4F4c3CXSwjWCOMrDmhMan5hyQm-pMpygeyp5-B7mM,2692
175
+ foxes/models/turbine_types/PCt_file.py,sha256=60k69ACi5D-QaAlpZws0FJJTKeKvo3isEIAIdjWkXtc,10804
176
+ foxes/models/turbine_types/PCt_from_two.py,sha256=FocGRRQ5P7vIaWANX3yJYvLgyiYK9eiKRrhTOBDZPeE,12367
177
+ foxes/models/turbine_types/TBL_file.py,sha256=HAj_SYnjfugfMpret-zqsqkeP3SicHwAys4FnbXMuak,1764
178
+ foxes/models/turbine_types/__init__.py,sha256=quo_ttR_CugcU84QQ0AWHm8rEe53COV7GjQA-C7HXYM,362
179
+ foxes/models/turbine_types/lookup.py,sha256=3qUCaNkl1MytEl3uaORhEJeTFdG8pCFhHmvUeOCGCFQ,9251
180
+ foxes/models/turbine_types/null_type.py,sha256=svHqmx8TJ0Nvo_s22gtaMejxAxPwGeMD6DbDFR5kgKs,2415
181
+ foxes/models/turbine_types/wsrho2PCt_from_two.py,sha256=CVDcoOrgdELLt8qrgVLlQ-pN2o-3LpbDz3fHZKgCpzo,11641
182
+ foxes/models/turbine_types/wsti2PCt_from_two.py,sha256=Rmw_Smm-T1X6df3gNLtgGWrBCFvNIGntx-ohexc2HBM,12785
183
+ foxes/models/vertical_profiles/__init__.py,sha256=hWUjIIuDqCEFypcS6CtiQpHiKpfRyEJjVc1GjG91Mso,352
184
+ foxes/models/vertical_profiles/abl_log_neutral_ws.py,sha256=2U5iiwii4DMbKJg5v2a6ICf-4ZIc7hpBUfZStsi8h-o,1849
185
+ foxes/models/vertical_profiles/abl_log_stable_ws.py,sha256=Lxn9WoBegi9UXMAXMJdraHINJ8fsGEqOj5Lxo5LywHI,1937
186
+ foxes/models/vertical_profiles/abl_log_unstable_ws.py,sha256=V6VX1xpnbFP3auL7Q7xRRvzWXwNm1f5GKEoRZo-RC7M,1949
187
+ foxes/models/vertical_profiles/abl_log_ws.py,sha256=MirmvLpBe-6s5YgHLBJldlnVwIDeY0X1BfVhyPkvhOA,3396
188
+ foxes/models/vertical_profiles/data_profile.py,sha256=R9KkADNILXftfIPvcwiLHRHs7nGnEXiyfXAO0llzVQo,2906
189
+ foxes/models/vertical_profiles/sheared_ws.py,sha256=kC108pLPa3fHVJXQugU6R1VKz-JdXY1mhX2PQPmG-wI,1225
190
+ foxes/models/vertical_profiles/uniform.py,sha256=bG0vCiBZqUiJQJreRuTUxb0X1WnJW6pGdpPoQd3A3WQ,1187
191
+ foxes/models/wake_frames/__init__.py,sha256=DAbiSlvlJWlnb58KQ8e6RpMBN9_ukVxPLIZo0Zc0hQs,287
192
+ foxes/models/wake_frames/dynamic_wakes.py,sha256=lizJvyjt-OxYAwylK97itRrCfgHuANJRQzcijic3Ki8,15182
193
+ foxes/models/wake_frames/farm_order.py,sha256=cO7K6b1Jei8k68e4UMcOLw-F4Ak4ZgME0JtZhYI64D0,4040
194
+ foxes/models/wake_frames/rotor_wd.py,sha256=LqYuq0sq8RPTGq-U9rFZiSp2BCVxNyeiIyt0QbHxEaU,3810
195
+ foxes/models/wake_frames/seq_dynamic_wakes.py,sha256=A0BupE2wCRzaSfKuteulQw9dhi_8oNz6Yoy42d6atCk,10452
196
+ foxes/models/wake_frames/streamlines.py,sha256=9CSvc9o9k1vDy1shxeOVNMYsUuTaiv_S9cOt6o2bu0c,8983
197
+ foxes/models/wake_frames/timelines.py,sha256=9yiBI2b1aoiqO37U1F9gR9UwDClZl_TU_zzVrbOh5Mw,16980
198
+ foxes/models/wake_frames/yawed_wakes.py,sha256=SzrBG3Fatfi0dB-kLj05ofpwEW2O4D9Zzf8yoNAQJ20,9131
199
+ foxes/models/wake_models/__init__.py,sha256=hwoJF5RzDlr2g5zKgZ532H93F6Hcoo0Gfkc3XLiAJ1Q,253
200
+ foxes/models/wake_models/axisymmetric.py,sha256=3dS-1Br9ZvDaGa_KVy0sotnuMku4QpL_Nz3T5dyQXm8,2788
201
+ foxes/models/wake_models/dist_sliced.py,sha256=v-B-mIYxY5CysOU2tFclwmAVlwS4jzRpdMX3ED34YzI,5806
202
+ foxes/models/wake_models/gaussian.py,sha256=hchArmoqbdUthh2q7D9PEfC838217ySDHc2fbvtihD4,2760
203
+ foxes/models/wake_models/top_hat.py,sha256=hONEnfcza7_4OSwa9WUnX4xTdxPuXndQK_4DeaqqxQY,5891
204
+ foxes/models/wake_models/induction/__init__.py,sha256=kl5hRnV0q1zyaqTdwhEdsNiOV-Fu0ySRIUQH418npyI,231
205
+ foxes/models/wake_models/induction/rankine_half_body.py,sha256=LKYNAiamULPLQeohla8Nb0uMJqrsry0jkLbXWUzcQes,7842
206
+ foxes/models/wake_models/induction/rathmann.py,sha256=SFLqMFjcwSM2zSdyK8M60q8pB98ffixDWuvhRH5FYwE,7751
207
+ foxes/models/wake_models/induction/self_similar.py,sha256=q7PM8mLjH8BW2_Qev_3yoAwchRy8cCoG6ps6mlYnIGQ,8444
208
+ foxes/models/wake_models/induction/self_similar2020.py,sha256=D8yQxa5NQFII2gvKggcbJvuSDnrIRSy0Q5aCC3DoTPc,1634
209
+ foxes/models/wake_models/induction/vortex_sheet.py,sha256=NPCPNKpEiqdD0RMn-p81cndO5rLLONHMvUJn9bo3F6g,7394
210
+ foxes/models/wake_models/ti/__init__.py,sha256=EOlqFHL2mzcKGFRZqlVYTiqGJqPb6dx7I5UWUDshy2U,125
211
+ foxes/models/wake_models/ti/crespo_hernandez.py,sha256=ND9zOW2AKAV1LdehX4vyy4_gBIeObZZnEbXfMnkC05M,8890
212
+ foxes/models/wake_models/ti/iec_ti.py,sha256=8efoMQibs8zolXF7iZALggdFL6fHeRdL5ikztRjxENI,7006
213
+ foxes/models/wake_models/wind/__init__.py,sha256=X_QdQ_f3fKCIrZZ9K_CzzsHSl13AyvPRcWdEZ1y9Bk4,223
214
+ foxes/models/wake_models/wind/bastankhah14.py,sha256=Ow4GY5dqOTEMCollN1T8N3MYLm-dRGjxhud9b8luaXY,5226
215
+ foxes/models/wake_models/wind/bastankhah16.py,sha256=Ge4lGxM2QmkQ2P-3kdGW_HdeAGCC0XQunrZvW9TD1zY,17662
216
+ foxes/models/wake_models/wind/jensen.py,sha256=EG3z2kAuhyih-H0Rj1lQOVaz3o8qUI6A4xv3RfUY-Bk,4273
217
+ foxes/models/wake_models/wind/turbopark.py,sha256=df6Lfw2NU8DcJkEXJB-R_ULwJu1MEO5vU933EM_4JOc,14638
218
+ foxes/models/wake_superpositions/__init__.py,sha256=p_pI_bUC-JjpGfg-7hyo3EpB_qVYqg5CCFt_vSG9DF4,371
219
+ foxes/models/wake_superpositions/ti_linear.py,sha256=JlYTYN9yuJr4w4TUNWZnu8jTN6s5aXnnsJBWa-OnvZ0,3912
220
+ foxes/models/wake_superpositions/ti_max.py,sha256=Ak-2FNQjDMRRlXbdPBDWGlzq13CtDV2B4EWjPPiY87M,3937
221
+ foxes/models/wake_superpositions/ti_pow.py,sha256=zw_TgQAyOq3msAOjS-xfKawzMIU-vPZJc85tEzoEGrg,4161
222
+ foxes/models/wake_superpositions/ti_quadratic.py,sha256=RaKZZd0M7d4g8aJ-nJeDfIFKS8rsq28wbrcZapnsxAA,3927
223
+ foxes/models/wake_superpositions/ws_linear.py,sha256=Yumm_fNGnC0tYSGePyfrcUuWiH2n9JkWmdjdvAtmmBo,9183
224
+ foxes/models/wake_superpositions/ws_max.py,sha256=XzNbqa8bmkMwMkasnUml6x3j0-k4C5nXkeE6FhkltnU,9409
225
+ foxes/models/wake_superpositions/ws_pow.py,sha256=t2nAUjTK6hPstyGPNeJH9dqgbhOmQ91TXQPJDs1aDTw,9630
226
+ foxes/models/wake_superpositions/ws_product.py,sha256=yUKLU_C_ijewncuiXO6Uu_VfcxW-JadHBwg44gxZJS4,4664
227
+ foxes/models/wake_superpositions/ws_quadratic.py,sha256=3pWDd-HSVD4_OKQ5YQaUX1RY1KZZu46Q1Xhvf9xp7Jc,9225
228
+ foxes/output/__init__.py,sha256=HXIah5WbE_aBON9geFT_2IF2N1AQhlOPQro82I6OgUM,746
229
+ foxes/output/animation.py,sha256=zljekg6k2DjqVaBw0OamB4i3eopi6g2j0a12B9hx7VQ,2637
230
+ foxes/output/calc_points.py,sha256=QRZuZ6joHbhkEYDBX87QgEWwMMYbohAK3ZFuVwErK3Q,4497
231
+ foxes/output/farm_layout.py,sha256=ymHWRKmeZSl1g_M3WEAk7rKTZTcYB9eE6il1getYDN4,11265
232
+ foxes/output/farm_results_eval.py,sha256=RQ04g12vMSJxCmQTb6BdipNDe0S9GzNkEYlihe8zXjY,17664
233
+ foxes/output/grids.py,sha256=odgk-JqB1ojV2tZPLgJnujdGrJNi-6t_QR32x4cmuTs,22395
234
+ foxes/output/output.py,sha256=wUxKlNbfjwqDzU-lTWfIZMfK-h_R3rpmthSlgunTyw8,3460
235
+ foxes/output/results_writer.py,sha256=DcY93yVaxf_6NjiVgAwez2PA5uLZ7Kgn4-GAzKFFdho,5832
236
+ foxes/output/rose_plot.py,sha256=cJkGMDsgNiBb7be0DQ3nBBq0FJdwtXvnDSAq2WrxgGo,11090
237
+ foxes/output/rotor_point_plots.py,sha256=R44fcseBC5g8YsuR4irRrvYN8Nj94_lpJgpsBst2kjE,3165
238
+ foxes/output/round.py,sha256=s8YcXciCtaMY14SnG3ebYccyjQ2IEln256SwN9oJnPI,351
239
+ foxes/output/slice_data.py,sha256=YT8xGOI8iuywI19BpTt-Ok1B9HWla8x4LzRcZFcVE88,33798
240
+ foxes/output/state_turbine_map.py,sha256=KJFHcTsY88OqBiWrv8z-mTGAltjEQ7rPkeed9P_Kl5A,2594
241
+ foxes/output/state_turbine_table.py,sha256=NGBcZ1YzI8ewPJpuETdGvET7s1mENAiVqe3Gi6qs3oI,1745
242
+ foxes/output/turbine_type_curves.py,sha256=oZm9YGLLL-makFZDFucCkjXoqF2bkhFj9yJRqWM1Xk8,5526
243
+ foxes/output/flow_plots_2d/__init__.py,sha256=Stbwt5sP86fRA0ii3jnX2q0h5zgNLKmwFfpru5jof30,65
244
+ foxes/output/flow_plots_2d/flow_plots.py,sha256=gRGAtB4JAGZ_NkT3osHDaLOg4bYGhhY3u05gu9yA9z0,29931
245
+ foxes/output/flow_plots_2d/get_fig.py,sha256=gGMOfzNCukq_l0FZLmi3zSBl0ANkQi2WoKaGTpB6xhc,6169
246
+ foxes/output/seq_plugins/__init__.py,sha256=d6Tl5NBVV4MaZwXtPgyxBXBnh7uCBFTbNzRU6IXCmQQ,110
247
+ foxes/output/seq_plugins/seq_flow_ani_plugin.py,sha256=yAC-ZA_rkIOCHc1TN3uQYW0Z1CbxLTgP84Lrfr4D8cI,3654
248
+ foxes/output/seq_plugins/seq_wake_debug_plugin.py,sha256=oAijRu9XRjUL9X4lZF-V6jqOfv8omokRp7YMkL1I2_M,3969
249
+ foxes/utils/__init__.py,sha256=Zgz1_iDPb4okUwfcxaMRvXmn3D3jamslFfiU6wk2EEo,764
250
+ foxes/utils/cubic_roots.py,sha256=u2Pf-yHZ6EASpFONMfkv0mvldmd1E1VRZxj69YabDoc,3321
251
+ foxes/utils/data_book.py,sha256=z96QUC9FI7mv1NEFJUkkTcxWqx5Fc9gPeyzPwbFbyoM,5301
252
+ foxes/utils/dev_utils.py,sha256=6vryhcTg8lNXhtZOsQ0F8PTVpmUw250VNE-UyR0G70Y,1241
253
+ foxes/utils/dict.py,sha256=qPHfo_nKevvaAl4fb6qXZYAuH7MGdJGp67yi9P4gn9Q,1483
254
+ foxes/utils/exec_python.py,sha256=Ah20PjCpNDdVzgi79j2Oeh2b-JjyjpQ_EmsUxnI9pLc,1715
255
+ foxes/utils/factory.py,sha256=rxNQFQrOPtkIZCbEbg4zxJKzv7fVBJ3DKl4nEA5G9Z4,19466
256
+ foxes/utils/geopandas_utils.py,sha256=Icx-SXvn1TSqJFle9NOsZcj9qd5J06lvPPyI3S0vRvM,7903
257
+ foxes/utils/load.py,sha256=H3i_l3dO6KECYziQoPXDCtePuYemhD57yivIdsGjg5I,1291
258
+ foxes/utils/pandas_helpers.py,sha256=Zk_PFTyKkJyeIc52K-KJ5Ab6Hv0PJw820vwPgnQmiko,4732
259
+ foxes/utils/pandas_utils.py,sha256=5r3RHjaGu-Vi7DGMBdCDxVeu9nZk46wtPlHRL4l_R_c,4630
260
+ foxes/utils/random_xy.py,sha256=i0AZ04BLL6TxC3Lg1ZfwI_o4zJbHR6hm-BNd0Sydu_c,1376
261
+ foxes/utils/regularize.py,sha256=OnJ88ZCSu289aLHgrOb96j1A9JVvg_7OjZ3lWZAnNHo,512
262
+ foxes/utils/subclasses.py,sha256=bnlZaLgGjq9cQC9dvsxahUmLQQlSmmun35TjWYyX9CA,380
263
+ foxes/utils/tab_files.py,sha256=H50IpLaqffJn9A51orCGc4fOhCOzoNUYDUKek4OAayU,1811
264
+ foxes/utils/two_circles.py,sha256=xkj-SA_x-VXY7KtmSU4lcV4gFdplyhU3sBAC9vTdkF4,2810
265
+ foxes/utils/wind_dir.py,sha256=6W0njWDvnIdOOjwqcMr64MW9ApjdtFA75blVUxirPMo,2823
266
+ foxes/utils/windrose_plot.py,sha256=O9zLrDzQXIgKdBwzqNkusyA_rMshbk-8ybloIwt8vuY,4589
267
+ foxes/utils/xarray_utils.py,sha256=zAapAWYzKEBiM4h1oABNd4MvVcz-aO1gkymmhG7_uBg,1570
268
+ foxes/utils/abl/__init__.py,sha256=ijn-ubLLlqqH6tTAXFRmBAxJZmVBlTEmtx1cdCCtG4I,135
269
+ foxes/utils/abl/neutral.py,sha256=E4DEhvXvw74BPrYr1MjQjeIaoz6ZOTWVlqScKflm-0M,1358
270
+ foxes/utils/abl/sheared.py,sha256=nS6gxa5cR7B7XcZbEk3rwOvbF6m4cinXAIhhn9gGBBs,446
271
+ foxes/utils/abl/stable.py,sha256=frNsTK6nNhTpWTTyZuDbYPbt-9-ytx50GkT3RnuOlio,1830
272
+ foxes/utils/abl/unstable.py,sha256=K0b1VE2RrOET4_zkYV-dbHz5H3drFWMRkOhdgnAeK70,1611
273
+ foxes/utils/geom2d/__init__.py,sha256=mLjnRU0b0_nrVVUKyWwZFbPyu-k8yWPEM7i4Y4-QK3w,252
274
+ foxes/utils/geom2d/area_geometry.py,sha256=CvkhXqfGM7g_gQKtyeCNg0_Xk5Wf46fipK8H7Bo_Ag4,19120
275
+ foxes/utils/geom2d/circle.py,sha256=xgI9zuOS6rx6NnN56FINHYAh07L0FCDesjpZVwoBA_I,4529
276
+ foxes/utils/geom2d/example_intersection.py,sha256=4e6sjpZEk_bNc462YvwKPzwxdV1B90M82bC63ICV4Lw,1626
277
+ foxes/utils/geom2d/example_union.py,sha256=BKfLt1mtQcSto-qExeMQkq8tQ6kfFXVJ93Cc7DhOal8,1750
278
+ foxes/utils/geom2d/half_plane.py,sha256=kzZD6pkZxZ03MK9WAboWzXb5Ws5dWLQY9GIahD4D9mA,6167
279
+ foxes/utils/geom2d/polygon.py,sha256=Xj7triA5Pe4-48sNSAvGxEXlQGptV161LUpKKCf3YOY,5535
280
+ tests/0_consistency/iterative/test_iterative.py,sha256=L9GOI1gPN2sJ9fSHfDnv5wfMptBT6zjzrOUqlqN2EmQ,2434
281
+ tests/0_consistency/partial_wakes/test_partial_wakes.py,sha256=do2reilY2Vij6Ft6riYAOnHQ-Az5gfgFqjji5Il-ulY,2393
282
+ tests/1_verification/flappy_0_6/PCt_files/test_PCt_files.py,sha256=cKnwvKco3mEU0Hl_Ny2WebvPDlLKqWWunbWBYG-G560,2521
283
+ tests/1_verification/flappy_0_6/PCt_files/flappy/run.py,sha256=wJLKFOKVxOjmncYRarK5EK12HNjpWEUuu3EKgdq-Cvw,2165
284
+ tests/1_verification/flappy_0_6/abl_states/test_abl_states.py,sha256=kghfOZqqlS1Rv9VrpGmsqoTgFEgxE04lxlnPzPAhyBY,2148
285
+ tests/1_verification/flappy_0_6/abl_states/flappy/run.py,sha256=hnPSO_wqk9vYgwNNMWXb_UaYZOCnlwScVlfZl7rriV4,2058
286
+ tests/1_verification/flappy_0_6/partial_top_hat/test_partial_top_hat.py,sha256=JFR7jf46O-nkfq3SBSV5-sWttHUPJ5nirLn7jg8As5Q,1977
287
+ tests/1_verification/flappy_0_6/partial_top_hat/flappy/run.py,sha256=NMtLneJLk6J1DXE59FZ1JAGlh-zBwegtCAq8nB-p13I,1993
288
+ tests/1_verification/flappy_0_6/row_Jensen_linear_centre/test_row_Jensen_linear_centre.py,sha256=zeyBfxGgD4c9YqYNPxhqT2tVz9k3pwKIcx37GWahtxY,2155
289
+ tests/1_verification/flappy_0_6/row_Jensen_linear_centre/flappy/run.py,sha256=xTBI8dssYiqy7WC0IlKonfHQVshUk2ROyCzmecW0hbI,2184
290
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/test_row_Jensen_linear_tophat.py,sha256=HQHwNF8ELBdmR0a6_ECiLtPo99zt32L4eohNWAafx-o,2195
291
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/flappy/run.py,sha256=uhWgRbEbmM5t_ZdcG1U_719eo_2idWfML04wjFQhYL0,2180
292
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/test_row_Jensen_linear_tophat_IECTI_2005.py,sha256=gaZXNABEYTTVtKpJEEUH9R224TU_IU8YmRlVpakjq54,2635
293
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/flappy/run.py,sha256=84Vc_F4kZsluiPrKFX7WxWXKwfGZDNzW90npCsStJqQ,2259
294
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/test_row_Jensen_linear_tophat_IECTI_2019.py,sha256=5pQNBPLGqD5A-kVOLmz8rh0FzSf6VImRQA62OHSAu8c,2632
295
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/flappy/run.py,sha256=cPLIXymqdzu3zxB6-B3g3CU_oDhiYf-TlgWqossDjUw,2259
296
+ tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/test_row_Jensen_quadratic_centre.py,sha256=Ltqpf_cGG9SAnQqTe0hIcYG2BPZ6lCiK3_AQUkcAT34,2152
297
+ tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/flappy/run.py,sha256=u-LBBH_MVoqY4Gl__6_EuHUTXp7s-6xVU1OXkywrqrY,2187
298
+ tests/1_verification/flappy_0_6_2/grid_rotors/test_grid_rotors.py,sha256=wN0TEcZgQpT9fhifrUHu_9i0egq5D_EADupey2Wup_U,3605
299
+ tests/1_verification/flappy_0_6_2/grid_rotors/flappy/run.py,sha256=-TJAB5L9fj7UonqYILVH0i91PPD6KKd7bpJ2j0MDALk,2453
300
+ tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/test_row_Bastankhah_Crespo.py,sha256=wytIoaAo1ODFnfO680_yZZujGu70aaQjjNpqP608BJE,2689
301
+ tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/flappy/run.py,sha256=nwIyn20ZyYHhCKcPCnm02zjwNKMRzr9t0U8TjKK61QU,2213
302
+ tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/test_row_Bastankhah_linear_centre.py,sha256=JHitwzV_Ai8Hr7TgaTd5aMenTlaAmgv7BYIIutBwvZ4,2332
303
+ tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/flappy/run.py,sha256=s6FbEdpiIdHYmdD8S85_NhLH-S3EOinXvw8RHmR2QOU,2122
304
+ tests/3_examples/test_examples.py,sha256=rS2Dz04ktbS6v3TRDr96AkWGypr5u49jihqbEmGFmRU,694
305
+ foxes-1.1.0.2.dist-info/LICENSE,sha256=bBCH6mYTPzSepk2s2UUZ3II_ZYXrn1bnSqB85-aZHxU,1071
306
+ foxes-1.1.0.2.dist-info/METADATA,sha256=hwOuEKMhgi9_qFcIVbglbS8H5FVWsKEenwxIdyhkfyI,8672
307
+ foxes-1.1.0.2.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
308
+ foxes-1.1.0.2.dist-info/top_level.txt,sha256=G7oHApEz5nc-iP__XsPcvjYe_NyXGmKMUMPHi3C3x6I,26
309
+ foxes-1.1.0.2.dist-info/RECORD,,