foxes 0.7.1__py3-none-any.whl → 0.7.3__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (66) hide show
  1. foxes/VERSION +1 -1
  2. foxes/algorithms/downwind/downwind.py +60 -46
  3. foxes/algorithms/downwind/models/farm_wakes_calc.py +17 -6
  4. foxes/algorithms/downwind/models/point_wakes_calc.py +13 -45
  5. foxes/algorithms/iterative/iterative.py +1 -1
  6. foxes/algorithms/iterative/models/farm_wakes_calc.py +18 -4
  7. foxes/constants.py +5 -0
  8. foxes/core/__init__.py +2 -1
  9. foxes/core/ground_model.py +254 -0
  10. foxes/core/model.py +3 -2
  11. foxes/core/partial_wakes_model.py +19 -3
  12. foxes/core/states.py +33 -0
  13. foxes/core/wake_model.py +138 -2
  14. foxes/data/__init__.py +1 -1
  15. foxes/data/states/WRF-Timeseries-3000.nc +0 -0
  16. foxes/data/states/windio_timeseries_5000.nc +0 -0
  17. foxes/data/static_data.py +7 -0
  18. foxes/data/windio/DTU_10MW_turbine.yaml +10 -0
  19. foxes/data/windio/__init__.py +0 -0
  20. foxes/data/windio/windio_5turbines_timeseries.yaml +63 -0
  21. foxes/input/states/__init__.py +1 -0
  22. foxes/input/states/multi_height.py +225 -6
  23. foxes/input/windio/__init__.py +6 -1
  24. foxes/input/windio/get_states.py +115 -0
  25. foxes/input/windio/read_attributes.py +321 -0
  26. foxes/input/windio/read_farm.py +163 -0
  27. foxes/input/windio/read_fields.py +164 -0
  28. foxes/input/windio/runner.py +105 -0
  29. foxes/input/windio/windio.py +136 -254
  30. foxes/models/__init__.py +2 -1
  31. foxes/models/ground_models/__init__.py +2 -0
  32. foxes/models/ground_models/no_ground.py +12 -0
  33. foxes/models/ground_models/wake_mirror.py +161 -0
  34. foxes/models/model_book.py +114 -164
  35. foxes/models/partial_wakes/axiwake.py +27 -4
  36. foxes/models/partial_wakes/top_hat.py +26 -4
  37. foxes/models/turbine_types/PCt_file.py +1 -0
  38. foxes/models/turbine_types/PCt_from_two.py +92 -0
  39. foxes/models/wake_frames/yawed_wakes.py +41 -38
  40. foxes/models/wake_models/__init__.py +0 -1
  41. foxes/models/wake_models/induction/__init__.py +1 -0
  42. foxes/models/wake_models/induction/rankine_half_body.py +1 -1
  43. foxes/models/wake_models/induction/vortex_sheet.py +227 -0
  44. foxes/models/wake_models/ti/crespo_hernandez.py +26 -24
  45. foxes/models/wake_models/ti/iec_ti.py +33 -26
  46. foxes/models/wake_models/wind/bastankhah14.py +11 -32
  47. foxes/models/wake_models/wind/bastankhah16.py +30 -34
  48. foxes/models/wake_models/wind/jensen.py +13 -29
  49. foxes/models/wake_models/wind/turbopark.py +31 -61
  50. foxes/models/wake_superpositions/ws_max.py +1 -0
  51. foxes/models/wake_superpositions/ws_pow.py +1 -0
  52. foxes/models/wake_superpositions/ws_quadratic.py +1 -0
  53. foxes/output/grids.py +6 -6
  54. foxes/output/output.py +6 -6
  55. foxes/utils/__init__.py +1 -1
  56. foxes/utils/factory.py +284 -76
  57. {foxes-0.7.1.dist-info → foxes-0.7.3.dist-info}/METADATA +8 -6
  58. {foxes-0.7.1.dist-info → foxes-0.7.3.dist-info}/RECORD +65 -51
  59. {foxes-0.7.1.dist-info → foxes-0.7.3.dist-info}/WHEEL +1 -1
  60. foxes/models/wake_models/wake_mirror.py +0 -196
  61. /foxes/models/{axial_induction_models → axial_induction}/__init__.py +0 -0
  62. /foxes/models/{axial_induction_models → axial_induction}/betz.py +0 -0
  63. /foxes/models/{axial_induction_models → axial_induction}/madsen.py +0 -0
  64. {foxes-0.7.1.dist-info → foxes-0.7.3.dist-info}/LICENSE +0 -0
  65. {foxes-0.7.1.dist-info → foxes-0.7.3.dist-info}/top_level.txt +0 -0
  66. {foxes-0.7.1.dist-info → foxes-0.7.3.dist-info}/zip-safe +0 -0
@@ -1,29 +1,29 @@
1
- foxes/VERSION,sha256=kCMRx7s4-hZY_0A972FY7nN4_p1uLihPocOHNcMb0ws,6
1
+ foxes/VERSION,sha256=nHiKg43B9r_YD6OXV6lflCYAccNQEcmgUwHaHHNQdlc,6
2
2
  foxes/__init__.py,sha256=4ptDOBaQC8fAd_ZH5XH7d5pIgx3JXEY9xLcK3Nrs2Ow,718
3
- foxes/constants.py,sha256=UfflqHQ67uSQYFFktZBSe6rrWntoL2ccpMHnKs7zTcA,2650
3
+ foxes/constants.py,sha256=RDRD9ZkKeq-VXV6Zb1Y-QuZYw0voQezalbUaxprAnq0,2713
4
4
  foxes/variables.py,sha256=I-S25WejH33ffOcVnmN2TDL1pIxWqg0aM1lhIBwZ9NQ,4454
5
5
  foxes/algorithms/__init__.py,sha256=uaXU8OYMT3eclcE6a2b8NkozHVXoM1BF5RJA2XR4DUw,260
6
6
  foxes/algorithms/downwind/__init__.py,sha256=lyygq5GMc6NAPmH0b0mhGeccWyuC8JTOEMZl-UlmE5M,53
7
- foxes/algorithms/downwind/downwind.py,sha256=W2W1ftPTnfNroBSskbBbSYZSXM0_wSfTrye8wXmfu7k,21652
7
+ foxes/algorithms/downwind/downwind.py,sha256=o8d2HZW5m2NDVKhS0uWLhEuyGMuY9CPI5fM-RqBh79U,21862
8
8
  foxes/algorithms/downwind/models/__init__.py,sha256=0ov8rjIQ02w3iB6yYCxaswPvHDlPM_8_di6xPh1TTkQ,300
9
- foxes/algorithms/downwind/models/farm_wakes_calc.py,sha256=nRE_lCwrlVYB9zXJ0XR557IncNb6M7tUbhN9kBPgw_c,5178
9
+ foxes/algorithms/downwind/models/farm_wakes_calc.py,sha256=-O-0hpDYFnR15yaK3GNNd8G_4gNwRZ8pmnam94dANJQ,5535
10
10
  foxes/algorithms/downwind/models/init_farm_data.py,sha256=sTUMYGLU9iHr56prdNRR4cs0yuCFp7gqiCDut685HKM,4022
11
- foxes/algorithms/downwind/models/point_wakes_calc.py,sha256=RHW-VNOjwx8OoZkFLTybVgOmQzjM00LFK2ZxZVE1BIM,5394
11
+ foxes/algorithms/downwind/models/point_wakes_calc.py,sha256=cUIQ439fKF_wLP2AH1uuQe9bWdyq6O5StsJviwIHvuA,4548
12
12
  foxes/algorithms/downwind/models/reorder_farm_output.py,sha256=4BjIQ1bYDiZi5LzPpv5dokEr0T2DqOpXRdZYiPa5bgI,2041
13
13
  foxes/algorithms/downwind/models/set_amb_farm_results.py,sha256=_hBlSnlD1MYzQ2HV6eEXREaLsj4CKsxI4hr9LFFi-qc,1734
14
14
  foxes/algorithms/downwind/models/set_amb_point_results.py,sha256=s72ARemcWCY1UsbZ1jxT1QRJpAbLhd40-RLP4yZgXgY,2219
15
15
  foxes/algorithms/iterative/__init__.py,sha256=Je445cHtS2ERc-dywjhxWttKzdEyHM8JLxPcW5JFtl8,137
16
- foxes/algorithms/iterative/iterative.py,sha256=Up1DaJJD1J0B_DxnnVAASj1cUvgk2_btMieS6KooGc8,9145
16
+ foxes/algorithms/iterative/iterative.py,sha256=Mgbs6v69o5HePbOxwTl85hLxfA1C91u0iWfLdkEpe2A,9148
17
17
  foxes/algorithms/iterative/models/__init__.py,sha256=3lMBUOzq5bKNQBGoV8byVQ7_Keyk1GfwFZDUwaafGsg,152
18
18
  foxes/algorithms/iterative/models/convergence.py,sha256=5fCeTMisYEhgvPRbLKMK0XYsSSr2xWqqzB-pUBrIjYk,6466
19
- foxes/algorithms/iterative/models/farm_wakes_calc.py,sha256=BZIt8QcPBYnFnCC-tF_PW5N6P-JRYCKHdaBCf-Xxn2g,4385
19
+ foxes/algorithms/iterative/models/farm_wakes_calc.py,sha256=nXFR8c1jZw6Q4ewYJlvDvPf8O3Za2W1hNVze410f7UI,4762
20
20
  foxes/algorithms/iterative/models/urelax.py,sha256=wYRHeeKsgCWMmOJ2YnbgUB79VI-D6ceTwEndvvtKBes,2078
21
21
  foxes/algorithms/sequential/__init__.py,sha256=2o05IH9XePnqxNEAn2Fr1qiCM6OooqmH2VtmdJXtK0c,94
22
22
  foxes/algorithms/sequential/sequential.py,sha256=PeQ8j2TuZT2KuxOZTvN4iNoZVT6lYQCcahk2lMprWx8,16242
23
23
  foxes/algorithms/sequential/models/__init__.py,sha256=OneaRLxMPzVWLKL9cR3JIYHojfzVX_CQaPv-LP6mCZI,69
24
24
  foxes/algorithms/sequential/models/plugin.py,sha256=9xa5mUp72gX3rAsdqM76Dibky0jA-gmYO2J4oBNoiHA,1326
25
25
  foxes/algorithms/sequential/models/seq_state.py,sha256=AB2Mf4WbbL9iDN_3mP4nTi44R6G4Gf_-At0ZlicXgrY,3656
26
- foxes/core/__init__.py,sha256=8ghJGFD6wilv7epUpG5wJtqkzeaIu8QGdxY8uorytdc,911
26
+ foxes/core/__init__.py,sha256=2NPeoNWCJx5-Q77TlXDmnSxmzf9gaQEx1JTWIHOWeT4,956
27
27
  foxes/core/algorithm.py,sha256=JIvEuoxf25lnZLX8fze2JSYT73KFirzmp6yfrJMa_x0,15169
28
28
  foxes/core/axial_induction_model.py,sha256=U7g8vmdKBS4xVYXVpD-uNDnKUnpFXccRTWB5LOPDGaY,498
29
29
  foxes/core/data.py,sha256=KjRS5fXaYMeNw_cAaBYarJTX7qCNQJbHDSDWPGLB_70,14581
@@ -31,22 +31,23 @@ foxes/core/data_calc_model.py,sha256=Xtt9-QQes0Y3XFfUcPysB-5YtMbk74ooyatJNUYYjMg
31
31
  foxes/core/farm_controller.py,sha256=8VmqM4uaQ3k8pkMllOJ-MC27P2dHMJUCzhmROMLtlN4,12199
32
32
  foxes/core/farm_data_model.py,sha256=IwlHg10H4mSXHbU5vdfAS7FyvY8kVwArTfaijQHlKLU,6953
33
33
  foxes/core/farm_model.py,sha256=ogFahCjC2dIBcjnCMmy0cTGulKTDA2ufFUzODf0-KnI,265
34
- foxes/core/model.py,sha256=d2B2NjDc1EDLZeAxK_jbB6HAzD2rAi5IKhAldpS3yQ4,17275
35
- foxes/core/partial_wakes_model.py,sha256=PpDx0JWYZbXTO6dsKYVQkMzdiES_npvNlcqvS8oD4WQ,5414
34
+ foxes/core/ground_model.py,sha256=UDGTyGDi1UUmFZmgAHKMwwNbXjPBcVb8YKKqI7gJWrc,6801
35
+ foxes/core/model.py,sha256=ChnoKFkmr5oXvqhp7sIJ8etWy7TZrLI54xcx0Fn-WVI,17290
36
+ foxes/core/partial_wakes_model.py,sha256=8iC6w4TJXgeOObnAZoFKjy6ualYNbd3gLIb5P5TtVvA,5687
36
37
  foxes/core/point_data_model.py,sha256=9-9d8FCZy8rxZoGXC9MwI3fAa4XApsR8tzRCxHaanhU,6666
