foxes 0.5.1__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.
- foxes/VERSION +1 -1
- foxes/algorithms/downwind/downwind.py +41 -46
- foxes/algorithms/downwind/models/point_wakes_calc.py +4 -9
- foxes/algorithms/downwind/models/set_amb_point_results.py +5 -22
- foxes/core/algorithm.py +1 -1
- foxes/core/data_calc_model.py +26 -2
- foxes/core/partial_wakes_model.py +1 -1
- foxes/core/rotor_model.py +36 -2
- foxes/core/turbine_model.py +36 -0
- foxes/core/turbine_type.py +35 -1
- foxes/core/wake_frame.py +39 -3
- foxes/core/wake_model.py +36 -0
- foxes/models/model_book.py +132 -85
- foxes/models/turbine_models/rotor_centre_calc.py +1 -2
- foxes/models/turbine_types/CpCt_file.py +13 -3
- foxes/models/turbine_types/CpCt_from_two.py +14 -4
- foxes/models/vertical_profiles/abl_log_neutral_ws.py +32 -5
- foxes/models/vertical_profiles/abl_log_stable_ws.py +32 -4
- foxes/models/vertical_profiles/abl_log_unstable_ws.py +32 -4
- foxes/models/vertical_profiles/abl_log_ws.py +50 -18
- foxes/models/wake_frames/yawed_wakes.py +15 -9
- foxes/models/wake_models/induction/__init__.py +1 -1
- foxes/models/wake_models/induction/rankine_half_body.py +33 -7
- foxes/models/wake_models/ti/crespo_hernandez.py +6 -1
- foxes/models/wake_models/ti/iec_ti.py +5 -3
- foxes/models/wake_models/wind/__init__.py +2 -2
- foxes/models/wake_models/wind/{bastankhah.py → bastankhah14.py} +11 -14
- foxes/models/wake_models/wind/{porte_agel.py → bastankhah16.py} +24 -16
- foxes/models/wake_models/wind/turbopark.py +11 -22
- foxes/models/wake_superpositions/__init__.py +9 -5
- foxes/models/wake_superpositions/ti_linear.py +134 -0
- foxes/models/wake_superpositions/ti_max.py +134 -0
- foxes/models/wake_superpositions/{ti_superp.py → ti_pow.py} +15 -57
- foxes/models/wake_superpositions/ti_quadratic.py +134 -0
- foxes/models/wake_superpositions/ws_linear.py +170 -0
- foxes/models/wake_superpositions/ws_max.py +173 -0
- foxes/models/wake_superpositions/ws_pow.py +175 -0
- foxes/models/wake_superpositions/{product.py → ws_product.py} +43 -22
- foxes/models/wake_superpositions/ws_quadratic.py +170 -0
- foxes/output/__init__.py +4 -0
- foxes/output/calc_points.py +143 -0
- foxes/output/flow_plots_2d/__init__.py +1 -0
- foxes/output/flow_plots_2d/common.py +104 -1
- foxes/output/flow_plots_2d/flow_plots.py +237 -569
- foxes/output/flow_plots_2d/get_fig.py +183 -0
- foxes/output/flow_plots_2d/seq_flow_ani_plugin.py +0 -1
- foxes/output/grids.py +705 -0
- foxes/output/output.py +58 -11
- foxes/output/results_writer.py +101 -17
- foxes/output/round.py +10 -0
- foxes/output/slice_data.py +900 -0
- foxes/utils/__init__.py +5 -3
- foxes/utils/exec_python.py +56 -0
- foxes/utils/geopandas_utils.py +294 -0
- foxes/utils/pandas_utils.py +175 -0
- foxes/utils/plotly_utils.py +19 -0
- foxes/utils/xarray_utils.py +38 -0
- {foxes-0.5.1.dist-info → foxes-0.5.2.dist-info}/METADATA +1 -1
- {foxes-0.5.1.dist-info → foxes-0.5.2.dist-info}/RECORD +63 -49
- foxes/models/wake_superpositions/linear.py +0 -242
- foxes/models/wake_superpositions/max.py +0 -258
- foxes/models/wake_superpositions/quadratic.py +0 -252
- {foxes-0.5.1.dist-info → foxes-0.5.2.dist-info}/LICENSE +0 -0
- {foxes-0.5.1.dist-info → foxes-0.5.2.dist-info}/WHEEL +0 -0
- {foxes-0.5.1.dist-info → foxes-0.5.2.dist-info}/top_level.txt +0 -0
- {foxes-0.5.1.dist-info → foxes-0.5.2.dist-info}/zip-safe +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
foxes/VERSION,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
39
|
-
foxes/core/turbine_type.py,sha256=
|
|
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=
|
|
42
|
-
foxes/core/wake_model.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
116
|
-
foxes/models/turbine_types/CpCt_from_two.py,sha256=
|
|
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
|
|
125
|
-
foxes/models/vertical_profiles/abl_log_stable_ws.py,sha256=
|
|
126
|
-
foxes/models/vertical_profiles/abl_log_unstable_ws.py,sha256=
|
|
127
|
-
foxes/models/vertical_profiles/abl_log_ws.py,sha256=
|
|
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=
|
|
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=
|
|
144
|
-
foxes/models/wake_models/induction/rankine_half_body.py,sha256=
|
|
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=
|
|
147
|
-
foxes/models/wake_models/ti/iec_ti.py,sha256=
|
|
148
|
-
foxes/models/wake_models/wind/__init__.py,sha256=
|
|
149
|
-
foxes/models/wake_models/wind/
|
|
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/
|
|
152
|
-
foxes/models/
|
|
153
|
-
foxes/models/wake_superpositions/
|
|
154
|
-
foxes/models/wake_superpositions/
|
|
155
|
-
foxes/models/wake_superpositions/
|
|
156
|
-
foxes/models/wake_superpositions/
|
|
157
|
-
foxes/models/wake_superpositions/
|
|
158
|
-
foxes/models/wake_superpositions/
|
|
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=
|
|
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/
|
|
190
|
-
foxes/output/
|
|
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=
|
|
195
|
-
foxes/output/flow_plots_2d/common.py,sha256=
|
|
196
|
-
foxes/output/flow_plots_2d/flow_plots.py,sha256=
|
|
197
|
-
foxes/output/flow_plots_2d/
|
|
198
|
-
foxes/
|
|
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.
|
|
224
|
-
foxes-0.5.
|
|
225
|
-
foxes-0.5.
|
|
226
|
-
foxes-0.5.
|
|
227
|
-
foxes-0.5.
|
|
228
|
-
foxes-0.5.
|
|
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
|