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.
- {foxes-0.7.1/foxes.egg-info → foxes-0.7.2}/PKG-INFO +1 -1
- foxes-0.7.2/foxes/VERSION +1 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/downwind.py +3 -1
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/__init__.py +1 -1
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/model_book.py +91 -60
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ws_max.py +1 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ws_pow.py +1 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ws_quadratic.py +1 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/factory.py +86 -70
- {foxes-0.7.1 → foxes-0.7.2/foxes.egg-info}/PKG-INFO +1 -1
- {foxes-0.7.1 → foxes-0.7.2}/foxes.egg-info/SOURCES.txt +3 -3
- foxes-0.7.1/foxes/VERSION +0 -1
- {foxes-0.7.1 → foxes-0.7.2}/LICENSE +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/Logo_FOXES.svg +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/MANIFEST.in +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/README.md +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/farm_wakes_calc.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/init_farm_data.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/point_wakes_calc.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/reorder_farm_output.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/set_amb_farm_results.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/downwind/models/set_amb_point_results.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/iterative/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/iterative/iterative.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/iterative/models/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/iterative/models/convergence.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/iterative/models/farm_wakes_calc.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/iterative/models/urelax.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/sequential/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/sequential/models/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/sequential/models/plugin.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/sequential/models/seq_state.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/algorithms/sequential/sequential.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/constants.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/algorithm.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/axial_induction_model.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/data.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/data_calc_model.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/farm_controller.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/farm_data_model.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/farm_model.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/model.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/partial_wakes_model.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/point_data_model.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/rotor_model.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/states.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/turbine.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/turbine_model.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/turbine_type.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/vertical_profile.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/wake_frame.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/wake_model.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/wake_superposition.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/core/wind_farm.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/farms/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/farms/test_farm_67.csv +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/parse.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/power_ct_curves/DTU-10MW-D178d3-H119.csv +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/power_ct_curves/IEA-15MW-D240-H150.csv +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/power_ct_curves/IWT-7d5MW-D164-H100.csv +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/power_ct_curves/NREL-5MW-D126-H90.csv +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/power_ct_curves/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/WRF-Timeseries-4464.csv.gz +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/abl_states_6000.csv.gz +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/timeseries_100.csv.gz +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/timeseries_3000.csv.gz +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/timeseries_8000.csv.gz +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/wind_rose_bremen.csv +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/wind_rotation.nc +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/states/winds100.tab +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/data/static_data.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/from_csv.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/from_df.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/from_file.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/from_json.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/from_random.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/grid.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/farm_layout/row.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/create/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/create/random_abl_states.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/create/random_timeseries.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/field_data_nc.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/multi_height.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/scan_ws.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/single.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/states/states_table.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/windio/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/input/windio/windio.py +0 -0
- {foxes-0.7.1/foxes/models/axial_induction_models → foxes-0.7.2/foxes/models/axial_induction}/__init__.py +0 -0
- {foxes-0.7.1/foxes/models/axial_induction_models → foxes-0.7.2/foxes/models/axial_induction}/betz.py +0 -0
- {foxes-0.7.1/foxes/models/axial_induction_models → foxes-0.7.2/foxes/models/axial_induction}/madsen.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/farm_controllers/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/farm_controllers/basic.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/farm_models/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/farm_models/turbine2farm.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/axiwake.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/centre.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/grid.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/rotor_points.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/segregated.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/partial_wakes/top_hat.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/point_models/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/point_models/set_uniform_data.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/point_models/tke2ti.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/point_models/wake_deltas.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/rotor_models/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/rotor_models/centre.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/rotor_models/grid.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/rotor_models/levels.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/calculator.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/kTI_model.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/lookup_table.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/power_mask.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/rotor_centre_calc.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/sector_management.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/set_farm_vars.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/table_factors.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/thrust2ct.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/yaw2yawm.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_models/yawm2yaw.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/CpCt_file.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/CpCt_from_two.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/PCt_file.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/PCt_from_two.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/null_type.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/wsrho2PCt_from_two.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/turbine_types/wsti2PCt_from_two.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/abl_log_neutral_ws.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/abl_log_stable_ws.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/abl_log_unstable_ws.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/abl_log_ws.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/data_profile.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/sheared_ws.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/vertical_profiles/uniform.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/farm_order.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/rotor_wd.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/seq_dynamic_wakes.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/streamlines.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/timelines.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_frames/yawed_wakes.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/axisymmetric.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/dist_sliced.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/gaussian.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/induction/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/induction/rankine_half_body.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/induction/rathmann.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/induction/self_similar.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/induction/self_similar2020.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/ti/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/ti/crespo_hernandez.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/ti/iec_ti.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/top_hat.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/wake_mirror.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/wind/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/wind/bastankhah14.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/wind/bastankhah16.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/wind/jensen.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_models/wind/turbopark.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ti_linear.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ti_max.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ti_pow.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ti_quadratic.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ws_linear.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/models/wake_superpositions/ws_product.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/constraints/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/constraints/area_geometry.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/constraints/min_dist.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/core/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/core/farm_constraint.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/core/farm_objective.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/core/farm_opt_problem.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/core/farm_vars_problem.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/core/pop_states.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/objectives/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/objectives/farm_vars.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/objectives/max_n_turbines.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/farm_layout.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/constraints.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/geom_layout.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/geom_layout_gridded.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/geom_reggrid.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/geom_reggrids.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/geom_layouts/objectives.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/reggrids_layout.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/layout/regular_layout.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/opt/problems/opt_farm_vars.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/animation.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/calc_points.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/farm_layout.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/farm_results_eval.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/flow_plots_2d/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/flow_plots_2d/flow_plots.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/flow_plots_2d/get_fig.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/flow_plots_2d/seq_flow_ani_plugin.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/flow_plots_2d.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/grids.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/output.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/results_writer.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/rose_plot.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/rotor_point_plots.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/round.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/slice_data.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/state_turbine_map.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/output/turbine_type_curves.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/abl/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/abl/neutral.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/abl/sheared.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/abl/stable.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/abl/unstable.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/cubic_roots.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/data_book.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/dict.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/exec_python.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/area_geometry.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/circle.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/example_intersection.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/example_union.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/half_plane.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geom2d/polygon.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geopandas_helpers.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/geopandas_utils.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/load.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/pandas_helpers.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/pandas_utils.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/plotly_helpers.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/random_xy.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/regularize.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/runners/__init__.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/runners/runners.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/subclasses.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/tab_files.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/two_circles.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/wind_dir.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/windrose_plot.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/utils/xarray_utils.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes/variables.py +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes.egg-info/dependency_links.txt +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes.egg-info/requires.txt +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes.egg-info/top_level.txt +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/foxes.egg-info/zip-safe +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/pyproject.toml +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/setup.cfg +0 -0
- {foxes-0.7.1 → foxes-0.7.2}/setup.py +0 -0
|
@@ -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(
|
|
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
|
|
|
@@ -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
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
61
|
+
sources: foxes.utils.FDict
|
|
62
62
|
All sources dict
|
|
63
|
-
base_classes: foxes.utils.
|
|
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 =
|
|
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(
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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 =
|
|
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={
|
|
169
|
-
|
|
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={
|
|
178
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
313
|
-
self.axial_induction["Betz"] = fm.
|
|
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={
|
|
332
|
-
|
|
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={
|
|
349
|
-
|
|
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={
|
|
365
|
-
|
|
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={
|
|
381
|
-
|
|
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={
|
|
397
|
-
|
|
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={
|
|
412
|
-
|
|
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={
|
|
428
|
-
|
|
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={
|
|
443
|
-
|
|
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={
|
|
459
|
-
|
|
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={
|
|
468
|
-
|
|
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={
|
|
478
|
-
|
|
479
|
-
|
|
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={
|
|
497
|
-
|
|
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 =
|
|
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 =
|
|
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,
|
|
697
|
+
if isinstance(ms, FDict):
|
|
667
698
|
for m in ms.values():
|
|
668
699
|
if m.initialized:
|
|
669
700
|
m.finalize(algo, verbosity)
|