37
38
  foxes/core/rotor_model.py,sha256=8rvP8iVMDvFM_Dgh1stVqKy4CqiM38maRTkoQCt1PSU,12879
38
- foxes/core/states.py,sha256=XLmRgt3_UwnNz8A91k8Am5K6GVNayAWPyTjfTwJ4HFc,7281
39
+ foxes/core/states.py,sha256=2-3I62ebQCoKxye5Hyz_QT45b8PA1UwMlU_XWvbvi8s,8230
39
40
  foxes/core/turbine.py,sha256=P5qPKmV1qohZdAKW4lPiUerQkRDTxUOhsvBPQqy8mBo,3054
40
41
  foxes/core/turbine_model.py,sha256=IcsU848QNHbUhDN5oqd7VnVWKx_VM5UwRhlPsWK_njw,2049
41
42
  foxes/core/turbine_type.py,sha256=uet3SiJDqt9bPD8tq5xkq-blGV7o1Nd0lNn_2DlqOyk,3151
42
43
  foxes/core/vertical_profile.py,sha256=pgjari78N2CHZOWnidQ_7KGsSs4lTFP9isn-w6e1Yro,1642
43
44
  foxes/core/wake_frame.py,sha256=JbDWjHtZ6nSt-pSSlIsrKea4shwx_7YViZCCl9kNI_0,10239
44
- foxes/core/wake_model.py,sha256=HAnYOVvT5gWr1Gyu1CWUe7_uO0nLTdIAHzQCiFN0X-o,4497
45
+ foxes/core/wake_model.py,sha256=DjcNbEWPzgxBoW4IN5i9CGfPyuaCaJKYPoiK7ctsfC8,8054
45
46
  foxes/core/wake_superposition.py,sha256=_XRgHeIVf_g8MkudwCLAX0DcTBp4Wdy9bDJLRPqkQrM,2811
46
47
  foxes/core/wind_farm.py,sha256=COJ6iLFeU_EiYJKLzcG2f9k9z3YegHKr-NvrAS1X_ks,1708
47
- foxes/data/__init__.py,sha256=SJXiU6ynbvlhYyDg4mnwkBXyE5yWyI5QV_5HCfs1xf0,153
48
+ foxes/data/__init__.py,sha256=efVzdUkpjcgmn8nF8eLAr5HCm1Ym7YF3JomY_bXNVts,161
48
49
  foxes/data/parse.py,sha256=x71oWLyvVsMJ7XVL9VRQXZbflnTXqBaxyBdoMQdZExs,2947
49
- foxes/data/static_data.py,sha256=3_1ngRLCxBHxYAqD_kwz8_EcxlNa-RcB5Wjrx6swfwM,712
50
+ foxes/data/static_data.py,sha256=k5ey-hJWMJTjRZnW5gaEj9dayxAClOBdbM14-IpON60,858
50
51
  foxes/data/farms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
52
  foxes/data/farms/test_farm_67.csv,sha256=TwHt8NVuyP6p2G1VaM_Mi4ENBaHyg4eF6jz0zXQQDro,1872
52
53
  foxes/data/power_ct_curves/DTU-10MW-D178d3-H119.csv,sha256=71C1HTf9QtAvavYLwo6US-JmEGyiByrnvZPysua8muE,410
@@ -54,6 +55,7 @@ foxes/data/power_ct_curves/IEA-15MW-D240-H150.csv,sha256=ITmkbLIG-jsAoxg1eYgJEbx
54
55
  foxes/data/power_ct_curves/IWT-7d5MW-D164-H100.csv,sha256=K9yAhgkCZfRBKZibxKbHtWrKg5mIHnMCswdOVd2uyQ0,851
55
56
  foxes/data/power_ct_curves/NREL-5MW-D126-H90.csv,sha256=u2b6LUCCKL6bYn2lNrB02MqBnwT-veL4CCi6Km4am-E,401
56
57
  foxes/data/power_ct_curves/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ foxes/data/states/WRF-Timeseries-3000.nc,sha256=ZB1b-CTCu_yiLH4sKhQFmb47O-pOh7Ab2qyhx6P0Z5I,453633
57
59
  foxes/data/states/WRF-Timeseries-4464.csv.gz,sha256=bjZxvnVp_iyVmIhd-N9lE5TJUZQvunsuueVXu_MnLpk,427815
58
60
  foxes/data/states/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
61
  foxes/data/states/abl_states_6000.csv.gz,sha256=wzbMKNk3jZ3sRlV4aYJSv_ycncEryXaFT1uQ3oNYJSQ,126124
@@ -62,7 +64,11 @@ foxes/data/states/timeseries_3000.csv.gz,sha256=e6hkBMl2oQ0y9zy1I2uh3xyv4YyH9NbR
62
64
  foxes/data/states/timeseries_8000.csv.gz,sha256=CzayW5CtnP9Y2kxCE4jlsDZwr6G_RMfacnp17mUUQ_4,78694
63
65
  foxes/data/states/wind_rose_bremen.csv,sha256=ixSf8-_esjFsBtfT3Y92k67QrJPDx6dY3uBhOSV-hj4,4943
64
66
  foxes/data/states/wind_rotation.nc,sha256=-ZLfpxa_BJpRUABgJsK5I7c8ogAWTrYNE18un7FxhnU,10990
67
+ foxes/data/states/windio_timeseries_5000.nc,sha256=NbC55qSTSprnawc6_9NalvlM6OEk9kqE8d-tsXAKvzg,78601
65
68
  foxes/data/states/winds100.tab,sha256=X2Cw0H_-HzYEcb7ezn3ntWlKQXIxrWLNONVsrkmsof8,3061
69
+ foxes/data/windio/DTU_10MW_turbine.yaml,sha256=DAvIj0-313fgUWCygp6m96EVfr3QUUVpwjCVa430YAU,732
70
+ foxes/data/windio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
+ foxes/data/windio/windio_5turbines_timeseries.yaml,sha256=KLLpoayiqt8yRLABksbBoPbZp26-kgTwZdKIdL306Yk,1307
66
72
  foxes/input/__init__.py,sha256=qi7BB7FK71gKex5_IFD5a6pvLLLnRWQV9rYKInnpf10,126
67
73
  foxes/input/farm_layout/__init__.py,sha256=EMAA3t-lmvPdMeoll4yJzKz7adVBIpDv5TubjIbrLYk,287
68
74
  foxes/input/farm_layout/from_csv.py,sha256=jFezF0rmxolhgpWrqVvej0AjvKc4q3gJ4I09uGG7mSE,3185
