foxes 0.8.1__py3-none-any.whl → 1.0__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 (175) 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_RHB/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 +183 -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 +232 -101
  27. foxes/algorithms/downwind/models/farm_wakes_calc.py +11 -6
  28. foxes/algorithms/downwind/models/init_farm_data.py +1 -1
  29. foxes/algorithms/downwind/models/point_wakes_calc.py +5 -6
  30. foxes/algorithms/downwind/models/reorder_farm_output.py +0 -1
  31. foxes/algorithms/downwind/models/set_amb_point_results.py +4 -2
  32. foxes/algorithms/iterative/iterative.py +73 -33
  33. foxes/algorithms/iterative/models/farm_wakes_calc.py +11 -6
  34. foxes/algorithms/sequential/models/plugin.py +1 -1
  35. foxes/algorithms/sequential/sequential.py +126 -255
  36. foxes/constants.py +17 -2
  37. foxes/core/__init__.py +1 -0
  38. foxes/core/algorithm.py +631 -146
  39. foxes/core/data.py +252 -20
  40. foxes/core/data_calc_model.py +13 -289
  41. foxes/core/engine.py +630 -0
  42. foxes/core/farm_controller.py +37 -9
  43. foxes/core/farm_data_model.py +15 -0
  44. foxes/core/model.py +133 -80
  45. foxes/core/point_data_model.py +15 -0
  46. foxes/core/rotor_model.py +27 -21
  47. foxes/core/states.py +16 -0
  48. foxes/core/turbine_type.py +28 -0
  49. foxes/core/wake_frame.py +22 -4
  50. foxes/core/wake_model.py +2 -3
  51. foxes/data/windio/windio_5turbines_timeseries.yaml +23 -1
  52. foxes/engines/__init__.py +16 -0
  53. foxes/engines/dask.py +975 -0
  54. foxes/engines/default.py +75 -0
  55. foxes/engines/futures.py +72 -0
  56. foxes/engines/mpi.py +38 -0
  57. foxes/engines/multiprocess.py +74 -0
  58. foxes/engines/numpy.py +185 -0
  59. foxes/engines/pool.py +263 -0
  60. foxes/engines/single.py +139 -0
  61. foxes/input/farm_layout/__init__.py +1 -0
  62. foxes/input/farm_layout/from_csv.py +4 -0
  63. foxes/input/farm_layout/from_json.py +1 -1
  64. foxes/input/farm_layout/grid.py +2 -2
  65. foxes/input/farm_layout/ring.py +65 -0
  66. foxes/input/farm_layout/row.py +2 -2
  67. foxes/input/states/__init__.py +6 -0
  68. foxes/input/states/create/random_abl_states.py +1 -1
  69. foxes/input/states/field_data_nc.py +157 -32
  70. foxes/input/states/multi_height.py +127 -13
  71. foxes/input/states/one_point_flow.py +577 -0
  72. foxes/input/states/scan_ws.py +73 -2
  73. foxes/input/states/states_table.py +204 -35
  74. foxes/input/windio/__init__.py +1 -1
  75. foxes/input/windio/get_states.py +44 -23
  76. foxes/input/windio/read_attributes.py +41 -16
  77. foxes/input/windio/read_farm.py +116 -102
  78. foxes/input/windio/read_fields.py +13 -6
  79. foxes/input/windio/read_outputs.py +63 -22
  80. foxes/input/windio/runner.py +31 -17
  81. foxes/input/windio/windio.py +36 -22
  82. foxes/models/ground_models/wake_mirror.py +8 -4
  83. foxes/models/model_book.py +29 -18
  84. foxes/models/partial_wakes/rotor_points.py +3 -3
  85. foxes/models/rotor_models/centre.py +4 -0
  86. foxes/models/rotor_models/grid.py +22 -23
  87. foxes/models/rotor_models/levels.py +4 -5
  88. foxes/models/turbine_models/calculator.py +0 -2
  89. foxes/models/turbine_models/lookup_table.py +27 -2
  90. foxes/models/turbine_models/rotor_centre_calc.py +4 -3
  91. foxes/models/turbine_models/set_farm_vars.py +103 -34
  92. foxes/models/turbine_types/PCt_file.py +24 -0
  93. foxes/models/turbine_types/PCt_from_two.py +24 -0
  94. foxes/models/turbine_types/__init__.py +1 -0
  95. foxes/models/turbine_types/lookup.py +316 -0
  96. foxes/models/turbine_types/null_type.py +50 -0
  97. foxes/models/turbine_types/wsrho2PCt_from_two.py +24 -0
  98. foxes/models/turbine_types/wsti2PCt_from_two.py +24 -0
  99. foxes/models/vertical_profiles/data_profile.py +1 -1
  100. foxes/models/wake_frames/__init__.py +1 -0
  101. foxes/models/wake_frames/dynamic_wakes.py +424 -0
  102. foxes/models/wake_frames/farm_order.py +23 -3
  103. foxes/models/wake_frames/rotor_wd.py +4 -2
  104. foxes/models/wake_frames/seq_dynamic_wakes.py +56 -63
  105. foxes/models/wake_frames/streamlines.py +19 -20
  106. foxes/models/wake_frames/timelines.py +328 -127
  107. foxes/models/wake_frames/yawed_wakes.py +4 -1
  108. foxes/models/wake_models/dist_sliced.py +1 -3
  109. foxes/models/wake_models/induction/rankine_half_body.py +4 -4
  110. foxes/models/wake_models/induction/rathmann.py +2 -2
  111. foxes/models/wake_models/induction/self_similar.py +2 -2
  112. foxes/models/wake_models/induction/vortex_sheet.py +2 -2
  113. foxes/models/wake_models/ti/iec_ti.py +34 -17
  114. foxes/models/wake_models/top_hat.py +1 -1
  115. foxes/models/wake_models/wind/bastankhah14.py +2 -2
  116. foxes/models/wake_models/wind/bastankhah16.py +8 -7
  117. foxes/models/wake_models/wind/jensen.py +1 -1
  118. foxes/models/wake_models/wind/turbopark.py +2 -2
  119. foxes/output/__init__.py +4 -1
  120. foxes/output/farm_layout.py +2 -2
  121. foxes/output/flow_plots_2d/__init__.py +0 -1
  122. foxes/output/flow_plots_2d/flow_plots.py +70 -30
  123. foxes/output/grids.py +91 -21
  124. foxes/output/seq_plugins/__init__.py +2 -0
  125. foxes/output/{flow_plots_2d → seq_plugins}/seq_flow_ani_plugin.py +62 -20
  126. foxes/output/seq_plugins/seq_wake_debug_plugin.py +145 -0
  127. foxes/output/slice_data.py +131 -111
  128. foxes/output/state_turbine_map.py +18 -13
  129. foxes/output/state_turbine_table.py +19 -19
  130. foxes/utils/__init__.py +1 -1
  131. foxes/utils/dev_utils.py +42 -0
  132. foxes/utils/dict.py +1 -1
  133. foxes/utils/factory.py +147 -52
  134. foxes/utils/pandas_helpers.py +4 -3
  135. foxes/utils/wind_dir.py +0 -2
  136. foxes/utils/xarray_utils.py +25 -13
  137. foxes/variables.py +37 -0
  138. {foxes-0.8.1.dist-info → foxes-1.0.dist-info}/METADATA +72 -34
  139. foxes-1.0.dist-info/RECORD +307 -0
  140. {foxes-0.8.1.dist-info → foxes-1.0.dist-info}/WHEEL +1 -1
  141. foxes-1.0.dist-info/top_level.txt +4 -0
  142. tests/0_consistency/iterative/test_iterative.py +92 -0
  143. tests/0_consistency/partial_wakes/test_partial_wakes.py +90 -0
  144. tests/1_verification/flappy_0_6/PCt_files/flappy/run.py +85 -0
  145. tests/1_verification/flappy_0_6/PCt_files/test_PCt_files.py +103 -0
  146. tests/1_verification/flappy_0_6/abl_states/flappy/run.py +85 -0
  147. tests/1_verification/flappy_0_6/abl_states/test_abl_states.py +87 -0
  148. tests/1_verification/flappy_0_6/partial_top_hat/flappy/run.py +82 -0
  149. tests/1_verification/flappy_0_6/partial_top_hat/test_partial_top_hat.py +82 -0
  150. tests/1_verification/flappy_0_6/row_Jensen_linear_centre/flappy/run.py +92 -0
  151. tests/1_verification/flappy_0_6/row_Jensen_linear_centre/test_row_Jensen_linear_centre.py +93 -0
  152. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/flappy/run.py +92 -0
  153. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/test_row_Jensen_linear_tophat.py +96 -0
  154. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/flappy/run.py +94 -0
  155. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/test_row_Jensen_linear_tophat_IECTI_2005.py +122 -0
  156. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/flappy/run.py +94 -0
  157. tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/test_row_Jensen_linear_tophat_IECTI_2019.py +122 -0
  158. tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/flappy/run.py +92 -0
  159. tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/test_row_Jensen_quadratic_centre.py +93 -0
  160. tests/1_verification/flappy_0_6_2/grid_rotors/flappy/run.py +85 -0
  161. tests/1_verification/flappy_0_6_2/grid_rotors/test_grid_rotors.py +130 -0
  162. tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/flappy/run.py +96 -0
  163. tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/test_row_Bastankhah_Crespo.py +116 -0
  164. tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/flappy/run.py +93 -0
  165. tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/test_row_Bastankhah_linear_centre.py +99 -0
  166. tests/3_examples/test_examples.py +34 -0
  167. foxes/VERSION +0 -1
  168. foxes/output/flow_plots_2d.py +0 -0
  169. foxes/utils/plotly_helpers.py +0 -19
  170. foxes/utils/runners/__init__.py +0 -1
  171. foxes/utils/runners/runners.py +0 -280
  172. foxes-0.8.1.dist-info/RECORD +0 -248
  173. foxes-0.8.1.dist-info/top_level.txt +0 -1
  174. foxes-0.8.1.dist-info/zip-safe +0 -1
  175. {foxes-0.8.1.dist-info → foxes-1.0.dist-info}/LICENSE +0 -0
