foxes 0.5.0.2__py3-none-any.whl → 0.5.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of foxes might be problematic. Click here for more details.

Files changed (66) hide show
  1. foxes/VERSION +1 -1
  2. foxes/algorithms/downwind/downwind.py +41 -46
  3. foxes/algorithms/downwind/models/point_wakes_calc.py +4 -9
  4. foxes/algorithms/downwind/models/set_amb_point_results.py +5 -22
  5. foxes/core/algorithm.py +1 -1
  6. foxes/core/data_calc_model.py +26 -2
  7. foxes/core/partial_wakes_model.py +1 -1
  8. foxes/core/rotor_model.py +36 -2
  9. foxes/core/turbine_model.py +36 -0
  10. foxes/core/turbine_type.py +35 -1
  11. foxes/core/wake_frame.py +39 -3
  12. foxes/core/wake_model.py +36 -0
  13. foxes/models/model_book.py +129 -89
  14. foxes/models/turbine_models/rotor_centre_calc.py +1 -2
  15. foxes/models/turbine_types/CpCt_file.py +13 -3
  16. foxes/models/turbine_types/CpCt_from_two.py +14 -4
  17. foxes/models/vertical_profiles/abl_log_neutral_ws.py +32 -5
  18. foxes/models/vertical_profiles/abl_log_stable_ws.py +32 -4
  19. foxes/models/vertical_profiles/abl_log_unstable_ws.py +32 -4
  20. foxes/models/vertical_profiles/abl_log_ws.py +50 -18
  21. foxes/models/wake_frames/yawed_wakes.py +15 -9
  22. foxes/models/wake_models/induction/__init__.py +1 -1
  23. foxes/models/wake_models/induction/rankine_half_body.py +33 -7
  24. foxes/models/wake_models/ti/crespo_hernandez.py +6 -1
  25. foxes/models/wake_models/ti/iec_ti.py +5 -3
  26. foxes/models/wake_models/wind/__init__.py +2 -2
  27. foxes/models/wake_models/wind/{bastankhah.py → bastankhah14.py} +11 -14
  28. foxes/models/wake_models/wind/{porte_agel.py → bastankhah16.py} +24 -16
  29. foxes/models/wake_models/wind/turbopark.py +11 -22
  30. foxes/models/wake_superpositions/__init__.py +9 -5
  31. foxes/models/wake_superpositions/ti_linear.py +134 -0
  32. foxes/models/wake_superpositions/ti_max.py +134 -0
  33. foxes/models/wake_superpositions/{ti_superp.py → ti_pow.py} +15 -57
  34. foxes/models/wake_superpositions/ti_quadratic.py +134 -0
  35. foxes/models/wake_superpositions/ws_linear.py +170 -0
  36. foxes/models/wake_superpositions/ws_max.py +173 -0
  37. foxes/models/wake_superpositions/ws_pow.py +175 -0
  38. foxes/models/wake_superpositions/{product.py → ws_product.py} +43 -22
  39. foxes/models/wake_superpositions/ws_quadratic.py +170 -0
  40. foxes/output/__init__.py +4 -0
  41. foxes/output/calc_points.py +143 -0
  42. foxes/output/flow_plots_2d/__init__.py +1 -0
  43. foxes/output/flow_plots_2d/common.py +104 -1
  44. foxes/output/flow_plots_2d/flow_plots.py +237 -569
  45. foxes/output/flow_plots_2d/get_fig.py +183 -0
  46. foxes/output/flow_plots_2d/seq_flow_ani_plugin.py +0 -1
  47. foxes/output/grids.py +705 -0
  48. foxes/output/output.py +58 -11
  49. foxes/output/results_writer.py +101 -17
  50. foxes/output/round.py +10 -0
  51. foxes/output/slice_data.py +900 -0
  52. foxes/utils/__init__.py +5 -3
  53. foxes/utils/exec_python.py +56 -0
  54. foxes/utils/geopandas_utils.py +294 -0
  55. foxes/utils/pandas_utils.py +175 -0
  56. foxes/utils/plotly_utils.py +19 -0
  57. foxes/utils/xarray_utils.py +38 -0
  58. {foxes-0.5.0.2.dist-info → foxes-0.5.2.dist-info}/METADATA +1 -1
  59. {foxes-0.5.0.2.dist-info → foxes-0.5.2.dist-info}/RECORD +63 -49
  60. foxes/models/wake_superpositions/linear.py +0 -242
  61. foxes/models/wake_superpositions/max.py +0 -258
  62. foxes/models/wake_superpositions/quadratic.py +0 -252
  63. {foxes-0.5.0.2.dist-info → foxes-0.5.2.dist-info}/LICENSE +0 -0
  64. {foxes-0.5.0.2.dist-info → foxes-0.5.2.dist-info}/WHEEL +0 -0
  65. {foxes-0.5.0.2.dist-info → foxes-0.5.2.dist-info}/top_level.txt +0 -0
  66. {foxes-0.5.0.2.dist-info → foxes-0.5.2.dist-info}/zip-safe +0 -0
@@ -1,16 +1,16 @@
1
- foxes/VERSION,sha256=PVOOFiqn5uM0xv_uvUsJjRGNVQsB0hBlH2-YcLurqsI,8
1
+ foxes/VERSION,sha256=JuCrg6of9r0K44gnh6kmY6oZ2xKOEkH_yZN1-5ygwSE,6
2
2
  foxes/__init__.py,sha256=erRuJI5EwU2AT9VtAshlP6DAmKO4kh0lfpnMw1sdlsM,717
3
3
  foxes/constants.py,sha256=5MhlbsIEpOyisYwG9DfJarB0xCIcaDyhNMnnzbEr7Aw,2373
4
4
  foxes/variables.py,sha256=GX_UonLKorN4ptypR5mLqbISfM-nLHpOv8v0tRcJmto,4261
5
5
  foxes/algorithms/__init__.py,sha256=KdhfReq-Y72lrMdfsU71dNxkc_bYK-flutmgaqaTuWU,259
6
6
  foxes/algorithms/downwind/__init__.py,sha256=lyygq5GMc6NAPmH0b0mhGeccWyuC8JTOEMZl-UlmE5M,53
7
- foxes/algorithms/downwind/downwind.py,sha256=ulFIGBhLzjKF3lICPo0D-JYPVeymzo5Uqu7jG3cSlww,19094
7
+ foxes/algorithms/downwind/downwind.py,sha256=I1dn97LZO8VS6oDhZHl0Cno6tHiy9OTw_Pc3dwy7XcU,18738
8
8
  foxes/algorithms/downwind/models/__init__.py,sha256=jjO9YOvsr0iG_XOENCxuK2uL9bP4k3slwm5AnrF6a2E,242
9
9
  foxes/algorithms/downwind/models/calc_order.py,sha256=OiKhFbDIR5ffwZg51Vl1Mb-WvkhER2XP-LWg6Xr6VAU,1896
10
10
  foxes/algorithms/downwind/models/farm_wakes_calc.py,sha256=iXTZgho1lPtz-L033eHuVp7mAlGGvmB94Hk-nqE5Ooc,3117
11
- foxes/algorithms/downwind/models/point_wakes_calc.py,sha256=xCykUdF4ytWuNeFOs03beCcoQxX0wOk_HPPzfw5Aupo,6055
11
+ foxes/algorithms/downwind/models/point_wakes_calc.py,sha256=7r_6fCsSDJH4ikav-XozwdFBkfqEgdZAlQQdkcVsOtc,5855
12
12
  foxes/algorithms/downwind/models/set_amb_farm_results.py,sha256=_hBlSnlD1MYzQ2HV6eEXREaLsj4CKsxI4hr9LFFi-qc,1734
13
- foxes/algorithms/downwind/models/set_amb_point_results.py,sha256=uYTC5p1avLYBZhQOCX0YdzUAywbTUA7MOgzlvyEG8yk,2784
13
+ foxes/algorithms/downwind/models/set_amb_point_results.py,sha256=AOuMJmVzGcQ6XU21Vc7_u9wM7u_EJcmO0uw-kFZHspY,2220
14
14
  foxes/algorithms/iterative/__init__.py,sha256=Je445cHtS2ERc-dywjhxWttKzdEyHM8JLxPcW5JFtl8,137
15
15
  foxes/algorithms/iterative/iterative.py,sha256=tWVgNFKkjYVvcb2q4EZVdenVWtUuiHky0J5vQEge5Tk,7129
16
16
  foxes/algorithms/iterative/models/__init__.py,sha256=3lMBUOzq5bKNQBGoV8byVQ7_Keyk1GfwFZDUwaafGsg,152
@@ -23,23 +23,23 @@ foxes/algorithms/sequential/models/__init__.py,sha256=OneaRLxMPzVWLKL9cR3JIYHojf
23
23
  foxes/algorithms/sequential/models/plugin.py,sha256=9xa5mUp72gX3rAsdqM76Dibky0jA-gmYO2J4oBNoiHA,1326
24
24
  foxes/algorithms/sequential/models/seq_state.py,sha256=zQv_n4zhB_CYqbam8OsRb3xJR0mXKkL2kcOcWR8UAqg,3623
25
25
  foxes/core/__init__.py,sha256=QeXUrezXuuEoT8jPoADLVJIZPC_GGulskM650v6GiHg,811
26
- foxes/core/algorithm.py,sha256=cFVp4jFR9sjQ1YE4q4TjooF_P_DyecmH4P0-StcKzCY,14318
26
+ foxes/core/algorithm.py,sha256=ecnuE4vC5TwkCNCHfK1_DXFdbShAJhHd9QlKdTvnh1I,14327
27
27
  foxes/core/data.py,sha256=fSdKrgC5FCn8L67E_SXeaIRQFzpCOQN1rVkkaF0Ovho,5908
28
- foxes/core/data_calc_model.py,sha256=H7XhKBMru_P9kEz7hOKcp1kKXvaF8aI_xR6Hua3aa1k,9387
28
+ foxes/core/data_calc_model.py,sha256=O77r3xMlR16tl39nl0rmXigJriA4jcw1Cf7oQ7RpdCc,10185
29
29
  foxes/core/farm_controller.py,sha256=plytpzicRHf7dAVs0wm0G9qT7IhF6t3QX43xGjeGuKA,12297
30
30
  foxes/core/farm_data_model.py,sha256=kSixxeCC-fOid2Srnk_6etRSi191JzCdpsqRraGAWw8,6285
31
31
  foxes/core/farm_model.py,sha256=ogFahCjC2dIBcjnCMmy0cTGulKTDA2ufFUzODf0-KnI,265
32
32
  foxes/core/model.py,sha256=uBcxALbOnk8f_hj2zsplonvsl34KaupRxvv0tEXEhZI,15015
33
- foxes/core/partial_wakes_model.py,sha256=2ImHts3t9znOjvjH9vVXFreKePVzSnQh5ICwT5ROCe0,5070
33
+ foxes/core/partial_wakes_model.py,sha256=b7YFe_iRESMBkUjpVGQV12H-PMC2ZyVc6-87-OYtd7w,5070
34
34
  foxes/core/point_data_model.py,sha256=w6w11ylUF3Gv4QY8uqLVXqLWj6_qlgz9RLiJh0h89-o,5515
35
- foxes/core/rotor_model.py,sha256=dCT_zuxDlWRvfER3JhHnpDzEmNcFqTfSPaDaw5S8hoQ,12866
35
+ foxes/core/rotor_model.py,sha256=By3zGyp9NNfd1faGHWtR8CwHeeqiMBjEuaGI8oEtpek,13811
36
36
  foxes/core/states.py,sha256=xWdsX-vk_J4PqbsHtOy3hEHBj-7Labt3PVP95gA04ls,7271
37
37
  foxes/core/turbine.py,sha256=MMwmnaubEsj4eLR-YdqCeUvIb_80b9cmnwX7iC30NBc,3055
38
- foxes/core/turbine_model.py,sha256=la1xf6KIFI4tnIUnpBT0TTKf2G6K1aCMfcNsWQK7eR0,1069
39
- foxes/core/turbine_type.py,sha256=bdfVgEIhZP4U9AO43nDDil89zbrP1u5N09mChmMl5MU,1410
38
+ foxes/core/turbine_model.py,sha256=A8aPrxYuY6qJyKDIbKm5ZhlSjOnPRHMEpoZCyDzO4fI,2042
39
+ foxes/core/turbine_type.py,sha256=LHuTuvZSNGiswUQypX9eKQV7XgD9e3QWkvRk3_N6bn8,2366
40
40
  foxes/core/vertical_profile.py,sha256=bovciaH3r2Ae2D0oo3mNoZgAqDKyjKpaybGUCuzcdqY,1633
41
- foxes/core/wake_frame.py,sha256=k7CALMGTS04XFGT03w5ESMH8p0lenY0sjOBPQrLrvMk,7927
42
- foxes/core/wake_model.py,sha256=AqxnyLgkV8Maqu5V5loPX17_Cuw5QeJMs4KoVVEwUmk,3171
41
+ foxes/core/wake_frame.py,sha256=kWiEOz1WFT9ltYXdnyVL-T_6z_zvv00Q56KoiqbWsTQ,8889
42
+ foxes/core/wake_model.py,sha256=qlOfgCPDyrtFBizhPiXiD3q-v-ISQA8lL1fJLT32ffk,4138
43
43
  foxes/core/wake_superposition.py,sha256=pS27caOOzR9ChbsmlkmPS8CRwpp5Mu9TJ1BoPN_H9LE,2760
44
44
  foxes/core/wind_farm.py,sha256=Ubi96exrIKTKMADBr6A2ohLrSdNDp6imlgXJxr-8Hmw,1709
45
45
  foxes/data/__init__.py,sha256=t-PvKtssORbgaarsrs5v39ppyh77LjclBi8XlyGBdZs,152
@@ -79,7 +79,7 @@ foxes/input/states/create/random_abl_states.py,sha256=3_CogT5CWjk63VBIkUaHI_fVja
79
79
  foxes/input/windio/__init__.py,sha256=QcOt6QfCBR_Fkh-EkCYrlXTTKMphTa-1rK0hmVnM5X4,88
80
80
  foxes/input/windio/windio.py,sha256=dP4O6A1o8d6DNKd_GKhxf74Dcit4jCLR0A_ZnRs_5Cs,7947
81
81
  foxes/models/__init__.py,sha256=qrt0eueFjM5BZP53WtLBTIJyJHZz9w5wv6QWJVdXThM,375
82
- foxes/models/model_book.py,sha256=CNSvwhS5J7xjhibbapkBI8Tcr-XKAvX7LFwAnI0NazY,15008
82
+ foxes/models/model_book.py,sha256=dmaPRFLJXc-xryJnPs62jUtDmZzsKG-kxrYElGVleJs,16919
83
83
  foxes/models/farm_controllers/__init__.py,sha256=MY4IpcE8qw8WPdgMbyCWYOHJ49W-U3eHrBfJxaH9Ayc,71
84
84
  foxes/models/farm_controllers/basic.py,sha256=6pinNXiyfoG3apXhqQWcnxx4vN_7Q63YryXX5Z7kTE0,249
85
85
  foxes/models/farm_models/__init__.py,sha256=HoyMo2pDgJw770_wc4T5-VkPJpOsvkwILWusrsadICk,65
@@ -104,7 +104,7 @@ foxes/models/turbine_models/calculator.py,sha256=gjB1VGhkAT5OMUEKFyo6pRHAhnp1YlU
104
104
  foxes/models/turbine_models/kTI_model.py,sha256=_W_grIvTbv2yJSFhZ_Kj_0wtLxnc3Y-p4D5IGOALuv4,3136
105
105
  foxes/models/turbine_models/lookup_table.py,sha256=-Bp6ySjFWbSNgJUEgR0UqAZhlpn3qmPwooZjDbK5PXk,5895
106
106
  foxes/models/turbine_models/power_mask.py,sha256=GMsEqSGTxHumiduTPLGlKFpWZKFYZN9Tvm5PIWas8cU,4915
107
- foxes/models/turbine_models/rotor_centre_calc.py,sha256=fJHz1KtzWsi5vWZNQBuOfnpgI-nfqR6CKlVCHmyZDqE,3631
107
+ foxes/models/turbine_models/rotor_centre_calc.py,sha256=lYFdhjHgvkiTyRsWgKIgP81cSoPRA7pnqPpwZbUl8BI,3582
108
108
  foxes/models/turbine_models/sector_management.py,sha256=Mt9oWBzFaf3t6OGwOHNB8RVZPpiSKWWGfDRmAS-Rilk,7102
109
109
  foxes/models/turbine_models/set_XYHD.py,sha256=qdDRQ4zM_LwXDQcsW-m91S0FBWFcNCY9cByGZn_bZek,3492
110
110
  foxes/models/turbine_models/set_farm_vars.py,sha256=3g0cLO3w4EGsV0e5tVhb7DgHggUscXi0hxvIE0XiW3k,4469
@@ -112,8 +112,8 @@ foxes/models/turbine_models/table_factors.py,sha256=Zxj_IqITIoN6MjX5aTIpowayThaC
112
112
  foxes/models/turbine_models/thrust2ct.py,sha256=zkeauESk2QmRrnZ6B3MFEl6qIQo3jSv33cEhJx_n9e8,2139
113
113
  foxes/models/turbine_models/yaw2yawm.py,sha256=d-ZQsCoQx_svYWRngoiR7Ev1H2ZBQbjIGDKX8bX6jB8,1780
114
114
  foxes/models/turbine_models/yawm2yaw.py,sha256=BQXGrR01DJIvpCq7pPqCrnQFygvtffxeFgVdYgL5B-8,1751
115
- foxes/models/turbine_types/CpCt_file.py,sha256=CT9Deq4gmFJSjGa45prjk6wdXb2VdYcF51BYlVR5kjY,1559
116
- foxes/models/turbine_types/CpCt_from_two.py,sha256=A9qVQECKDgFLPJ5keuqvSyr2DJikhTpdAZq8FNdnFkU,2280
115
+ foxes/models/turbine_types/CpCt_file.py,sha256=ovl7guTszY6V0X37R27o-A_XMAJi3guuFZy94hzlsP0,2019
116
+ foxes/models/turbine_types/CpCt_from_two.py,sha256=WCyM5zSFNiUVmygXh-BlteMt3EYJpIAbJCu0Yt-1-VM,2664
117
117
  foxes/models/turbine_types/PCt_file.py,sha256=hvzmQ3YfLEcKcMdXglWRP1iORqTi3mgWyQIeCABbEr4,7729