@@ -72,33 +78,41 @@ foxes/input/farm_layout/from_json.py,sha256=5dzFhZdFFaReOnuCKwEmPbK5muf2TTi6AxTG
72
78
  foxes/input/farm_layout/from_random.py,sha256=6ZYKbdV6x11MbQRAHs5nVYBAG-1K295xsMXtfCfAfts,1126
73
79
  foxes/input/farm_layout/grid.py,sha256=7j3l-0rRQ3WojnVkFtuQ-bXmNOFM9ymbDCOOHYFDZ1A,1465
74
80
  foxes/input/farm_layout/row.py,sha256=RR8-vkSrxuWMZXLwyHAROhQIcbKnf0zTLH_zWHZ4gA0,1196
75
- foxes/input/states/__init__.py,sha256=ZSdmWHGE8MTnrv2_-osqkT17WYKkN65T2BgidWfAXxo,290
81
+ foxes/input/states/__init__.py,sha256=gPlMBV0z4y5AcgRKTSqbsK53hVoBJBzGNtQQleUJcMY,361
76
82
  foxes/input/states/field_data_nc.py,sha256=Y7K8gCcUeaMCVKa4C6l8IvUTR_JnhEkx3ObXRDPCo3M,18693
77
- foxes/input/states/multi_height.py,sha256=RoIPfVE80LERHYYBULhx5EMZbv6l_MmHxkILU7-gGzY,12870
83
+ foxes/input/states/multi_height.py,sha256=xkavoXC5TF_-qq19f8PMVEIgAsDkup9dB5h2ZWBgyME,20039
78
84
  foxes/input/states/scan_ws.py,sha256=jdSpylzWF8qsFuIiY8we6djdG0d7b5doh6WSslg3OnQ,4262
79
85
  foxes/input/states/single.py,sha256=6DO1lFenVJ9pjwL4I3B4tKWxcMmKSp_U4L3KqFRuqyk,5989
80
86
  foxes/input/states/states_table.py,sha256=9dq9sxR5PVjS99WRGJClB_1W8gPZ9UNi-viHKSegRR0,15373
81
87
  foxes/input/states/create/__init__.py,sha256=Ocqzmr9SOefeAvGX5DgawsPXfNdGzWOZ2ssvtqEmtAo,134
82
88
  foxes/input/states/create/random_abl_states.py,sha256=45h0a84FmeLZwxbtwtxs5kmoz8_O1_KjsyV-xTc_RoE,3333
83
89
  foxes/input/states/create/random_timeseries.py,sha256=gJpaQ4nEXxOjI4hp3xjNcVbCsmZUm-brXUxoqDb63WE,1266
84
- foxes/input/windio/__init__.py,sha256=Bj9qtJNapfvgFcjThCI_oDia2hvMKN_seNLgm5KhWhw,89
85
- foxes/input/windio/windio.py,sha256=GtUS3IpHdvb_f2WPcoutpbKNQMEZbE4Bc0U3EVfXBEQ,7948
86
- foxes/models/__init__.py,sha256=FNEKtkT75LfVkT7H9rXX2Jn_15xB1qKF-2p3_nwCzIU,413
87
- foxes/models/model_book.py,sha256=PXs0amTpouSpoMmGToGuaDaUMe4H2sI6XcZOdBXvz60,26376
88
- foxes/models/axial_induction_models/__init__.py,sha256=CdYOzu45DWu7xrzpRpFIQ6CGZIMABjjy_lqAszjj9lg,78
89
- foxes/models/axial_induction_models/betz.py,sha256=rAaq7pnu-FmfYh61BU5Af1h4_bG2AAimP4Qah1aZo88,894
90
- foxes/models/axial_induction_models/madsen.py,sha256=_-ycfh8SnIpCKWm1uwx5VH7f49FQvR0y1Nbb_U8xWyU,1403
90
+ foxes/input/windio/__init__.py,sha256=-WDFDcV-yiu_QC_0Aywm85hpxFso7BcU1WyJGgSHjWY,304
91
+ foxes/input/windio/get_states.py,sha256=2rQ3qrXbqdHoGoCsezpoS_9veajKWyTrnwtNn-FNCDo,3138
92
+ foxes/input/windio/read_attributes.py,sha256=NOrPk1pAaeEv_Chzr-wkr0lmLks9san7KiHT4S5UL3Y,11040
93
+ foxes/input/windio/read_farm.py,sha256=c0oMUPyfUGoZkaAsyuEdgFNvitU0F0pFz-Lo5ATASSE,5222
94
+ foxes/input/windio/read_fields.py,sha256=MjSyu50aAryCpsDNXp8Bp4DcA6okXNQ0EOTaJ1GV7oQ,4239
95
+ foxes/input/windio/runner.py,sha256=9yx8RKsMKFG9TjiV4z779JXy-moRfONUzqPNiLdeJJc,2861
96
+ foxes/input/windio/windio.py,sha256=r_deloAeGqVVdAasRaQJavRjsDRB6y3CnDm2SbUw-B0,4930
97
+ foxes/models/__init__.py,sha256=8eOGCieghW7ILjpkxMHzp4GN2zFF3xlKPl7Df7sMxoU,434
98
+ foxes/models/model_book.py,sha256=YF6iKJAS7HUxn-QoAWFhwcvMM1o01xHVNrrBXLmQmDE,23509
99
+ foxes/models/axial_induction/__init__.py,sha256=CdYOzu45DWu7xrzpRpFIQ6CGZIMABjjy_lqAszjj9lg,78
100
+ foxes/models/axial_induction/betz.py,sha256=rAaq7pnu-FmfYh61BU5Af1h4_bG2AAimP4Qah1aZo88,894
101
+ foxes/models/axial_induction/madsen.py,sha256=_-ycfh8SnIpCKWm1uwx5VH7f49FQvR0y1Nbb_U8xWyU,1403
91
102
  foxes/models/farm_controllers/__init__.py,sha256=oDdW_fA3GSkJBzn9Vsd3T9bBVhB9-j_IglFjYV4G2rU,72
92
103
  foxes/models/farm_controllers/basic.py,sha256=6pinNXiyfoG3apXhqQWcnxx4vN_7Q63YryXX5Z7kTE0,249
93
104
  foxes/models/farm_models/__init__.py,sha256=WoC1Cmeo5-LLdC5I_S9hwZhZOtBnWDL6azjaUTcoOuY,66
94
105
  foxes/models/farm_models/turbine2farm.py,sha256=XO6-6YGWOcbwB6z0Ttey3rQlOR7sg7ETE1sAlTqiEao,2278
106
+ foxes/models/ground_models/__init__.py,sha256=RR6p8B4jacbzcK1LwnSUqYFXi9h7Qx4RhKiTTGXKxZo,82
107
+ foxes/models/ground_models/no_ground.py,sha256=pDuHAFHHgpEVIi1spie9ooR7OG-4l8_KPrGYQhdCT3I,149
108
+ foxes/models/ground_models/wake_mirror.py,sha256=Ad9x5eYDdEjhRDzjTBkUT4DjoqYjKkvuQL1tMWy7KVQ,4324
95
109
  foxes/models/partial_wakes/__init__.py,sha256=qlV4zgjTSBfpz4dVh7DSoxCZXkaK_-dW43t8-LcDYEg,245
96
- foxes/models/partial_wakes/axiwake.py,sha256=BmZpa036sXda1QbKq4E8DeBHg4QF94LIRwnLl92PZUo,6037
110
+ foxes/models/partial_wakes/axiwake.py,sha256=Rxv3yE4YvYodEjbHzn5lzRwvVBwhm6Jvz3-e5e3FpfY,6559
97
111
  foxes/models/partial_wakes/centre.py,sha256=mIX0eiPJUFCJ82gjZCrf6ajRmJp7CgKpM7QQXiE6UEI,963
98
112
  foxes/models/partial_wakes/grid.py,sha256=SOymgn0MGvUFSAWd9YKDCzXYtizsuiNV-yP0oqrKS1E,600
99
113
  foxes/models/partial_wakes/rotor_points.py,sha256=M5G5jJbfwv2htbI8dhoUTykIeUxXOuy3kPoBn1g-JeA,2783
100
114
  foxes/models/partial_wakes/segregated.py,sha256=iGa9wDTGkSap5L5Q63o3UMeOJN2Nq6qxYrw-hJ-E7kU,4370
101
- foxes/models/partial_wakes/top_hat.py,sha256=AIfRHQKP_4GAcoym1iOQ75V-PGpwmNrOdBmwVFQzl-8,5045
115
+ foxes/models/partial_wakes/top_hat.py,sha256=jcbLImoN9aiztm0PqIwfz9iSduOUvrrtAISc6rD2jmY,5550
102
116
  foxes/models/point_models/__init__.py,sha256=kb6pBrrPGWWKcnlAqOdBLMT7l-Y7yFAitrUr4eFiWcM,131
103
117
  foxes/models/point_models/set_uniform_data.py,sha256=LkQMwrvDaAWyVRQnHUUrT4W7d6Xz33E2nVdWJNONp1c,4476
104
118
  foxes/models/point_models/tke2ti.py,sha256=ZwCwqPm8H6PlyjS_D6vODFdm38WrpcFtgBL8UCgzWAk,1409
@@ -121,8 +135,8 @@ foxes/models/turbine_models/yaw2yawm.py,sha256=7AE7J9UAeSQq4ZC_K9W0y6WqCie1eWpYc
121
135
  foxes/models/turbine_models/yawm2yaw.py,sha256=42NFAi3_BtJfeHa3jC9L9dbRVSiDQQK4Uf-5MZdf0Vg,1592
122
136
  foxes/models/turbine_types/CpCt_file.py,sha256=EnDZE4FH07wh-bFHAtd_Zz0BDKOheM699yeefq1wEL4,2048
123
137
  foxes/models/turbine_types/CpCt_from_two.py,sha256=uf4F4c3CXSwjWCOMrDmhMan5hyQm-pMpygeyp5-B7mM,2692
124
- foxes/models/turbine_types/PCt_file.py,sha256=AA6kJH3gvXWuSTEazaPfsNWZLefI8XzQYlZorcq95Y0,10239
125
- foxes/models/turbine_types/PCt_from_two.py,sha256=kQOnw9AYc-bIbA94C0byIR4UYGCj50gB9CVFs13VXjg,9058
138
+ foxes/models/turbine_types/PCt_file.py,sha256=ttJDPz5vNLhHUVX-oegsUihyMK6s81dlJV3rk7ubLgs,10300
139
+ foxes/models/turbine_types/PCt_from_two.py,sha256=1Yg1Yukqint7aMByba3u11g-CN5keqIFR9FY9O4z5rI,11863
126
140
  foxes/models/turbine_types/__init__.py,sha256=rrERO5zveJZTFWuzRBmv9ZFPtW1TmtYrw9t46rxM0yM,296
127
141
  foxes/models/turbine_types/null_type.py,sha256=86cJiJk43YTw1eiz9mQAikVypGcbd4Ynl8NoAUmkoz4,1314
128
142
  foxes/models/turbine_types/wsrho2PCt_from_two.py,sha256=giN9OoavTT_oKtvC28Mvvlj08Hz44rGF8m-7utBmqas,11143
@@ -141,36 +155,36 @@ foxes/models/wake_frames/rotor_wd.py,sha256=MThraqng_b2ZUAl8Aod9tESPkDYXKom-oGJC
141
155
  foxes/models/wake_frames/seq_dynamic_wakes.py,sha256=mccB7-feKqDGa8UP2t_iaREDyUyLzrOvU557GXVBtHw,10987
142
156
  foxes/models/wake_frames/streamlines.py,sha256=noI30oNLgX88V1piOij8Rt9Y_vuNvj9Zcc3LqsJIErg,8868
143
157
  foxes/models/wake_frames/timelines.py,sha256=XkZV00ij7Oy3E_aMgrVHf_nEk-VbCOHO5Yjs-ptOcMk,9568
144
- foxes/models/wake_frames/yawed_wakes.py,sha256=V36y7r_D7b4_5UfLXTmS7GvePHJmaHOTJQyFI8rRWfk,8772
145
- foxes/models/wake_models/__init__.py,sha256=3D1dhpiIGQYjo3Z88fHeh9ON49ZajnmGn6C9qUvjAmU,303
158
+ foxes/models/wake_frames/yawed_wakes.py,sha256=ODTuPxCeMsoxinMEVSCOsemdT57c0IBEbeSHS93L6Ik,9001
159
+ foxes/models/wake_models/__init__.py,sha256=hwoJF5RzDlr2g5zKgZ532H93F6Hcoo0Gfkc3XLiAJ1Q,253
146
160
  foxes/models/wake_models/axisymmetric.py,sha256=3dS-1Br9ZvDaGa_KVy0sotnuMku4QpL_Nz3T5dyQXm8,2788
147
161
  foxes/models/wake_models/dist_sliced.py,sha256=MsKBm8s9SqQ5g6vLFcfynebzvbRpYlP88uC4sr8t3QE,5883
