foxes 0.8.2__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.
- docs/source/conf.py +353 -0
- examples/abl_states/run.py +160 -0
- examples/compare_rotors_pwakes/run.py +217 -0
- examples/compare_wakes/run.py +241 -0
- examples/dyn_wakes/run.py +311 -0
- examples/field_data_nc/run.py +121 -0
- examples/induction_RHB/run.py +201 -0
- examples/multi_height/run.py +113 -0
- examples/power_mask/run.py +249 -0
- examples/random_timeseries/run.py +210 -0
- examples/scan_row/run.py +193 -0
- examples/sector_management/run.py +162 -0
- examples/sequential/run.py +209 -0
- examples/single_state/run.py +201 -0
- examples/states_lookup_table/run.py +137 -0
- examples/streamline_wakes/run.py +138 -0
- examples/tab_file/run.py +142 -0
- examples/timelines/run.py +267 -0
- examples/timeseries/run.py +183 -0
- examples/timeseries_slurm/run.py +185 -0
- examples/wind_rose/run.py +141 -0
- examples/windio/run.py +29 -0
- examples/yawed_wake/run.py +196 -0
- foxes/__init__.py +4 -8
- foxes/algorithms/__init__.py +1 -1
- foxes/algorithms/downwind/downwind.py +232 -101
- foxes/algorithms/downwind/models/farm_wakes_calc.py +11 -6
- foxes/algorithms/downwind/models/init_farm_data.py +1 -1
- foxes/algorithms/downwind/models/point_wakes_calc.py +5 -6
- foxes/algorithms/downwind/models/reorder_farm_output.py +0 -1
- foxes/algorithms/downwind/models/set_amb_point_results.py +4 -2
- foxes/algorithms/iterative/iterative.py +73 -33
- foxes/algorithms/iterative/models/farm_wakes_calc.py +11 -6
- foxes/algorithms/sequential/models/plugin.py +1 -1
- foxes/algorithms/sequential/sequential.py +126 -255
- foxes/constants.py +17 -2
- foxes/core/__init__.py +1 -0
- foxes/core/algorithm.py +631 -146
- foxes/core/data.py +252 -20
- foxes/core/data_calc_model.py +13 -289
- foxes/core/engine.py +630 -0
- foxes/core/farm_controller.py +37 -9
- foxes/core/farm_data_model.py +15 -0
- foxes/core/model.py +133 -80
- foxes/core/point_data_model.py +15 -0
- foxes/core/rotor_model.py +27 -21
- foxes/core/states.py +16 -0
- foxes/core/turbine_type.py +28 -0
- foxes/core/wake_frame.py +22 -4
- foxes/core/wake_model.py +2 -3
- foxes/data/windio/windio_5turbines_timeseries.yaml +23 -1
- foxes/engines/__init__.py +16 -0
- foxes/engines/dask.py +975 -0
- foxes/engines/default.py +75 -0
- foxes/engines/futures.py +72 -0
- foxes/engines/mpi.py +38 -0
- foxes/engines/multiprocess.py +74 -0
- foxes/engines/numpy.py +185 -0
- foxes/engines/pool.py +263 -0
- foxes/engines/single.py +139 -0
- foxes/input/farm_layout/__init__.py +1 -0
- foxes/input/farm_layout/from_csv.py +4 -0
- foxes/input/farm_layout/from_json.py +1 -1
- foxes/input/farm_layout/grid.py +2 -2
- foxes/input/farm_layout/ring.py +65 -0
- foxes/input/farm_layout/row.py +2 -2
- foxes/input/states/__init__.py +6 -0
- foxes/input/states/create/random_abl_states.py +1 -1
- foxes/input/states/field_data_nc.py +157 -32
- foxes/input/states/multi_height.py +127 -13
- foxes/input/states/one_point_flow.py +577 -0
- foxes/input/states/scan_ws.py +73 -2
- foxes/input/states/states_table.py +204 -35
- foxes/input/windio/__init__.py +1 -1
- foxes/input/windio/get_states.py +44 -23
- foxes/input/windio/read_attributes.py +41 -16
- foxes/input/windio/read_farm.py +116 -102
- foxes/input/windio/read_fields.py +13 -6
- foxes/input/windio/read_outputs.py +63 -22
- foxes/input/windio/runner.py +31 -17
- foxes/input/windio/windio.py +36 -22
- foxes/models/ground_models/wake_mirror.py +8 -4
- foxes/models/model_book.py +29 -18
- foxes/models/partial_wakes/rotor_points.py +3 -3
- foxes/models/rotor_models/centre.py +4 -0
- foxes/models/rotor_models/grid.py +22 -23
- foxes/models/rotor_models/levels.py +4 -5
- foxes/models/turbine_models/calculator.py +0 -2
- foxes/models/turbine_models/lookup_table.py +27 -2
- foxes/models/turbine_models/rotor_centre_calc.py +4 -3
- foxes/models/turbine_models/set_farm_vars.py +103 -34
- foxes/models/turbine_types/PCt_file.py +24 -0
- foxes/models/turbine_types/PCt_from_two.py +24 -0
- foxes/models/turbine_types/__init__.py +1 -0
- foxes/models/turbine_types/lookup.py +316 -0
- foxes/models/turbine_types/null_type.py +50 -0
- foxes/models/turbine_types/wsrho2PCt_from_two.py +24 -0
- foxes/models/turbine_types/wsti2PCt_from_two.py +24 -0
- foxes/models/vertical_profiles/data_profile.py +1 -1
- foxes/models/wake_frames/__init__.py +1 -0
- foxes/models/wake_frames/dynamic_wakes.py +424 -0
- foxes/models/wake_frames/farm_order.py +23 -3
- foxes/models/wake_frames/rotor_wd.py +4 -2
- foxes/models/wake_frames/seq_dynamic_wakes.py +56 -63
- foxes/models/wake_frames/streamlines.py +19 -20
- foxes/models/wake_frames/timelines.py +328 -127
- foxes/models/wake_frames/yawed_wakes.py +4 -1
- foxes/models/wake_models/dist_sliced.py +1 -3
- foxes/models/wake_models/induction/rankine_half_body.py +4 -4
- foxes/models/wake_models/induction/rathmann.py +2 -2
- foxes/models/wake_models/induction/self_similar.py +2 -2
- foxes/models/wake_models/induction/vortex_sheet.py +2 -2
- foxes/models/wake_models/ti/iec_ti.py +34 -17
- foxes/models/wake_models/top_hat.py +1 -1
- foxes/models/wake_models/wind/bastankhah14.py +2 -2
- foxes/models/wake_models/wind/bastankhah16.py +8 -7
- foxes/models/wake_models/wind/jensen.py +1 -1
- foxes/models/wake_models/wind/turbopark.py +2 -2
- foxes/output/__init__.py +4 -1
- foxes/output/farm_layout.py +2 -2
- foxes/output/flow_plots_2d/__init__.py +0 -1
- foxes/output/flow_plots_2d/flow_plots.py +70 -30
- foxes/output/grids.py +91 -21
- foxes/output/seq_plugins/__init__.py +2 -0
- foxes/output/{flow_plots_2d → seq_plugins}/seq_flow_ani_plugin.py +62 -20
- foxes/output/seq_plugins/seq_wake_debug_plugin.py +145 -0
- foxes/output/slice_data.py +131 -111
- foxes/output/state_turbine_map.py +18 -13
- foxes/output/state_turbine_table.py +19 -19
- foxes/utils/__init__.py +1 -1
- foxes/utils/dev_utils.py +42 -0
- foxes/utils/dict.py +1 -1
- foxes/utils/factory.py +147 -52
- foxes/utils/pandas_helpers.py +4 -3
- foxes/utils/wind_dir.py +0 -2
- foxes/utils/xarray_utils.py +23 -13
- foxes/variables.py +37 -0
- {foxes-0.8.2.dist-info → foxes-1.0.dist-info}/METADATA +71 -33
- foxes-1.0.dist-info/RECORD +307 -0
- {foxes-0.8.2.dist-info → foxes-1.0.dist-info}/WHEEL +1 -1
- foxes-1.0.dist-info/top_level.txt +4 -0
- tests/0_consistency/iterative/test_iterative.py +92 -0
- tests/0_consistency/partial_wakes/test_partial_wakes.py +90 -0
- tests/1_verification/flappy_0_6/PCt_files/flappy/run.py +85 -0
- tests/1_verification/flappy_0_6/PCt_files/test_PCt_files.py +103 -0
- tests/1_verification/flappy_0_6/abl_states/flappy/run.py +85 -0
- tests/1_verification/flappy_0_6/abl_states/test_abl_states.py +87 -0
- tests/1_verification/flappy_0_6/partial_top_hat/flappy/run.py +82 -0
- tests/1_verification/flappy_0_6/partial_top_hat/test_partial_top_hat.py +82 -0
- tests/1_verification/flappy_0_6/row_Jensen_linear_centre/flappy/run.py +92 -0
- tests/1_verification/flappy_0_6/row_Jensen_linear_centre/test_row_Jensen_linear_centre.py +93 -0
- tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/flappy/run.py +92 -0
- tests/1_verification/flappy_0_6/row_Jensen_linear_tophat/test_row_Jensen_linear_tophat.py +96 -0
- tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/flappy/run.py +94 -0
- tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2005/test_row_Jensen_linear_tophat_IECTI_2005.py +122 -0
- tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/flappy/run.py +94 -0
- tests/1_verification/flappy_0_6/row_Jensen_linear_tophat_IECTI2019/test_row_Jensen_linear_tophat_IECTI_2019.py +122 -0
- tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/flappy/run.py +92 -0
- tests/1_verification/flappy_0_6/row_Jensen_quadratic_centre/test_row_Jensen_quadratic_centre.py +93 -0
- tests/1_verification/flappy_0_6_2/grid_rotors/flappy/run.py +85 -0
- tests/1_verification/flappy_0_6_2/grid_rotors/test_grid_rotors.py +130 -0
- tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/flappy/run.py +96 -0
- tests/1_verification/flappy_0_6_2/row_Bastankhah_Crespo/test_row_Bastankhah_Crespo.py +116 -0
- tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/flappy/run.py +93 -0
- tests/1_verification/flappy_0_6_2/row_Bastankhah_linear_centre/test_row_Bastankhah_linear_centre.py +99 -0
- tests/3_examples/test_examples.py +34 -0
- foxes/VERSION +0 -1
- foxes/output/flow_plots_2d.py +0 -0
- foxes/utils/runners/__init__.py +0 -1
- foxes/utils/runners/runners.py +0 -280
- foxes-0.8.2.dist-info/RECORD +0 -247
- foxes-0.8.2.dist-info/top_level.txt +0 -1
- foxes-0.8.2.dist-info/zip-safe +0 -1
- {foxes-0.8.2.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,,
|
|
@@ -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()
|