118
118
  foxes/models/turbine_types/PCt_from_two.py,sha256=e0U8bi-vSouNl7pNLPGfC2FXLXA62zDwhPt5ZeswmB8,8880
119
119
  foxes/models/turbine_types/__init__.py,sha256=aszPibZ7tHsdHkm20k5_rIW6LJeK1CiASPw9vJgKPl0,295
@@ -121,10 +121,10 @@ foxes/models/turbine_types/null_type.py,sha256=WYc3lsykDsi8d8D6akspkLh6DFz-1YA8Z
121
121
  foxes/models/turbine_types/wsrho2PCt_from_two.py,sha256=Crc1FsIS-b1no30It8Qt9lnh6wJnGamx5dEcllRtWoI,11141
122
122
  foxes/models/turbine_types/wsti2PCt_from_two.py,sha256=ckExz1DPLLDrWn8SIX65ke5vNPii-Q_tTn3jGYeEhZU,12113
123
123
  foxes/models/vertical_profiles/__init__.py,sha256=2o4skazjhX5-gUUN_ZOxF3fI251W5s1KD11p_wSw_rQ,352
124
- foxes/models/vertical_profiles/abl_log_neutral_ws.py,sha256=Rk0rpS_RVDxeZ67APXiC96GzQnoQJm2RSUgNfgv1d6M,1117
125
- foxes/models/vertical_profiles/abl_log_stable_ws.py,sha256=yk-Nr9IL99UOohmZk6hvvGw1QfI6APdig5Is80hoTBo,1196
126
- foxes/models/vertical_profiles/abl_log_unstable_ws.py,sha256=QeQgxYkzEiocC_V6Ok0cErQgSYcek3z9oup78lCNhY0,1208
127
- foxes/models/vertical_profiles/abl_log_ws.py,sha256=4BX2G9mLe3wcAjW0esjjSfNAgCF-hTA6pAa3QiqFk5A,2530
124
+ foxes/models/vertical_profiles/abl_log_neutral_ws.py,sha256=-zlZVsY19kPccXEwBzzibhRgPYjqQEqd4H2sDGa3Iuk,1857
125
+ foxes/models/vertical_profiles/abl_log_stable_ws.py,sha256=NScUtwZXM3-tHjJek3LVOOQz_FFVnwUXRXDYFzL11Ys,1945
126
+ foxes/models/vertical_profiles/abl_log_unstable_ws.py,sha256=eFhZuGWkLXyDPz2OU3Rn3NznZr6YtaOYapflX-BG3T0,1957
127
+ foxes/models/vertical_profiles/abl_log_ws.py,sha256=00za3fkFDMuqPUDw5bGwpl2qvSOFRLUb7GQQDf6Pn88,3412
128
128
  foxes/models/vertical_profiles/data_profile.py,sha256=s3UQUP9_sULHBfqncn8mJ8NSyFyVYnqWG5bLkflBLsM,2905
129
129
  foxes/models/vertical_profiles/sheared_ws.py,sha256=kC108pLPa3fHVJXQugU6R1VKz-JdXY1mhX2PQPmG-wI,1225
130
130
  foxes/models/vertical_profiles/uniform.py,sha256=bG0vCiBZqUiJQJreRuTUxb0X1WnJW6pGdpPoQd3A3WQ,1187
@@ -134,28 +134,32 @@ foxes/models/wake_frames/rotor_wd.py,sha256=Xtf-dQ2ngXIeDiTw0IizCUdbprDIkJnFSRrm
134
134
  foxes/models/wake_frames/seq_dynamic_wakes.py,sha256=_W91a7zDQA2yydr69NvlEJElGNnR6982XqYXpL8ypDs,9491
135
135
  foxes/models/wake_frames/streamlines.py,sha256=84libPbs_vpy6U59I4zTR0uJlZbcOQiX5uyphf3QIl0,11811
136
136
  foxes/models/wake_frames/timelines.py,sha256=DZCIfATUU_BMj-C7mdtcdse1RiUMDYmqQTfSUJBPRe0,9386
137
- foxes/models/wake_frames/yawed_wakes.py,sha256=VP4e4h6RCqIGxrizYZXdAWphio11JA9P1gkgdzKk2j0,7253
137
+ foxes/models/wake_frames/yawed_wakes.py,sha256=tNW92yaeF1NfM2lJrBgDpU4QkSnEhX6Rs1bntiWUmnE,7456
138
138
  foxes/models/wake_models/__init__.py,sha256=INMYhG1CSnqZH8iKuNqKY2qFpWr0zGMineE8I6DdGRY,252
139
139
  foxes/models/wake_models/axisymmetric.py,sha256=3CZTMr9_Z5yRNXoZmC0Eda4m9XnyUl-Fz5vBiXXC1wg,2990
140
140
  foxes/models/wake_models/dist_sliced.py,sha256=BzERRmPqsXAYemNFUU5KSJoCGUAEJk--XZCNzt65HHw,6754
141
141
  foxes/models/wake_models/gaussian.py,sha256=BNu75uMUUadMpKrpmKV11kJggeTgw5gx87i-5dURcNo,2951
142
142
  foxes/models/wake_models/top_hat.py,sha256=rI1-kXOs5aUvo2pmgoboRVDi14ibEbcYnPFo3tBom78,5609