148
162
  foxes/models/wake_models/gaussian.py,sha256=hchArmoqbdUthh2q7D9PEfC838217ySDHc2fbvtihD4,2760
149
163
  foxes/models/wake_models/top_hat.py,sha256=DMFEQGjJol08XHY_TyN74xXf4l2yFNSEE4k4yCKt15I,5885
150
- foxes/models/wake_models/wake_mirror.py,sha256=ycv1_-_juCNPlXSLp6uOJ9c4a7onA8aeLYRnkElfetg,4975
151
- foxes/models/wake_models/induction/__init__.py,sha256=Zmtxo-fVkuf6hDmeDb_gZE8KFtIjNxYpxgQBkwmDN34,193
152
- foxes/models/wake_models/induction/rankine_half_body.py,sha256=D8WOCeGEybNbhoP9_6Rlgnjq6Tbw8idtLIZHH-9sDeQ,7808
164
+ foxes/models/wake_models/induction/__init__.py,sha256=kl5hRnV0q1zyaqTdwhEdsNiOV-Fu0ySRIUQH418npyI,231
165
+ foxes/models/wake_models/induction/rankine_half_body.py,sha256=SGPQwLv7NVfFIOcHbo8jWs3ghlxr2HvE3yM5W2HK2PE,7816
153
166
  foxes/models/wake_models/induction/rathmann.py,sha256=ydUcXNlaqpBY5Cf7RQR_2StCxcXua-KYToZcOYgk2ms,6262
154
167
  foxes/models/wake_models/induction/self_similar.py,sha256=1Ji4Cg_PZQfYnz-SMNQvCrQeuocthBozfT4n6e5oS-U,7011
155
168
  foxes/models/wake_models/induction/self_similar2020.py,sha256=D8yQxa5NQFII2gvKggcbJvuSDnrIRSy0Q5aCC3DoTPc,1634
169
+ foxes/models/wake_models/induction/vortex_sheet.py,sha256=CIrVmM7EEe5fVr94FND4Vvfj_KPnKl02-oTE2QPwBAM,6341
156
170
  foxes/models/wake_models/ti/__init__.py,sha256=EOlqFHL2mzcKGFRZqlVYTiqGJqPb6dx7I5UWUDshy2U,125
157
- foxes/models/wake_models/ti/crespo_hernandez.py,sha256=i02Ye9b5DU6rexYmKWPOvCgerpmws39AKT_02km43C0,8811
158
- foxes/models/wake_models/ti/iec_ti.py,sha256=kQRqwElW9uL9TJeZ7wNkFs9vLVJfighRCOtAjyn1jh8,6203
171
+ foxes/models/wake_models/ti/crespo_hernandez.py,sha256=Vi05vWV7aY02ixcgtAR4YVy5Y43ZaEI60ww8W2zdqu8,8844
172
+ foxes/models/wake_models/ti/iec_ti.py,sha256=L9Yw34_oUGXdvGSVhjJMjmSNh2S1sJsUUKsFxGuGA8Q,6422
159
173
  foxes/models/wake_models/wind/__init__.py,sha256=X_QdQ_f3fKCIrZZ9K_CzzsHSl13AyvPRcWdEZ1y9Bk4,223
160
- foxes/models/wake_models/wind/bastankhah14.py,sha256=zPSi3oCiZlzR1XHx6UBb_n3hOBH2tZW16uGVud1I56I,5602
161
- foxes/models/wake_models/wind/bastankhah16.py,sha256=V3onz6hXBkW0bb9le4n8srjWq23Ama2Fq69iUdM9LHM,17629
162
- foxes/models/wake_models/wind/jensen.py,sha256=jEBBIARBHydqEC9YHRd5B7WExhBnTpxfty6Ldxd_Q8Y,4639
163
- foxes/models/wake_models/wind/turbopark.py,sha256=PCo9pKVFTB0r5sFfOyd2co6xQZv8H9rm52Po7d8MyRE,15250
174
+ foxes/models/wake_models/wind/bastankhah14.py,sha256=zDJBKkRRETrD9NA2eQUYrccfGv2EQV_eeH9YhkNTYWw,5166
175
+ foxes/models/wake_models/wind/bastankhah16.py,sha256=XTRLJguNBSjERVCCquFXaxEnTx52lFrB9uPBRd3PLrc,17527
176
+ foxes/models/wake_models/wind/jensen.py,sha256=6L1-thpjC79wy8fXGvTMuzFnoASIu5uPlREZyvcOsHk,4247
177
+ foxes/models/wake_models/wind/turbopark.py,sha256=hqyp3wVoFlBvzdw69d5uhwZM_bHcG5PQfIhptICwJkE,14524
164
178
  foxes/models/wake_superpositions/__init__.py,sha256=p_pI_bUC-JjpGfg-7hyo3EpB_qVYqg5CCFt_vSG9DF4,371
165
179
  foxes/models/wake_superpositions/ti_linear.py,sha256=T9lP5PsHzi04Neq5dS3HDZGwyV7Qzvx_umCbk9M7Zks,3911
166
180
  foxes/models/wake_superpositions/ti_max.py,sha256=fnfYmr_Wt9EPZftHoHnqRlTwFWAawrEheGgLA0NwIlA,3936
167
181
  foxes/models/wake_superpositions/ti_pow.py,sha256=4ZS3d0ulRkIDaVeG2VvcdjpJch673INQRUGgj37cs_A,4160
168
182
  foxes/models/wake_superpositions/ti_quadratic.py,sha256=tkmaoIm7a-Q4c3qtMpBmX25jfcVdt0Qp7Xn0fQrxN4A,3926
169
183
  foxes/models/wake_superpositions/ws_linear.py,sha256=TiKaRAxNioY4oIloJODfT1zftnkXzhuqfqEkqG33owc,9155
170
- foxes/models/wake_superpositions/ws_max.py,sha256=lWQtvHwudPxyA1vUQodcqY37hlU4KiCWIC9XeupEHT8,9380
171
- foxes/models/wake_superpositions/ws_pow.py,sha256=HiuGiMffV7dT6qydK-O8VDuFsrx0bNEIancYy_zUO_o,9601
184
+ foxes/models/wake_superpositions/ws_max.py,sha256=MktXVo3PfMgh172DJP_KRftiqs8jXsuaQPLne1jHKyY,9381
185
+ foxes/models/wake_superpositions/ws_pow.py,sha256=aPtm5NwQx6byNfetSX57Z7tVkXtgXIRleSf4grKtZF0,9602
172
186
  foxes/models/wake_superpositions/ws_product.py,sha256=8dCDaKfuzHfTEBo0_N7BR-x_qG2tWXTabzPsgpIAtXk,4672
