Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FLORIS v4.2 #994

Merged
merged 17 commits into from
Oct 26, 2024
Merged

FLORIS v4.2 #994

merged 17 commits into from
Oct 26, 2024

Conversation

misi9170
Copy link
Collaborator

@misi9170 misi9170 commented Oct 7, 2024

FLORIS v4.2 brings further new features to FLORIS, along with some performance enhancements and bug fixes/minor improvements

New features

Performance enhancements

Functional enhancements

Bug fixes

New Contributors

Full Changelog: v4.1.1...v4.2

__ For NREL use __
Release checklist:

  • Update the version in
    • README.md
    • floris/VERSION
  • Verify docs builds correctly
  • Create a tag in the NREL/FLORIS repository

JasperShell and others added 16 commits July 18, 2024 10:38
* added turboparkgauss & double gauss wake models

* Correct implementation of mirror turbines

* Test case files added

* isort, ruff.

* Switch to relative inputs to run from PR_TurbOParkGauss directory.

* Clean up rowpark example some, add comments.

* Move inputs into single file for simplicity.

* Second input file for RowPark.

* Simplify inputs to TwinPark example.

* Clean up TwinPark runscript.

* Consolidate example scripts.

* Consolidate input files.

* Move data to subdirectory.

* Add _sorted_interial_frame coordinates for viz purposes.

* Consolidate single turbine example into main runscript.

* Build constant CT turbine in script.

* Remove inputs directory; all information now in input yamls and script.

* move to examples directory.

* empty lines.

* Add description to example.

* Fix trailing whitespace issue.

* isort.

* Add reg test consistent with other wake models.

* Add full flow reg test.

* Add unit test to compare to Nygaard results.

* Add unit test.

* End lines.

* Move D factor outside of characteristic_wake_width calculation.

* Make mirror wakes optional (but hardcoded to included) similar to EmG.

* Add TODO note.

* Import gaussian_function to avoid redundant code and remove unneeded functions.

* Fix bug that was using np.min in place of np.minimum, which is a carry-over from turbopark.py (and persists there).

* Update reg tests after np.min bugfix.

* Update refs.

* removed sigma_max_rel & wtg_overlapping, introduced include_mirror_wake as argument

Removed sigma_max_rel, because that restriction is not needed in this implementation.

Therefore also removed wtg_overlapping mask

Introduced include_mirror_wake as input argument

* Removed doublegauss wake model

This wake model was only included to demonstrate that other wake models could be implemented.
The current implementation was not complete, it had some shortcomings compared to the latest literature.
Hence, removing it from this pull request. It can be introduced later in another pull request.

* Remove sigma_max_rel from testing.

* Minor changes to full flow solver results after removal of sigma_max_rel.

* Add description and citation for new turbopark implementation.

* Remove commented out code for Doublegass model.

* Add comments on comparison data from Matlab

* add warning recommending using turboparkgauss; leave constants hardcoded in characteristic_wake_width

* remove unclear comment about original turbopark implementation mismatch.'

* Fix typo.

---------

Co-authored-by: misi9170 <[email protected]>
* Add wrg_reader file

* Blocking in notebook to generate example wrg file

* small additions

* Update notebook and example wrg

* Remove wrg reader file

* Notebook to script

* add WindResourceGrid to import

* Initial implementation of WindResourceGrid

* First tests of wind_resource_grid

* Change to 2x3

* Update wind_resource_grid and tests

* Add print out

* Add print out

* Add WindRoseByTurbineObject

* Method to generate WindRoseByTurbine

* Add tests of WindRoseByTurbine

* test get_wind_rose_by_turbine

* Update examples

* Add a test that expected farm power hasn't changed

* Start implementing expected turbine power

* Update example

* Update unpack

* bugfix

* Update expected functions

* Finish example 2

* Add test for expected functions

* Renumber examples

* Add wrg option to layout opt

* Add layout opt example

* Update 001 to make clearer accelerations

* Add print out feature

* Add get_hetergeneous_map func

* Add examples 4 and 5

* Update test

* Remove echo from example

* Renumber examples

* Update init to new structure

* Update example 001

* Delete wind_resource_grid file

* Update to WindRoseWRG