143
- foxes/models/wake_models/induction/__init__.py,sha256=CbkpyoKInzJ06m2j6fm57iIiFRg2sWaPWde8xnImEAE,66
144
- foxes/models/wake_models/induction/rankine_half_body.py,sha256=USdZ6jsMWB2D9eALora-NJSiQrglX4QTZRzk9gNjvao,6656
143
+ foxes/models/wake_models/induction/__init__.py,sha256=KQao9OW_C9zirtNGW0UgXYACvIbuuPuUFVzpFuJAekU,78
144
+ foxes/models/wake_models/induction/rankine_half_body.py,sha256=VeJo4ylzMk3s4y-mawx_-RetpBNnqnlSRA5QHfbF_t8,7421
145
145
  foxes/models/wake_models/ti/__init__.py,sha256=JNyzMht3_oF1J6xiJPuBs9s4dpEHbzsn7Hn6dF_MDjs,124
146
- foxes/models/wake_models/ti/crespo_hernandez.py,sha256=Kjsics9R-YBWjIee1zevR6M3HSYFVAyRftUcQZHuhHk,9069
147
- foxes/models/wake_models/ti/iec_ti.py,sha256=x1wNzDh0VxGtIUlf8o1GtUzdFfQTtej9Q0BLaZh8eiM,6718
148
- foxes/models/wake_models/wind/__init__.py,sha256=HKjiDPmGDJCPUlRIV03etIKYZbYUaSyXsK9ABT7UrqA,212
149
- foxes/models/wake_models/wind/bastankhah.py,sha256=LV7ZajQ1NNHnUfB8Yx_nnLeHerWvYpxAxDMHzyAY08I,6051
146
+ foxes/models/wake_models/ti/crespo_hernandez.py,sha256=3xcVKnp2K2T3Rx7B-xceFEM5Dwq2wehRn4VBmBd5EnU,9180
147
+ foxes/models/wake_models/ti/iec_ti.py,sha256=ZO3p92u8EGZ0MwxUlkeGRLsWEsofBpcdlNqP5zc90BA,6737
148
+ foxes/models/wake_models/wind/__init__.py,sha256=Xb-mPYhHdRHOup1NpqIzWlJRZinR1MHzAFWQsD3_kuw,222
149
+ foxes/models/wake_models/wind/bastankhah14.py,sha256=MvisYlPPVMqDX3tHdvxBbi_4SGxLAIF8nzkD7P_VzTY,5801
150
+ foxes/models/wake_models/wind/bastankhah16.py,sha256=gQTXOu9pQzSwkJwjqLJ-oLtgb4N5RvHF0ayl5p3wynQ,17327
150
151
  foxes/models/wake_models/wind/jensen.py,sha256=81-jLSLj1QJL5vW6qWWl-OCklTVFvmoCZd6lNPwu6ao,5681
151
- foxes/models/wake_models/wind/porte_agel.py,sha256=EZbbvrSTHLEXGJ5YHgzX_bsQxmGnYCkXmUUHQXOnzSc,17035
152
- foxes/models/wake_models/wind/turbopark.py,sha256=FhepllulWno_iiy9HvdOD1MzO-Co9s-ifSepi7gppRo,14234
153
- foxes/models/wake_superpositions/__init__.py,sha256=KoMcwNBg6YKLk0Ukn8OjSsVfnAuDJE74iLJp2QlJ8WQ,236
154
- foxes/models/wake_superpositions/linear.py,sha256=oieQEHIeo_9RyZ-TopOk_SxQ49dFkHAYvxan-oL2QQ8,7219
155
- foxes/models/wake_superpositions/max.py,sha256=8OS9ymFCs2LIo_Qtivn6tbsuHDaXjJug0vP19OraMe0,7732
156
- foxes/models/wake_superpositions/product.py,sha256=0503e7JAdEWGTiCa4ES38DZhfa-uzKaLwIFB2SYccIY,4054
157
- foxes/models/wake_superpositions/quadratic.py,sha256=HI3v2Sb-iFA-cQZLCIkn1zTve2xePbU_hZ2HHpwtkjo,7525
158
- foxes/models/wake_superpositions/ti_superp.py,sha256=jDt9cZKUzWkakvPt_FFcJQIzbVfO1aTBS6BJoEQSSjg,5679
152
+ foxes/models/wake_models/wind/turbopark.py,sha256=Lyfky7yn-om8gw2LAfg9rO8GFvpikPI-zVzf7QFuX5M,13685
153
+ foxes/models/wake_superpositions/__init__.py,sha256=cvXOd2PpPh93_wZTXLwwmdcoinjNvRE3XgwbbdLOJRA,313
154
+ foxes/models/wake_superpositions/ti_linear.py,sha256=z0lKHlVoU7QAdLuAl4pbjScmdJQ3HWmUphXw9zs0Ulw,3736
155
+ foxes/models/wake_superpositions/ti_max.py,sha256=ewbzN0maJ94EvwN9_N8r2Xqsw62HmwHe_rDC_BRWzUM,3761
156
+ foxes/models/wake_superpositions/ti_pow.py,sha256=6YChhIYOE1cFzKRL9HAT5dQGMageih4y42FENt2VB7I,3940
157
+ foxes/models/wake_superpositions/ti_quadratic.py,sha256=i0seLIHGxPiQMv1EzTs7hxdaYGDmmWEiCEf4CecBGzo,3751
158
+ foxes/models/wake_superpositions/ws_linear.py,sha256=pjFgE8hJA_OfRBOXAZNTlfVn-u6rY8IrHh2lpAr-CfA,4759
159
+ foxes/models/wake_superpositions/ws_max.py,sha256=Uba8UTDNLnyPUm4KwiFRuyvIjeb1KxcYuY9wlMrB8M8,4884
160
+ foxes/models/wake_superpositions/ws_pow.py,sha256=Q2XXq0WwFzdgyjnoPFHIMF9NykiNRi9tOah0vpk_15w,4958
161
+ foxes/models/wake_superpositions/ws_product.py,sha256=IW15CS0rCOrOBeBiFNdRAMdvWsZZhQ7e1sPvLN6AZwI,4465
162
+ foxes/models/wake_superpositions/ws_quadratic.py,sha256=kV4gQNQsbvsT6tb2FlmH9R33wyLntBffSQ-NpobVj8I,4780
159
163
  foxes/opt/__init__.py,sha256=dqMMJg0aF14ppue0oszl2d6g1MxokMH2nB3Xs3vEfhU,171
160
164
  foxes/opt/constraints/__init__.py,sha256=oaHVJVVyz_4mLoIX4AFeWWRMKbY_HkcW7sWbSjuS68Y,158
161
165
  foxes/opt/constraints/area_geometry.py,sha256=9TFsyuM8_pp3HEUV4N0w0KnhxOk0OLPMKd6ZvNQGC80,6156
@@ -182,30 +186,40 @@ foxes/opt/problems/layout/geom_layouts/geom_layout_gridded.py,sha256=7vXKVkPOHj2
182
186
  foxes/opt/problems/layout/geom_layouts/geom_reggrid.py,sha256=muAquvY_VFNwh-dZ-pJ290X-91a87IW5sQQwUu86PZg,10104
183
187
  foxes/opt/problems/layout/geom_layouts/geom_reggrids.py,sha256=uKkmqENXniZFA-XpCYCw6F6CN1TP13ZRSaoO3jt3hGY,14222
184
188
  foxes/opt/problems/layout/geom_layouts/objectives.py,sha256=sz_zbE_RVtnwStCNu-KdDkM6Lm_Tbjz4oMq7iKi8COM,17858
185
- foxes/output/__init__.py,sha256=gthJJGb6M_In4vRzikNeG93mOmmB9c-0bzT8EKq_wrM,448
189
+ foxes/output/__init__.py,sha256=N3ZKWr6Ky_VkektmrveAyNsHpeyQg_374-qbQCLSanI,576
186
190
  foxes/output/animation.py,sha256=zljekg6k2DjqVaBw0OamB4i3eopi6g2j0a12B9hx7VQ,2637
191
+ foxes/output/calc_points.py,sha256=kK7kILGEPLoCNN14MFuWT42LP6qkJWnlWJJ6sytTEtQ,4589
187
192
  foxes/output/farm_layout.py,sha256=R6kpih6e_VIKYFNzvFCQLVAcTNz1ac3oz_4a5O01tp8,10941
188
193
  foxes/output/farm_results_eval.py,sha256=FyO6SN_cHs-gMRkyKdcklvUW5s7AfdUIpZaCNelEZeg,17662
189
- foxes/output/output.py,sha256=hmwx6_ELiERnzrGl_DaNy3Ok7J0UCl6fZjob9WkwYAA,2204
190
- foxes/output/results_writer.py,sha256=7eyCRyRZ7wngx-p4w7PdfND-xQKRYYwt-XP0ZMmlfjQ,2662
194
+ foxes/output/grids.py,sha256=hYdKCHnMiYVekYCyeLVVP2jccbTwK436dA22MTsr3-I,19897
195
+ foxes/output/output.py,sha256=N8Ny3vA4efpjcWNkpFEcUc-3D_mXzU6vEiaIFtif5TI,3491
196
+ foxes/output/results_writer.py,sha256=GBsV2mdXL9a4_urIBMH3kPB7s-oCKPe3LqKvGtvqob4,5634
191
197
  foxes/output/rose_plot.py,sha256=8ntkahEzLG7-SaHenuAxYYQ5tu_s-3MaVZLIaTtpoIw,12005
198
+ foxes/output/round.py,sha256=s8YcXciCtaMY14SnG3ebYccyjQ2IEln256SwN9oJnPI,351
199
+ foxes/output/slice_data.py,sha256=eoDLQTG55fHeyY85mUz7Tdz9ZECBw31cyloO5ero7Ec,29760
192
200
  foxes/output/state_turbine_map.py,sha256=mH5pJdw0LORftJ_gHxiuOM6aRosRJ3nWqeYab4QAdxg,2421
193
201
  foxes/output/turbine_type_curves.py,sha256=JmRvCJZboZtuUA1e66IUODbWtC3-bKrTVPTjj1p-xfQ,5514
194
- foxes/output/flow_plots_2d/__init__.py,sha256=llzVADTeEjpd7gtH9nvDch38Cu7Lzm0pMMvzVrtZcVc,92
195
- foxes/output/flow_plots_2d/common.py,sha256=D9ijH0p7FDGzvPMjJ8cx42eUL2EW2eIQra3M2Ka2heA,15993
196
- foxes/output/flow_plots_2d/flow_plots.py,sha256=1PvMs2rFZMNSrb0mHhAO9qDmb5SUeT2Y2_NRc0vIUvc,33736
197
- foxes/output/flow_plots_2d/seq_flow_ani_plugin.py,sha256=E5BWEXEZiwb7ju32ONzerJOpaUdQMOkld-Hez7SuEwM,2395
198
- foxes/utils/__init__.py,sha256=1hZgQd5uG-3sVMuuwL_jk9d1cUvp-DBfEkTwfkX6BrU,512
202
+ foxes/output/flow_plots_2d/__init__.py,sha256=2d4RyQYPOYr-HiBCbp1swSPG4Nf3NGezTr5LmvtkGA4,121
203
+ foxes/output/flow_plots_2d/common.py,sha256=7FxbCeWrIz6uoR05FMXlKtEPC9QNpw6F-QAeB5CPYu0,18974
204
+ foxes/output/flow_plots_2d/flow_plots.py,sha256=t8cWLf-MXwhYMBxKmi8N-IFyEMupEnaBtr9MX4qmeQ0,24558
205
+ foxes/output/flow_plots_2d/get_fig.py,sha256=6GvhuxqmoFLBYTkLUTI4C53yhBE4Src65YibPY-Ufy0,4248
206
+ foxes/output/flow_plots_2d/seq_flow_ani_plugin.py,sha256=GuGFnFGWymWMDzgVIgV4Z07sba5BVtLaCF_lYnnnnlY,2363
207
+ foxes/utils/__init__.py,sha256=N3jPeShzcVyVyyDTJMmbQahHBrBJ29ukixjafHkWsZU,578
199
208
  foxes/utils/cubic_roots.py,sha256=u2Pf-yHZ6EASpFONMfkv0mvldmd1E1VRZxj69YabDoc,3321
200
209
  foxes/utils/data_book.py,sha256=DgxusriNH-fhHNN_v6TY3QWcAnrAcw20Wgz7lDfbMeg,5302
201
210
  foxes/utils/dict.py,sha256=s922OY22wOKBMbzQ_g-T-MhEw1dga0d3CCwFwd0nI78,886
211
+ foxes/utils/exec_python.py,sha256=9XsSvSJ1p_s3dF_y8kjVwjsb4gvwr4jzkytNCQyRCN4,1683
202
212
  foxes/utils/geopandas_helpers.py,sha256=inVQHMco6Op7YN3VFH1DGAJZWREuveJUS7gyoRudw2A,7895
213
+ foxes/utils/geopandas_utils.py,sha256=inVQHMco6Op7YN3VFH1DGAJZWREuveJUS7gyoRudw2A,7895
203
214
  foxes/utils/load.py,sha256=rR04QsJ8MTzTgyDPTHPYpllFHAzWtrR8QuAXYZ1SiBc,781
204
215
  foxes/utils/pandas_helpers.py,sha256=iFijkt7GfsWYhP9Cn92zg8Wj-BPaihJfmYBXTddQQc4,4627
216
+ foxes/utils/pandas_utils.py,sha256=5r3RHjaGu-Vi7DGMBdCDxVeu9nZk46wtPlHRL4l_R_c,4630
205
217
  foxes/utils/plotly_helpers.py,sha256=MHwyKGjajkgwcF2kDUMT6Midd-GCw3dChMvXBqLw5YY,369
218
+ foxes/utils/plotly_utils.py,sha256=MHwyKGjajkgwcF2kDUMT6Midd-GCw3dChMvXBqLw5YY,369
206
219
  foxes/utils/subclasses.py,sha256=bnlZaLgGjq9cQC9dvsxahUmLQQlSmmun35TjWYyX9CA,380
207
220
  foxes/utils/two_circles.py,sha256=xkj-SA_x-VXY7KtmSU4lcV4gFdplyhU3sBAC9vTdkF4,2810
208
221
  foxes/utils/wind_dir.py,sha256=7Ve8_SmKpzm-SUCo-4RdtN8ocinpPXmX1xvXhCLDrmM,2825
222
+ foxes/utils/xarray_utils.py,sha256=FOBaXB9KEM5cF8-1Jgdgtpwgmrq8mzKCZpPebtUzobY,1185
209
223
  foxes/utils/abl/__init__.py,sha256=1K5OXF9ZCe9duOYKqDiHbXvfV7QEBpqbGVJnUhQ7xwQ,134
210
224
  foxes/utils/abl/neutral.py,sha256=rBfuUDTCGzNb19oM_dZb7LJ3m26rWzfEw9MjPiASpK0,1358
211
225
  foxes/utils/abl/sheared.py,sha256=nS6gxa5cR7B7XcZbEk3rwOvbF6m4cinXAIhhn9gGBBs,446
@@ -220,9 +234,9 @@ foxes/utils/geom2d/half_plane.py,sha256=kzZD6pkZxZ03MK9WAboWzXb5Ws5dWLQY9GIahD4D
220
234
  foxes/utils/geom2d/polygon.py,sha256=8ASfy7No_-Pt_xDSeNsDtLEkCjBWsNZK8nIxDQtqeOE,5534
221
235
  foxes/utils/runners/__init__.py,sha256=-WL4ZmdgNYldkqhCV6dR-aXCumBrH-Ea-V1shsRhsbs,55
222
236
  foxes/utils/runners/runners.py,sha256=cQo_s4v0VRPyfLn3KDubQWDMCcirWs_IgtKMtD23CH4,6502
223
- foxes-0.5.0.2.dist-info/LICENSE,sha256=bBCH6mYTPzSepk2s2UUZ3II_ZYXrn1bnSqB85-aZHxU,1071
224
- foxes-0.5.0.2.dist-info/METADATA,sha256=2jZxeUFjJPflrXAEYcD6xrsa-dzd2NBVhjQgnZ_p5Fg,9081
225
- foxes-0.5.0.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
226
- foxes-0.5.0.2.dist-info/top_level.txt,sha256=B4spGR6JHsVHz7CEXsa68xsjYalAA70nBwHa1gfyRHc,6
227
- foxes-0.5.0.2.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
228
- foxes-0.5.0.2.dist-info/RECORD,,
237
+ foxes-0.5.2.dist-info/LICENSE,sha256=bBCH6mYTPzSepk2s2UUZ3II_ZYXrn1bnSqB85-aZHxU,1071
238
+ foxes-0.5.2.dist-info/METADATA,sha256=zTweHEB9d1zbVo2MQXGrQGRj3NAzw3JXbpamIm5emig,9079
239
+ foxes-0.5.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
240
+ foxes-0.5.2.dist-info/top_level.txt,sha256=B4spGR6JHsVHz7CEXsa68xsjYalAA70nBwHa1gfyRHc,6
241
+ foxes-0.5.2.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
242
+ foxes-0.5.2.dist-info/RECORD,,
@@ -1,242 +0,0 @@
1
- import numpy as np
2
- import numbers
3
-
4
- from foxes.core import WakeSuperposition
5
- import foxes.variables as FV
6
- import foxes.constants as FC
7
-
8
-
9
- class LinearSuperposition(WakeSuperposition):
10
- """
11
- Linear supersposition of wake model results,
12
- optionally rescaled.
13
-
14
- Attributes
15
- ----------
16
- scalings: dict or number or str
17
- The scaling rules
18
- lim_low: dict
19
- Lower limits of the final wake deltas. Key: variable str,
20
- value: float
21
- lim_high: dict
22
- Higher limits of the final wake deltas. Key: variable str,
23
- value: float
24
- svars: list of str
25
- The scaling vafriables
26
-
27
- :group: models.wake_superpositions
28
-
29
- """
30
-
31
- def __init__(self, scalings, lim_low=None, lim_high=None, svars=None):
32
- """
33
- Constructor.
34
-
35
- Parameters
36
- ----------
37
- scalings: dict or number or str
38
- Scaling rules. If `dict`, key: variable name str,
39
- value: number or str. If `str`:
40
- - `source_turbine`: Scale by source turbine value of variable
41
- - `source_turbine_amb`: Scale by source turbine ambient value of variable
42
- - `source_turbine_<var>`: Scale by source turbine value of variable <var>
43
- lim_low: dict, optional
44
- Lower limits of the final wake deltas. Key: variable str,
45
- value: float
46
- lim_high: dict, optional
47
- Higher limits of the final wake deltas. Key: variable str,
48
- value: float
49
- svars: list of str, optional
50
- The scaling vafriables
51
-
52
- """
53
- super().__init__()
54
-
55
- self.scalings = scalings
56
- self.lim_low = lim_low
57
- self.lim_high = lim_high
58
- self.svars = svars
59
-
60
- def input_farm_vars(self, algo):
61
- """
62
- The variables which are needed for running
63
- the model.
64
-
65
- Parameters
66
- ----------
67
- algo: foxes.core.Algorithm
68
- The calculation algorithm
69
-
70
- Returns
71
- -------
72
- input_vars: list of str
73
- The input variable names
74
-
75
- """
76
- if self.svars is not None:
77
- return self.svars
78
- elif isinstance(self.scalings, dict):
79
- return list(self.scalings.keys())
80
- elif (
81
- isinstance(self.scalings, str)
82
- and len(self.scalings) > 15
83
- and self.scalings[:15] == "source_turbine_"
84
- ):
85
- return [self.scalings[15:]]
86
- else:
87
- raise ValueError(
88
- f"{self.name}: Unable to determine scaling variable for scaling = '{self.scalings}'"
89
- )
90
-
91
- def _get_scale(
92
- self, algo, mdata, fdata, pdata, variable, sel_sp, states_source_turbine
93
- ):
94
- """Helper function that determines the scale"""
95
-
96
- if isinstance(self.scalings, dict):
97
- try:
98
- scaling = self.scalings[variable]
99
- except KeyError:
100
- raise KeyError(
101
- f"Model '{self.name}': No scaling found for wake variable '{variable}'"
102
- )
103
- else:
104
- scaling = self.scalings
105
-
106
- if scaling is None:
107
- return 1
108
-
109
- elif isinstance(scaling, numbers.Number):
110
- return scaling
111
-
112
- elif variable == FV.WD:
113
- return 1
114
-
115
- elif (
116
- isinstance(scaling, str)
117
- and len(scaling) >= 14
118
- and (
119
- scaling == f"source_turbine"
120
- or scaling == "source_turbine_amb"
121
- or (len(scaling) > 15 and scaling[14] == "_")
122
- )
123
- ):
124
- if scaling == f"source_turbine":
125
- var = variable
126
- elif scaling == "source_turbine_amb":
127
- var = FV.var2amb[variable]
128
- else:
129
- var = scaling[15:]
130
-
131
- return self.get_data(
132
- var,
133
- FC.STATE_POINT,
134
- lookup="w",
135
- fdata=fdata,
136
- pdata=pdata,
137
- algo=algo,
138
- states_source_turbine=states_source_turbine,
139
- )[sel_sp]
140
-
141
- else:
142
- raise ValueError(
143
- f"Model '{self.name}': Invalid scaling choice '{scaling}' for wake variable '{variable}', valid choices: None, <scalar>, 'source_turbine', 'source_turbine_amb', 'source_turbine_<var>'"
144
- )
145
-
146
- def calc_wakes_plus_wake(
147
- self,
148
- algo,
149
- mdata,
150
- fdata,
151
- pdata,
152
- states_source_turbine,
153
- sel_sp,
154
- variable,
155
- wake_delta,
156
- wake_model_result,
157
- ):
158
- """
159
- Add a wake delta to previous wake deltas.
160
-
161
- Parameters
162
- ----------
163
- algo: foxes.core.Algorithm
164
- The calculation algorithm
165
- mdata: foxes.core.Data
166
- The model data
167
- fdata: foxes.core.Data
168
- The farm data
169
- pdata: foxes.core.Data
170
- The evaluation point data
171
- states_source_turbine: numpy.ndarray
172
- For each state, one turbine index for the
173
- wake causing turbine. Shape: (n_states,)
174
- sel_sp: numpy.ndarray of bool
175
- The selection of points, shape: (n_states, n_points)
176
- variable: str
177
- The variable name for which the wake deltas applies
178
- wake_delta: numpy.ndarray
179
- The original wake deltas, shape: (n_states, n_points)
180
- wake_model_result: numpy.ndarray
181
- The new wake deltas of the selected points,
182
- shape: (n_sel_sp,)
183
-
184
- Returns
185
- -------
186
- wdelta: numpy.ndarray
187
- The updated wake deltas, shape: (n_states, n_points)
188
-
189
- """
190
- if np.any(sel_sp):
191
- scale = self._get_scale(
192
- algo, mdata, fdata, pdata, variable, sel_sp, states_source_turbine
193
- )
194
-
195
- wake_delta[sel_sp] += scale * wake_model_result
196
-
197
- return wake_delta
198
-
199
- def calc_final_wake_delta(
200
- self,
201
- algo,
202
- mdata,
203
- fdata,
204
- pdata,
205
- variable,
206
- amb_results,
207
- wake_delta,
208
- ):
209
- """
210
- Calculate the final wake delta after adding all
211
- contributions.
212
-
213
- Parameters
214
- ----------
215
- algo: foxes.core.Algorithm
216
- The calculation algorithm
217
- mdata: foxes.core.Data
218
- The model data
219
- fdata: foxes.core.Data
220
- The farm data
221
- pdata: foxes.core.Data
222
- The evaluation point data
223
- variable: str
224
- The variable name for which the wake deltas applies
225
- amb_results: numpy.ndarray
226
- The ambient results, shape: (n_states, n_points)
227
- wake_delta: numpy.ndarray
228
- The wake deltas, shape: (n_states, n_points)
229
-
230
- Returns
231
- -------
232
- final_wake_delta: numpy.ndarray
233
- The final wake delta, which will be added to the ambient
234
- results by simple plus operation. Shape: (n_states, n_points)
235
-
236
- """
237
- w = wake_delta
238
- if self.lim_low is not None and variable in self.lim_low:
239
- w = np.maximum(w, self.lim_low[variable] - amb_results)
240
- if self.lim_high is not None and variable in self.lim_high:
241
- w = np.minimum(w, self.lim_high[variable] - amb_results)
242
- return w