173
- foxes/models/wake_superpositions/ws_quadratic.py,sha256=6H0BXMXpraPX7iz_U6m8ZB9NSEcWgUJr7pR-x4ZzNo0,9196
187
+ foxes/models/wake_superpositions/ws_quadratic.py,sha256=jUo4wFkrUPbj-27m3ozCEzab7iamkNZtVlrCwY-Yh2w,9197
174
188
  foxes/opt/__init__.py,sha256=okwZagHJMkUkLvKCSQLbE0cjx_47RLl3bEz576j6CdI,172
175
189
  foxes/opt/constraints/__init__.py,sha256=UZzN_JlxGaASdGtvBn5d5xwdSDpwO6bklj3vw70IZvU,159
176
190
  foxes/opt/constraints/area_geometry.py,sha256=9TFsyuM8_pp3HEUV4N0w0KnhxOk0OLPMKd6ZvNQGC80,6156
@@ -203,8 +217,8 @@ foxes/output/calc_points.py,sha256=QRZuZ6joHbhkEYDBX87QgEWwMMYbohAK3ZFuVwErK3Q,4
203
217
  foxes/output/farm_layout.py,sha256=PGQUIhza5BrGDIPU69O7hm91tjKJLFQq7N8rmXeVXAY,10981
204
218
  foxes/output/farm_results_eval.py,sha256=LAv8A5XQ7gMKmT77ILzbRsIptiqBAWf89bR3Xh68cT4,17663
205
219
  foxes/output/flow_plots_2d.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
- foxes/output/grids.py,sha256=skMoJam5acoVNcjS0Ki-G4yy1ame_8aa-5GV3-lybaw,19701
207
- foxes/output/output.py,sha256=zHndVrdNLzXhNFOjWEvhn9L5VeEgsAAWGggT0Mv5xic,3454
220
+ foxes/output/grids.py,sha256=va7sPdzjZEGEzVYW4m_KmAYBE7S7x5C2BXfroQY-kao,19767
221
+ foxes/output/output.py,sha256=wUxKlNbfjwqDzU-lTWfIZMfK-h_R3rpmthSlgunTyw8,3460
208
222
  foxes/output/results_writer.py,sha256=H8UptENDq2THwbRRe41I_d9OAdc4osnWER4QSTvrAQ0,5833
209
223
  foxes/output/rose_plot.py,sha256=t4sO9FCV6BJvTLv3vudsBajaSQblOaS6INS5GltCkT0,11090
210
224
  foxes/output/rotor_point_plots.py,sha256=R44fcseBC5g8YsuR4irRrvYN8Nj94_lpJgpsBst2kjE,3165
@@ -216,12 +230,12 @@ foxes/output/flow_plots_2d/__init__.py,sha256=2d4RyQYPOYr-HiBCbp1swSPG4Nf3NGezTr
216
230
  foxes/output/flow_plots_2d/flow_plots.py,sha256=RYdYZui11IlJE5Mm_R3dtkkQDC0XbAz2JyOT1U25PAA,28209
217
231
  foxes/output/flow_plots_2d/get_fig.py,sha256=gGMOfzNCukq_l0FZLmi3zSBl0ANkQi2WoKaGTpB6xhc,6169
218
232
  foxes/output/flow_plots_2d/seq_flow_ani_plugin.py,sha256=RFlzbZG2L9A583d7wSqZHogP561YEtfcu5M5FaCqIIE,2782
219
- foxes/utils/__init__.py,sha256=enB6w5vHEYTVR37UEIh7oIzqIg83XmDMlcEmZQ7bP8g,739
233
+ foxes/utils/__init__.py,sha256=VkT0l3ety_dhfP-RdoI3nLmBeHvJetfIuo2-rz8_Biw,753
220
234
  foxes/utils/cubic_roots.py,sha256=u2Pf-yHZ6EASpFONMfkv0mvldmd1E1VRZxj69YabDoc,3321
221
235
  foxes/utils/data_book.py,sha256=DgxusriNH-fhHNN_v6TY3QWcAnrAcw20Wgz7lDfbMeg,5302
222
236
  foxes/utils/dict.py,sha256=s922OY22wOKBMbzQ_g-T-MhEw1dga0d3CCwFwd0nI78,886
223
237
  foxes/utils/exec_python.py,sha256=BRylxWOyYHpjIZXCuoOp_A-P9VMoQZ13P2vpHs-lqj8,1714
224
- foxes/utils/factory.py,sha256=pq028O6hlDFxhvMf7QN8_EUc4GOoBocDPOjwRt7gG80,9994
238
+ foxes/utils/factory.py,sha256=c-Zz1BxVjt5aICoTB0Lz-K16J-RqFdLjTEPmtkykXMU,15647
225
239
  foxes/utils/geopandas_helpers.py,sha256=inVQHMco6Op7YN3VFH1DGAJZWREuveJUS7gyoRudw2A,7895
226
240
  foxes/utils/geopandas_utils.py,sha256=inVQHMco6Op7YN3VFH1DGAJZWREuveJUS7gyoRudw2A,7895
227
241
  foxes/utils/load.py,sha256=7jrCX2GQ_GTgrSu3nz-jfxiyswa7Q3XXCYqobl6bkyk,1290
@@ -250,9 +264,9 @@ foxes/utils/geom2d/half_plane.py,sha256=kzZD6pkZxZ03MK9WAboWzXb5Ws5dWLQY9GIahD4D
250
264
  foxes/utils/geom2d/polygon.py,sha256=8ASfy7No_-Pt_xDSeNsDtLEkCjBWsNZK8nIxDQtqeOE,5534
251
265
  foxes/utils/runners/__init__.py,sha256=-WL4ZmdgNYldkqhCV6dR-aXCumBrH-Ea-V1shsRhsbs,55
252
266
  foxes/utils/runners/runners.py,sha256=Sc06qsCzPduMyxbywgf6G3uHRioDs1qWRSc6GZbLFAY,6932