* Update imports and references to old class name

* Update example 1

* Update example 01

* Update example 001

* Update example 1

* Floris updates layout

* Fix update layout

* Allow ti_table

* fix call to set_layout

* Update example 2

* Fix the ordering of applying layout to wind data

* Roll back changes to layout opt

* Update example 3

* clean up plot

* back to 60

* Fix issue in upsampling limits

* Update example 1

* Rename example 2

* Update example 3

* Bugfix in random search

* Update layout examples

* Update example wrg

* Update het function

* Update tests

* Update example 3

* A couple of minor formatting changes.

* Improve upsampling to retain coverage of original areas

* Update tests

* Initial upsample fixes

* Upsample testing changes

* clean up code

* clean up tests

* matching changes to wind_ti_rose

* update wind_ti_rose tests

* Split off get_weighted_turbine_powers function

* Update test names

* Fix call to equal axis

* Update wind_data doc

* Small update

* Formatting updates.

* Minor cleanup.

* Remove subset_wind_speeds from WindRose and perform actions in WindRoseWRG.get_heterogeneous_wind_rose instead.

* bugfix

* Remove block comment

* Add and test check for even spacing of wind_speeds; add note about assigned freq.

---------

Co-authored-by: misi9170 <[email protected]>
* Instantiate Turbine objects only once for each different type of turbine.

* Raise clear error of turbine_type is same but dictionaries do not match

* Clean up comments.

* Add test to check that turbine_definitions and turbine_map reflect changes as expected.

* Use private attribute _turbine_definition_cache throughout.

* use factory=dict on attrs attribute to avoid need to assign empty {}

* Add factory=list to _turbine_types private attribute to ensure acts as expected.
* Initial work on a consistent parallel FLORIS model (#977)

* Copy for easier comparison and development.

* temp commit to save progress.

* Starting to build out new ParallelFlorisModel (name not yet fixed).

* Begin building tests.

* Cleanup and formatting.

* Now able to use run() in parallel.

* Switch to hidden _get_turbine_powers.

* Add backcompatibility with existing parallel model; print timings; add powers_only option.

* Example comparing timing.

* Formatting fixes.

* Test for return_turbine_powers_only flag.

* Backcompatibility in configuration.

* Appears there is no saving in calling run() twice---all overhead occurs again.

* Fix type hints; default for n_wind_condition_splits; remove mistakenly committed yaw optimization function.

* Tests for WindData objects; remove related comment.

* Tests control setpoints (and add bugfix). Also limit number of workers for testing.

* Update UncertainFlorisModel to work with new Parallel framework (#983)

* Update uncertain floris model to accept par floris

* Raise an error in old parallel floris model blocking passing in uncertain floris model

* Add an example of parallelized uncertain floris

* Expand parallel processing interface options (#985)

* Update example to profile more fully.

* Handling for pathos parallel processing package; comparison example to multiprocessing.

* Add test for pathos interface.

* Add concurrent handling.

* minor doc updates.

* add pathos requirement

* Clean up of new ParFlorisModel class (#986)

* Update example to profile more fully.

* Handling for pathos parallel processing package; comparison example to multiprocessing.

* Add test for pathos interface.

* Add concurrent handling.

* minor doc updates.

* add pathos requirement

* Change name to ParFlorisModel throughout.

* Add deprecation warning for ParallelFlorisModel.

* Add import; isort.

* Update example to use ParFlorisModel.

* Update tests; formatting.

* Fix uncertain-parallel example; add uncertain-parallel test.

* Update example docstring.

* Remove temporary examples from repository.

* Add examples and documentation for ParFlorisModel (#990)

* Add short docstring

* Minor comment change.

* Add approx model to docs

* A couple of rewordings and update to initial paragraph.

---------

Co-authored-by: paulf81 <[email protected]>
…erence_wind_height` (#1000)

* Raise warning when turbine_type updated without updating reference wind height.

* Add tests related to reference wind height methods.

* iea_15mw -> iea_15MW
@misi9170 misi9170 marked this pull request as ready for review October 17, 2024 20:27
* Visualize flows under yaw misalignment

* isort fix.
@misi9170 misi9170 merged commit 440549c into main Oct 26, 2024
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants