foxes 0.7.1__tar.gz → 0.7.2__tar.gz

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.
Files changed (267) hide show
  1. {foxes-0.7.1/foxes.egg-info → foxes-0.7.2}/PKG-INFO +1 -1
  2. foxes-0.7.2/foxes/VERSION +1 -0
  3. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/downwind.py +3 -1
  4. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/__init__.py +1 -1
  5. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/model_book.py +91 -60
  6. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ws_max.py +1 -0
  7. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ws_pow.py +1 -0
  8. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ws_quadratic.py +1 -0
  9. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/factory.py +86 -70
  10. {foxes-0.7.1 → foxes-0.7.2/foxes.egg-info}/PKG-INFO +1 -1
  11. {foxes-0.7.1 → foxes-0.7.2}/foxes.egg-info/SOURCES.txt +3 -3
  12. foxes-0.7.1/foxes/VERSION +0 -1
  13. {foxes-0.7.1 → foxes-0.7.2}/LICENSE +0 -0
  14. {foxes-0.7.1 → foxes-0.7.2}/Logo_FOXES.svg +0 -0
  15. {foxes-0.7.1 → foxes-0.7.2}/MANIFEST.in +0 -0
  16. {foxes-0.7.1 → foxes-0.7.2}/README.md +0 -0
  17. {foxes-0.7.1 → foxes-0.7.2}/foxes/__init__.py +0 -0
  18. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/__init__.py +0 -0
  19. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/__init__.py +0 -0
  20. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/__init__.py +0 -0
  21. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/farm_wakes_calc.py +0 -0
  22. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/init_farm_data.py +0 -0
  23. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/point_wakes_calc.py +0 -0
  24. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/reorder_farm_output.py +0 -0
  25. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/set_amb_farm_results.py +0 -0
  26. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/set_amb_point_results.py +0 -0
  27. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/iterative/__init__.py +0 -0
  28. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/iterative/iterative.py +0 -0
  29. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/iterative/models/__init__.py +0 -0
  30. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/iterative/models/convergence.py +0 -0
  31. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/iterative/models/farm_wakes_calc.py +0 -0
  32. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/iterative/models/urelax.py +0 -0
  33. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/sequential/__init__.py +0 -0
  34. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/sequential/models/__init__.py +0 -0
  35. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/sequential/models/plugin.py +0 -0
  36. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/sequential/models/seq_state.py +0 -0
  37. {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/sequential/sequential.py +0 -0
  38. {foxes-0.7.1 → foxes-0.7.2}/foxes/constants.py +0 -0
  39. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/__init__.py +0 -0
  40. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/algorithm.py +0 -0
  41. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/axial_induction_model.py +0 -0
  42. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/data.py +0 -0
  43. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/data_calc_model.py +0 -0
  44. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/farm_controller.py +0 -0
  45. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/farm_data_model.py +0 -0
  46. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/farm_model.py +0 -0
  47. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/model.py +0 -0
  48. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/partial_wakes_model.py +0 -0
  49. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/point_data_model.py +0 -0
  50. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/rotor_model.py +0 -0
  51. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/states.py +0 -0
  52. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/turbine.py +0 -0
  53. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/turbine_model.py +0 -0
  54. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/turbine_type.py +0 -0
  55. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/vertical_profile.py +0 -0
  56. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/wake_frame.py +0 -0
  57. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/wake_model.py +0 -0
  58. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/wake_superposition.py +0 -0
  59. {foxes-0.7.1 → foxes-0.7.2}/foxes/core/wind_farm.py +0 -0
  60. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/__init__.py +0 -0
  61. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/farms/__init__.py +0 -0
  62. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/farms/test_farm_67.csv +0 -0
  63. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/parse.py +0 -0
  64. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/power_ct_curves/DTU-10MW-D178d3-H119.csv +0 -0
  65. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/power_ct_curves/IEA-15MW-D240-H150.csv +0 -0
  66. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/power_ct_curves/IWT-7d5MW-D164-H100.csv +0 -0
  67. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/power_ct_curves/NREL-5MW-D126-H90.csv +0 -0
  68. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/power_ct_curves/__init__.py +0 -0
  69. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/WRF-Timeseries-4464.csv.gz +0 -0
  70. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/__init__.py +0 -0
  71. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/abl_states_6000.csv.gz +0 -0
  72. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/timeseries_100.csv.gz +0 -0
  73. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/timeseries_3000.csv.gz +0 -0
  74. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/timeseries_8000.csv.gz +0 -0
  75. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/wind_rose_bremen.csv +0 -0
  76. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/wind_rotation.nc +0 -0
  77. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/winds100.tab +0 -0
  78. {foxes-0.7.1 → foxes-0.7.2}/foxes/data/static_data.py +0 -0
  79. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/__init__.py +0 -0
  80. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/__init__.py +0 -0
  81. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/from_csv.py +0 -0
  82. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/from_df.py +0 -0
  83. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/from_file.py +0 -0
  84. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/from_json.py +0 -0
  85. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/from_random.py +0 -0
  86. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/grid.py +0 -0
  87. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/row.py +0 -0
  88. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/__init__.py +0 -0
  89. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/create/__init__.py +0 -0
  90. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/create/random_abl_states.py +0 -0
  91. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/create/random_timeseries.py +0 -0
  92. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/field_data_nc.py +0 -0
  93. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/multi_height.py +0 -0
  94. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/scan_ws.py +0 -0
  95. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/single.py +0 -0
  96. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/states_table.py +0 -0
  97. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/windio/__init__.py +0 -0
  98. {foxes-0.7.1 → foxes-0.7.2}/foxes/input/windio/windio.py +0 -0
  99. {foxes-0.7.1/foxes/models/axial_induction_models → foxes-0.7.2/foxes/models/axial_induction}/__init__.py +0 -0
  100. {foxes-0.7.1/foxes/models/axial_induction_models → foxes-0.7.2/foxes/models/axial_induction}/betz.py +0 -0
  101. {foxes-0.7.1/foxes/models/axial_induction_models → foxes-0.7.2/foxes/models/axial_induction}/madsen.py +0 -0
  102. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/farm_controllers/__init__.py +0 -0
  103. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/farm_controllers/basic.py +0 -0
  104. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/farm_models/__init__.py +0 -0
  105. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/farm_models/turbine2farm.py +0 -0
  106. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/__init__.py +0 -0
  107. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/axiwake.py +0 -0
  108. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/centre.py +0 -0
  109. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/grid.py +0 -0
  110. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/rotor_points.py +0 -0
  111. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/segregated.py +0 -0
  112. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/top_hat.py +0 -0
  113. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/point_models/__init__.py +0 -0
  114. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/point_models/set_uniform_data.py +0 -0
  115. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/point_models/tke2ti.py +0 -0
  116. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/point_models/wake_deltas.py +0 -0
  117. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/rotor_models/__init__.py +0 -0
  118. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/rotor_models/centre.py +0 -0
  119. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/rotor_models/grid.py +0 -0
  120. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/rotor_models/levels.py +0 -0
  121. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/__init__.py +0 -0
  122. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/calculator.py +0 -0
  123. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/kTI_model.py +0 -0
  124. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/lookup_table.py +0 -0
  125. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/power_mask.py +0 -0
  126. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/rotor_centre_calc.py +0 -0
  127. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/sector_management.py +0 -0
  128. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/set_farm_vars.py +0 -0
  129. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/table_factors.py +0 -0
  130. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/thrust2ct.py +0 -0
  131. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/yaw2yawm.py +0 -0
  132. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/yawm2yaw.py +0 -0
  133. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/CpCt_file.py +0 -0
  134. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/CpCt_from_two.py +0 -0
  135. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/PCt_file.py +0 -0
  136. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/PCt_from_two.py +0 -0
  137. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/__init__.py +0 -0
  138. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/null_type.py +0 -0
  139. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/wsrho2PCt_from_two.py +0 -0
  140. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/wsti2PCt_from_two.py +0 -0
  141. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/__init__.py +0 -0
  142. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/abl_log_neutral_ws.py +0 -0
  143. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/abl_log_stable_ws.py +0 -0
  144. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/abl_log_unstable_ws.py +0 -0
  145. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/abl_log_ws.py +0 -0
  146. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/data_profile.py +0 -0
  147. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/sheared_ws.py +0 -0
  148. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/uniform.py +0 -0
  149. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/__init__.py +0 -0
  150. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/farm_order.py +0 -0
  151. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/rotor_wd.py +0 -0
  152. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/seq_dynamic_wakes.py +0 -0
  153. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/streamlines.py +0 -0
  154. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/timelines.py +0 -0
  155. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/yawed_wakes.py +0 -0
  156. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/__init__.py +0 -0
  157. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/axisymmetric.py +0 -0
  158. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/dist_sliced.py +0 -0
  159. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/gaussian.py +0 -0
  160. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/induction/__init__.py +0 -0
  161. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/induction/rankine_half_body.py +0 -0
  162. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/induction/rathmann.py +0 -0
  163. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/induction/self_similar.py +0 -0
  164. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/induction/self_similar2020.py +0 -0
  165. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/ti/__init__.py +0 -0
  166. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/ti/crespo_hernandez.py +0 -0
  167. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/ti/iec_ti.py +0 -0
  168. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/top_hat.py +0 -0
  169. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/wake_mirror.py +0 -0
  170. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/wind/__init__.py +0 -0
  171. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/wind/bastankhah14.py +0 -0
  172. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/wind/bastankhah16.py +0 -0
  173. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/wind/jensen.py +0 -0
  174. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/wind/turbopark.py +0 -0
  175. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/__init__.py +0 -0
  176. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ti_linear.py +0 -0
  177. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ti_max.py +0 -0
  178. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ti_pow.py +0 -0
  179. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ti_quadratic.py +0 -0
  180. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ws_linear.py +0 -0
  181. {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ws_product.py +0 -0
  182. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/__init__.py +0 -0
  183. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/constraints/__init__.py +0 -0
  184. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/constraints/area_geometry.py +0 -0
  185. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/constraints/min_dist.py +0 -0
  186. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/core/__init__.py +0 -0
  187. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/core/farm_constraint.py +0 -0
  188. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/core/farm_objective.py +0 -0
  189. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/core/farm_opt_problem.py +0 -0
  190. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/core/farm_vars_problem.py +0 -0
  191. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/core/pop_states.py +0 -0
  192. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/objectives/__init__.py +0 -0
  193. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/objectives/farm_vars.py +0 -0
  194. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/objectives/max_n_turbines.py +0 -0
  195. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/__init__.py +0 -0
  196. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/__init__.py +0 -0
  197. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/farm_layout.py +0 -0
  198. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/__init__.py +0 -0
  199. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/constraints.py +0 -0
  200. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/geom_layout.py +0 -0
  201. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/geom_layout_gridded.py +0 -0
  202. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/geom_reggrid.py +0 -0
  203. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/geom_reggrids.py +0 -0
  204. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/objectives.py +0 -0
  205. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/reggrids_layout.py +0 -0
  206. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/regular_layout.py +0 -0
  207. {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/opt_farm_vars.py +0 -0
  208. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/__init__.py +0 -0
  209. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/animation.py +0 -0
  210. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/calc_points.py +0 -0
  211. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/farm_layout.py +0 -0
  212. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/farm_results_eval.py +0 -0
  213. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/flow_plots_2d/__init__.py +0 -0
  214. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/flow_plots_2d/flow_plots.py +0 -0
  215. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/flow_plots_2d/get_fig.py +0 -0
  216. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/flow_plots_2d/seq_flow_ani_plugin.py +0 -0
  217. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/flow_plots_2d.py +0 -0
  218. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/grids.py +0 -0
  219. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/output.py +0 -0
  220. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/results_writer.py +0 -0
  221. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/rose_plot.py +0 -0
  222. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/rotor_point_plots.py +0 -0
  223. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/round.py +0 -0
  224. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/slice_data.py +0 -0
  225. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/state_turbine_map.py +0 -0
  226. {foxes-0.7.1 → foxes-0.7.2}/foxes/output/turbine_type_curves.py +0 -0
  227. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/__init__.py +0 -0
  228. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/abl/__init__.py +0 -0
  229. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/abl/neutral.py +0 -0
  230. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/abl/sheared.py +0 -0
  231. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/abl/stable.py +0 -0
  232. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/abl/unstable.py +0 -0
  233. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/cubic_roots.py +0 -0
  234. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/data_book.py +0 -0
  235. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/dict.py +0 -0
  236. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/exec_python.py +0 -0
  237. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/__init__.py +0 -0
  238. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/area_geometry.py +0 -0
  239. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/circle.py +0 -0
  240. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/example_intersection.py +0 -0
  241. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/example_union.py +0 -0
  242. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/half_plane.py +0 -0
  243. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/polygon.py +0 -0
  244. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geopandas_helpers.py +0 -0
  245. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geopandas_utils.py +0 -0
  246. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/load.py +0 -0
  247. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/pandas_helpers.py +0 -0
  248. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/pandas_utils.py +0 -0
  249. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/plotly_helpers.py +0 -0
  250. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/random_xy.py +0 -0
  251. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/regularize.py +0 -0
  252. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/runners/__init__.py +0 -0
  253. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/runners/runners.py +0 -0
  254. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/subclasses.py +0 -0
  255. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/tab_files.py +0 -0
  256. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/two_circles.py +0 -0
  257. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/wind_dir.py +0 -0
  258. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/windrose_plot.py +0 -0
  259. {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/xarray_utils.py +0 -0
  260. {foxes-0.7.1 → foxes-0.7.2}/foxes/variables.py +0 -0
  261. {foxes-0.7.1 → foxes-0.7.2}/foxes.egg-info/dependency_links.txt +0 -0
  262. {foxes-0.7.1 → foxes-0.7.2}/foxes.egg-info/requires.txt +0 -0
  263. {foxes-0.7.1 → foxes-0.7.2}/foxes.egg-info/top_level.txt +0 -0
  264. {foxes-0.7.1 → foxes-0.7.2}/foxes.egg-info/zip-safe +0 -0
  265. {foxes-0.7.1 → foxes-0.7.2}/pyproject.toml +0 -0
  266. {foxes-0.7.1 → foxes-0.7.2}/setup.cfg +0 -0
  267. {foxes-0.7.1 → foxes-0.7.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: foxes
3
- Version: 0.7.1
3
+ Version: 0.7.2
4
4
  Summary: Farm Optimization and eXtended yield Evaluation Software
5
5
  Author: Fraunhofer IWES
6
6
  Author-email: jonas.schmidt@iwes.fraunhofer.de
@@ -0,0 +1 @@
1
+ 0.7.2
@@ -227,7 +227,9 @@ class Downwind(Algorithm):
227
227
  for i, m in enumerate(self.farm_controller.pre_rotor_models.models):
228
228
  print(f" {i}) {m.name}: {m} [pre-rotor]")
229
229
  for i, m in enumerate(self.farm_controller.post_rotor_models.models):
230
- print(f" {i+len(self.farm_controller.pre_rotor_models.models)}) {m.name}: {m}")
230
+ print(
231
+ f" {i+len(self.farm_controller.pre_rotor_models.models)}) {m.name}: {m}"
232
+ )
231
233
  print(deco)
232
234
  print()
233
235
 
@@ -13,6 +13,6 @@ from . import wake_superpositions
13
13
  from . import farm_controllers
14
14
  from . import vertical_profiles
15
15
  from . import point_models
16
- from . import axial_induction_models
16
+ from . import axial_induction
17
17
 
18
18
  from .model_book import ModelBook
@@ -1,7 +1,7 @@
1
1
  from math import sqrt
2
2
  import foxes.models as fm
3
3
  import foxes.variables as FV
4
- from foxes.utils import Dict, FDict
4
+ from foxes.utils import FDict
5
5
 
6
6
  from foxes.core import (
7
7
  PointDataModel,
@@ -25,42 +25,42 @@ class ModelBook:
25
25
 
26
26
  Attributes
27
27
  ----------
28
- point_models: foxes.utils.Dict
28
+ point_models: foxes.utils.FDict
29
29
  The point models. Keys: model name str,
30
30
  values: foxes.core.PointDataModel
31
- rotor_models: foxes.utils.Dict
31
+ rotor_models: foxes.utils.FDict
32
32
  The rotor models. Keys: model name str,
33
33
  values: foxes.core.RotorModel
34
- turbine_types: foxes.utils.Dict
34
+ turbine_types: foxes.utils.FDict
35
35
  The turbine type models. Keys: model name str,
36
36
  values: foxes.core.TurbineType
37
- turbine_models: foxes.utils.Dict
37
+ turbine_models: foxes.utils.FDict
38
38
  The turbine models. Keys: model name str,
39
39
  values: foxes.core.TurbineModel
40
- farm_models: foxes.utils.Dict
40
+ farm_models: foxes.utils.FDict
41
41
  The farm models. Keys: model name str,
42
42
  values: foxes.core.FarmModel
43
- farm_controllers: foxes.utils.Dict
43
+ farm_controllers: foxes.utils.FDict
44
44
  The farm controllers. Keys: model name str,
45
45
  values: foxes.core.FarmController
46
- partial_wakes: foxes.utils.Dict
46
+ partial_wakes: foxes.utils.FDict
47
47
  The partial wakes. Keys: model name str,
48
48
  values: foxes.core.PartialWakeModel
49
- wake_frames: foxes.utils.Dict
49
+ wake_frames: foxes.utils.FDict
50
50
  The wake frames. Keys: model name str,
51
51
  values: foxes.core.WakeFrame
52
- wake_superpositions: foxes.utils.Dict
52
+ wake_superpositions: foxes.utils.FDict
53
53
  The wake superposition models. Keys: model name str,
54
54
  values: foxes.core.WakeSuperposition
55
- wake_models: foxes.utils.Dict
55
+ wake_models: foxes.utils.FDict
56
56
  The wake models. Keys: model name str,
57
57
  values: foxes.core.WakeModel
58
- induction_models: foxes.utils.Dict
58
+ induction_models: foxes.utils.FDict
59
59
  The induction models. Keys: model name str,
60
60
  values: foxes.core.AxialInductionModel
61
- sources: foxes.utils.Dict
61
+ sources: foxes.utils.FDict
62
62
  All sources dict
63
- base_classes: foxes.utils.Dict
63
+ base_classes: foxes.utils.FDict
64
64
  The base classes for all model types
65
65
 
66
66
  :group: models
@@ -77,7 +77,7 @@ class ModelBook:
77
77
  Path to power/ct curve file, for creation
78
78
  of default turbine type model
79
79
  """
80
- self.point_models = Dict(name="point_models")
80
+ self.point_models = FDict(name="point_models")
81
81
  self.point_models["tke2ti"] = fm.point_models.TKE2TI()
82
82
 
83
83
  self.rotor_models = FDict(name="rotor_models")
@@ -88,8 +88,11 @@ class ModelBook:
88
88
  n2 = float(n2)
89
89
  n = int(sqrt(n2))
90
90
  if n**2 != n2:
91
- raise Exception(f"GridRotor factory: Value {n2} is not the square of an integer")
91
+ raise Exception(
92
+ f"GridRotor factory: Value {n2} is not the square of an integer"
93
+ )
92
94
  return n
95
+
93
96
  self.rotor_models.add_factory(
94
97
  fm.rotor_models.GridRotor,
95
98
  "grid<n2>",
@@ -100,7 +103,7 @@ class ModelBook:
100
103
  )
101
104
  self.rotor_models.add_factory(
102
105
  fm.rotor_models.GridRotor,
103
- "raw_grid<n2>",
106
+ "grid<n2>_raw",
104
107
  kwargs=dict(calc_vars=rvars, reduce=False),
105
108
  var2arg={"n2": "n"},
106
109
  n2=_n2n,
@@ -115,13 +118,13 @@ class ModelBook:
115
118
  )
116
119
  self.rotor_models.add_factory(
117
120
  fm.rotor_models.LevelRotor,
118
- "raw_level<n>",
121
+ "level<n>_raw",
119
122
  kwargs=dict(calc_vars=rvars, reduce=False),
120
123
  n=lambda x: int(x),
121
124
  hints={"n": "(Number of vertical levels)"},
122
125
  )
123
126
 
124
- self.turbine_types = Dict(name="turbine_types")
127
+ self.turbine_types = FDict(name="turbine_types")
125
128
  self.turbine_types["null_type"] = fm.turbine_types.NullType()
126
129
  self.turbine_types["NREL5MW"] = fm.turbine_types.PCtFile(
127
130
  "NREL-5MW-D126-H90.csv", rho=1.225
@@ -165,8 +168,10 @@ class ModelBook:
165
168
  "kTI_<kTI>_<kb>",
166
169
  kTI=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
167
170
  kb=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
168
- hints={"kTI": "(Value, e.g. 004 for 0.04)",
169
- "kb": "(Value, e.g. 004 for 0.04)"},
171
+ hints={
172
+ "kTI": "(Value, e.g. 004 for 0.04)",
173
+ "kb": "(Value, e.g. 004 for 0.04)",
174
+ },
170
175
  )
171
176
  self.turbine_models.add_factory(
172
177
  fm.turbine_models.kTI,
@@ -174,8 +179,10 @@ class ModelBook:
174
179
  kwargs=dict(ti_var=FV.AMB_TI),
175
180
  kTI=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
176
181
  kb=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
177
- hints={"kTI": "(Value, e.g. 004 for 0.04)",
178
- "kb": "(Value, e.g. 004 for 0.04)"},
182
+ hints={
183
+ "kTI": "(Value, e.g. 004 for 0.04)",
184
+ "kb": "(Value, e.g. 004 for 0.04)",
185
+ },
179
186
  )
180
187
 
181
188
  self.turbine_models["hubh_data"] = fm.turbine_models.RotorCentreCalc(
@@ -187,7 +194,7 @@ class ModelBook:
187
194
  }
188
195
  )
189
196
 
190
- self.farm_models = Dict(
197
+ self.farm_models = FDict(
191
198
  name="farm_models",
192
199
  **{
193
200
  f"farm_{mname}": fm.farm_models.Turbine2FarmModel(m)
@@ -195,7 +202,7 @@ class ModelBook:
195
202
  },
196
203
  )
197
204
 
198
- self.farm_controllers = Dict(
205
+ self.farm_controllers = FDict(
199
206
  name="farm_controllers",
200
207
  basic_ctrl=fm.farm_controllers.BasicFarmController(),
201
208
  )
@@ -246,11 +253,13 @@ class ModelBook:
246
253
  )
247
254
 
248
255
  self.wake_frames["timelines"] = fm.wake_frames.Timelines()
256
+
249
257
  def _todt(x):
250
258
  if x[-1] == "s":
251
- return float(x[:-1])/60
259
+ return float(x[:-1]) / 60
252
260
  elif x[-3:] == "min":
253
261
  return float(x[:-3])
262
+
254
263
  self.wake_frames.add_factory(
255
264
  fm.wake_frames.Timelines,
256
265
  "timelines_<dt>",
@@ -266,7 +275,7 @@ class ModelBook:
266
275
  hints={"dt": "(Time step, e.g '10s', '1min' etc.)"},
267
276
  )
268
277
 
269
- self.wake_superpositions = Dict(
278
+ self.wake_superpositions = FDict(
270
279
  name="wake_superpositions",
271
280
  ws_linear=fm.wake_superpositions.WSLinear(scale_amb=False),
272
281
  ws_linear_lim=fm.wake_superpositions.WSLinear(
@@ -309,11 +318,9 @@ class ModelBook:
309
318
  ti_max=fm.wake_superpositions.TIMax(superp_to_amb="quadratic"),
310
319
  )
311
320
 
312
- self.axial_induction = Dict(name="induction_models")
313
- self.axial_induction["Betz"] = fm.axial_induction_models.BetzAxialInduction()
314
- self.axial_induction["Madsen"] = (
315
- fm.axial_induction_models.MadsenAxialInduction()
316
- )
321
+ self.axial_induction = FDict(name="induction_models")
322
+ self.axial_induction["Betz"] = fm.axial_induction.BetzAxialInduction()
323
+ self.axial_induction["Madsen"] = fm.axial_induction.MadsenAxialInduction()
317
324
 
318
325
  self.wake_models = FDict(name="wake_models")
319
326
 
@@ -328,8 +335,10 @@ class ModelBook:
328
335
  "Jensen_<superposition>_k<k>",
329
336
  superposition=lambda s: f"ws_{s}",
330
337
  k=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
331
- hints={"superposition": "(Superposition, e.g. linear for ws_linear)",
332
- "k": "(Value, e.g. 004 for 0.04)"},
338
+ hints={
339
+ "superposition": "(Superposition, e.g. linear for ws_linear)",
340
+ "k": "(Value, e.g. 004 for 0.04)",
341
+ },
333
342
  )
334
343
 
335
344
  self.wake_models.add_factory(
@@ -345,8 +354,10 @@ class ModelBook:
345
354
  kwargs=dict(sbeta_factor=0.2),
346
355
  superposition=lambda s: f"ws_{s}",
347
356
  k=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
348
- hints={"superposition": "(Superposition, e.g. linear for ws_linear)",
349
- "k": "(Value, e.g. 004 for 0.04)"},
357
+ hints={
358
+ "superposition": "(Superposition, e.g. linear for ws_linear)",
359
+ "k": "(Value, e.g. 004 for 0.04)",
360
+ },
350
361
  )
351
362
  self.wake_models.add_factory(
352
363
  fm.wake_models.wind.Bastankhah2014,
@@ -361,8 +372,10 @@ class ModelBook:
361
372
  kwargs=dict(sbeta_factor=0.2, induction="Betz"),
362
373
  superposition=lambda s: f"ws_{s}",
363
374
  k=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
364
- hints={"superposition": "(Superposition, e.g. linear for ws_linear)",
365
- "k": "(Value, e.g. 004 for 0.04)"},
375
+ hints={
376
+ "superposition": "(Superposition, e.g. linear for ws_linear)",
377
+ "k": "(Value, e.g. 004 for 0.04)",
378
+ },
366
379
  )
367
380
  self.wake_models.add_factory(
368
381
  fm.wake_models.wind.Bastankhah2014,
@@ -377,8 +390,10 @@ class ModelBook:
377
390
  kwargs=dict(sbeta_factor=0.25),
378
391
  superposition=lambda s: f"ws_{s}",
379
392
  k=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
380
- hints={"superposition": "(Superposition, e.g. linear for ws_linear)",
381
- "k": "(Value, e.g. 004 for 0.04)"},
393
+ hints={
394
+ "superposition": "(Superposition, e.g. linear for ws_linear)",
395
+ "k": "(Value, e.g. 004 for 0.04)",
396
+ },
382
397
  )
383
398
  self.wake_models.add_factory(
384
399
  fm.wake_models.wind.Bastankhah2014,
@@ -393,8 +408,10 @@ class ModelBook:
393
408
  kwargs=dict(sbeta_factor=0.25, induction="Betz"),
394
409
  superposition=lambda s: f"ws_{s}",
395
410
  k=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
396
- hints={"superposition": "(Superposition, e.g. linear for ws_linear)",
397
- "k": "(Value, e.g. 004 for 0.04)"},
411
+ hints={
412
+ "superposition": "(Superposition, e.g. linear for ws_linear)",
413
+ "k": "(Value, e.g. 004 for 0.04)",
414
+ },
398
415
  )
399
416
 
400
417
  self.wake_models.add_factory(
@@ -408,8 +425,10 @@ class ModelBook:
408
425
  "Bastankhah2016_<superposition>_k<k>",
409
426
  superposition=lambda s: f"ws_{s}",
410
427
  k=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
411
- hints={"superposition": "(Superposition, e.g. linear for ws_linear)",
412
- "k": "(Value, e.g. 004 for 0.04)"},
428
+ hints={
429
+ "superposition": "(Superposition, e.g. linear for ws_linear)",
430
+ "k": "(Value, e.g. 004 for 0.04)",
431
+ },
413
432
  )
414
433
  self.wake_models.add_factory(
415
434
  fm.wake_models.wind.Bastankhah2016,
@@ -424,8 +443,10 @@ class ModelBook:
424
443
  kwargs=dict(induction="Betz"),
425
444
  superposition=lambda s: f"ws_{s}",
426
445
  k=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
427
- hints={"superposition": "(Superposition, e.g. linear for ws_linear)",
428
- "k": "(Value, e.g. 004 for 0.04)"},
446
+ hints={
447
+ "superposition": "(Superposition, e.g. linear for ws_linear)",
448
+ "k": "(Value, e.g. 004 for 0.04)",
449
+ },
429
450
  )
430
451
 
431
452
  self.wake_models.add_factory(
@@ -439,8 +460,10 @@ class ModelBook:
439
460
  "TurbOPark_<superposition>_k<k>",
440
461
  superposition=lambda s: f"ws_{s}",
441
462
  k=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
442
- hints={"superposition": "(Superposition, e.g. linear for ws_linear)",
443
- "k": "(Value, e.g. 004 for 0.04)"},
463
+ hints={
464
+ "superposition": "(Superposition, e.g. linear for ws_linear)",
465
+ "k": "(Value, e.g. 004 for 0.04)",
466
+ },
444
467
  )
445
468
  self.wake_models.add_factory(
446
469
  fm.wake_models.wind.TurbOParkWake,
@@ -455,8 +478,10 @@ class ModelBook:
455
478
  kwargs=dict(induction="Betz"),
456
479
  superposition=lambda s: f"ws_{s}",
457
480
  k=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
458
- hints={"superposition": "(Superposition, e.g. linear for ws_linear)",
459
- "k": "(Value, e.g. 004 for 0.04)"},
481
+ hints={
482
+ "superposition": "(Superposition, e.g. linear for ws_linear)",
483
+ "k": "(Value, e.g. 004 for 0.04)",
484
+ },
460
485
  )
461
486
 
462
487
  self.wake_models.add_factory(
@@ -464,8 +489,10 @@ class ModelBook:
464
489
  "TurbOParkIX_<superposition>_dx<dx>",
465
490
  superposition=lambda s: f"ws_{s}",
466
491
  dx=lambda x: float(x),
467
- hints={"superposition": "(Superposition, e.g. linear for ws_linear)",
468
- "dx": "(Integration step in m)"},
492
+ hints={
493
+ "superposition": "(Superposition, e.g. linear for ws_linear)",
494
+ "dx": "(Integration step in m)",
495
+ },
469
496
  )
470
497
 
471
498
  self.wake_models.add_factory(
@@ -474,9 +501,11 @@ class ModelBook:
474
501
  superposition=lambda s: f"ws_{s}",
475
502
  k=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
476
503
  dx=lambda x: float(x),
477
- hints={"superposition": "(Superposition, e.g. linear for ws_linear)",
478
- "k": "(Value, e.g. 004 for 0.04)",
479
- "dx": "(Integration step in m)"},
504
+ hints={
505
+ "superposition": "(Superposition, e.g. linear for ws_linear)",
506
+ "k": "(Value, e.g. 004 for 0.04)",
507
+ "dx": "(Integration step in m)",
508
+ },
480
509
  )
481
510
 
482
511
  self.wake_models.add_factory(
@@ -493,8 +522,10 @@ class ModelBook:
493
522
  kwargs=dict(use_ambti=False),
494
523
  superposition=lambda s: f"ti_{s}",
495
524
  k=lambda x: float(f"0.{x[1:]}" if x[0] == "0" else float(x)),
496
- hints={"superposition": "(Superposition, e.g. linear for ti_linear)",
497
- "k": "(Value, e.g. 004 for 0.04)"},
525
+ hints={
526
+ "superposition": "(Superposition, e.g. linear for ti_linear)",
527
+ "k": "(Value, e.g. 004 for 0.04)",
528
+ },
498
529
  )
499
530
 
500
531
  self.wake_models.add_factory(
@@ -520,7 +551,7 @@ class ModelBook:
520
551
  fm.wake_models.induction.SelfSimilar2020()
521
552
  )
522
553
 
523
- self.sources = Dict(
554
+ self.sources = FDict(
524
555
  name="sources",
525
556
  point_models=self.point_models,
526
557
  rotor_models=self.rotor_models,
@@ -534,7 +565,7 @@ class ModelBook:
534
565
  wake_models=self.wake_models,
535
566
  axial_induction=self.axial_induction,
536
567
  )
537
- self.base_classes = Dict(
568
+ self.base_classes = FDict(
538
569
  name="base_classes",
539
570
  point_models=PointDataModel,
540
571
  rotor_models=RotorModel,
@@ -663,7 +694,7 @@ class ModelBook:
663
694
 
664
695
  """
665
696
  for ms in self.sources.values():
666
- if isinstance(ms, Dict):
697
+ if isinstance(ms, FDict):
667
698
  for m in ms.values():
668
699
  if m.initialized:
669
700
  m.finalize(algo, verbosity)
@@ -182,6 +182,7 @@ class WSMax(WakeSuperposition):
182
182
  w = np.minimum(w, self.lim_high - amb_results)
183
183
  return w
184
184
 
185
+
185
186
  class WSMaxLocal(WakeSuperposition):
186
187
  """
187
188
  Local max supersposition of wind deficit results
@@ -184,6 +184,7 @@ class WSPow(WakeSuperposition):
184
184
  w = np.minimum(w, self.lim_high - amb_results)
185
185
  return w
186
186
 
187
+
187
188
  class WSPowLocal(WakeSuperposition):
188
189
  """
189
190
  Local power supersposition of wind deficit results
@@ -179,6 +179,7 @@ class WSQuadratic(WakeSuperposition):
179
179
  w = np.minimum(w, self.lim_high - amb_results)
180
180
  return w
181
181
 
182
+
182
183
  class WSQuadraticLocal(WakeSuperposition):
183
184
  """
184
185
  Local quadratic supersposition of wind deficit results