253
- foxes-0.7.1.dist-info/LICENSE,sha256=bBCH6mYTPzSepk2s2UUZ3II_ZYXrn1bnSqB85-aZHxU,1071
254
- foxes-0.7.1.dist-info/METADATA,sha256=-i7RicI54Ewf9bAL0TQcPm19xduZAR3Qq2WKSEEzQvo,9520
255
- foxes-0.7.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
256
- foxes-0.7.1.dist-info/top_level.txt,sha256=B4spGR6JHsVHz7CEXsa68xsjYalAA70nBwHa1gfyRHc,6
257
- foxes-0.7.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
258
- foxes-0.7.1.dist-info/RECORD,,
267
+ foxes-0.7.3.dist-info/LICENSE,sha256=bBCH6mYTPzSepk2s2UUZ3II_ZYXrn1bnSqB85-aZHxU,1071
268
+ foxes-0.7.3.dist-info/METADATA,sha256=hJpbjNSdAuAfTyLSOxwe8t58lV7Z8ILiDqOvqGCDf3k,9566
269
+ foxes-0.7.3.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
270
+ foxes-0.7.3.dist-info/top_level.txt,sha256=B4spGR6JHsVHz7CEXsa68xsjYalAA70nBwHa1gfyRHc,6
271
+ foxes-0.7.3.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
272
+ foxes-0.7.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (70.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,196 +0,0 @@
1
- import numpy as np
2
-
3
- from foxes.core import WakeModel
4
- import foxes.variables as FV
5
- import foxes.constants as FC
6
-
7
-
8
- class WakeMirror(WakeModel):
9
- """
10
- A wake model wrapper that adds mirror turbines
11
- that model wake reflection from a horizontal plane,
12
- e.g. the ground
13
-
14
- Attributes
15
- ----------
16
- wmodel: foxes.core.WakeModel
17
- The original wake model
18
- heights: list of float
19
- The reflection heights
20
-
21
- :group: models.wake_models
22
-
23
- """
24
-
25
- def __init__(self, wmodel, heights):
26
- """
27
- Constructor.
28
-
29
- Parameters
30
- ----------
31
- wmodel: foxes.core.WakeModel
32
- The original wake model
33
- heights: list of float
34
- The reflection heights
35
-
36
- """
37
- super().__init__()
38
- self.wmodel = wmodel
39
- self.heights = heights
40
- self.name = self.name + "_" + wmodel.name
41
-
42
- def sub_models(self):
43
- """
44
- List of all sub-models
45
-
46
- Returns
47
- -------
48
- smdls: list of foxes.core.Model
49
- All sub models
50
-
51
- """
52
- return [self.wmodel]
53
-
54
- def new_wake_deltas(self, algo, mdata, fdata, tdata):
55
- """
56
- Creates new empty wake delta arrays.
57
-
58
- Parameters
59
- ----------
60
- algo: foxes.core.Algorithm
61
- The calculation algorithm
62
- mdata: foxes.core.MData
63
- The model data
64
- fdata: foxes.core.FData
65
- The farm data
66
- tdata: foxes.core.TData
67
- The target point data
68
-
69
- Returns
70
- -------
71
- wake_deltas: dict
72
- Key: variable name, value: The zero filled
73
- wake deltas, shape: (n_states, n_turbines, n_rpoints, ...)
74
-
75
- """
76
- return self.wmodel.new_wake_deltas(algo, mdata, fdata, tdata)
77
-
78
- def contribute(
79
- self,
80
- algo,
81
- mdata,
82
- fdata,
83
- tdata,
84
- downwind_index,
85
- wake_coos,
86
- wake_deltas,
87
- ):
88
- """
89
- Modifies wake deltas at target points by
90
- contributions from the specified wake source turbines.
91
-
92
- Parameters
93
- ----------
94
- algo: foxes.core.Algorithm
95
- The calculation algorithm
96
- mdata: foxes.core.MData
97
- The model data
98
- fdata: foxes.core.FData
99
- The farm data
100
- tdata: foxes.core.TData
101
- The target point data
102
- downwind_index: int
103
- The index of the wake causing turbine
104
- in the downwnd order
105
- wake_coos: numpy.ndarray
106
- The wake frame coordinates of the evaluation
107
- points, shape: (n_states, n_targets, n_tpoints, 3)
108
- wake_deltas: dict
109
- The wake deltas. Key: variable name,
110
- value: numpy.ndarray with shape
111
- (n_states, n_targets, n_tpoints, ...)
112
-
113
- """
114
- hh = fdata[FV.H][:, downwind_index].copy()
115
- self.wmodel.contribute(
116
- algo, mdata, fdata, tdata, downwind_index, wake_coos, wake_deltas
117
- )
118
-
119
- tdata[FC.TARGETS] = tdata[FC.TARGETS].copy() # making sure this is no ref
120
-
121
- for h in self.heights:
122
-
123
- fdata[FV.H][:, downwind_index] = hh + 2 * (h - hh)
124
-
125
- nwcoos = algo.wake_frame.get_wake_coos(
126
- algo, mdata, fdata, tdata, downwind_index
127
- )
128
-
129
- self.wmodel.contribute(
130
- algo, mdata, fdata, tdata, downwind_index, nwcoos, wake_deltas
131
- )
132
-
133
- fdata[FV.H][:, downwind_index] = hh
134
-
135
- def finalize_wake_deltas(
136
- self,
137
- algo,
138
- mdata,
139
- fdata,
140
- amb_results,
141
- wake_deltas,
142
- ):
143
- """
144
- Finalize the wake calculation.
145
-
146
- Modifies wake_deltas on the fly.
147
-
148
- Parameters
149
- ----------
150
- algo: foxes.core.Algorithm
151
- The calculation algorithm
152
- mdata: foxes.core.MData
153
- The model data
154
- fdata: foxes.core.FData
155
- The farm data
156
- amb_results: dict
157
- The ambient results, key: variable name str,
158
- values: numpy.ndarray with shape
159
- (n_states, n_targets, n_tpoints)
160
- wake_deltas: dict
161
- The wake deltas object at the selected target
162
- turbines. Key: variable str, value: numpy.ndarray
163
- with shape (n_states, n_targets, n_tpoints)
164
-
165
- """
166
- self.wmodel.finalize_wake_deltas(
167
- algo,
168
- mdata,
169
- fdata,
170
- amb_results,
171
- wake_deltas,
172
- )
173
-
174
-
175
- class GroundMirror(WakeMirror):
176
- """
177
- A wake model wrapper that adds mirror turbines
178
- that model wake reflection from the ground
179
-
180
- :group: models.wake_models
181
-
182
- """
183
-
184
- def __init__(self, *args, **kwargs):
185
- """
186
- Constructor.
187
-
188
- Parameters
189
- ----------
190
- args: tuple, optional
191
- Additional parameters for WakeMirror
192
- kwargs: dict, optional
193
- Additional parameters for WakeMirror
194
-
195
- """
196
- super().__init__(*args, heights=[0], **kwargs)
File without changes