foxes 1.2.4__py3-none-any.whl → 1.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 (54) hide show
  1. examples/quickstart/run.py +17 -0
  2. foxes/__init__.py +1 -1
  3. foxes/algorithms/downwind/downwind.py +9 -15
  4. foxes/algorithms/downwind/models/farm_wakes_calc.py +13 -7
  5. foxes/algorithms/downwind/models/init_farm_data.py +4 -4
  6. foxes/algorithms/downwind/models/reorder_farm_output.py +5 -1
  7. foxes/algorithms/downwind/models/set_amb_point_results.py +1 -1
  8. foxes/algorithms/iterative/models/farm_wakes_calc.py +6 -3
  9. foxes/algorithms/sequential/models/seq_state.py +0 -18
  10. foxes/algorithms/sequential/sequential.py +5 -18
  11. foxes/constants.py +6 -0
  12. foxes/core/data.py +44 -18
  13. foxes/core/engine.py +19 -1
  14. foxes/core/farm_data_model.py +1 -0
  15. foxes/core/rotor_model.py +42 -38
  16. foxes/core/states.py +2 -47
  17. foxes/input/states/__init__.py +1 -0
  18. foxes/input/states/field_data_nc.py +39 -61
  19. foxes/input/states/multi_height.py +35 -58
  20. foxes/input/states/one_point_flow.py +22 -21
  21. foxes/input/states/scan.py +6 -19
  22. foxes/input/states/single.py +5 -17
  23. foxes/input/states/states_table.py +19 -41
  24. foxes/input/states/wrg_states.py +301 -0
  25. foxes/models/partial_wakes/rotor_points.py +8 -2
  26. foxes/models/partial_wakes/segregated.py +9 -4
  27. foxes/models/rotor_models/centre.py +6 -4
  28. foxes/models/wake_frames/seq_dynamic_wakes.py +5 -2
  29. foxes/models/wake_frames/timelines.py +10 -0
  30. foxes/models/wake_models/induction/vortex_sheet.py +6 -9
  31. foxes/output/farm_layout.py +12 -4
  32. foxes/output/farm_results_eval.py +36 -12
  33. foxes/output/rose_plot.py +20 -2
  34. foxes/output/slice_data.py +16 -19
  35. foxes/utils/wrg_utils.py +84 -1
  36. {foxes-1.2.4.dist-info → foxes-1.3.dist-info}/METADATA +12 -8
  37. {foxes-1.2.4.dist-info → foxes-1.3.dist-info}/RECORD +54 -52
  38. {foxes-1.2.4.dist-info → foxes-1.3.dist-info}/WHEEL +1 -1
  39. tests/0_consistency/iterative/test_iterative.py +2 -3
  40. tests/0_consistency/partial_wakes/test_partial_wakes.py +2 -2
  41. tests/1_verification/flappy_0_6/PCt_files/test_PCt_files.py +48 -56
  42. tests/1_verification/flappy_0_6/abl_states/test_abl_states.py +33 -36
  43. tests/1_verification/flappy_0_6/row_Jensen_linear_centre/test_row_Jensen_linear_centre.py +3 -2
  44. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/test_row_Jensen_linear_tophat.py +3 -3
  45. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/test_row_Jensen_linear_tophat_IECTI_2005.py +3 -3
  46. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/test_row_Jensen_linear_tophat_IECTI_2019.py +3 -3
  47. tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/test_row_Jensen_quadratic_centre.py +3 -3
  48. tests/1_verification/flappy_0_6_2/grid_rotors/test_grid_rotors.py +3 -3
  49. tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/test_row_Bastankhah_Crespo.py +3 -2
  50. tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/test_row_Bastankhah_linear_centre.py +3 -3
  51. tests/3_examples/test_examples.py +3 -2
  52. {foxes-1.2.4.dist-info → foxes-1.3.dist-info}/LICENSE +0 -0
  53. {foxes-1.2.4.dist-info → foxes-1.3.dist-info}/entry_points.txt +0 -0
  54. {foxes-1.2.4.dist-info → foxes-1.3.dist-info}/top_level.txt +0 -0
@@ -123,7 +123,6 @@ class SliceData(Output):
123
123
  label_map,
124
124
  vmin,
125
125
  vmax,
126
- weight_turbine,
127
126
  to_file,
128
127
  write_pars,
129
128
  ret_states,
@@ -147,12 +146,22 @@ class SliceData(Output):
147
146
  del g_pts
148
147
 
149
148
  # take mean over states:
150
- weights = self.fres[FV.WEIGHT][:, weight_turbine].to_numpy()
151
- data = {
152
- v: np.einsum("s,sp->p", weights, point_results[v].to_numpy())
153
- for v in variables
154
- }
155
- del point_results
149
+ weights = point_results[FV.WEIGHT].to_numpy()
150
+ if point_results[FV.WEIGHT].dims == (FC.STATE,):
151
+ data = {
152
+ v: np.einsum("s,sp->p", weights, point_results[v].to_numpy())
153
+ for v in variables
154
+ }
155
+ elif point_results[FV.WEIGHT].dims == (FC.STATE, FC.POINT):
156
+ data = {
157
+ v: np.einsum("sp,sp->p", weights, point_results[v].to_numpy())
158
+ for v in variables
159
+ }
160
+ else:
161
+ raise ValueError(
162
+ f"Wrong dimensions for '{FV.WEIGHT}': Expecting {(FC.STATE,)} or {(FC.STATE, FC.POINT)}, got {point_results[FV.WEIGHT].dims}"
163
+ )
164
+ del point_results, weights
156
165
 
157
166
  # apply data modification:
158
167
  a_pos, b_pos, c_pos, data = self._data_mod(
@@ -207,7 +216,6 @@ class SliceData(Output):
207
216
  vmax={},
208
217
  states_sel=None,
209
218
  states_isel=None,
210
- weight_turbine=0,
211
219
  to_file=None,
212
220
  write_pars={},
213
221
  ret_states=False,
@@ -260,8 +268,6 @@ class SliceData(Output):
260
268
  Reduce to selected states
261
269
  states_isel: list, optional
262
270
  Reduce to the selected states indices
263
- weight_turbine: int, optional
264
- Index of the turbine from which to take the weight
265
271
  to_file: str, optional
266
272
  Write data to this file name
267
273
  write_pars: dict
@@ -314,7 +320,6 @@ class SliceData(Output):
314
320
  label_map,
315
321
  vmin,
316
322
  vmax,
317
- weight_turbine,
318
323
  to_file,
319
324
  write_pars,
320
325
  ret_states,
@@ -352,7 +357,6 @@ class SliceData(Output):
352
357
  vmax={},
353
358
  states_sel=None,
354
359
  states_isel=None,
355
- weight_turbine=0,
356
360
  to_file=None,
357
361
  write_pars={},
358
362
  ret_states=False,
@@ -407,8 +411,6 @@ class SliceData(Output):
407
411
  Reduce to selected states
408
412
  states_isel: list, optional
409
413
  Reduce to the selected states indices
410
- weight_turbine: int, optional
411
- Index of the turbine from which to take the weight
412
414
  to_file: str, optional
413
415
  Write data to this file name
414
416
  write_pars: dict
@@ -463,7 +465,6 @@ class SliceData(Output):
463
465
  label_map,
464
466
  vmin,
465
467
  vmax,
466
- weight_turbine,
467
468
  to_file,
468
469
  write_pars,
469
470
  ret_states,
@@ -501,7 +502,6 @@ class SliceData(Output):
501
502
  vmax={},
502
503
  states_sel=None,
503
504
  states_isel=None,
504
- weight_turbine=0,
505
505
  to_file=None,
506
506
  write_pars={},
507
507
  ret_states=False,
@@ -556,8 +556,6 @@ class SliceData(Output):
556
556
  Reduce to selected states
557
557
  states_isel: list, optional
558
558
  Reduce to the selected states indices
559
- weight_turbine: int, optional
560
- Index of the turbine from which to take the weight
561
559
  to_file: str, optional
562
560
  Write data to this file name
563
561
  write_pars: dict
@@ -612,7 +610,6 @@ class SliceData(Output):
612
610
  label_map,
613
611
  vmin,
614
612
  vmax,
615
- weight_turbine,
616
613
  to_file,
617
614
  write_pars,
618
615
  ret_states,
foxes/utils/wrg_utils.py CHANGED
@@ -58,13 +58,18 @@ class ReaderWRG:
58
58
  cols[10::3] = cols_sel("Ks", self._n_sectors)
59
59
 
60
60
  self._data = pd.read_csv(
61
- self.fpath, names=cols, skiprows=1, sep="\s+", usecols=range(1, n_cols)
61
+ self.fpath, names=cols, skiprows=1, sep=r"\s+", usecols=range(1, n_cols)
62
62
  )
63
63
 
64
64
  self._data[cols_sel("fs", self._n_sectors)] /= 10
65
65
  self._data[cols_sel("As", self._n_sectors)] /= 10
66
66
  self._data[cols_sel("Ks", self._n_sectors)] /= 100
67
67
 
68
+ if len(self._data.index) != self._nx * self._ny:
69
+ raise ValueError(
70
+ f"Expecting {self._nx * self._ny} rows in data, got {len(self._data.index)}"
71
+ )
72
+
68
73
  @property
69
74
  def data(self):
70
75
  """
@@ -77,3 +82,81 @@ class ReaderWRG:
77
82
 
78
83
  """
79
84
  return self._data
85
+
86
+ @property
87
+ def nx(self):
88
+ """
89
+ The number of points in x direction
90
+
91
+ Returns
92
+ -------
93
+ n: int
94
+ The number of points in x direction
95
+
96
+ """
97
+ return self._nx
98
+
99
+ @property
100
+ def ny(self):
101
+ """
102
+ The number of points in y direction
103
+
104
+ Returns
105
+ -------
106
+ n: int
107
+ The number of points in y direction
108
+
109
+ """
110
+ return self._ny
111
+
112
+ @property
113
+ def x0(self):
114
+ """
115
+ The lower left x coordinate
116
+
117
+ Returns
118
+ -------
119
+ x: float
120
+ The lower left x coordinate
121
+
122
+ """
123
+ return self._utmx0
124
+
125
+ @property
126
+ def y0(self):
127
+ """
128
+ The lower left y coordinate
129
+
130
+ Returns
131
+ -------
132
+ y: float
133
+ The lower left y coordinate
134
+
135
+ """
136
+ return self._utmy0
137
+
138
+ @property
139
+ def n_sectors(self):
140
+ """
141
+ The number of wind direction sectors
142
+
143
+ Returns
144
+ -------
145
+ n: int
146
+ The number of wind direction sectors
147
+
148
+ """
149
+ return self._n_sectors
150
+
151
+ @property
152
+ def resolution(self):
153
+ """
154
+ The horizontal resolution
155
+
156
+ Returns
157
+ -------
158
+ res: float
159
+ The horizontal resolution
160
+
161
+ """
162
+ return self._res
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: foxes
3
- Version: 1.2.4
3
+ Version: 1.3
4
4
  Summary: Farm Optimization and eXtended yield Evaluation Software
5
5
  Author: Jonas Schulte
6
6
  Maintainer: Jonas Schulte
@@ -94,6 +94,8 @@ Requires-Dist: ipykernel; extra == "doc"
94
94
  Requires-Dist: ipywidgets; extra == "doc"
95
95
  Requires-Dist: m2r2; extra == "doc"
96
96
  Requires-Dist: lxml_html_clean; extra == "doc"
97
+ Requires-Dist: dask; extra == "doc"
98
+ Requires-Dist: distributed; extra == "doc"
97
99
  Provides-Extra: dev
98
100
  Requires-Dist: flake8; extra == "dev"
99
101
  Requires-Dist: pytest; extra == "dev"
@@ -189,15 +191,17 @@ For detailed examples of how to run _foxes_, check the `examples` and `notebooks
189
191
  ```python
190
192
  import foxes
191
193
 
192
- states = foxes.input.states.Timeseries("timeseries_3000.csv.gz", ["WS", "WD","TI","RHO"])
194
+ if __name__ == "__main__":
193
195
 
194
- farm = foxes.WindFarm()
195
- foxes.input.farm_layout.add_from_file(farm, "test_farm_67.csv", turbine_models=["NREL5MW"])
196
+ states = foxes.input.states.Timeseries("timeseries_3000.csv.gz", ["WS", "WD","TI","RHO"])
196
197
 
197
- algo = foxes.algorithms.Downwind(farm, states, ["Jensen_linear_k007"])
198
- farm_results = algo.calc_farm()
198
+ farm = foxes.WindFarm()
199
+ foxes.input.farm_layout.add_from_file(farm, "test_farm_67.csv", turbine_models=["NREL5MW"])
199
200
 
200
- print(farm_results)
201
+ algo = foxes.algorithms.Downwind(farm, states, ["Jensen_linear_k007"])
202
+ farm_results = algo.calc_farm()
203
+
204
+ print(farm_results)
201
205
  ```
202
206
 
203
207
  ## Testing
@@ -7,6 +7,7 @@ examples/field_data_nc/run.py,sha256=EYx9B5axIPW2yfVet4QpMGyPMbMbPoTRvGrl249L_RM
7
7
  examples/induction/run.py,sha256=eTxEdKJ_8MtYuxI0QNECqJ31x-zb9Zen5bUpwPtujPE,6334
8
8
  examples/multi_height/run.py,sha256=KsY5tN8z9QHitQQdxnTjHzPSPlYPn5pkcMskjd94D74,3288
9
9
  examples/power_mask/run.py,sha256=YK8RU0TLd7TgBJkPZQVrn8log-UQNZ7L3B3-yE8qu64,7584
10
+ examples/quickstart/run.py,sha256=COWglulEie_2mqW-A1UTc1bXLMKx_Y1BlmyP4BDQf8o,428
10
11
  examples/random_timeseries/run.py,sha256=bo-fLF647mc97we30ci9klw23kXISk4KtCBxRc1lIqA,6106
11
12
  examples/scan_row/run.py,sha256=japzROlgEa71u2KYy03bQ8dBso-ejURUV3vZsg5m3AI,5844
12
13
  examples/sector_management/run.py,sha256=WQvrHqtC7_u6JvZfbRsVSb3SPYDjCp-ZJpC-nZsQf5M,4451
@@ -20,47 +21,47 @@ examples/timeseries/run.py,sha256=aCuEjWpwGXTeS1s9frOtAnpAHRnQoe4tu4Q0BHoPDys,53
20
21
  examples/timeseries_slurm/run.py,sha256=j-tJlCVDMp1FiPnfNTPcJhwV_MCmsvwi_umNTaDEG_Q,5581
21
22
  examples/wind_rose/run.py,sha256=shKCX4-HOZwVBDrgnOaI0ycMpWLOBvhSw7SU_x7CzWo,4247
22
23
  examples/yawed_wake/run.py,sha256=V_02HSuHQufzwhnVNGsJoQQpTgMlYtuZZVIDEaLU4U4,6166
23
- foxes/__init__.py,sha256=V0D5TDEqDNgZCcqm8kHaQdOksc2eUG-mql9YTL6HREs,1124
24
- foxes/constants.py,sha256=HN5UrxQBt2vO1AmiiWThdK9rY_AtFsOQuwYUZb7JgXY,3387
24
+ foxes/__init__.py,sha256=FnSO-p4sc7lI780lWm8HttIHNZ6jNMZFdf32aCkU260,1120
25
+ foxes/constants.py,sha256=d6jGdKGtBb1KC2GncBJx5DDIwk51TiLqI9vymrJRpE8,3494
25
26
  foxes/variables.py,sha256=1xbGQx6ceUjAYeK0wZiS_D_MTFQ6mEJoY9VnlE2iVc4,5113
26
27
  foxes/algorithms/__init__.py,sha256=gCr5DK2wXhAAJf8eylkevN8yiwPdEC-pqY_LgjKzMv8,249
27
28
  foxes/algorithms/downwind/__init__.py,sha256=lyygq5GMc6NAPmH0b0mhGeccWyuC8JTOEMZl-UlmE5M,53
28
- foxes/algorithms/downwind/downwind.py,sha256=Du0NSVpwZvPgXacLBtDkBmD9bBwDYZfnnlrfe5e_vOM,25297
29
+ foxes/algorithms/downwind/downwind.py,sha256=xgf43janPbVsEcEcG4P1Xww0M-L11rHGZDSvqy3JPEE,25233
29
30
  foxes/algorithms/downwind/models/__init__.py,sha256=0ov8rjIQ02w3iB6yYCxaswPvHDlPM_8_di6xPh1TTkQ,300
30
- foxes/algorithms/downwind/models/farm_wakes_calc.py,sha256=IiO8_hhyT7aqPaMym2d__ZvwnjedoDgGj-x00muqOYg,5735
31
- foxes/algorithms/downwind/models/init_farm_data.py,sha256=KnDXy8NyStLXhQxeZsHMpds-lxisQu9BOBZeYtbJXLk,4108
31
+ foxes/algorithms/downwind/models/farm_wakes_calc.py,sha256=BJEtZdW1PC0uP2cnqaVvg8TaubsSUXVtQnB5LR5qSEY,5951
32
+ foxes/algorithms/downwind/models/init_farm_data.py,sha256=0lXqFAsOW_p4m48VUj-ex-fekksvm3mSxHfG13GZnxM,4147
32
33
  foxes/algorithms/downwind/models/point_wakes_calc.py,sha256=xvFgfXcCpw2WFMfrna480ER1rI3WZOEVBssob5n9Gws,4486
33
- foxes/algorithms/downwind/models/reorder_farm_output.py,sha256=6C2i7C1OWV0pe6nr9BjJiWVETcW2U_lnt_Iv150oV5I,2038
34
+ foxes/algorithms/downwind/models/reorder_farm_output.py,sha256=SEZXJNJcYjXd53PGg1mgEQzjevSlLkcUy8Ytz4rvS1Q,2128
34
35
  foxes/algorithms/downwind/models/set_amb_farm_results.py,sha256=_xYNjFZiofHLGIFNw671izXUn37psX-NhSIO63IRwvA,1732
35
- foxes/algorithms/downwind/models/set_amb_point_results.py,sha256=riXnM_XLixuLmtFBbH8-WNTW-Ih5oJoTDNuzY0cQbZo,2293
36
+ foxes/algorithms/downwind/models/set_amb_point_results.py,sha256=2ZaKEHZMrm2D0EfDHLIo-quohoseUP_qhuKbshne80Q,2307
36
37
  foxes/algorithms/iterative/__init__.py,sha256=Je445cHtS2ERc-dywjhxWttKzdEyHM8JLxPcW5JFtl8,137
37
38
  foxes/algorithms/iterative/iterative.py,sha256=AVDrc4-Jz68ainraLxr7zMYiCMUx4ODf8z50akDhyxE,9930
38
39
  foxes/algorithms/iterative/models/__init__.py,sha256=3lMBUOzq5bKNQBGoV8byVQ7_Keyk1GfwFZDUwaafGsg,152
39
40
  foxes/algorithms/iterative/models/convergence.py,sha256=5fCeTMisYEhgvPRbLKMK0XYsSSr2xWqqzB-pUBrIjYk,6466
40
- foxes/algorithms/iterative/models/farm_wakes_calc.py,sha256=8xSDI9u5deiud80VKyFmXCOT_0THIKSIRPqnGK2wfr0,4946
41
+ foxes/algorithms/iterative/models/farm_wakes_calc.py,sha256=zDv0LIRBr-Ia4dxvfw_-u2TVr2-OVXrV3HOM35JF0Zk,5082
41
42
  foxes/algorithms/iterative/models/urelax.py,sha256=412fHSpi_4MATE1qRzqcZDFff6iJpV1h3QIBL_7giQE,2076
42
43
  foxes/algorithms/sequential/__init__.py,sha256=2o05IH9XePnqxNEAn2Fr1qiCM6OooqmH2VtmdJXtK0c,94
43
- foxes/algorithms/sequential/sequential.py,sha256=9S6eIIWKCD69Q5Ev8IA5h32L9RCQY_jIspd6EDE9xHU,12388
44
+ foxes/algorithms/sequential/sequential.py,sha256=1Cj0ntF39NXyDaaIVKEv3GCHi_Y3tSPT9Zm2Qk9-jdM,12040
44
45
  foxes/algorithms/sequential/models/__init__.py,sha256=OneaRLxMPzVWLKL9cR3JIYHojfzVX_CQaPv-LP6mCZI,69
45
46
  foxes/algorithms/sequential/models/plugin.py,sha256=HhCeHM_YoJRMXuZKa8rXUJZDhWf5rNl28_UfDLSGWvA,1330
46
- foxes/algorithms/sequential/models/seq_state.py,sha256=J1PorBVV5xZFWobHvCrGDCD-q7Egz_Op1p4PDiacBy0,3654
47
+ foxes/algorithms/sequential/models/seq_state.py,sha256=al7XhLKLQSGhfUZw--Bz4RNNbA1jeObKZd1v58hEt-Q,3206
47
48
  foxes/config/__init__.py,sha256=k3irS7dNsXTzQpz9e6GOqoqGZkyMAW_BGxnV8JGcuRs,78
48
49
  foxes/config/config.py,sha256=e3HhitD2Xleqm3utoXLGAu8Vg16app35Cpx4nBhnZm8,4318
49
50
  foxes/core/__init__.py,sha256=3dOuKrFeSM6fCMxfLxTbzUsBPVTZiRp0sFhnibniBko,1021
50
51
  foxes/core/algorithm.py,sha256=ggdvtQT6kbmrgPUma-jCHqW7Q3ISvXHud1xl-t-kcls,27446
51
52
  foxes/core/axial_induction_model.py,sha256=sGbTHFMjEYKiVjElLP_SCRulKatcK0wsEXf30zty2Vc,1023
52
- foxes/core/data.py,sha256=21hSiLzrrAKKVXjFbIF7oska0bR5qPB2XmxYUraNeIg,21931
53
+ foxes/core/data.py,sha256=5G_r0H2lRt5v_hhy1_YWp6Pw8cvI3fy2brLbVSSDOLg,23148
53
54
  foxes/core/data_calc_model.py,sha256=Hhl2ZapafsIvq5z_YWlGqB3kkF64txohU_MHlfHAvpk,1334
54
- foxes/core/engine.py,sha256=I2CiIH9f__WWPPGeXgL8w8LAR2XUESEpQ0YQiIQ1zFI,20291
55
+ foxes/core/engine.py,sha256=lyuD8KMXN_UHkn1nfVV4d3Mkwyzbec8EcfjB9lerhNc,20886
55
56
  foxes/core/farm_controller.py,sha256=RZXvL24_Z-vVwikgWcTYYXREJTm72fhzGoNhFDEF56c,13832
56
- foxes/core/farm_data_model.py,sha256=uEhPjtyNZqZsVT_ySRg0MjpTWLZ6gg_Em-wmYmFDz8s,7383
57
+ foxes/core/farm_data_model.py,sha256=_1DXJzyfLwha80aL-BT57wHLimOiiw1rPTxH8qxVl54,7384
57
58
  foxes/core/farm_model.py,sha256=ogFahCjC2dIBcjnCMmy0cTGulKTDA2ufFUzODf0-KnI,265
58
59
  foxes/core/ground_model.py,sha256=oRlgrTBAcYaIv8gf5BRccDBlz8GhmAMIlFiVnHt6sXQ,7311
59
60
  foxes/core/model.py,sha256=UgoT99BaBBNXKlhUDY87uGJ5WrJ5cpFDIhHcDDzWMvw,19660
60
61
  foxes/core/partial_wakes_model.py,sha256=L_Wz0U1ps0suw6la-O9xwngYO9HxfGI9wjMGlpARVjA,5413
61
62
  foxes/core/point_data_model.py,sha256=90AEIVHkmGP80RhptyPpQDA7wvOnZfF-0VD2dv3L718,7569
62
- foxes/core/rotor_model.py,sha256=vGKFv_FSjSlxBJQUpbsHGK_q6h3Zd6ow8TzxjSFS_mQ,12772
63
- foxes/core/states.py,sha256=BT1LRIOPNPAslLGzAr3ZeF-CKmt3Ij_F-vn750Wkxm4,8309
63
+ foxes/core/rotor_model.py,sha256=3PhUocdBZ1CPMxQggW9Jl1AopwknnHICKchNTNwOESY,13149
64
+ foxes/core/states.py,sha256=x1yit4gq8oeTZzh3VtOq69UViSamGP1Qxcy6Cwi1S1U,6999
64
65
  foxes/core/turbine.py,sha256=P5qPKmV1qohZdAKW4lPiUerQkRDTxUOhsvBPQqy8mBo,3054
65
66
  foxes/core/turbine_model.py,sha256=I-t-2lNVDaifg_cHEurqan9Ko9kcI1k-VEkKS_nyX-o,1585
66
67
  foxes/core/turbine_type.py,sha256=DbzDmSfSow7RPCyRlQ_WrzWJ7fPnIN0BBGVzWhhG8FU,3174
@@ -109,13 +110,14 @@ foxes/input/farm_layout/from_random.py,sha256=6ZYKbdV6x11MbQRAHs5nVYBAG-1K295xsM
109
110
  foxes/input/farm_layout/grid.py,sha256=CsVIYfCPyznEhDLO_tsTxBPJ591x8l-axDg4M5yArg0,1492
110
111
  foxes/input/farm_layout/ring.py,sha256=ghfLkVVQciWDJJNqGs4jZVnM0XCII9ae3hAh9Wb4938,1455
111
112
  foxes/input/farm_layout/row.py,sha256=Bx9woFNkXbFXJg51GX2p2PbVgdxV3Ckxr-3TkB04PS4,1198
112
- foxes/input/states/__init__.py,sha256=Xkjr0Tn3jKEBcIk3GA1dRVzTDIX9Xco-Y23X-LUV-GA,526
113
- foxes/input/states/field_data_nc.py,sha256=LSSW6Q4Ica3gl9CuBuRm7wqKtYZpvOLGzTVqv8ylFm4,29429
114
- foxes/input/states/multi_height.py,sha256=ECKARj0tJ-Bzih8wiii_sy34HjfTAP4QCvLo4Fh7Ruk,23810
115
- foxes/input/states/one_point_flow.py,sha256=TuMYGSHz3nOwN3gdWxbQNRHzKmtVtV4AbnHTJ6dVceA,17787
116
- foxes/input/states/scan.py,sha256=43CnJl-iRUbRrJCtu-u6Na5DDY19_184myD6ScMfcFA,6101
117
- foxes/input/states/single.py,sha256=jwcZ2quljXS9cDyYbf3wgvbYUe6umqNfyfvRdylYbC0,6137
118
- foxes/input/states/states_table.py,sha256=HrsX2DVID1SbopBaevfq1HqkDtpH2mtfqslxYNDpNC8,20465
113
+ foxes/input/states/__init__.py,sha256=ux2oAz687pcAjrGhOWQ-NK-nxrpNT_VIu9p5jSxqcxE,560
114
+ foxes/input/states/field_data_nc.py,sha256=NW_EIqfid2Xo_-6CxPHw-eUXj_5yH0OPH3QSiMR3JdU,28825
115
+ foxes/input/states/multi_height.py,sha256=pt3JYTx-NMUaNtRbW8W80L6CCguTflr5QPgSuRqfwVM,23305
116
+ foxes/input/states/one_point_flow.py,sha256=rrpICS2lamOhgm-020g8GCSu3TcHnOg6jAKOaiDGxVs,18169
117
+ foxes/input/states/scan.py,sha256=p-hmC3nod2oomV34AwkRK95dEU1Objs-Snqrn-UnZ7g,5863
118
+ foxes/input/states/single.py,sha256=jXF_0uCLP3tsq_S6K7-5bFd7HTHAldHFhRwbBDOesEk,5911
119
+ foxes/input/states/states_table.py,sha256=vC26YS6Wdqprw7rZ84ze5s-AcsqQ5RBIQlR0PuO_kOM,19971
120
+ foxes/input/states/wrg_states.py,sha256=iSk04t25zXg5R96YkBK-lDINKO2FaH08-d4S6RKMFTE,9421
119
121
  foxes/input/states/create/__init__.py,sha256=Ocqzmr9SOefeAvGX5DgawsPXfNdGzWOZ2ssvtqEmtAo,134
120
122
  foxes/input/states/create/random_abl_states.py,sha256=LFCA19TCInXmB2FbKDaOkqCDsN0eOUIp34yzR2NQjtQ,3425
121
123
  foxes/input/states/create/random_timeseries.py,sha256=gJpaQ4nEXxOjI4hp3xjNcVbCsmZUm-brXUxoqDb63WE,1266
@@ -145,8 +147,8 @@ foxes/models/partial_wakes/__init__.py,sha256=qlV4zgjTSBfpz4dVh7DSoxCZXkaK_-dW43
145
147
  foxes/models/partial_wakes/axiwake.py,sha256=xDbMyy0HrVb2DHUQ2qdlwGwqlLkEJAUy3mLyHatyfko,6647
146
148
  foxes/models/partial_wakes/centre.py,sha256=YewN1hGjNxNUnvOkNwZD6bIdrHUrX3vd1T6s-bJ5INk,978
147
149
  foxes/models/partial_wakes/grid.py,sha256=SOymgn0MGvUFSAWd9YKDCzXYtizsuiNV-yP0oqrKS1E,600
148
- foxes/models/partial_wakes/rotor_points.py,sha256=qXBP-0TAjSONF80W-9Sh9RGmEOmakc0FaqZTaeucVI0,2785
149
- foxes/models/partial_wakes/segregated.py,sha256=FTBihivU4ejbK-J90CcnOghv9-z8zQbzNDg_5NgalJA,4462
150
+ foxes/models/partial_wakes/rotor_points.py,sha256=_Cjvbb0EUSt5R6Dij6hMnXEQxwvhO_7OGE-iKa60c-0,2927
151
+ foxes/models/partial_wakes/segregated.py,sha256=L-afJYBlniHNlgtqOcYP2Xqh8Fs8EhJm8idJqhxP2sQ,4617
150
152
  foxes/models/partial_wakes/top_hat.py,sha256=TPk9GoyoYDbxxZbcFufNDyNu-Yhnzn4GUwS7X3WelbQ,5557
151
153
  foxes/models/point_models/__init__.py,sha256=36A6VfXTkeNZYsv_JiPtF7Q8ZRcYbdA6Ed7F64DTF08,162
152
154
  foxes/models/point_models/set_uniform_data.py,sha256=dK6f-Nk_qvWqUPt3jnMkkIftGs9YmF_hpklFl5dJMAo,4529
@@ -154,7 +156,7 @@ foxes/models/point_models/tke2ti.py,sha256=0mrhpGy0xP_zCqp26_ts81WAHdCqyz_fC6A9B
154
156
  foxes/models/point_models/ustar2ti.py,sha256=kghpLGyfOTdbjVWY9DMhXJ5XbrE-Qvq2BNJJWF8Nkxk,1995
155
157
  foxes/models/point_models/wake_deltas.py,sha256=nwpallRan2tfSPU9acESHiSg30_gpShsDd-nU65FAIA,2035
156
158
  foxes/models/rotor_models/__init__.py,sha256=peLe_ykp4e_ls_iGDa-1z7-jCTtjurE3ig2R9tJy7Bg,114
157
- foxes/models/rotor_models/centre.py,sha256=oHaHM8RDV_lZc-BXNCYab_5_YeXbflkPEL6ET8CzKvM,5646
159
+ foxes/models/rotor_models/centre.py,sha256=aL6oP3aC3hgNm0Yc6foReapeTlbJnmnG2z_aLpmdgrA,5774
158
160
  foxes/models/rotor_models/grid.py,sha256=yNdl7cJmSWY5wfWw58t0OqVm4gZdaCiTu87rs5G9fKc,4484
159
161
  foxes/models/rotor_models/levels.py,sha256=qmjjX7It1nwQ8lej8UIZ5FhQvMsODaf7oi8dG-4T6JM,4007
160
162
  foxes/models/turbine_models/__init__.py,sha256=eCS66-AS3ivW9qm-yPPfO_0_eHQox5Sp7bQantVPwg0,428
@@ -191,9 +193,9 @@ foxes/models/wake_frames/__init__.py,sha256=DAbiSlvlJWlnb58KQ8e6RpMBN9_ukVxPLIZo
191
193
  foxes/models/wake_frames/dynamic_wakes.py,sha256=FqDDADL0Ohuz9Z2hVt-u9nEC2uM9J_SqXwiq7PuhEJs,15408
192
194
  foxes/models/wake_frames/farm_order.py,sha256=f400ERLg9ecsrBaJSkAuTkC_2BNhWCMhbsrBk802cek,4052
193
195
  foxes/models/wake_frames/rotor_wd.py,sha256=eF9vGHpXU0P21SMnWipW_9CkATR5qxvnOUn6dDqBA9g,3854
194
- foxes/models/wake_frames/seq_dynamic_wakes.py,sha256=xMnGh4oAn_AIxuQ2i4wlnNxmajO9Hp2lBKLzzLFrjyE,10622
196
+ foxes/models/wake_frames/seq_dynamic_wakes.py,sha256=5_CwHf564zbh40wzkY8Ilwf5qdwQGADFPrfSHxLdqqg,10729
195
197
  foxes/models/wake_frames/streamlines.py,sha256=GsUDE896GQDmZz0FiwUeASTiU-a2NgTQD5shq9UukcE,9132
196
- foxes/models/wake_frames/timelines.py,sha256=k_ASK9RI-Nyt8N21BzfjsZC6O-mXDJyjjHfW02KF8ts,17247
198
+ foxes/models/wake_frames/timelines.py,sha256=Xtbo1H3SU6jwdnVesRSgd5gXXZ671GauAqVgQeC-7KM,17613
197
199
  foxes/models/wake_frames/yawed_wakes.py,sha256=QBhXLfoVoJveFdUr1BEqgxUohaqlH2Cn-6q4idtXmAw,9175
198
200
  foxes/models/wake_models/__init__.py,sha256=hwoJF5RzDlr2g5zKgZ532H93F6Hcoo0Gfkc3XLiAJ1Q,253
199
201
  foxes/models/wake_models/axisymmetric.py,sha256=3dS-1Br9ZvDaGa_KVy0sotnuMku4QpL_Nz3T5dyQXm8,2788
@@ -205,7 +207,7 @@ foxes/models/wake_models/induction/rankine_half_body.py,sha256=LKYNAiamULPLQeohl
205
207
  foxes/models/wake_models/induction/rathmann.py,sha256=SFLqMFjcwSM2zSdyK8M60q8pB98ffixDWuvhRH5FYwE,7751
206
208
  foxes/models/wake_models/induction/self_similar.py,sha256=q7PM8mLjH8BW2_Qev_3yoAwchRy8cCoG6ps6mlYnIGQ,8444
207
209
  foxes/models/wake_models/induction/self_similar2020.py,sha256=D8yQxa5NQFII2gvKggcbJvuSDnrIRSy0Q5aCC3DoTPc,1634
208
- foxes/models/wake_models/induction/vortex_sheet.py,sha256=TYPXzlbcx8IMy3_Nbw4bY_mMWpSqST0JGwL1mJf4He8,7357
210
+ foxes/models/wake_models/induction/vortex_sheet.py,sha256=aUTUr4NOiIXnQtzzde1Y6dNNP_chk3m_YcetuAovTfw,7270
209
211
  foxes/models/wake_models/ti/__init__.py,sha256=EOlqFHL2mzcKGFRZqlVYTiqGJqPb6dx7I5UWUDshy2U,125
210
212
  foxes/models/wake_models/ti/crespo_hernandez.py,sha256=GcRqWw2EjAka3Ss0If-HM-gkxJlV7Omm-5oyqF1-y0M,8933
211
213
  foxes/models/wake_models/ti/iec_ti.py,sha256=8efoMQibs8zolXF7iZALggdFL6fHeRdL5ikztRjxENI,7006
@@ -227,16 +229,16 @@ foxes/models/wake_superpositions/ws_quadratic.py,sha256=3pWDd-HSVD4_OKQ5YQaUX1RY
227
229
  foxes/output/__init__.py,sha256=HZFka-9Y5hTOgeuCBxvv0vSvB-zGvkzEKxCqsbdYCgk,820
228
230
  foxes/output/animation.py,sha256=zljekg6k2DjqVaBw0OamB4i3eopi6g2j0a12B9hx7VQ,2637
229
231
  foxes/output/calc_points.py,sha256=paFBNUCbg0Vw-VKsvoXygQcq-T3y10IvcVmSUoHb5Do,4567
230
- foxes/output/farm_layout.py,sha256=tTE1Ioozh4wU0eMqIpdUd6VLtM_xmXRM_l4iX6-jiIU,11595
231
- foxes/output/farm_results_eval.py,sha256=STGLAFqM06bO7SXcEo0APcmBWhLVo6VzENgqt4Q_JY4,18692
232
+ foxes/output/farm_layout.py,sha256=0FUiIuSb0eWPlJ-QUgLIfYHBMP5sPLDuMLYAOx-LkFc,12048
233
+ foxes/output/farm_results_eval.py,sha256=x61E5s-dGc6kCLkyEkSQB4pWSmVeIUGCRCqgYOCxZMA,19571
232
234
  foxes/output/grids.py,sha256=tjQjF3Q_OyI7iOUsbED_P625yDSvHGoIKbS4T_ZB8uI,22504
233
235
  foxes/output/output.py,sha256=654XWA2WPwqOzlYbKdHMEjQSSCWrjmtTFN6FNsyZ43E,3297
234
236
  foxes/output/plt.py,sha256=6_4Zniv6iqVctNCbxFn2gMYE0aC0FqwNaaBJgIROlHI,356
235
237
  foxes/output/results_writer.py,sha256=zUlj7szylvudYmwLciD6TcStmv7gBcp4bE1xQQ5JL_s,5789
236
- foxes/output/rose_plot.py,sha256=WIkK3vY6yyu7rG8Myr8fiI6gPnXGLFh0AGnqsF99LHs,17712
238
+ foxes/output/rose_plot.py,sha256=fckU__3TGl78unGrNWVoQO52mWoiTKlQr1CKOrXssJE,18648
237
239
  foxes/output/rotor_point_plots.py,sha256=KW4t_2lCSc90BzvJDT9xBOAe6JXWSc75UDu4tlK3Se0,3276
238
240
  foxes/output/round.py,sha256=s8YcXciCtaMY14SnG3ebYccyjQ2IEln256SwN9oJnPI,351
239
- foxes/output/slice_data.py,sha256=oP55t2TYHaBie5Rn-7iRRpa29nfnjaZGmYdn_RCmFxg,33793
241
+ foxes/output/slice_data.py,sha256=bnY8D0ITFFN-i1mSkm0e2ukIMqxjev2KaUINbxo62pA,33788
240
242
  foxes/output/slices_data.py,sha256=FqulnXnZ5aI2fOns4ffBYSw5j42IEGq-lLCNJxWG5HA,8671
241
243
  foxes/output/state_turbine_map.py,sha256=XhrqRyfSz-hE8gwN5vzC_J-RejCr9dix-D6206Oionw,2724
242
244
  foxes/output/state_turbine_table.py,sha256=ldG0LcC126YsXQZtJY9OSWxW3ETbHdBehjtU21caTDw,2228
@@ -264,7 +266,7 @@ foxes/utils/subclasses.py,sha256=wCfhuialpBOQOPMwNbaplkVmf60vR9AIkY_o3tdkgXI,173
264
266
  foxes/utils/tab_files.py,sha256=H50IpLaqffJn9A51orCGc4fOhCOzoNUYDUKek4OAayU,1811
265
267
  foxes/utils/two_circles.py,sha256=xkj-SA_x-VXY7KtmSU4lcV4gFdplyhU3sBAC9vTdkF4,2810
266
268
  foxes/utils/wind_dir.py,sha256=6W0njWDvnIdOOjwqcMr64MW9ApjdtFA75blVUxirPMo,2823
267
- foxes/utils/wrg_utils.py,sha256=3T6NkznU1_nc5bTaq-rEuBRFeBPjqP4XnEhwhQArKnk,2019
269
+ foxes/utils/wrg_utils.py,sha256=PsaOIKx3WrHekJPeJMHzMfTYoEXkOAV51QjRbGjobGQ,3534
268
270
  foxes/utils/xarray_utils.py,sha256=6VLTAitXTK6W5zlBTadWwN05qmq_TlEDpUCx227JxtY,1677
269
271
  foxes/utils/abl/__init__.py,sha256=ijn-ubLLlqqH6tTAXFRmBAxJZmVBlTEmtx1cdCCtG4I,135
270
272
  foxes/utils/abl/neutral.py,sha256=E4DEhvXvw74BPrYr1MjQjeIaoz6ZOTWVlqScKflm-0M,1358
@@ -278,34 +280,34 @@ foxes/utils/geom2d/example_intersection.py,sha256=4e6sjpZEk_bNc462YvwKPzwxdV1B90
278
280
  foxes/utils/geom2d/example_union.py,sha256=BKfLt1mtQcSto-qExeMQkq8tQ6kfFXVJ93Cc7DhOal8,1750
279
281
  foxes/utils/geom2d/half_plane.py,sha256=kzZD6pkZxZ03MK9WAboWzXb5Ws5dWLQY9GIahD4D9mA,6167
280
282
  foxes/utils/geom2d/polygon.py,sha256=Xj7triA5Pe4-48sNSAvGxEXlQGptV161LUpKKCf3YOY,5535
281
- tests/0_consistency/iterative/test_iterative.py,sha256=2hEMl9RyDORYMHYRioEpv2Qd8vWUzhkLHlCHuMsRUnk,2632
282
- tests/0_consistency/partial_wakes/test_partial_wakes.py,sha256=_c9B3CjIk7A9B0gdTkH4h6ftkBBIMCIxCtnqRV8swSI,2547
283
- tests/1_verification/flappy_0_6/PCt_files/test_PCt_files.py,sha256=QyY1pKWyScruAk_N6zfumU-hwv0Nsqrow3MDvEoOlGc,2749
283
+ tests/0_consistency/iterative/test_iterative.py,sha256=lzagmJ1y241l6Szw4Cu80S8S1ATHIyD7ukr1vVBrusY,2637
284
+ tests/0_consistency/partial_wakes/test_partial_wakes.py,sha256=7rdg2lcUYUzxwCdGhue7A4QYCJQGrOO4E0bytgatYj4,2584
285
+ tests/1_verification/flappy_0_6/PCt_files/test_PCt_files.py,sha256=Y4KkdXE5Wjtc8GYJrQf3CHCkyHhdgjAPyyjVyfEJtuw,2532
284
286
  tests/1_verification/flappy_0_6/PCt_files/flappy/run.py,sha256=wJLKFOKVxOjmncYRarK5EK12HNjpWEUuu3EKgdq-Cvw,2165
285
- tests/1_verification/flappy_0_6/abl_states/test_abl_states.py,sha256=MQkh6KdA1PfsflAsUCCicEouwOd1j5V6tQHhW5SjX4A,2278
287
+ tests/1_verification/flappy_0_6/abl_states/test_abl_states.py,sha256=OhsOrPVdY73tXjYwTDj7tnJkusYeRnGHav2ysG_9Jv8,2167
286
288
  tests/1_verification/flappy_0_6/abl_states/flappy/run.py,sha256=hnPSO_wqk9vYgwNNMWXb_UaYZOCnlwScVlfZl7rriV4,2058
287
289
  tests/1_verification/flappy_0_6/partial_top_hat/test_partial_top_hat.py,sha256=TWdY4qP47KM9L39SeytPsmUzFDD4YObRESXL5iXtiWg,2125
288
290
  tests/1_verification/flappy_0_6/partial_top_hat/flappy/run.py,sha256=NMtLneJLk6J1DXE59FZ1JAGlh-zBwegtCAq8nB-p13I,1993
289
- tests/1_verification/flappy_0_6/row_Jensen_linear_centre/test_row_Jensen_linear_centre.py,sha256=RWEl9e_Wmr7fmdWwtWAQQVe_OD7VoQaR6z0_PJ_p4SQ,2412
291
+ tests/1_verification/flappy_0_6/row_Jensen_linear_centre/test_row_Jensen_linear_centre.py,sha256=ra5N_eTPPRv_laWm3P7x2LYYzf17nHIZVFQ07S4v7U4,2450
290
292
  tests/1_verification/flappy_0_6/row_Jensen_linear_centre/flappy/run.py,sha256=xTBI8dssYiqy7WC0IlKonfHQVshUk2ROyCzmecW0hbI,2184
291
- tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/test_row_Jensen_linear_tophat.py,sha256=MAL8Au5g4ZURcx8lVZScJjRc2BBHr0ALz_XgGDxMlIA,2451
293
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/test_row_Jensen_linear_tophat.py,sha256=E5296NjRmkbQKd6yITr6zM9-tWvVEUak2uLIsGKvPvI,2457
292
294
  tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/flappy/run.py,sha256=uhWgRbEbmM5t_ZdcG1U_719eo_2idWfML04wjFQhYL0,2180
293
- tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/test_row_Jensen_linear_tophat_IECTI_2005.py,sha256=oShokXyZWseHONSfbTzure4gXjUVQjZgICGXmtncApg,2978
295
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/test_row_Jensen_linear_tophat_IECTI_2005.py,sha256=JXwZfPuXw-NuKREv-R0OzEM1oPxQ3gSmlicoT-OyTCw,2984
294
296
  tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/flappy/run.py,sha256=84Vc_F4kZsluiPrKFX7WxWXKwfGZDNzW90npCsStJqQ,2259
295
- tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/test_row_Jensen_linear_tophat_IECTI_2019.py,sha256=LmhXuo-g7pUDZD7_U3xdbDv0Kzdz_gxv1P5kQ6SpUsg,2978
297
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/test_row_Jensen_linear_tophat_IECTI_2019.py,sha256=Mh6rS6jAqPbUn60_Y6D-VF2xaoigdu_CKWdwgJFetqo,2984
296
298
  tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/flappy/run.py,sha256=cPLIXymqdzu3zxB6-B3g3CU_oDhiYf-TlgWqossDjUw,2259
297
- tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/test_row_Jensen_quadratic_centre.py,sha256=SU8DWxbvgeP2vNNOpYgJ9cVK6wLlQ4NzMRry3W0VZFE,2451
299
+ tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/test_row_Jensen_quadratic_centre.py,sha256=Co7nl9AuelhZn2n0GLBrhFNqG_vKHCcYOr94Hexm_tk,2457
298
300
  tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/flappy/run.py,sha256=u-LBBH_MVoqY4Gl__6_EuHUTXp7s-6xVU1OXkywrqrY,2187
299
- tests/1_verification/flappy_0_6_2/grid_rotors/test_grid_rotors.py,sha256=aaS_TRsix7snwt0DucCjHk_0uuHzWR8pmOVJcFIrMnM,3952
301
+ tests/1_verification/flappy_0_6_2/grid_rotors/test_grid_rotors.py,sha256=Yv90h5oiPWEvq06QsWnIca77_cN7gQaDrmnnb54kNuE,3958
300
302
  tests/1_verification/flappy_0_6_2/grid_rotors/flappy/run.py,sha256=-TJAB5L9fj7UonqYILVH0i91PPD6KKd7bpJ2j0MDALk,2453
301
- tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/test_row_Bastankhah_Crespo.py,sha256=1b6_mIWvWwAMKnDN_t-oWHfDwpU7l8TJdyf-aydQgpc,2951
303
+ tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/test_row_Bastankhah_Crespo.py,sha256=FJiQm-4LtbU4QTGNR6uvkxWEs641J2kE0hqoob-biGg,2989
302
304
  tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/flappy/run.py,sha256=nwIyn20ZyYHhCKcPCnm02zjwNKMRzr9t0U8TjKK61QU,2213
303
- tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/test_row_Bastankhah_linear_centre.py,sha256=a7CQS-_Mnz3NynaTv1OY1CZ10iAqa7E3YxmkbDtoshw,2590
305
+ tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/test_row_Bastankhah_linear_centre.py,sha256=anlvMyrHvwumrzglkMP-LuvMe2eOzASxH1hJB5PwaHQ,2596
304
306
  tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/flappy/run.py,sha256=s6FbEdpiIdHYmdD8S85_NhLH-S3EOinXvw8RHmR2QOU,2122
305
- tests/3_examples/test_examples.py,sha256=rS2Dz04ktbS6v3TRDr96AkWGypr5u49jihqbEmGFmRU,694
306
- foxes-1.2.4.dist-info/LICENSE,sha256=bBCH6mYTPzSepk2s2UUZ3II_ZYXrn1bnSqB85-aZHxU,1071
307
- foxes-1.2.4.dist-info/METADATA,sha256=vAXcCQux4WPpc196ZFrNyXhyDNKBVL8PETlRB824oiM,8811
308
- foxes-1.2.4.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
309
- foxes-1.2.4.dist-info/entry_points.txt,sha256=KuS44FRH5NnMw201A8Btr76eNRKr2UOoKHjejAsqKwE,123
310
- foxes-1.2.4.dist-info/top_level.txt,sha256=G7oHApEz5nc-iP__XsPcvjYe_NyXGmKMUMPHi3C3x6I,26
311
- foxes-1.2.4.dist-info/RECORD,,
307
+ tests/3_examples/test_examples.py,sha256=9_PtvlYA6ELsQGHt-xAnsjCYdGj1ekX237ymWvEJaCk,732
308
+ foxes-1.3.dist-info/LICENSE,sha256=bBCH6mYTPzSepk2s2UUZ3II_ZYXrn1bnSqB85-aZHxU,1071
309
+ foxes-1.3.dist-info/METADATA,sha256=Bx1wEAE9_rUOJHpAsWoWOjJ5O06HVi_6IosHT9yQMRM,8940
310
+ foxes-1.3.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
311
+ foxes-1.3.dist-info/entry_points.txt,sha256=KuS44FRH5NnMw201A8Btr76eNRKr2UOoKHjejAsqKwE,123
312
+ foxes-1.3.dist-info/top_level.txt,sha256=G7oHApEz5nc-iP__XsPcvjYe_NyXGmKMUMPHi3C3x6I,26
313
+ foxes-1.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -3,12 +3,11 @@ import inspect
3
3
 
4
4
  import foxes
5
5
  import foxes.variables as FV
6
- from foxes.config import config
7
-
8
- thisdir = Path(inspect.getfile(inspect.currentframe())).parent
9
6
 
10
7
 
11
8
  def test():
9
+ thisdir = Path(inspect.getabsfile(inspect.currentframe())).parent
10
+ print("TESTDIR:", thisdir)
12
11
 
13
12
  ttype = "DTU10MW"
14
13
  sfile = "wind_rose_bremen.csv"
@@ -4,10 +4,10 @@ import inspect
4
4
  import foxes
5
5
  import foxes.variables as FV
6
6
 
7
- thisdir = Path(inspect.getfile(inspect.currentframe())).parent
8
-
9
7
 
10
8
  def test():
9
+ thisdir = Path(inspect.getabsfile(inspect.currentframe())).parent
10
+ print("TESTDIR:", thisdir)
11
11
 
12
12
  tfile = thisdir / "NREL-5MW-D126-H90.csv"
13
13
  sfile = thisdir / "states.csv.gz"
@@ -4,13 +4,11 @@ import inspect
4
4
 
5
5
  import foxes
6
6
  import foxes.variables as FV
7
- from foxes.config import config
8
-
9
- thisdir = Path(inspect.getfile(inspect.currentframe())).parent
10
7
 
11
8
 
12
9
  def test():
13
- print(thisdir)
10
+ thisdir = Path(inspect.getabsfile(inspect.currentframe())).parent
11
+ print("TESTDIR:", thisdir)
14
12
 
15
13
  cfile = thisdir / "flappy" / "results.csv.gz"
16
14
  tPfile = thisdir / "NREL-5MW-D126-H90-P.csv"
@@ -45,61 +43,55 @@ def test():
45
43
  farm, lfile, turbine_models=[ttype.name], verbosity=0
46
44
  )
47
45
 
48
- with foxes.Engine.new("threads", chunk_size_states=1000):
49
-
50
- algo = foxes.algorithms.Downwind(
51
- farm,
52
- states,
53
- mbook=mbook,
54
- rotor_model="centre",
55
- wake_models=["Jensen_linear_k007"],
56
- wake_frame="rotor_wd",
57
- partial_wakes={"Jensen_linear_k007": "top_hat"},
58
- verbosity=0,
59
- )
46
+ algo = foxes.algorithms.Downwind(
47
+ farm=farm,
48
+ states=states,
49
+ mbook=mbook,
50
+ rotor_model="centre",
51
+ wake_models=["Jensen_linear_k007"],
52
+ wake_frame="rotor_wd",
53
+ partial_wakes={"Jensen_linear_k007": "top_hat"},
54
+ verbosity=0,
55
+ )
60
56
 
57
+ with foxes.Engine.new("threads", chunk_size_states=2000):
61
58
  data = algo.calc_farm()
62
59
 
63
- df = data.to_dataframe()[
64
- [FV.AMB_WD, FV.WD, FV.AMB_REWS, FV.REWS, FV.AMB_P, FV.P]
65
- ]
66
- df = df.reset_index()
67
-
68
- print()
69
- print("TRESULTS\n")
70
- print(df)
71
-
72
- # print("\Reading file", cfile)
73
- fdata = pd.read_csv(cfile)
74
- print(fdata)
75
-
76
- print("\nVERIFYING\n")
77
- df[FV.WS] = df["REWS"]
78
- df[FV.AMB_WS] = df["AMB_REWS"]
79
-
80
- # neglecting ws < 5 and ws > 20
81
- sel_ws = (
82
- (fdata[FV.WS] > 5)
83
- & (fdata[FV.WS] < 20)
84
- & (df["REWS"] > 5)
85
- & (df["REWS"] < 20)
86
- )
87
-
88
- # calculating difference
89
- delta = df.reset_index() - fdata
90
- delta = delta[sel_ws]
91
- print(delta)
92
- print(delta.max())
93
- chk = delta[[FV.AMB_WS, FV.AMB_P, FV.WS, FV.P]].abs()
94
- sel = chk[FV.WS] >= 1e-5
95
- print(sel)
96
- print(df[sel & sel_ws])
97
- print(fdata[sel & sel_ws])
98
- print(chk.loc[sel & sel_ws])
99
- print(chk.max())
100
-
101
- assert ((chk[FV.WS] < 1e-5)).all()
102
- assert (chk[FV.P] < 1e-3).all()
60
+ df = data.to_dataframe()[[FV.AMB_WD, FV.WD, FV.AMB_REWS, FV.REWS, FV.AMB_P, FV.P]]
61
+ df = df.reset_index()
62
+
63
+ print()
64
+ print("TRESULTS\n")
65
+ print(df)
66
+
67
+ # print("\Reading file", cfile)
68
+ fdata = pd.read_csv(cfile)
69
+ print(fdata)
70
+
71
+ print("\nVERIFYING\n")
72
+ df[FV.WS] = df["REWS"]
73
+ df[FV.AMB_WS] = df["AMB_REWS"]
74
+
75
+ # neglecting ws < 5 and ws > 20
76
+ sel_ws = (
77
+ (fdata[FV.WS] > 5) & (fdata[FV.WS] < 20) & (df["REWS"] > 5) & (df["REWS"] < 20)
78
+ )
79
+
80
+ # calculating difference
81
+ delta = df.reset_index() - fdata
82
+ delta = delta[sel_ws]
83
+ print(delta)
84
+ print(delta.max())
85
+ chk = delta[[FV.AMB_WS, FV.AMB_P, FV.WS, FV.P]].abs()
86
+ sel = chk[FV.WS] >= 1e-5
87
+ print(sel)
88
+ print(df[sel & sel_ws])
89
+ print(fdata[sel & sel_ws])
90
+ print(chk.loc[sel & sel_ws])
91
+ print(chk.max())
92
+
93
+ assert ((chk[FV.WS] < 1e-5)).all()
94
+ assert (chk[FV.P] < 1e-3).all()
103
95
 
104
96
 
105
97
  if __name__ == "__main__":