@@ -0,0 +1,307 @@
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_RHB/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=RxnO6WNBpSCiPyYJtrZ4fsbwou8nX6NZoEQIC7kpozo,3911
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=pv1ArRHNMfFwzdzucaJOLWJKskmHJmCm7zrPnLJG30A,5230
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=ORSthTj3XiYyQB_-t5E_gcnRXN0yizjBY7zmcMywhZA,3018
26
+ foxes/variables.py,sha256=ynbLbD6d-G86hwb1JCsdfnJaw6NMOxxJRFFKNi9FwMw,5033
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=f-5z8kFEKnOQf1Qt7s_9RDG_hkNH2diMtTaYKMkbvgs,24568
30
+ foxes/algorithms/downwind/models/__init__.py,sha256=0ov8rjIQ02w3iB6yYCxaswPvHDlPM_8_di6xPh1TTkQ,300
31
+ foxes/algorithms/downwind/models/farm_wakes_calc.py,sha256=G2XDqEa2m-ik65Aq6P4rLmF_jChbqbEl21omByMPIws,5737
32
+ foxes/algorithms/downwind/models/init_farm_data.py,sha256=cje8aj6h0PeEKZD4lCUOOL4FDIHu5LXpjWZBUOlFR-I,4034
33
+ foxes/algorithms/downwind/models/point_wakes_calc.py,sha256=DFVCypzglfysZxriZWOsUNHW3U5uSi6xcZ5z_qIFyUE,4517
34
+ foxes/algorithms/downwind/models/reorder_farm_output.py,sha256=OFTcisl5qTte_QB9O4kBiy-nYtoSS6Rs7GK-w9LWv4k,2040
35
+ foxes/algorithms/downwind/models/set_amb_farm_results.py,sha256=_hBlSnlD1MYzQ2HV6eEXREaLsj4CKsxI4hr9LFFi-qc,1734
36
+ foxes/algorithms/downwind/models/set_amb_point_results.py,sha256=CbCylEYH5MJYqIBDWzfQ0eQK7jxXjQA4k2XgvOAArPQ,2295
37
+ foxes/algorithms/iterative/__init__.py,sha256=Je445cHtS2ERc-dywjhxWttKzdEyHM8JLxPcW5JFtl8,137
38
+ foxes/algorithms/iterative/iterative.py,sha256=KlR9E_rJYdwGxyIjetO8WhLDcbBHzJao2Xl0s8u5Sd0,9954
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=w8LXAwh16ReApolWzGVi70OT4V46yZm7xVqL0Hy4pYY,4948
42
+ foxes/algorithms/iterative/models/urelax.py,sha256=wYRHeeKsgCWMmOJ2YnbgUB79VI-D6ceTwEndvvtKBes,2078
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=jU4T550xTJaJdDzh1w3FR2Nrqn4sOTMrfFQJnXr4Fvg,1326
47
+ foxes/algorithms/sequential/models/seq_state.py,sha256=AB2Mf4WbbL9iDN_3mP4nTi44R6G4Gf_-At0ZlicXgrY,3656
48
+ foxes/core/__init__.py,sha256=3dOuKrFeSM6fCMxfLxTbzUsBPVTZiRp0sFhnibniBko,1021
49
+ foxes/core/algorithm.py,sha256=BjD0x-yWRhVUNjjDjHf-F9RgCz0CdVx80yvb9CxeR2Y,26513
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=98xs5MAXhdfO15d7hfBlvNjJrrJrMcZrBkTciQfsgaw,1341
53
+ foxes/core/engine.py,sha256=0KPvnYyUkH3R1UUoQx1RAvlNb1i0kKRMpF1YcA2G_z8,19351
54
+ foxes/core/farm_controller.py,sha256=lFPmqR62sg1UyMOsGFVohlv72vJKzHiIXDw_ylnPip0,12836
55
+ foxes/core/farm_data_model.py,sha256=6SH2gvC7yOyymilfhspJLPii1cs8o1wZm8fs8UftSwg,7303
56
+ foxes/core/farm_model.py,sha256=ogFahCjC2dIBcjnCMmy0cTGulKTDA2ufFUzODf0-KnI,265
57
+ foxes/core/ground_model.py,sha256=UDGTyGDi1UUmFZmgAHKMwwNbXjPBcVb8YKKqI7gJWrc,6801
58
+ foxes/core/model.py,sha256=IOq5_rvvCU6Hbm1OpFb5aEfp5ivgl9ke4CsumXbeCWE,18908
59
+ foxes/core/partial_wakes_model.py,sha256=8iC6w4TJXgeOObnAZoFKjy6ualYNbd3gLIb5P5TtVvA,5687
60
+ foxes/core/point_data_model.py,sha256=lC8XbA1TYMDe8YM5ZKpe6L5vsBMKKbY5zvvF596nB0I,7026
61
+ foxes/core/rotor_model.py,sha256=ZMi0KHF-I4F_ZH-c1--s0Y1IkBFtGzIx4F5mz0Wyl8A,13157
62
+ foxes/core/states.py,sha256=UQihqFzU4tfhDxPGmGh-6W0SOAsJNmesaq0bO_iA4No,8766
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=ikMyV3aA2y0UbHL9kc3Fa0mTdzHbwd-8DoJm2TgzAOw,3639
66
+ foxes/core/vertical_profile.py,sha256=pgjari78N2CHZOWnidQ_7KGsSs4lTFP9isn-w6e1Yro,1642
67
+ foxes/core/wake_frame.py,sha256=YRhyyiSKg0c3szQsgAclZVQ8U7mF89YQUUaOi3DVkFQ,10644
68
+ foxes/core/wake_model.py,sha256=u76jDopd_3LQtbcjlyYkS0LOCnXdgsctkABCWbBD5QA,8016
69
+ foxes/core/wake_superposition.py,sha256=_XRgHeIVf_g8MkudwCLAX0DcTBp4Wdy9bDJLRPqkQrM,2811
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=U4qphRqpDcvogu50q6QrDFw_yjUJXP5K6PTENTcJUPI,1951
95
+ foxes/engines/__init__.py,sha256=UNvOysxABI5sDOls3BfX0SqJFtsTo8uyxOaInnYpKHs,381
96
+ foxes/engines/dask.py,sha256=-dLIWf78dePH_xW1_GfGaskUgXvzWNP1JGF_35Qvnxs,29621
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=EQTwhJnN-PxY9ENQLYaZyXNHad_dMP2nnh-gv5EyQAc,1596
101
+ foxes/engines/numpy.py,sha256=sSBf_nAnDcbR9t_YaqwVMfBNKayceQpUfe0-_BrRqtU,5668
102
+ foxes/engines/pool.py,sha256=u2YCT-oe5g3XTrEtZXgnWXkIe0Tggfbhu5uycv_pHqA,7660
103
+ foxes/engines/single.py,sha256=5lnHLsN8FoVhy-1eTL-RX4GrO8XKrCpMdlTZ4_zAsA4,3971
104
+ foxes/input/__init__.py,sha256=qi7BB7FK71gKex5_IFD5a6pvLLLnRWQV9rYKInnpf10,126
105
+ foxes/input/farm_layout/__init__.py,sha256=rEY4-10kZCNxXM43iJTDguGvbPndXaRSLpbKnaoSqrU,314
106
+ foxes/input/farm_layout/from_csv.py,sha256=nJT27SorW_w4MlFvb1txY0q8iWw5AmSzGiMGorxSDAI,3365
107
+ foxes/input/farm_layout/from_df.py,sha256=F5CKXHyL2rcrpCQqqqOr2HHX-BJ5VU1JQymzywmkBtc,574
108
+ foxes/input/farm_layout/from_file.py,sha256=SNdJ1DVb_ZMQS48TB-TELOLc7vqU9aGwl9jIe1iaGtU,1578
109
+ foxes/input/farm_layout/from_json.py,sha256=QJyW-wN1TWbJDMrbAHYRli9-HgZLmPPwsR-HZ2Um8Qo,1643
110
+ foxes/input/farm_layout/from_random.py,sha256=6ZYKbdV6x11MbQRAHs5nVYBAG-1K295xsMXtfCfAfts,1126
111
+ foxes/input/farm_layout/grid.py,sha256=rjdmSpDnHvqIqnGibLwGL_okl1hbFLOgnwf5q45y_jk,1467
112
+ foxes/input/farm_layout/ring.py,sha256=ghfLkVVQciWDJJNqGs4jZVnM0XCII9ae3hAh9Wb4938,1455
113
+ foxes/input/farm_layout/row.py,sha256=Bx9woFNkXbFXJg51GX2p2PbVgdxV3Ckxr-3TkB04PS4,1198
114
+ foxes/input/states/__init__.py,sha256=STFiVQ-6Tl-93RjoCyj8H_OcQv2UWNx7BgIMqZdulvQ,525
115
+ foxes/input/states/field_data_nc.py,sha256=ViCAjYXnRJhBUAOzNPmdDCxdzCGURck9fkFiW8WD4Gc,22418
116
+ foxes/input/states/multi_height.py,sha256=ZXAeLb6eQUQH1ofaTjvolEL6LG_Fijz_0tcKOMeHYlY,23406
117
+ foxes/input/states/one_point_flow.py,sha256=3O_FpxbmZD565hK5qSAq89k6qTRXW3XAzfrm4MAbNm8,17703
118
+ foxes/input/states/scan_ws.py,sha256=fdvUKNpqitQGeICWrqqCUgA4KSiIYPENbn-kqSRqYcI,6168
119
+ foxes/input/states/single.py,sha256=6DO1lFenVJ9pjwL4I3B4tKWxcMmKSp_U4L3KqFRuqyk,5989
120
+ foxes/input/states/states_table.py,sha256=IEl-fISlQhpFxCQTv_DFqcfB2wLecswUsVffAGQsIeg,20144
121
+ foxes/input/states/create/__init__.py,sha256=Ocqzmr9SOefeAvGX5DgawsPXfNdGzWOZ2ssvtqEmtAo,134
122
+ foxes/input/states/create/random_abl_states.py,sha256=K442PZd2MkdRi72UhSRYQbR4IXGaU2FQybo1IO07-5o,3334
123
+ foxes/input/states/create/random_timeseries.py,sha256=gJpaQ4nEXxOjI4hp3xjNcVbCsmZUm-brXUxoqDb63WE,1266
124
+ foxes/input/windio/__init__.py,sha256=Avbu8cMUnG16A4M-As5M0iwCB1kxfhdTpjm863TmFE8,344
125
+ foxes/input/windio/get_states.py,sha256=3Ds2iaCb6NnY2U_q8vARfmQfOpRFTTBcGSORB3WSOv8,6057
126
+ foxes/input/windio/read_attributes.py,sha256=4MGL8pshgnpRDLibZZHwoO_XTzsDTRHHockk9mAzu7Q,12528
127
+ foxes/input/windio/read_farm.py,sha256=qIbEWq61cE6-YSQrEaqZVqNG2yboGc9VhbZfPLf5dGw,6076
128
+ foxes/input/windio/read_fields.py,sha256=tfmVJQzsqd7Nj89bqioJ_XPaL01TPIzo77cWBMrqJHs,4582
129
+ foxes/input/windio/read_outputs.py,sha256=fWZ9fFU1qI4qVzWHWVSWhm2JDVe6nNnKa-Ik3t1iufQ,5777
130
+ foxes/input/windio/runner.py,sha256=wBYW88I1g4GoTTOi5WTCiALcPuc0XgrlXHPxz2fSnU8,5611
131
+ foxes/input/windio/windio.py,sha256=6Sawc-FXfTfScJ_HKwew6FKNMrYmzfAyVwFyfylYMD8,5471
132
+ foxes/models/__init__.py,sha256=8eOGCieghW7ILjpkxMHzp4GN2zFF3xlKPl7Df7sMxoU,434
133
+ foxes/models/model_book.py,sha256=gfEJJB22VPqn8xVj_66o0lzY_erURXXVjwh23Oo-0No,23879
134
+ foxes/models/axial_induction/__init__.py,sha256=CdYOzu45DWu7xrzpRpFIQ6CGZIMABjjy_lqAszjj9lg,78
135
+ foxes/models/axial_induction/betz.py,sha256=rAaq7pnu-FmfYh61BU5Af1h4_bG2AAimP4Qah1aZo88,894
136
+ foxes/models/axial_induction/madsen.py,sha256=_-ycfh8SnIpCKWm1uwx5VH7f49FQvR0y1Nbb_U8xWyU,1403
137
+ foxes/models/farm_controllers/__init__.py,sha256=oDdW_fA3GSkJBzn9Vsd3T9bBVhB9-j_IglFjYV4G2rU,72
138
+ foxes/models/farm_controllers/basic.py,sha256=6pinNXiyfoG3apXhqQWcnxx4vN_7Q63YryXX5Z7kTE0,249
139
+ foxes/models/farm_models/__init__.py,sha256=WoC1Cmeo5-LLdC5I_S9hwZhZOtBnWDL6azjaUTcoOuY,66
140
+ foxes/models/farm_models/turbine2farm.py,sha256=XO6-6YGWOcbwB6z0Ttey3rQlOR7sg7ETE1sAlTqiEao,2278
141
+ foxes/models/ground_models/__init__.py,sha256=RR6p8B4jacbzcK1LwnSUqYFXi9h7Qx4RhKiTTGXKxZo,82
142
+ foxes/models/ground_models/no_ground.py,sha256=pDuHAFHHgpEVIi1spie9ooR7OG-4l8_KPrGYQhdCT3I,149
143
+ foxes/models/ground_models/wake_mirror.py,sha256=TPcuJJ6tcXQ1rYOj4tSjaNR9_ZkToWWmrehBWkU7sNw,4463
144
+ foxes/models/partial_wakes/__init__.py,sha256=qlV4zgjTSBfpz4dVh7DSoxCZXkaK_-dW43t8-LcDYEg,245
145
+ foxes/models/partial_wakes/axiwake.py,sha256=Rxv3yE4YvYodEjbHzn5lzRwvVBwhm6Jvz3-e5e3FpfY,6559
146
+ foxes/models/partial_wakes/centre.py,sha256=mIX0eiPJUFCJ82gjZCrf6ajRmJp7CgKpM7QQXiE6UEI,963
147
+ 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=iGa9wDTGkSap5L5Q63o3UMeOJN2Nq6qxYrw-hJ-E7kU,4370
150
+ foxes/models/partial_wakes/top_hat.py,sha256=jcbLImoN9aiztm0PqIwfz9iSduOUvrrtAISc6rD2jmY,5550
151
+ foxes/models/point_models/__init__.py,sha256=kb6pBrrPGWWKcnlAqOdBLMT7l-Y7yFAitrUr4eFiWcM,131
152
+ foxes/models/point_models/set_uniform_data.py,sha256=LkQMwrvDaAWyVRQnHUUrT4W7d6Xz33E2nVdWJNONp1c,4476
153
+ foxes/models/point_models/tke2ti.py,sha256=ZwCwqPm8H6PlyjS_D6vODFdm38WrpcFtgBL8UCgzWAk,1409
154
+ foxes/models/point_models/wake_deltas.py,sha256=hwZk0K5S3X_J9wDLlZO4Q4a8jkP7XCqufJ5hvLhynpw,2037
155
+ foxes/models/rotor_models/__init__.py,sha256=peLe_ykp4e_ls_iGDa-1z7-jCTtjurE3ig2R9tJy7Bg,114
156
+ foxes/models/rotor_models/centre.py,sha256=xmEip2GAgLlj0DAgJNXQ_huBxy4OYK03buv4SQDVp2g,5632
157
+ foxes/models/rotor_models/grid.py,sha256=4zL5cmGQkOgXH91TzT60EzElKJkzcRBxiiodZgWUPGo,4435
158
+ foxes/models/rotor_models/levels.py,sha256=siiM9Lcrm6E1Fe87SJh39d2Wiz9stssT6x0wUB3ZWjc,3949
159
+ foxes/models/turbine_models/__init__.py,sha256=eCS66-AS3ivW9qm-yPPfO_0_eHQox5Sp7bQantVPwg0,428
160
+ foxes/models/turbine_models/calculator.py,sha256=gDw5TAZk2tUPBwtRW77HFn_hxRR0WppZ-pxJSIkWKMs,2774
161
+ foxes/models/turbine_models/kTI_model.py,sha256=XhUxCozTML0eVwEZ90ezfhQeiGj-Db0Tz8RRgukrvFM,3305
162
+ foxes/models/turbine_models/lookup_table.py,sha256=IrMDRrCuNnchE2_5USnHetAheU7ARXQxsI50VUGxazk,7204
163
+ foxes/models/turbine_models/power_mask.py,sha256=OX0LFS3fO4OjOjADE-Q9oeeyFuzHl6-F6FKzbn_Td9k,5848
164
+ foxes/models/turbine_models/rotor_centre_calc.py,sha256=I-0zH6RSkN9iLH3WQGpOLMouh3IxJrPh4HXwXA-M8Fs,3542
165
+ foxes/models/turbine_models/sector_management.py,sha256=v_m95oUHhxdlUVlC2sg4S-2xJtUlUogeTWj8gmdqKMo,7114
166
+ foxes/models/turbine_models/set_farm_vars.py,sha256=DuEJ-SSiQqnSlEKMqwb7qrQRXYGZ5_8GulFH0vdjiLU,7728
167
+ foxes/models/turbine_models/table_factors.py,sha256=-JmhxR5fEsr0YJr5w9UU4_i0pdsrBK4PvfN1AtOns9k,4666
168
+ foxes/models/turbine_models/thrust2ct.py,sha256=mr26P7PoPD7QIgKCxylL1aMsr3g-ulNmP08T5g52MGw,2289
169
+ foxes/models/turbine_models/yaw2yawm.py,sha256=7AE7J9UAeSQq4ZC_K9W0y6WqCie1eWpYcgHmcAhVvic,1601
170
+ foxes/models/turbine_models/yawm2yaw.py,sha256=42NFAi3_BtJfeHa3jC9L9dbRVSiDQQK4Uf-5MZdf0Vg,1592
171
+ foxes/models/turbine_types/CpCt_file.py,sha256=EnDZE4FH07wh-bFHAtd_Zz0BDKOheM699yeefq1wEL4,2048
172
+ foxes/models/turbine_types/CpCt_from_two.py,sha256=uf4F4c3CXSwjWCOMrDmhMan5hyQm-pMpygeyp5-B7mM,2692
173
+ foxes/models/turbine_types/PCt_file.py,sha256=T0orwkSxjc3GHiWAAvMeBjI_6sV28tGVigmgIBKkj_k,10812
174
+ foxes/models/turbine_types/PCt_from_two.py,sha256=4gqMYTn098suuIrOxJFeKu3FDPMIBezvoceUTz9nTrw,12375
175
+ foxes/models/turbine_types/__init__.py,sha256=F2NEQU7yIMr6omYvSa1VJADSy6fairbDfYSVzySssKk,332
176
+ foxes/models/turbine_types/lookup.py,sha256=Zhh13jlFD7zd43yxLgAvc_tY5WREMxu8alQWFNSXq4I,9259
177
+ foxes/models/turbine_types/null_type.py,sha256=BnLL4DkWZJcBbPeg5gQEbeuixqFSr65_FJM87Xjk6Og,2421
178
+ foxes/models/turbine_types/wsrho2PCt_from_two.py,sha256=Fa6-i4V5mzxHD8GvpL7OO_6nORBTMqX7mghD6kfrCog,11655
179
+ foxes/models/turbine_types/wsti2PCt_from_two.py,sha256=fxj-qCCzocPMyoLJrnqxEmz052K20LyQTG1U4LMNtHE,12801
180
+ foxes/models/vertical_profiles/__init__.py,sha256=oDgfzKa1mPCSWwDrqyqxzZdWwOPmc88wzf_O9ntcS9M,353
181
+ foxes/models/vertical_profiles/abl_log_neutral_ws.py,sha256=2U5iiwii4DMbKJg5v2a6ICf-4ZIc7hpBUfZStsi8h-o,1849
182
+ foxes/models/vertical_profiles/abl_log_stable_ws.py,sha256=Lxn9WoBegi9UXMAXMJdraHINJ8fsGEqOj5Lxo5LywHI,1937
183
+ foxes/models/vertical_profiles/abl_log_unstable_ws.py,sha256=V6VX1xpnbFP3auL7Q7xRRvzWXwNm1f5GKEoRZo-RC7M,1949
184
+ foxes/models/vertical_profiles/abl_log_ws.py,sha256=MirmvLpBe-6s5YgHLBJldlnVwIDeY0X1BfVhyPkvhOA,3396
185
+ foxes/models/vertical_profiles/data_profile.py,sha256=R9KkADNILXftfIPvcwiLHRHs7nGnEXiyfXAO0llzVQo,2906
186
+ foxes/models/vertical_profiles/sheared_ws.py,sha256=kC108pLPa3fHVJXQugU6R1VKz-JdXY1mhX2PQPmG-wI,1225
187
+ foxes/models/vertical_profiles/uniform.py,sha256=bG0vCiBZqUiJQJreRuTUxb0X1WnJW6pGdpPoQd3A3WQ,1187
188
+ foxes/models/wake_frames/__init__.py,sha256=DAbiSlvlJWlnb58KQ8e6RpMBN9_ukVxPLIZo0Zc0hQs,287
189
+ foxes/models/wake_frames/dynamic_wakes.py,sha256=ZnEYFOOaiU-bbnQ6gFE1ncvvAJg2NqKvIL_Kj-TI7CM,15183
190
+ foxes/models/wake_frames/farm_order.py,sha256=UHD7SArbCtapJcRJxNHbQWxOPLRz2qOvxR8ljx6Kq3s,4041
191
+ foxes/models/wake_frames/rotor_wd.py,sha256=reembFQEPlNSvISpEc1MIaco6YPQlsUTP7ykuJ4RtXQ,3811
192
+ foxes/models/wake_frames/seq_dynamic_wakes.py,sha256=mR8reoWxmUR2w1_0AfUSGIv6e3Xx1bNXLHdy8F99NNU,10707
193
+ foxes/models/wake_frames/streamlines.py,sha256=GAc91J3CxE94k5Dx-lCMoSLUl6AkauPt5ymXlSX3GB0,8984
194
+ foxes/models/wake_frames/timelines.py,sha256=dW8W5jPQeGKLoBnNWiQBYUA1eywT8adUG78W_iAV97M,16981
195
+ foxes/models/wake_frames/yawed_wakes.py,sha256=SLNPaZdojqy9mG4ZIZj_ZMegMwjgYr90wcSLwlZNibE,9125
196
+ foxes/models/wake_models/__init__.py,sha256=hwoJF5RzDlr2g5zKgZ532H93F6Hcoo0Gfkc3XLiAJ1Q,253
197
+ foxes/models/wake_models/axisymmetric.py,sha256=3dS-1Br9ZvDaGa_KVy0sotnuMku4QpL_Nz3T5dyQXm8,2788
198
+ foxes/models/wake_models/dist_sliced.py,sha256=y2OTMBwmWqh5E4kn8z9Qg5UZ__QretNxYgKk5ESirCQ,5805
199
+ foxes/models/wake_models/gaussian.py,sha256=hchArmoqbdUthh2q7D9PEfC838217ySDHc2fbvtihD4,2760
200
+ foxes/models/wake_models/top_hat.py,sha256=hONEnfcza7_4OSwa9WUnX4xTdxPuXndQK_4DeaqqxQY,5891
201
+ foxes/models/wake_models/induction/__init__.py,sha256=kl5hRnV0q1zyaqTdwhEdsNiOV-Fu0ySRIUQH418npyI,231
202
+ foxes/models/wake_models/induction/rankine_half_body.py,sha256=h0PpgMx6G_EictCQdKbMoy3raGFs_sFKjhrtNuVbtps,7841
203
+ foxes/models/wake_models/induction/rathmann.py,sha256=HPKD1vCbrAQgwt4DLAzttgqalFV-xwaJlBFl9xzKytA,6268
204
+ foxes/models/wake_models/induction/self_similar.py,sha256=sF381bVnAo7yD4ZAU87BywToVpQqCQELkOsC1XlOAys,7017
205
+ foxes/models/wake_models/induction/self_similar2020.py,sha256=D8yQxa5NQFII2gvKggcbJvuSDnrIRSy0Q5aCC3DoTPc,1634
206
+ foxes/models/wake_models/induction/vortex_sheet.py,sha256=DXy59jwa48B4BITcluXCf8o78SRMFz_X9Y4SDOnDq3U,6347
207
+ foxes/models/wake_models/ti/__init__.py,sha256=EOlqFHL2mzcKGFRZqlVYTiqGJqPb6dx7I5UWUDshy2U,125
208
+ foxes/models/wake_models/ti/crespo_hernandez.py,sha256=Vi05vWV7aY02ixcgtAR4YVy5Y43ZaEI60ww8W2zdqu8,8844
209
+ foxes/models/wake_models/ti/iec_ti.py,sha256=e1bBqFlfleRUqB8k8QNd4_JWragGtB0H5Q7zSs2dgb8,6959
210
+ foxes/models/wake_models/wind/__init__.py,sha256=X_QdQ_f3fKCIrZZ9K_CzzsHSl13AyvPRcWdEZ1y9Bk4,223
211
+ foxes/models/wake_models/wind/bastankhah14.py,sha256=RrMZks0i1vLvKcputUPjBxKMhG5oZ1Q1Sr7_GK6BmZY,5172
212
+ foxes/models/wake_models/wind/bastankhah16.py,sha256=uC3zyA-cvesAs9tZWXcUlRlfGlrMRV7k-87M_Kz2HVo,17637
213
+ foxes/models/wake_models/wind/jensen.py,sha256=gEtf9Asc8v5mNUWulvkNEyPvlVdg9Ec5Ta4IUvsq79g,4246
214
+ foxes/models/wake_models/wind/turbopark.py,sha256=zDvHumdg3F8xXXK_llcGU4RAVI-BQH8A3UGa6HvEKto,14526
215
+ foxes/models/wake_superpositions/__init__.py,sha256=p_pI_bUC-JjpGfg-7hyo3EpB_qVYqg5CCFt_vSG9DF4,371
216
+ foxes/models/wake_superpositions/ti_linear.py,sha256=T9lP5PsHzi04Neq5dS3HDZGwyV7Qzvx_umCbk9M7Zks,3911
217
+ foxes/models/wake_superpositions/ti_max.py,sha256=fnfYmr_Wt9EPZftHoHnqRlTwFWAawrEheGgLA0NwIlA,3936
218
+ foxes/models/wake_superpositions/ti_pow.py,sha256=4ZS3d0ulRkIDaVeG2VvcdjpJch673INQRUGgj37cs_A,4160
219
+ foxes/models/wake_superpositions/ti_quadratic.py,sha256=tkmaoIm7a-Q4c3qtMpBmX25jfcVdt0Qp7Xn0fQrxN4A,3926
220
+ foxes/models/wake_superpositions/ws_linear.py,sha256=TiKaRAxNioY4oIloJODfT1zftnkXzhuqfqEkqG33owc,9155
221
+ foxes/models/wake_superpositions/ws_max.py,sha256=MktXVo3PfMgh172DJP_KRftiqs8jXsuaQPLne1jHKyY,9381
222
+ foxes/models/wake_superpositions/ws_pow.py,sha256=aPtm5NwQx6byNfetSX57Z7tVkXtgXIRleSf4grKtZF0,9602
223
+ foxes/models/wake_superpositions/ws_product.py,sha256=8dCDaKfuzHfTEBo0_N7BR-x_qG2tWXTabzPsgpIAtXk,4672
224
+ foxes/models/wake_superpositions/ws_quadratic.py,sha256=jUo4wFkrUPbj-27m3ozCEzab7iamkNZtVlrCwY-Yh2w,9197
225
+ foxes/output/__init__.py,sha256=HXIah5WbE_aBON9geFT_2IF2N1AQhlOPQro82I6OgUM,746
226
+ foxes/output/animation.py,sha256=zljekg6k2DjqVaBw0OamB4i3eopi6g2j0a12B9hx7VQ,2637
227
+ foxes/output/calc_points.py,sha256=QRZuZ6joHbhkEYDBX87QgEWwMMYbohAK3ZFuVwErK3Q,4497
228
+ foxes/output/farm_layout.py,sha256=EYAwrPaSbTLNc5irTLQ2Agd6cxiMPSpvQDi_hRNawTc,11009
229
+ foxes/output/farm_results_eval.py,sha256=LAv8A5XQ7gMKmT77ILzbRsIptiqBAWf89bR3Xh68cT4,17663
230
+ foxes/output/grids.py,sha256=hwfuijBLWFK7_PMKeA1I1ArI3xEFJcc0MzQqIIMfYfg,22395
231
+ foxes/output/output.py,sha256=wUxKlNbfjwqDzU-lTWfIZMfK-h_R3rpmthSlgunTyw8,3460
232
+ foxes/output/results_writer.py,sha256=H8UptENDq2THwbRRe41I_d9OAdc4osnWER4QSTvrAQ0,5833
233
+ foxes/output/rose_plot.py,sha256=t4sO9FCV6BJvTLv3vudsBajaSQblOaS6INS5GltCkT0,11090
234
+ foxes/output/rotor_point_plots.py,sha256=R44fcseBC5g8YsuR4irRrvYN8Nj94_lpJgpsBst2kjE,3165
235
+ foxes/output/round.py,sha256=s8YcXciCtaMY14SnG3ebYccyjQ2IEln256SwN9oJnPI,351
236
+ foxes/output/slice_data.py,sha256=YT8xGOI8iuywI19BpTt-Ok1B9HWla8x4LzRcZFcVE88,33798
237
+ foxes/output/state_turbine_map.py,sha256=RjWBg1-i4TcGq95hA-2gt2xFg5pyo_Xzp1-rU7-qaHc,2593
238
+ foxes/output/state_turbine_table.py,sha256=NGBcZ1YzI8ewPJpuETdGvET7s1mENAiVqe3Gi6qs3oI,1745
239
+ foxes/output/turbine_type_curves.py,sha256=oZm9YGLLL-makFZDFucCkjXoqF2bkhFj9yJRqWM1Xk8,5526
240
+ foxes/output/flow_plots_2d/__init__.py,sha256=Stbwt5sP86fRA0ii3jnX2q0h5zgNLKmwFfpru5jof30,65
241
+ foxes/output/flow_plots_2d/flow_plots.py,sha256=gRGAtB4JAGZ_NkT3osHDaLOg4bYGhhY3u05gu9yA9z0,29931
242
+ foxes/output/flow_plots_2d/get_fig.py,sha256=gGMOfzNCukq_l0FZLmi3zSBl0ANkQi2WoKaGTpB6xhc,6169
243
+ foxes/output/seq_plugins/__init__.py,sha256=d6Tl5NBVV4MaZwXtPgyxBXBnh7uCBFTbNzRU6IXCmQQ,110
244
+ foxes/output/seq_plugins/seq_flow_ani_plugin.py,sha256=z0yAxdkkWBVIlcdwB2Pj08At-AuB-O60h-G2Ja3-rXw,3652
245
+ foxes/output/seq_plugins/seq_wake_debug_plugin.py,sha256=QNY_aa-ccwP_8U69JOdrmtapkGO0yx4uIeIr2NpxRbY,3967
246
+ foxes/utils/__init__.py,sha256=Zgz1_iDPb4okUwfcxaMRvXmn3D3jamslFfiU6wk2EEo,764
247
+ foxes/utils/cubic_roots.py,sha256=u2Pf-yHZ6EASpFONMfkv0mvldmd1E1VRZxj69YabDoc,3321
248
+ foxes/utils/data_book.py,sha256=DgxusriNH-fhHNN_v6TY3QWcAnrAcw20Wgz7lDfbMeg,5302
249
+ foxes/utils/dev_utils.py,sha256=6vryhcTg8lNXhtZOsQ0F8PTVpmUw250VNE-UyR0G70Y,1241
250
+ foxes/utils/dict.py,sha256=PZZ6V8EYiymOeP9bkle6LkVhk-Vrvp34QbumlW_QN44,898
251
+ foxes/utils/exec_python.py,sha256=BRylxWOyYHpjIZXCuoOp_A-P9VMoQZ13P2vpHs-lqj8,1714
252
+ foxes/utils/factory.py,sha256=WrCkuFaNtWyWAa7ka23m0VraNm7T6h7joGoTHWmvGUU,18632
253
+ foxes/utils/geopandas_helpers.py,sha256=inVQHMco6Op7YN3VFH1DGAJZWREuveJUS7gyoRudw2A,7895
254
+ foxes/utils/geopandas_utils.py,sha256=inVQHMco6Op7YN3VFH1DGAJZWREuveJUS7gyoRudw2A,7895
255
+ foxes/utils/load.py,sha256=7jrCX2GQ_GTgrSu3nz-jfxiyswa7Q3XXCYqobl6bkyk,1290
256
+ foxes/utils/pandas_helpers.py,sha256=_C_M2IiE0MK1GMT3i4SjJ7oqVTf8INuIcszWqfgBris,4730
257
+ foxes/utils/pandas_utils.py,sha256=5r3RHjaGu-Vi7DGMBdCDxVeu9nZk46wtPlHRL4l_R_c,4630
258
+ foxes/utils/random_xy.py,sha256=i0AZ04BLL6TxC3Lg1ZfwI_o4zJbHR6hm-BNd0Sydu_c,1376
259
+ foxes/utils/regularize.py,sha256=OnJ88ZCSu289aLHgrOb96j1A9JVvg_7OjZ3lWZAnNHo,512
260
+ foxes/utils/subclasses.py,sha256=bnlZaLgGjq9cQC9dvsxahUmLQQlSmmun35TjWYyX9CA,380
261
+ foxes/utils/tab_files.py,sha256=H50IpLaqffJn9A51orCGc4fOhCOzoNUYDUKek4OAayU,1811
262
+ foxes/utils/two_circles.py,sha256=xkj-SA_x-VXY7KtmSU4lcV4gFdplyhU3sBAC9vTdkF4,2810
263
+ foxes/utils/wind_dir.py,sha256=6W0njWDvnIdOOjwqcMr64MW9ApjdtFA75blVUxirPMo,2823
264
+ foxes/utils/windrose_plot.py,sha256=O9zLrDzQXIgKdBwzqNkusyA_rMshbk-8ybloIwt8vuY,4589
265
+ foxes/utils/xarray_utils.py,sha256=KJeWfX10gAqtguVc23P9PhBY_z8e52pVtCIMAmBICl4,1570
266
+ foxes/utils/abl/__init__.py,sha256=ijn-ubLLlqqH6tTAXFRmBAxJZmVBlTEmtx1cdCCtG4I,135
267
+ foxes/utils/abl/neutral.py,sha256=rBfuUDTCGzNb19oM_dZb7LJ3m26rWzfEw9MjPiASpK0,1358
268
+ foxes/utils/abl/sheared.py,sha256=nS6gxa5cR7B7XcZbEk3rwOvbF6m4cinXAIhhn9gGBBs,446
269
+ foxes/utils/abl/stable.py,sha256=gOlQKxZWLXm1lOwLU-4qF4PZ0K6izmiHjipL6sGRqME,1830
270
+ foxes/utils/abl/unstable.py,sha256=bwt3VrtwGpSUPh5nlkHORld3BvHJR4JgELlJ9635N7c,1611
271
+ foxes/utils/geom2d/__init__.py,sha256=mLjnRU0b0_nrVVUKyWwZFbPyu-k8yWPEM7i4Y4-QK3w,252
272
+ foxes/utils/geom2d/area_geometry.py,sha256=CvkhXqfGM7g_gQKtyeCNg0_Xk5Wf46fipK8H7Bo_Ag4,19120
273
+ foxes/utils/geom2d/circle.py,sha256=8KDQmdt9KS23WmfwzZoUD9wH0ljHwfDeSD11e15H7PA,4530
274
+ foxes/utils/geom2d/example_intersection.py,sha256=4e6sjpZEk_bNc462YvwKPzwxdV1B90M82bC63ICV4Lw,1626
275
+ foxes/utils/geom2d/example_union.py,sha256=BKfLt1mtQcSto-qExeMQkq8tQ6kfFXVJ93Cc7DhOal8,1750
276
+ foxes/utils/geom2d/half_plane.py,sha256=kzZD6pkZxZ03MK9WAboWzXb5Ws5dWLQY9GIahD4D9mA,6167
277
+ foxes/utils/geom2d/polygon.py,sha256=8ASfy7No_-Pt_xDSeNsDtLEkCjBWsNZK8nIxDQtqeOE,5534
278
+ tests/0_consistency/iterative/test_iterative.py,sha256=L9GOI1gPN2sJ9fSHfDnv5wfMptBT6zjzrOUqlqN2EmQ,2434
279
+ tests/0_consistency/partial_wakes/test_partial_wakes.py,sha256=do2reilY2Vij6Ft6riYAOnHQ-Az5gfgFqjji5Il-ulY,2393
280
+ tests/1_verification/flappy_0_6/PCt_files/test_PCt_files.py,sha256=cKnwvKco3mEU0Hl_Ny2WebvPDlLKqWWunbWBYG-G560,2521
281
+ tests/1_verification/flappy_0_6/PCt_files/flappy/run.py,sha256=wJLKFOKVxOjmncYRarK5EK12HNjpWEUuu3EKgdq-Cvw,2165
282
+ tests/1_verification/flappy_0_6/abl_states/test_abl_states.py,sha256=kghfOZqqlS1Rv9VrpGmsqoTgFEgxE04lxlnPzPAhyBY,2148
283
+ tests/1_verification/flappy_0_6/abl_states/flappy/run.py,sha256=hnPSO_wqk9vYgwNNMWXb_UaYZOCnlwScVlfZl7rriV4,2058
284
+ tests/1_verification/flappy_0_6/partial_top_hat/test_partial_top_hat.py,sha256=JFR7jf46O-nkfq3SBSV5-sWttHUPJ5nirLn7jg8As5Q,1977
285
+ tests/1_verification/flappy_0_6/partial_top_hat/flappy/run.py,sha256=NMtLneJLk6J1DXE59FZ1JAGlh-zBwegtCAq8nB-p13I,1993
286
+ tests/1_verification/flappy_0_6/row_Jensen_linear_centre/test_row_Jensen_linear_centre.py,sha256=zeyBfxGgD4c9YqYNPxhqT2tVz9k3pwKIcx37GWahtxY,2155
287
+ tests/1_verification/flappy_0_6/row_Jensen_linear_centre/flappy/run.py,sha256=xTBI8dssYiqy7WC0IlKonfHQVshUk2ROyCzmecW0hbI,2184
288
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/test_row_Jensen_linear_tophat.py,sha256=HQHwNF8ELBdmR0a6_ECiLtPo99zt32L4eohNWAafx-o,2195
289
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/flappy/run.py,sha256=uhWgRbEbmM5t_ZdcG1U_719eo_2idWfML04wjFQhYL0,2180
290
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/test_row_Jensen_linear_tophat_IECTI_2005.py,sha256=gaZXNABEYTTVtKpJEEUH9R224TU_IU8YmRlVpakjq54,2635
291
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/flappy/run.py,sha256=84Vc_F4kZsluiPrKFX7WxWXKwfGZDNzW90npCsStJqQ,2259
292
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/test_row_Jensen_linear_tophat_IECTI_2019.py,sha256=5pQNBPLGqD5A-kVOLmz8rh0FzSf6VImRQA62OHSAu8c,2632
293
+ tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/flappy/run.py,sha256=cPLIXymqdzu3zxB6-B3g3CU_oDhiYf-TlgWqossDjUw,2259
294
+ tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/test_row_Jensen_quadratic_centre.py,sha256=Ltqpf_cGG9SAnQqTe0hIcYG2BPZ6lCiK3_AQUkcAT34,2152
295
+ tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/flappy/run.py,sha256=u-LBBH_MVoqY4Gl__6_EuHUTXp7s-6xVU1OXkywrqrY,2187
296
+ tests/1_verification/flappy_0_6_2/grid_rotors/test_grid_rotors.py,sha256=wN0TEcZgQpT9fhifrUHu_9i0egq5D_EADupey2Wup_U,3605
297
+ tests/1_verification/flappy_0_6_2/grid_rotors/flappy/run.py,sha256=-TJAB5L9fj7UonqYILVH0i91PPD6KKd7bpJ2j0MDALk,2453
298
+ tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/test_row_Bastankhah_Crespo.py,sha256=wytIoaAo1ODFnfO680_yZZujGu70aaQjjNpqP608BJE,2689
299
+ tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/flappy/run.py,sha256=nwIyn20ZyYHhCKcPCnm02zjwNKMRzr9t0U8TjKK61QU,2213
300
+ tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/test_row_Bastankhah_linear_centre.py,sha256=JHitwzV_Ai8Hr7TgaTd5aMenTlaAmgv7BYIIutBwvZ4,2332
301
+ tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/flappy/run.py,sha256=s6FbEdpiIdHYmdD8S85_NhLH-S3EOinXvw8RHmR2QOU,2122
302
+ tests/3_examples/test_examples.py,sha256=rS2Dz04ktbS6v3TRDr96AkWGypr5u49jihqbEmGFmRU,694
303
+ foxes-1.0.dist-info/LICENSE,sha256=bBCH6mYTPzSepk2s2UUZ3II_ZYXrn1bnSqB85-aZHxU,1071
304
+ foxes-1.0.dist-info/METADATA,sha256=ACBN6UkyMq_xgywWogiGkBFabJUJ4WuMyUlT30KyKZ4,8481
305
+ foxes-1.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
306
+ foxes-1.0.dist-info/top_level.txt,sha256=G7oHApEz5nc-iP__XsPcvjYe_NyXGmKMUMPHi3C3x6I,26
307
+ foxes-1.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.2.0)
2
+ Generator: setuptools (75.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1,4 @@
1
+ docs
2
+ examples
3
+ foxes
4
+ tests
@@ -0,0 +1,92 @@
1
+ from pathlib import Path
2
+ import inspect
3
+
4
+ import foxes
5
+ import foxes.variables as FV
6
+ import foxes.constants as FC
7
+
8
+ thisdir = Path(inspect.getfile(inspect.currentframe())).parent
9
+
10
+
11
+ def test():
12
+ c = 1000
13
+ ttype = "DTU10MW"
14
+ sfile = "wind_rose_bremen.csv"
15
+ lfile = thisdir / "test_farm.csv"
16
+ cases = [
17
+ (foxes.algorithms.Downwind, "rotor_wd"),
18
+ (foxes.algorithms.Iterative, "rotor_wd"),
19
+ (foxes.algorithms.Iterative, "rotor_wd_farmo"),
20
+ ]
21
+ lims = {FV.REWS: 5e-7, FV.P: 5e-4}
22
+
23
+ ck = {FC.STATE: c}
24
+
25
+ base_results = None
26
+ for Algo, frame in cases:
27
+ print(f"\nENTERING CASE {(Algo.__name__, frame)}\n")
28
+
29
+ mbook = foxes.models.ModelBook()
30
+
31
+ states = foxes.input.states.StatesTable(
32
+ data_source=sfile,
33
+ output_vars=[FV.WS, FV.WD, FV.TI, FV.RHO],
34
+ var2col={FV.WS: "ws", FV.WD: "wd", FV.WEIGHT: "weight"},
35
+ fixed_vars={FV.RHO: 1.225, FV.TI: 0.05},
36
+ )
37
+
38
+ farm = foxes.WindFarm()
39
+ foxes.input.farm_layout.add_from_file(
40
+ farm, lfile, turbine_models=[ttype], verbosity=1
41
+ )
42
+
43
+ kwargs = {}
44
+ if Algo is foxes.algorithms.Iterative:
45
+ kwargs["mod_cutin"] = {"modify_ct": False, "modify_P": False}
46
+
47
+ algo = Algo(
48
+ farm,
49
+ states,
50
+ mbook=mbook,
51
+ rotor_model="grid16",
52
+ wake_models=["Bastankhah2014_linear_k004", "IECTI2019_max"],
53
+ wake_frame=frame,
54
+ partial_wakes="rotor_points",
55
+ chunks=ck,
56
+ verbosity=1,
57
+ **kwargs,
58
+ )
59
+
60
+ # f Algo is foxes.algorithms.Iterative:
61
+ # algo.set_urelax("post_rotor", CT=0.9)
62
+
63
+ data = algo.calc_farm()
64
+
65
+ df = data.to_dataframe()[
66
+ [FV.AMB_WD, FV.WD, FV.AMB_REWS, FV.REWS, FV.AMB_P, FV.P]
67
+ ]
68
+
69
+ print()
70
+ print("TRESULTS\n")
71
+ print(df)
72
+
73
+ df = df.reset_index()
74
+
75
+ if base_results is None:
76
+ base_results = df
77
+
78
+ else:
79
+ print(f"CASE {(Algo.__name__, frame)}")
80
+ delta = df - base_results
81
+ print(delta)
82
+ print(delta.min(), delta.max())
83
+
84
+ for v, lim in lims.items():
85
+ chk = delta[v].abs().loc[df["AMB_REWS"] > 7]
86
+ print(f"CASE {(Algo.__name__, frame, v, lim)}:", chk.max())
87
+
88
+ assert (chk < lim).all()
89
+
90
+
91
+ if __name__ == "__main__":
92
+ test()
@@ -0,0 +1,90 @@
1
+ from pathlib import Path
2
+ import inspect
3
+
4
+ import foxes
5
+ import foxes.variables as FV
6
+ import foxes.constants as FC
7
+
8
+ thisdir = Path(inspect.getfile(inspect.currentframe())).parent
9
+
10
+
11
+ def test():
12
+ c = 180
13
+ tfile = thisdir / "NREL-5MW-D126-H90.csv"
14
+ sfile = thisdir / "states.csv.gz"
15
+ lfile = thisdir / "test_farm.csv"
16
+ cases = [
17
+ ("grid400", "rotor_points", None),
18
+ ("grid4", "rotor_points", 0.15),
19
+ ("grid9", "rotor_points", 0.07),
20
+ ("centre", "axiwake5", 0.03),
21
+ ("centre", "axiwake10", 0.0081),
22
+ ("centre", "grid9", 0.07),
23
+ ("centre", "grid16", 0.05),
24
+ ("centre", "grid36", 0.025),
25
+ ]
26
+
27
+ ck = {FC.STATE: c}
28
+
29
+ base_results = None
30
+ for rotor, pwake, lim in cases:
31
+ print(f"\nENTERING CASE {(rotor, pwake, lim)}\n")
32
+
33
+ mbook = foxes.models.ModelBook()
34
+ ttype = foxes.models.turbine_types.PCtFile(
35
+ data_source=tfile, var_ws_ct=FV.REWS, var_ws_P=FV.REWS
36
+ )
37
+ mbook.turbine_types[ttype.name] = ttype
38
+
39
+ states = foxes.input.states.StatesTable(
40
+ data_source=sfile,
41
+ output_vars=[FV.WS, FV.WD, FV.TI, FV.RHO],
42
+ var2col={FV.WS: "ws", FV.WD: "wd", FV.TI: "ti"},
43
+ fixed_vars={FV.RHO: 1.225},
44
+ )
45
+
46
+ farm = foxes.WindFarm()
47
+ foxes.input.farm_layout.add_from_file(
48
+ farm, lfile, turbine_models=[ttype.name], verbosity=1
49
+ )
50
+
51
+ algo = foxes.algorithms.Downwind(
52
+ farm,
53
+ states,
54
+ mbook=mbook,
55
+ rotor_model=rotor,
56
+ wake_models=["Bastankhah025_linear_k002"],
57
+ wake_frame="rotor_wd",
58
+ partial_wakes=pwake,
59
+ chunks=ck,
60
+ verbosity=1,
61
+ )
62
+
63
+ data = algo.calc_farm()
64
+
65
+ df = data.to_dataframe()[
66
+ [FV.AMB_WD, FV.WD, FV.AMB_REWS, FV.REWS, FV.AMB_P, FV.P]
67
+ ]
68
+
69
+ print()
70
+ print("TRESULTS\n")
71
+ print(df)
72
+
73
+ df = df.reset_index()
74
+
75
+ if base_results is None:
76
+ base_results = df
77
+
78
+ else:
79
+ print(f"CASE {(rotor, pwake, lim)}")
80
+ delta = df - base_results
81
+ print(delta)
82
+ print(delta.min(), delta.max())
83
+ chk = delta[FV.REWS].abs()
84
+ print(f"CASE {(rotor, pwake, lim)}:", chk.max())
85
+
86
+ assert (chk < lim).all()
87
+
88
+
89
+ if __name__ == "__main__":
90
+ test()
@@ -0,0 +1,85 @@
1
+ import numpy as np
2
+ import pandas as pd
3
+ import time
4
+ import argparse
5
+ from pathlib import Path
6
+
7
+ import flappy as fl
8
+ from flappy.config.variables import variables as FV
9
+
10
+ if __name__ == "__main__":
11
+ parser = argparse.ArgumentParser()
12
+ parser.add_argument(
13
+ "-c", "--chunksize", help="The maximal chunk size", type=int, default=500
14
+ )
15
+ parser.add_argument(
16
+ "-o", "--ofile", help="The output file name", default="results.csv.gz"
17
+ )
18
+ parser.add_argument(
19
+ "--n_cpus", help="The number of processors", type=int, default=4
20
+ )
21
+ args = parser.parse_args()
22
+
23
+ c = args.chunksize
24
+ p0 = np.array([0.0, 0.0])
25
+ stp = np.array([500.0, 0.0])
26
+ ofile = Path(args.ofile)
27
+ tPfile = "../NREL-5MW-D126-H90-P.csv"
28
+ tCtfile = "../NREL-5MW-D126-H90-Ct.csv"
29
+ sfile = "../states.csv.gz"
30
+ lfile = "../test_farm.csv"
31
+
32
+ # init flappy:
33
+ fl.init_flappy(n_cpus=args.n_cpus)
34
+
35
+ # load model book:
36
+ mbook = fl.ModelBook()
37
+ mbook.turbine_models[f"ws_P"] = fl.models.Ws2P(P_curve_file=tPfile)
38
+ mbook.turbine_models[f"ws_Ct"] = fl.models.Ws2Ct(ct_curve_file=tCtfile)
39
+
40
+ # create wind farm:
41
+ farm = fl.WindFarm()
42
+ fl.input.add_turbines_from_csv(
43
+ farm,
44
+ lfile,
45
+ col_index="index",
46
+ col_x="x",
47
+ col_y="y",
48
+ rotor_diameter=126.0,
49
+ hub_height=90.0,
50
+ rotor_model="centre",
51
+ wake_models=["Jensen007"],
52
+ turbine_models=["ws_P", "ws_Ct"],
53
+ )
54
+
55
+ # create states:
56
+ states = fl.input.AFSStatesTable(
57
+ data_file=sfile,
58
+ col_wd="wd",
59
+ col_ws="ws",
60
+ col_ti="ti",
61
+ col_weight="weight",
62
+ air_density=1.225,
63
+ max_chunk_size=args.chunksize,
64
+ )
65
+ states.initialize()
66
+
67
+ time0 = time.time()
68
+
69
+ # run calculation:
70
+ results = farm.calculate(mbook, states, wake_superp=["wind_linear"])
71
+
72
+ time1 = time.time()
73
+ print("\nCalc time =", time1 - time0, "\n")
74
+
75
+ df = results.state_turbine_results[[FV.WD, FV.AMB_WS, FV.WS, FV.AMB_P, FV.P]]
76
+
77
+ print()
78
+ print("TRESULTS\n")
79
+ print(df)
80
+
81
+ print("\nWriting file", ofile)
82
+ df.to_csv(ofile)
83
+
84
+ # close flappy:
85
+ fl.shutdown_flappy()