rafmudaf-floris 3.3.post1.dev316__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.
- rafmudaf_floris-3.3.post1.dev316/.codecov.yml +20 -0
- rafmudaf_floris-3.3.post1.dev316/.github/ISSUE_TEMPLATE/bug_report.md +78 -0
- rafmudaf_floris-3.3.post1.dev316/.github/ISSUE_TEMPLATE/config.yml +5 -0
- rafmudaf_floris-3.3.post1.dev316/.github/ISSUE_TEMPLATE/feature_request.md +57 -0
- rafmudaf_floris-3.3.post1.dev316/.github/PULL_REQUEST_TEMPLATE.md +74 -0
- rafmudaf_floris-3.3.post1.dev316/.github/dependabot.yml +12 -0
- rafmudaf_floris-3.3.post1.dev316/.github/workflows/check-working-examples.yaml +67 -0
- rafmudaf_floris-3.3.post1.dev316/.github/workflows/continuous-integration-workflow.yaml +62 -0
- rafmudaf_floris-3.3.post1.dev316/.github/workflows/cpp-backend-tests.yml +58 -0
- rafmudaf_floris-3.3.post1.dev316/.github/workflows/deploy-pages.yaml +100 -0
- rafmudaf_floris-3.3.post1.dev316/.github/workflows/python-publish.yml +37 -0
- rafmudaf_floris-3.3.post1.dev316/.github/workflows/quality-metrics-workflow.yaml +28 -0
- rafmudaf_floris-3.3.post1.dev316/.gitignore +48 -0
- rafmudaf_floris-3.3.post1.dev316/.pre-commit-config.yaml +26 -0
- rafmudaf_floris-3.3.post1.dev316/CONTRIBUTING.md +80 -0
- rafmudaf_floris-3.3.post1.dev316/LICENSE.txt +26 -0
- rafmudaf_floris-3.3.post1.dev316/PKG-INFO +256 -0
- rafmudaf_floris-3.3.post1.dev316/README.md +182 -0
- rafmudaf_floris-3.3.post1.dev316/benchmarks/bench.py +163 -0
- rafmudaf_floris-3.3.post1.dev316/docs/.nojekyll +0 -0
- rafmudaf_floris-3.3.post1.dev316/docs/_config.yml +75 -0
- rafmudaf_floris-3.3.post1.dev316/docs/_toc.yml +42 -0
- rafmudaf_floris-3.3.post1.dev316/docs/advanced_concepts.ipynb +264 -0
- rafmudaf_floris-3.3.post1.dev316/docs/api_docs.md +29 -0
- rafmudaf_floris-3.3.post1.dev316/docs/architecture.md +137 -0
- rafmudaf_floris-3.3.post1.dev316/docs/bibliography.md +6 -0
- rafmudaf_floris-3.3.post1.dev316/docs/cc.yaml +91 -0
- rafmudaf_floris-3.3.post1.dev316/docs/code_quality.ipynb +310 -0
- rafmudaf_floris-3.3.post1.dev316/docs/dev_guide.md +411 -0
- rafmudaf_floris-3.3.post1.dev316/docs/docs_image.png +0 -0
- rafmudaf_floris-3.3.post1.dev316/docs/empirical_gauss_model.md +189 -0
- rafmudaf_floris-3.3.post1.dev316/docs/floating_wind_turbine.md +16 -0
- rafmudaf_floris-3.3.post1.dev316/docs/floris_models.ipynb +390 -0
- rafmudaf_floris-3.3.post1.dev316/docs/gch.yaml +243 -0
- rafmudaf_floris-3.3.post1.dev316/docs/heterogeneous_map.ipynb +407 -0
- rafmudaf_floris-3.3.post1.dev316/docs/index.md +71 -0
- rafmudaf_floris-3.3.post1.dev316/docs/input_reference_main.md +11 -0
- rafmudaf_floris-3.3.post1.dev316/docs/input_reference_turbine.md +9 -0
- rafmudaf_floris-3.3.post1.dev316/docs/installation.md +132 -0
- rafmudaf_floris-3.3.post1.dev316/docs/intro_concepts.ipynb +998 -0
- rafmudaf_floris-3.3.post1.dev316/docs/jensen.yaml +91 -0
- rafmudaf_floris-3.3.post1.dev316/docs/layout_optimization.md +105 -0
- rafmudaf_floris-3.3.post1.dev316/docs/multidimensional_wind_turbine.ipynb +175 -0
- rafmudaf_floris-3.3.post1.dev316/docs/nrel_5MW.yaml +299 -0
- rafmudaf_floris-3.3.post1.dev316/docs/operation_models_user.ipynb +748 -0
- rafmudaf_floris-3.3.post1.dev316/docs/plot_complex_docs.png +0 -0
- rafmudaf_floris-3.3.post1.dev316/docs/powerthrust_helix.png +0 -0
- rafmudaf_floris-3.3.post1.dev316/docs/references.bib +404 -0
- rafmudaf_floris-3.3.post1.dev316/docs/turbine_library.md +68 -0
- rafmudaf_floris-3.3.post1.dev316/docs/turbine_models.ipynb +170 -0
- rafmudaf_floris-3.3.post1.dev316/docs/v3_to_v4.md +197 -0
- rafmudaf_floris-3.3.post1.dev316/docs/wake_models.ipynb +393 -0
- rafmudaf_floris-3.3.post1.dev316/docs/wind_data_user.ipynb +1118 -0
- rafmudaf_floris-3.3.post1.dev316/examples/001_opening_floris_computing_power.py +64 -0
- rafmudaf_floris-3.3.post1.dev316/examples/002_visualizations.py +96 -0
- rafmudaf_floris-3.3.post1.dev316/examples/003_wind_data_objects.py +256 -0
- rafmudaf_floris-3.3.post1.dev316/examples/004_set.py +105 -0
- rafmudaf_floris-3.3.post1.dev316/examples/005_getting_power.py +144 -0
- rafmudaf_floris-3.3.post1.dev316/examples/006_get_farm_aep.py +102 -0
- rafmudaf_floris-3.3.post1.dev316/examples/007_sweeping_variables.py +217 -0
- rafmudaf_floris-3.3.post1.dev316/examples/008_uncertain_models.py +160 -0
- rafmudaf_floris-3.3.post1.dev316/examples/009_parallel_models.py +95 -0
- rafmudaf_floris-3.3.post1.dev316/examples/010_compare_farm_power_with_neighbor.py +76 -0
- rafmudaf_floris-3.3.post1.dev316/examples/_convert_examples_to_notebooks.py +127 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_optimization/001_opt_yaw_single_ws.py +91 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_optimization/002_opt_yaw_single_ws_uncertain.py +112 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_optimization/003_opt_yaw_multiple_ws.py +122 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_optimization/004_optimize_yaw_aep.py +168 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_optimization/005_optimize_yaw_aep_parallel.py +130 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_optimization/006_compare_yaw_optimizers.py +204 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_optimization/007_optimize_yaw_with_neighbor_farms.py +323 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_optimization/008_optimize_yaw_with_disabled_turbines.py +48 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_types/001_derating_control.py +95 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_types/002_disable_turbines.py +79 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_types/003_setting_yaw_and_disabling.py +83 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_types/004_helix_active_wake_mixing.py +140 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_control_types/005_peak_shaving.py +124 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_emgauss/001_empirical_gauss_velocity_deficit_parameters.py +198 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_emgauss/002_empirical_gauss_deflection_parameters.py +228 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_floating/001_floating_turbine_models.py +144 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_floating/002_floating_vs_fixedbottom_farm.py +133 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_floating/003_tilt_driven_vertical_wake_deflection.py +91 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_get_flow/001_extract_wind_speed_at_turbines.py +39 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_get_flow/002_extract_wind_speed_at_points.py +78 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_get_flow/003_extract_turbulence_intensity_at_points.py +80 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_get_flow/004_plot_velocity_deficit_profiles.py +195 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_heterogeneous/001_heterogeneous_inflow_single.py +84 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_heterogeneous/002_heterogeneous_using_wind_data.py +146 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_heterogeneous/003_heterogeneous_speedup_by_wd_and_ws.py +113 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_heterogeneous/004_heterogeneous_2d_and_3d.py +142 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_layout_optimization/001_optimize_layout.py +138 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_layout_optimization/002_optimize_layout_with_heterogeneity.py +156 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_layout_optimization/003_genetic_random_search.py +82 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_layout_optimization/004_generate_gridded_layout.py +37 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_layout_optimization/005_layout_optimization_complex_boundary.py +83 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_load_optimization/001_lti_and_voc.py +131 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_load_optimization/002_row_opt_example.py +209 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_multidim/001_multi_dimensional_cp_ct.py +107 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_multidim/002_multi_dimensional_cp_ct_2Hs.py +73 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_multidim/003_multi_dimensional_cp_ct_TI.py +83 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_operation_models/001_compare_yaw_loss.py +77 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_turbine/001_reference_turbines.py +125 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_turbine/002_multiple_turbine_types.py +34 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_turbine/003_specify_turbine_power_curve.py +82 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_turbopark/001_compare_turbopark_implementations.py +196 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_turbopark/comparison_data/Rowpark_Orsted.csv +11 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_turbopark/comparison_data/WindDirection_Sweep_Orsted.csv +702 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_uncertain/001_uncertain_model_params.py +176 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_uncertain/002_approx_floris_model.py +73 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_uncertain/003_uncertain_model_with_parallelization.py +86 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_visualizations/001_layout_visualizations.py +90 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_visualizations/002_visualize_y_cut_plane.py +33 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_visualizations/003_visualize_cross_plane.py +37 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_visualizations/004_visualize_rotor_values.py +33 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_visualizations/005_visualize_flow_by_sweeping_turbines.py +43 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_wind_data/001_wind_data_comparisons.py +110 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_wind_data/002_generate_ti.py +74 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_wind_data/003_generate_value.py +81 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_wind_resource_grid/000_generate_example_wrg.py +227 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_wind_resource_grid/001_wind_rose_wrg.py +77 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_wind_resource_grid/002_set_floris_with_wrg.py +106 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_wind_resource_grid/003_wrg_compar_layout_optimization.py +217 -0
- rafmudaf_floris-3.3.post1.dev316/examples/examples_wind_resource_grid/wrg_example.wrg +7 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/cc.yaml +91 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/emgauss.yaml +107 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/emgauss_helix.yaml +109 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/gch.yaml +243 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/gch_heterogeneous_inflow.yaml +104 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/gch_multi_dim_cp_ct.yaml +114 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/gch_multi_dim_cp_ct_TI.yaml +114 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/gch_multiple_turbine_types.yaml +90 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/jensen.yaml +91 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/turbine_files/iea_15MW_multi_dim_TI.csv +109 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/turbine_files/iea_15MW_multi_dim_TI.yaml +13 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/turbopark.yaml +94 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/turbopark_cubature.yaml +59 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/turboparkgauss.yaml +63 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/turboparkgauss_cubature.yaml +59 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs/wind_rose.csv +1873 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs_floating/emgauss_fixed.yaml +107 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs_floating/emgauss_floating.yaml +107 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs_floating/emgauss_floating_fixedtilt15.yaml +103 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs_floating/emgauss_floating_fixedtilt5.yaml +103 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs_floating/gch_fixed.yaml +87 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs_floating/gch_floating.yaml +88 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs_floating/gch_floating_defined_floating.yaml +87 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs_floating/turbine_files/nrel_5MW_fixed.yaml +188 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs_floating/turbine_files/nrel_5MW_floating.yaml +188 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs_floating/turbine_files/nrel_5MW_floating_defined_floating.yaml +188 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs_floating/turbine_files/nrel_5MW_floating_fixedtilt15.yaml +188 -0
- rafmudaf_floris-3.3.post1.dev316/examples/inputs_floating/turbine_files/nrel_5MW_floating_fixedtilt5.yaml +188 -0
- rafmudaf_floris-3.3.post1.dev316/floris/__init__.py +24 -0
- rafmudaf_floris-3.3.post1.dev316/floris/convert_floris_input_v3_to_v4.py +93 -0
- rafmudaf_floris-3.3.post1.dev316/floris/convert_turbine_v3_to_v4.py +86 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/__init__.py +61 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/base.py +65 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/core.py +413 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/cpp_core.py +712 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/farm.py +526 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/flow_field.py +406 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/grid.py +668 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/rotor_velocity.py +238 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/solver.py +1581 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/turbine/__init__.py +11 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/turbine/controller_dependent_operation_model.py +986 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/turbine/operation_models.py +740 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/turbine/turbine.py +787 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/turbine/unified_momentum_model.py +523 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake.py +164 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_combination/__init__.py +4 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_combination/fls.py +32 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_combination/max.py +38 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_combination/sosfs.py +33 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_deflection/__init__.py +5 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_deflection/empirical_gauss.py +141 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_deflection/gauss.py +510 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_deflection/jimenez.py +130 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_deflection/none.py +54 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_turbulence/__init__.py +4 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_turbulence/crespo_hernandez.py +103 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_turbulence/none.py +32 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_turbulence/wake_induced_mixing.py +76 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_velocity/__init__.py +8 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_velocity/cumulative_gauss_curl.py +232 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_velocity/empirical_gauss.py +308 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_velocity/gauss.py +237 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_velocity/jensen.py +127 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_velocity/none.py +50 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_velocity/turbopark.py +181 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_velocity/turbopark_lookup_table.mat +0 -0
- rafmudaf_floris-3.3.post1.dev316/floris/core/wake_velocity/turboparkgauss.py +130 -0
- rafmudaf_floris-3.3.post1.dev316/floris/cut_plane.py +485 -0
- rafmudaf_floris-3.3.post1.dev316/floris/default_inputs.yaml +106 -0
- rafmudaf_floris-3.3.post1.dev316/floris/floris_model.py +1929 -0
- rafmudaf_floris-3.3.post1.dev316/floris/flow_visualization.py +773 -0
- rafmudaf_floris-3.3.post1.dev316/floris/heterogeneous_map.py +534 -0
- rafmudaf_floris-3.3.post1.dev316/floris/layout_visualization.py +591 -0
- rafmudaf_floris-3.3.post1.dev316/floris/logging_manager.py +144 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/__init__.py +5 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/layout_optimization/__init__.py +0 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/layout_optimization/layout_optimization_base.py +289 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/layout_optimization/layout_optimization_boundary_grid.py +648 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/layout_optimization/layout_optimization_gridded.py +210 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/layout_optimization/layout_optimization_pyoptsparse.py +231 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/layout_optimization/layout_optimization_pyoptsparse_spread.py +212 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/layout_optimization/layout_optimization_random_search.py +745 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/layout_optimization/layout_optimization_scipy.py +263 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/load_optimization/__init__.py +0 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/load_optimization/load_optimization.py +542 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/other/__init__.py +1 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/other/boundary_grid.py +448 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/yaw_optimization/__init__.py +0 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/yaw_optimization/yaw_optimization_base.py +631 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/yaw_optimization/yaw_optimization_tools.py +130 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/yaw_optimization/yaw_optimizer_geometric.py +243 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/yaw_optimization/yaw_optimizer_scipy.py +148 -0
- rafmudaf_floris-3.3.post1.dev316/floris/optimization/yaw_optimization/yaw_optimizer_sr.py +333 -0
- rafmudaf_floris-3.3.post1.dev316/floris/par_floris_model.py +520 -0
- rafmudaf_floris-3.3.post1.dev316/floris/parallel_floris_model.py +690 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/__init__.py +5 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/demo_cp_ct_surfaces/iea_10MW_demo_cp_ct_surface.npz +0 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/demo_cp_ct_surfaces/iea_15MW_demo_cp_ct_surface.npz +0 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/demo_cp_ct_surfaces/nrel_5MW_demo_cp_ct_surface.npz +0 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/iea_10MW.yaml +103 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/iea_15MW.yaml +195 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/iea_15MW_floating_multi_dim_cp_ct.yaml +67 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/iea_15MW_multi_dim_TI_u.csv +109 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/iea_15MW_multi_dim_Tp_Hs.csv +217 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/iea_15MW_multi_dim_cp_ct.yaml +13 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/iea_22MW.yaml +122 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/nrel_5MW.yaml +299 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/turbine_previewer.py +846 -0
- rafmudaf_floris-3.3.post1.dev316/floris/turbine_library/turbine_utilities.py +197 -0
- rafmudaf_floris-3.3.post1.dev316/floris/type_dec.py +278 -0
- rafmudaf_floris-3.3.post1.dev316/floris/uncertain_floris_model.py +1309 -0
- rafmudaf_floris-3.3.post1.dev316/floris/utilities.py +459 -0
- rafmudaf_floris-3.3.post1.dev316/floris/wind_data.py +3508 -0
- rafmudaf_floris-3.3.post1.dev316/profiling/conftest.py +739 -0
- rafmudaf_floris-3.3.post1.dev316/profiling/linux_perf.py +56 -0
- rafmudaf_floris-3.3.post1.dev316/profiling/profiling.py +54 -0
- rafmudaf_floris-3.3.post1.dev316/profiling/quality_metrics.py +135 -0
- rafmudaf_floris-3.3.post1.dev316/profiling/serial_vectorize.py +130 -0
- rafmudaf_floris-3.3.post1.dev316/profiling/timing.py +208 -0
- rafmudaf_floris-3.3.post1.dev316/pyproject.toml +247 -0
- rafmudaf_floris-3.3.post1.dev316/rafmudaf_floris.egg-info/PKG-INFO +256 -0
- rafmudaf_floris-3.3.post1.dev316/rafmudaf_floris.egg-info/SOURCES.txt +301 -0
- rafmudaf_floris-3.3.post1.dev316/rafmudaf_floris.egg-info/dependency_links.txt +1 -0
- rafmudaf_floris-3.3.post1.dev316/rafmudaf_floris.egg-info/requires.txt +26 -0
- rafmudaf_floris-3.3.post1.dev316/rafmudaf_floris.egg-info/top_level.txt +1 -0
- rafmudaf_floris-3.3.post1.dev316/setup.cfg +4 -0
- rafmudaf_floris-3.3.post1.dev316/tests/__init__.py +0 -0
- rafmudaf_floris-3.3.post1.dev316/tests/base_unit_test.py +39 -0
- rafmudaf_floris-3.3.post1.dev316/tests/conftest.py +739 -0
- rafmudaf_floris-3.3.post1.dev316/tests/controller_dependent_operation_model_unit_test.py +554 -0
- rafmudaf_floris-3.3.post1.dev316/tests/convert_v3_to_v4_test.py +52 -0
- rafmudaf_floris-3.3.post1.dev316/tests/core_unit_test.py +47 -0
- rafmudaf_floris-3.3.post1.dev316/tests/data/__init__.py +0 -0
- rafmudaf_floris-3.3.post1.dev316/tests/data/iea_15MW_multi_dim_TI.csv +109 -0
- rafmudaf_floris-3.3.post1.dev316/tests/data/input_full.yaml +90 -0
- rafmudaf_floris-3.3.post1.dev316/tests/data/nrel_5MW.yaml +299 -0
- rafmudaf_floris-3.3.post1.dev316/tests/data/nrel_5MW_custom.yaml +174 -0
- rafmudaf_floris-3.3.post1.dev316/tests/data/wind_rose.csv +4 -0
- rafmudaf_floris-3.3.post1.dev316/tests/data/wind_ti_rose.csv +4 -0
- rafmudaf_floris-3.3.post1.dev316/tests/data/wrg_test.wrg +7 -0
- rafmudaf_floris-3.3.post1.dev316/tests/farm_unit_test.py +223 -0
- rafmudaf_floris-3.3.post1.dev316/tests/floris_model_integration_test.py +1018 -0
- rafmudaf_floris-3.3.post1.dev316/tests/flow_field_unit_test.py +120 -0
- rafmudaf_floris-3.3.post1.dev316/tests/geometric_yaw_unit_test.py +155 -0
- rafmudaf_floris-3.3.post1.dev316/tests/heterogeneous_map_integration_test.py +585 -0
- rafmudaf_floris-3.3.post1.dev316/tests/layout_optimization_integration_test.py +289 -0
- rafmudaf_floris-3.3.post1.dev316/tests/layout_visualization_test.py +47 -0
- rafmudaf_floris-3.3.post1.dev316/tests/load_optimization_test.py +150 -0
- rafmudaf_floris-3.3.post1.dev316/tests/par_floris_model_unit_test.py +526 -0
- rafmudaf_floris-3.3.post1.dev316/tests/parallel_floris_model_integration_test.py +121 -0
- rafmudaf_floris-3.3.post1.dev316/tests/reg_tests/cumulative_curl_regression_test.py +753 -0
- rafmudaf_floris-3.3.post1.dev316/tests/reg_tests/empirical_gauss_regression_test.py +976 -0
- rafmudaf_floris-3.3.post1.dev316/tests/reg_tests/gauss_regression_test.py +1074 -0
- rafmudaf_floris-3.3.post1.dev316/tests/reg_tests/jensen_jimenez_regression_test.py +505 -0
- rafmudaf_floris-3.3.post1.dev316/tests/reg_tests/none_regression_test.py +418 -0
- rafmudaf_floris-3.3.post1.dev316/tests/reg_tests/random_search_layout_opt_regression_test.py +142 -0
- rafmudaf_floris-3.3.post1.dev316/tests/reg_tests/scipy_layout_opt_regression.py +137 -0
- rafmudaf_floris-3.3.post1.dev316/tests/reg_tests/turbopark_regression_test.py +450 -0
- rafmudaf_floris-3.3.post1.dev316/tests/reg_tests/turboparkgauss_regression_test.py +494 -0
- rafmudaf_floris-3.3.post1.dev316/tests/reg_tests/turbulence_models_regression_test.py +30 -0
- rafmudaf_floris-3.3.post1.dev316/tests/reg_tests/yaw_optimization_regression_test.py +187 -0
- rafmudaf_floris-3.3.post1.dev316/tests/rotor_velocity_unit_test.py +280 -0
- rafmudaf_floris-3.3.post1.dev316/tests/serial_refine_unit_test.py +107 -0
- rafmudaf_floris-3.3.post1.dev316/tests/turbine_grid_unit_test.py +87 -0
- rafmudaf_floris-3.3.post1.dev316/tests/turbine_multi_dim_unit_test.py +469 -0
- rafmudaf_floris-3.3.post1.dev316/tests/turbine_operation_models_unit_test.py +700 -0
- rafmudaf_floris-3.3.post1.dev316/tests/turbine_unit_test.py +456 -0
- rafmudaf_floris-3.3.post1.dev316/tests/turbine_utilities_unit_test.py +123 -0
- rafmudaf_floris-3.3.post1.dev316/tests/turboparkgauss_unit_test.py +80 -0
- rafmudaf_floris-3.3.post1.dev316/tests/type_dec_unit_test.py +206 -0
- rafmudaf_floris-3.3.post1.dev316/tests/uncertain_floris_model_integration_test.py +705 -0
- rafmudaf_floris-3.3.post1.dev316/tests/unified_momentum_operation_model_unit_test.py +58 -0
- rafmudaf_floris-3.3.post1.dev316/tests/utilities_unit_test.py +278 -0
- rafmudaf_floris-3.3.post1.dev316/tests/v3_to_v4_convert_test/gch.yaml +237 -0
- rafmudaf_floris-3.3.post1.dev316/tests/v3_to_v4_convert_test/nrel_5MW_v3.yaml +212 -0
- rafmudaf_floris-3.3.post1.dev316/tests/wake_unit_tests.py +14 -0
- rafmudaf_floris-3.3.post1.dev316/tests/wind_data_integration_test.py +1305 -0
- rafmudaf_floris-3.3.post1.dev316/tests/wind_rose_wrg_test.py +221 -0
- rafmudaf_floris-3.3.post1.dev316/tests/yaw_optimization_integration_test.py +66 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Codecov configuration file
|
|
2
|
+
|
|
3
|
+
comment: false
|
|
4
|
+
|
|
5
|
+
coverage:
|
|
6
|
+
range: 0..100 # sets the range for the color bar in the dashboard
|
|
7
|
+
round: down
|
|
8
|
+
precision: 2
|
|
9
|
+
status:
|
|
10
|
+
project:
|
|
11
|
+
default:
|
|
12
|
+
# allow coverage to drop by this amount and still post success
|
|
13
|
+
threshold: 10
|
|
14
|
+
patch:
|
|
15
|
+
default:
|
|
16
|
+
threshold: 10
|
|
17
|
+
|
|
18
|
+
ignore:
|
|
19
|
+
- "setup.py"
|
|
20
|
+
- "tests/"
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Report a bug to help us improve
|
|
4
|
+
title: 'Bug report'
|
|
5
|
+
labels: "Type: Bug"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!--
|
|
9
|
+
IMPORTANT NOTES
|
|
10
|
+
|
|
11
|
+
Thank you for taking the time to report a bug. If you aren't certain whether an issue
|
|
12
|
+
is a bug, please first open a Discussion. Before submitting, please reread your
|
|
13
|
+
description to ensure that other readers can reasonably understand the issue
|
|
14
|
+
you're facing and the impact on your workflow or results.
|
|
15
|
+
|
|
16
|
+
This form is written in GitHub's Markdown format. For a reference on this type
|
|
17
|
+
of syntax, see GitHub's documentation:
|
|
18
|
+
https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax
|
|
19
|
+
|
|
20
|
+
This template contains guidance for your submission within the < ! - -, - - > blocks.
|
|
21
|
+
These are comments in HTML syntax and will not appear in the submission.
|
|
22
|
+
Be sure to use the "Preview" feature on GitHub to ensure your submission is formatted as intended.
|
|
23
|
+
|
|
24
|
+
When including code snippets, please paste the text itself and wrap the code block with
|
|
25
|
+
ticks (see the other character on the tilde ~ key in a US keyboard) to format it as code.
|
|
26
|
+
For example, Python code should be wrapped in ticks like this:
|
|
27
|
+
```python
|
|
28
|
+
def a_func():
|
|
29
|
+
return 1
|
|
30
|
+
|
|
31
|
+
a = 1
|
|
32
|
+
b = a_func()
|
|
33
|
+
print(a + b)
|
|
34
|
+
```
|
|
35
|
+
This is preferred over screen shots since it is searchable and others can copy/paste
|
|
36
|
+
the text to run it.
|
|
37
|
+
-->
|
|
38
|
+
|
|
39
|
+
# Add meaningful title here
|
|
40
|
+
<!--
|
|
41
|
+
A clear and concise description of the bug including what happened
|
|
42
|
+
and what you expected to happen.
|
|
43
|
+
-->
|
|
44
|
+
|
|
45
|
+
## How to reproduce
|
|
46
|
+
<!--
|
|
47
|
+
Describe how another person with no context can recreate this issue.
|
|
48
|
+
It is typically very helpful to reduce the problem as much as possible
|
|
49
|
+
and share a minimum working example. See the note above on including
|
|
50
|
+
code as text rather than screenshots.
|
|
51
|
+
-->
|
|
52
|
+
|
|
53
|
+
## Relevant output
|
|
54
|
+
<!--
|
|
55
|
+
Include any output, plots, or other means of communication here to add context to the problem.
|
|
56
|
+
-->
|
|
57
|
+
|
|
58
|
+
## Floris version
|
|
59
|
+
<!--
|
|
60
|
+
Share your floris version and how you installed it. You can print the floris version from
|
|
61
|
+
a Python REPL or script with these commands:
|
|
62
|
+
```python
|
|
63
|
+
import floris
|
|
64
|
+
print(floris.__version__)
|
|
65
|
+
```
|
|
66
|
+
-->
|
|
67
|
+
|
|
68
|
+
## System Information
|
|
69
|
+
<!-- Add your information here. -->
|
|
70
|
+
- OS: <e.g. Ubuntu 20.04 or macOS 10.12>
|
|
71
|
+
- Python version: <Result of `python --version`>
|
|
72
|
+
- Library versions
|
|
73
|
+
- Results of `pip freeze`, for example
|
|
74
|
+
- matplotlib
|
|
75
|
+
- numpy
|
|
76
|
+
- numexpr
|
|
77
|
+
- scipy
|
|
78
|
+
- pandas
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
title: 'Feature request'
|
|
5
|
+
labels: 'Type: Enhancement'
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!--
|
|
9
|
+
IMPORTANT NOTES
|
|
10
|
+
|
|
11
|
+
Thank you for taking the time to suggest a feature. Before submitting,
|
|
12
|
+
please reread your description to ensure that other readers can reasonably
|
|
13
|
+
understand the motivation and proposed solution.
|
|
14
|
+
|
|
15
|
+
This form is written in GitHub's Markdown format. For a reference on this type
|
|
16
|
+
of syntax, see GitHub's documentation:
|
|
17
|
+
https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax
|
|
18
|
+
|
|
19
|
+
This template contains guidance for your submission within the < ! - -, - - > blocks.
|
|
20
|
+
These are comments in HTML syntax and will not appear in the submission.
|
|
21
|
+
Be sure to use the "Preview" feature on GitHub to ensure your submission is formatted as intended.
|
|
22
|
+
|
|
23
|
+
When including code snippets, please paste the text itself and wrap the code block with
|
|
24
|
+
ticks (see the other character on the tilde ~ key in a US keyboard) to format it as code.
|
|
25
|
+
For example, Python code should be wrapped in ticks like this:
|
|
26
|
+
```python
|
|
27
|
+
def a_func():
|
|
28
|
+
return 1
|
|
29
|
+
|
|
30
|
+
a = 1
|
|
31
|
+
b = a_func()
|
|
32
|
+
print(a + b)
|
|
33
|
+
```
|
|
34
|
+
This is preferred over screen shots since it is searchable and others can copy/paste
|
|
35
|
+
the text to run it.
|
|
36
|
+
-->
|
|
37
|
+
|
|
38
|
+
# Add meaningful title here
|
|
39
|
+
<!--
|
|
40
|
+
High level description of the feature request including motivation and background.
|
|
41
|
+
-->
|
|
42
|
+
|
|
43
|
+
## Proposed solution
|
|
44
|
+
<!--
|
|
45
|
+
Here's an opportunity to prototype a feature. Please include pseudocode, images, or
|
|
46
|
+
any other visual aids to communicate the idea.
|
|
47
|
+
-->
|
|
48
|
+
|
|
49
|
+
## Alternatives considered
|
|
50
|
+
<!--
|
|
51
|
+
Describe workarounds or alternatives even if hacky or incomplete.
|
|
52
|
+
-->
|
|
53
|
+
|
|
54
|
+
## Additional context
|
|
55
|
+
<!--
|
|
56
|
+
Optional. Provide anything else that helps to communicate the idea here.
|
|
57
|
+
-->
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
|
|
2
|
+
<!--
|
|
3
|
+
IMPORTANT NOTES
|
|
4
|
+
|
|
5
|
+
Is this pull request ready to be merged?
|
|
6
|
+
- Do the existing tests pass and new tests added for new code?
|
|
7
|
+
- Is all development in a state where you are proud to share it with others and
|
|
8
|
+
willing to ask other people to take the time to review it?
|
|
9
|
+
- Is it documented in such a way that a review can reasonably understand what you've
|
|
10
|
+
done and why you've done it? Can other users understand how to use your changes?
|
|
11
|
+
If not but opening the pull request will facilitate development, make it a "draft" pull request
|
|
12
|
+
|
|
13
|
+
This form is written in GitHub's Markdown format. For a reference on this type
|
|
14
|
+
of syntax, see GitHub's documentation:
|
|
15
|
+
https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax
|
|
16
|
+
|
|
17
|
+
This template contains guidance for your submission within the < ! - -, - - > blocks.
|
|
18
|
+
These are comments in HTML syntax and will not appear in the submission.
|
|
19
|
+
Be sure to use the "Preview" feature on GitHub to ensure your submission is formatted as intended.
|
|
20
|
+
|
|
21
|
+
When including code snippets, please paste the text itself and wrap the code block with
|
|
22
|
+
ticks (see the other character on the tilde ~ key in a US keyboard) to format it as code.
|
|
23
|
+
For example, Python code should be wrapped in ticks like this:
|
|
24
|
+
```python
|
|
25
|
+
def a_func():
|
|
26
|
+
return 1
|
|
27
|
+
|
|
28
|
+
a = 1
|
|
29
|
+
b = a_func()
|
|
30
|
+
print(a + b)
|
|
31
|
+
```
|
|
32
|
+
This is preferred over screen shots since it is searchable and others can copy/paste
|
|
33
|
+
the text to run it.
|
|
34
|
+
-->
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
# Add meaningful title here
|
|
38
|
+
<!--
|
|
39
|
+
Be sure to title your pull request so that readers can scan through the list of PR's and understand
|
|
40
|
+
what this one involves. It should be a few well selected words to get the point across. If you have
|
|
41
|
+
a hard time choosing a brief title, consider splitting the pull request into multiple pull requests.
|
|
42
|
+
Keep in mind that the title will be automatically included in the release notes.
|
|
43
|
+
-->
|
|
44
|
+
Describe your feature here.
|
|
45
|
+
|
|
46
|
+
## Related issue
|
|
47
|
+
<!--
|
|
48
|
+
If one exists, link to a related GitHub Issue.
|
|
49
|
+
-->
|
|
50
|
+
|
|
51
|
+
## Impacted areas of the software
|
|
52
|
+
<!--
|
|
53
|
+
List any modules or other areas which should be impacted by this pull request. This helps to determine the verification tests.
|
|
54
|
+
-->
|
|
55
|
+
|
|
56
|
+
## Additional supporting information
|
|
57
|
+
<!--
|
|
58
|
+
Add any other context about the problem here.
|
|
59
|
+
-->
|
|
60
|
+
|
|
61
|
+
## Test results, if applicable
|
|
62
|
+
<!--
|
|
63
|
+
Add the results from unit tests and regression tests here along with justification for any failing test cases.
|
|
64
|
+
-->
|
|
65
|
+
|
|
66
|
+
<!--
|
|
67
|
+
__ For NLR use __
|
|
68
|
+
Release checklist:
|
|
69
|
+
- Update the version in
|
|
70
|
+
- [ ] README.md (appears twice in README.md)
|
|
71
|
+
- [ ] pyproject.toml
|
|
72
|
+
- [ ] Verify docs builds correctly
|
|
73
|
+
- [ ] Create a tag in the NREL/FLORIS repository
|
|
74
|
+
-->
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: "pip"
|
|
4
|
+
directory: "/" # Location of package manifests
|
|
5
|
+
target-branch: "develop"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: "monthly"
|
|
8
|
+
labels:
|
|
9
|
+
- "package"
|
|
10
|
+
ignore:
|
|
11
|
+
- dependency-name: "*"
|
|
12
|
+
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
name: Check Examples APIs
|
|
2
|
+
|
|
3
|
+
on: [push, pull_request]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
|
|
7
|
+
examples-check:
|
|
8
|
+
runs-on: ${{ matrix.os }}
|
|
9
|
+
strategy:
|
|
10
|
+
matrix:
|
|
11
|
+
python-version: ["3.10", "3.14"]
|
|
12
|
+
os: [ubuntu-latest]
|
|
13
|
+
fail-fast: False
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v3
|
|
17
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
18
|
+
uses: actions/setup-python@v4
|
|
19
|
+
with:
|
|
20
|
+
python-version: ${{ matrix.python-version }}
|
|
21
|
+
- name: Install project
|
|
22
|
+
run: |
|
|
23
|
+
python -m pip install --upgrade pip
|
|
24
|
+
pip install .
|
|
25
|
+
pip install nbconvert # For converting Jupyter notebook to python script in the next step
|
|
26
|
+
|
|
27
|
+
- name: Run examples (ubuntu, macos)
|
|
28
|
+
# Run all examples and test that they finish successfully. Do not evaluate the results.
|
|
29
|
+
# Copy the examples to a new directory outside of the repo to ensure that there is no
|
|
30
|
+
# reliance on the repo directory structure.
|
|
31
|
+
run: |
|
|
32
|
+
mkdir -p temp1/temp2/temp3
|
|
33
|
+
cp -rL examples temp1/temp2/temp3/.
|
|
34
|
+
cd temp1/temp2/temp3/examples/
|
|
35
|
+
|
|
36
|
+
error_found=0 # 0 is false
|
|
37
|
+
error_results="Error in example:"
|
|
38
|
+
|
|
39
|
+
# Now run the examples in root and subdirectories
|
|
40
|
+
echo "Running examples"
|
|
41
|
+
for d in . $(find . -type d -name "*examples*"); do
|
|
42
|
+
cd $d
|
|
43
|
+
echo "========================= Example directory- $d"
|
|
44
|
+
for i in *.py; do
|
|
45
|
+
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Running example- $i"
|
|
46
|
+
|
|
47
|
+
# If "convert_examples" is in i, skip this script
|
|
48
|
+
if [[ $i == *"convert_examples"* ]]; then
|
|
49
|
+
continue
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
if ! python $i; then
|
|
53
|
+
error_results="${error_results}"$'\n'" - ${i}"
|
|
54
|
+
error_found=1
|
|
55
|
+
fi
|
|
56
|
+
done
|
|
57
|
+
if [ "$d" != "." ]; then
|
|
58
|
+
cd ..
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
done
|
|
62
|
+
|
|
63
|
+
if [[ $error_found ]]; then
|
|
64
|
+
echo "${error_results}"
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
exit $error_found
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
name: Automated tests & code coverage
|
|
2
|
+
|
|
3
|
+
on: [push, pull_request]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
|
|
7
|
+
code-qa-validation:
|
|
8
|
+
runs-on: ${{ matrix.os }}
|
|
9
|
+
strategy:
|
|
10
|
+
matrix:
|
|
11
|
+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
12
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
13
|
+
fail-fast: False
|
|
14
|
+
env:
|
|
15
|
+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v3
|
|
19
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
20
|
+
uses: actions/setup-python@v4
|
|
21
|
+
with:
|
|
22
|
+
python-version: ${{ matrix.python-version }}
|
|
23
|
+
- name: Install project
|
|
24
|
+
run: |
|
|
25
|
+
python -m pip install --upgrade pip
|
|
26
|
+
pip install ".[develop]"
|
|
27
|
+
- uses: pre-commit/action@v3.0.0
|
|
28
|
+
- name: Run tests (ubuntu, macos)
|
|
29
|
+
if: matrix.os != 'windows-latest' && (success() || failure()) # Run this step even if the linting step fails
|
|
30
|
+
run: |
|
|
31
|
+
mkdir -p temp1/temp2/temp3
|
|
32
|
+
cp -rL tests temp1/temp2/temp3/.
|
|
33
|
+
cd temp1/temp2/temp3/
|
|
34
|
+
|
|
35
|
+
# -rA displays the captured output for all tests after they're run
|
|
36
|
+
# See the docs: https://doc.pytest.org/en/latest/reference/reference.html#command-line-flags
|
|
37
|
+
pytest -rA tests/ --ignore tests/timing.py --ignore tests/profiling.py --ignore tests/reg_tests/gauss_regression_test.py
|
|
38
|
+
- name: Run tests (windows)
|
|
39
|
+
if: matrix.os == 'windows-latest' && (success() || failure()) # Run this step even if the linting step fails
|
|
40
|
+
run: |
|
|
41
|
+
mkdir -p temp1/temp2/temp3
|
|
42
|
+
cp -r tests temp1/temp2/temp3/.
|
|
43
|
+
cd temp1/temp2/temp3/
|
|
44
|
+
|
|
45
|
+
# -rA displays the captured output for all tests after they're run
|
|
46
|
+
# See the docs: https://doc.pytest.org/en/latest/reference/reference.html#command-line-flags
|
|
47
|
+
pytest -rA tests/ --ignore tests/timing.py --ignore tests/profiling.py --ignore tests/reg_tests/gauss_regression_test.py
|
|
48
|
+
- name: Generate coverage report
|
|
49
|
+
# Run these tests on unit tests only so that we avoid inflating our code
|
|
50
|
+
# coverage through the regression tests
|
|
51
|
+
if: matrix.os == 'ubuntu-latest'
|
|
52
|
+
run: |
|
|
53
|
+
pip install pytest
|
|
54
|
+
pip install pytest-cov
|
|
55
|
+
pytest --cov=./ --cov-report=xml tests/ --ignore tests/reg_tests --ignore tests/timing.py --ignore tests/profiling.py
|
|
56
|
+
- name: Upload coverage to Codecov
|
|
57
|
+
if: ${{ matrix.os == 'ubuntu-latest' && env.CODECOV_TOKEN }} # Don't attempt to upload if the codecov token is not configured
|
|
58
|
+
uses: codecov/codecov-action@v3
|
|
59
|
+
with:
|
|
60
|
+
token: ${{ env.CODECOV_TOKEN }}
|
|
61
|
+
files: ./coverage.xml
|
|
62
|
+
fail_ci_if_error: true
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: C++ backend tests (floraf)
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
# branches: [floraf]
|
|
6
|
+
branches: ["cpp-v4.6.4"]
|
|
7
|
+
# pull_request:
|
|
8
|
+
# branches: [floraf]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
cpp-backend-tests:
|
|
12
|
+
name: ${{ matrix.os }} / Python ${{ matrix.python-version }}
|
|
13
|
+
runs-on: ${{ matrix.os }}
|
|
14
|
+
strategy:
|
|
15
|
+
fail-fast: false
|
|
16
|
+
matrix:
|
|
17
|
+
os: [ubuntu-latest, macos-14]
|
|
18
|
+
python-version: ["3.12"]
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
|
|
23
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
24
|
+
uses: actions/setup-python@v5
|
|
25
|
+
with:
|
|
26
|
+
python-version: ${{ matrix.python-version }}
|
|
27
|
+
|
|
28
|
+
- name: Install floris with test dependencies
|
|
29
|
+
# Install floris before torch so that scikit-build-core's cmake step
|
|
30
|
+
# does not attempt to build the (now-removed) floris/cpp extension.
|
|
31
|
+
run: pip install ".[develop]"
|
|
32
|
+
|
|
33
|
+
- name: Install libtorch (CPU)
|
|
34
|
+
# Install the CPU-only torch wheel explicitly so that the floraf wheel
|
|
35
|
+
# does not pull in the heavier CUDA variant from PyPI.
|
|
36
|
+
run: pip install torch --index-url https://download.pytorch.org/whl/cpu
|
|
37
|
+
|
|
38
|
+
- name: Download floraf wheel from private releases
|
|
39
|
+
env:
|
|
40
|
+
GH_TOKEN: ${{ secrets.FLORAF_WHEEL_TOKEN }}
|
|
41
|
+
run: |
|
|
42
|
+
mkdir -p floraf-wheels
|
|
43
|
+
# Download all cp312 wheels; pip will select the platform-compatible one.
|
|
44
|
+
gh release download \
|
|
45
|
+
--repo rafmudaf/floraf \
|
|
46
|
+
--pattern "*cp312*.whl" \
|
|
47
|
+
--dir floraf-wheels/
|
|
48
|
+
ls floraf-wheels/
|
|
49
|
+
|
|
50
|
+
- name: Install floraf wheel
|
|
51
|
+
# --find-links lets pip select the wheel that matches the current platform.
|
|
52
|
+
run: pip install --find-links floraf-wheels/ floraf
|
|
53
|
+
|
|
54
|
+
- name: Run C++ backend integration tests
|
|
55
|
+
env:
|
|
56
|
+
FLORAF_LICENSE_KEY: ${{ secrets.FLORAF_LICENSE_KEY }}
|
|
57
|
+
run: |
|
|
58
|
+
pytest tests/reg_tests/gauss_regression_test.py -v
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
name: deploy-pages
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- develop
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
workflow_dispatch: # Allows manual triggering of the workflow
|
|
10
|
+
|
|
11
|
+
# This job installs dependencies, builds the book, and pushes it to `gh-pages`
|
|
12
|
+
jobs:
|
|
13
|
+
deploy-book:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v2
|
|
17
|
+
|
|
18
|
+
# Install dependencies
|
|
19
|
+
- name: Set up Python
|
|
20
|
+
uses: actions/setup-python@v4
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3"
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: |
|
|
26
|
+
pip install -e ".[docs, develop]"
|
|
27
|
+
|
|
28
|
+
# Make a copy of the examples folder within the docs folder
|
|
29
|
+
- name: Copy examples to docs
|
|
30
|
+
working-directory: ${{runner.workspace}}/floris/
|
|
31
|
+
run: |
|
|
32
|
+
rsync -av examples/ docs/examples
|
|
33
|
+
ls docs/examples
|
|
34
|
+
|
|
35
|
+
# Run the script examples/_convert_examples_to_notebooks.py
|
|
36
|
+
- name: Convert examples to notebooks
|
|
37
|
+
working-directory: ${{runner.workspace}}/floris/docs/examples/
|
|
38
|
+
run: |
|
|
39
|
+
pwd
|
|
40
|
+
ls
|
|
41
|
+
python _convert_examples_to_notebooks.py
|
|
42
|
+
|
|
43
|
+
# Build the book
|
|
44
|
+
- name: Build the book
|
|
45
|
+
working-directory: ${{runner.workspace}}/floris/docs/
|
|
46
|
+
run: |
|
|
47
|
+
jupyter-book build .
|
|
48
|
+
|
|
49
|
+
# Push the book's HTML to github-pages
|
|
50
|
+
- name: GitHub Pages action
|
|
51
|
+
uses: peaceiris/actions-gh-pages@v4.0.0
|
|
52
|
+
with:
|
|
53
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
54
|
+
publish_dir: ./docs/_build/html
|
|
55
|
+
|
|
56
|
+
# Stash changes before benchmark action
|
|
57
|
+
- name: Stash changes
|
|
58
|
+
working-directory: ${{runner.workspace}}/floris/
|
|
59
|
+
run: |
|
|
60
|
+
git stash
|
|
61
|
+
|
|
62
|
+
- name: Run benchmark
|
|
63
|
+
working-directory: ${{runner.workspace}}/floris/
|
|
64
|
+
run: |
|
|
65
|
+
ls -lah
|
|
66
|
+
cd benchmarks
|
|
67
|
+
pytest bench.py --benchmark-json output.json
|
|
68
|
+
|
|
69
|
+
# Store benchmark result and create the benchmark pages
|
|
70
|
+
# Update the index.html and data.js files in the
|
|
71
|
+
# dev/bench folder of the benches branch
|
|
72
|
+
# dev/bench is the default folder for pytest-benchmark
|
|
73
|
+
- name: Store benchmark result
|
|
74
|
+
uses: benchmark-action/github-action-benchmark@v1
|
|
75
|
+
with:
|
|
76
|
+
name: Python Benchmark with pytest-benchmark
|
|
77
|
+
tool: 'pytest'
|
|
78
|
+
output-file-path: benchmarks/output.json
|
|
79
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
80
|
+
auto-push: true
|
|
81
|
+
gh-pages-branch: benches
|
|
82
|
+
|
|
83
|
+
# Add bench mark files to the gh-pages branch
|
|
84
|
+
- name: Add benchmark files to gh-pages
|
|
85
|
+
working-directory: ${{runner.workspace}}/floris/
|
|
86
|
+
run: |
|
|
87
|
+
ls -lah
|
|
88
|
+
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
89
|
+
git config --global user.name "github-actions[bot]"
|
|
90
|
+
git fetch origin benches
|
|
91
|
+
git checkout benches
|
|
92
|
+
rsync -av dev/bench /tmp/bench
|
|
93
|
+
git fetch origin gh-pages
|
|
94
|
+
git checkout gh-pages
|
|
95
|
+
mkdir -p dev
|
|
96
|
+
rsync -av /tmp/bench/ dev/
|
|
97
|
+
ls -lah dev/bench
|
|
98
|
+
git add dev
|
|
99
|
+
git commit -m "Add bench folder to gh-pages"
|
|
100
|
+
git push origin gh-pages
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# This workflows will upload a Python Package using Twine when a release is created
|
|
2
|
+
# Published via GitHub Actions as a PyPI Trusted Publisher.
|
|
3
|
+
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
|
|
4
|
+
# and: https://docs.pypi.org/trusted-publishers/
|
|
5
|
+
|
|
6
|
+
name: Upload Python Package
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
push:
|
|
10
|
+
branches: [cpp-v4.6.4]
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
deploy:
|
|
14
|
+
environment: release-pypi
|
|
15
|
+
if: github.repository_owner == 'rafmudaf'
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
permissions:
|
|
18
|
+
id-token: write
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v6
|
|
21
|
+
with:
|
|
22
|
+
fetch-depth: 0
|
|
23
|
+
fetch-tags: true
|
|
24
|
+
- name: Set up Python
|
|
25
|
+
uses: actions/setup-python@v6
|
|
26
|
+
with:
|
|
27
|
+
python-version: '3.x'
|
|
28
|
+
- name: Install dependencies and build package
|
|
29
|
+
run: |
|
|
30
|
+
python -m pip install --upgrade pip
|
|
31
|
+
pip install build twine
|
|
32
|
+
python -m build
|
|
33
|
+
twine check --strict dist/*
|
|
34
|
+
- name: Publish package to PyPI
|
|
35
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
36
|
+
with:
|
|
37
|
+
verbose: True
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Code Quality Check
|
|
2
|
+
|
|
3
|
+
on: [push, pull_request]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
|
|
7
|
+
code-qa-validation:
|
|
8
|
+
runs-on: ${{ matrix.os }}
|
|
9
|
+
strategy:
|
|
10
|
+
matrix:
|
|
11
|
+
python-version: ["3.13"]
|
|
12
|
+
os: [ubuntu-latest]
|
|
13
|
+
fail-fast: False
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v3
|
|
17
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
18
|
+
uses: actions/setup-python@v4
|
|
19
|
+
with:
|
|
20
|
+
python-version: ${{ matrix.python-version }}
|
|
21
|
+
- name: Install project
|
|
22
|
+
run: |
|
|
23
|
+
python -m pip install --upgrade pip
|
|
24
|
+
pip install ".[develop]"
|
|
25
|
+
- name: Run the code quality script
|
|
26
|
+
run: |
|
|
27
|
+
cd profiling
|
|
28
|
+
python quality_metrics.py
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
|
|
2
|
+
# python compiled files
|
|
3
|
+
__pycache__/
|
|
4
|
+
.cache
|
|
5
|
+
*.ipynb
|
|
6
|
+
*.ipynb_checkpoints
|
|
7
|
+
*.pyc
|
|
8
|
+
*.egg-info
|
|
9
|
+
dist
|
|
10
|
+
build
|
|
11
|
+
.pytest_cache
|
|
12
|
+
.ruff_cache
|
|
13
|
+
|
|
14
|
+
# pip meta data
|
|
15
|
+
pip-wheel-metadata
|
|
16
|
+
|
|
17
|
+
# macOS files
|
|
18
|
+
.DS_Store
|
|
19
|
+
|
|
20
|
+
# IDE settings and files
|
|
21
|
+
.idea
|
|
22
|
+
.vscode
|
|
23
|
+
|
|
24
|
+
# Documentation notebooks
|
|
25
|
+
!docs/*.ipynb
|
|
26
|
+
|
|
27
|
+
# The examples folder within docs
|
|
28
|
+
docs/examples
|
|
29
|
+
|
|
30
|
+
# Documentation output
|
|
31
|
+
_site/
|
|
32
|
+
.jekyll-cache/
|
|
33
|
+
_build
|
|
34
|
+
_autosummary/
|
|
35
|
+
|
|
36
|
+
# Output from examples
|
|
37
|
+
examples/cp_ct_cq_lut.p
|
|
38
|
+
examples/hist.hist
|
|
39
|
+
examples/SLSQP.out
|
|
40
|
+
|
|
41
|
+
# Log files
|
|
42
|
+
*.log
|
|
43
|
+
|
|
44
|
+
# Temp files in convert test
|
|
45
|
+
tests/v3_to_v4_convert_test/convert_turbine_v3_to_v4.py
|
|
46
|
+
tests/v3_to_v4_convert_test/convert_floris_input_v3_to_v4.py
|
|
47
|
+
tests/v3_to_v4_convert_test/gch_v4.yaml
|
|
48
|
+
tests/v3_to_v4_convert_test/nrel_5MW_v3_v4.yaml
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
|
|
2
|
+
repos:
|
|
3
|
+
|
|
4
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
5
|
+
rev: v4.4.0
|
|
6
|
+
hooks:
|
|
7
|
+
- id: trailing-whitespace
|
|
8
|
+
- id: end-of-file-fixer
|
|
9
|
+
- id: check-executables-have-shebangs
|
|
10
|
+
- id: check-yaml
|
|
11
|
+
args: [--unsafe]
|
|
12
|
+
- id: check-merge-conflict
|
|
13
|
+
- id: check-symlinks
|
|
14
|
+
- id: mixed-line-ending
|
|
15
|
+
|
|
16
|
+
- repo: https://github.com/charliermarsh/ruff-pre-commit
|
|
17
|
+
rev: v0.9.6
|
|
18
|
+
hooks:
|
|
19
|
+
- id: ruff
|
|
20
|
+
|
|
21
|
+
- repo: https://github.com/timothycrosley/isort
|
|
22
|
+
rev: 5.12.0
|
|
23
|
+
hooks:
|
|
24
|
+
- id: isort
|
|
25
|
+
name: isort
|
|
26
|
+
stages: [commit]
|