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 v3.6 #871

Merged
merged 20 commits into from Apr 5, 2024
Merged

FLORIS v3.6 #871

merged 20 commits into from Apr 5, 2024

Conversation

misi9170
Copy link
Collaborator

@misi9170 misi9170 commented Apr 5, 2024

Final release of FLORIS v3 before releasing FLORIS v4 to the main branch. From this point onward, FLORIS v3 will be minimally maintained and support will switch to FLORIS v4.

New features

Improvements

Bug fixes

New Contributors

Full Changelog: v3.5...v3.6

Release checklist:

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

rafmudaf and others added 20 commits November 8, 2023 17:54
* Remove unused modules in `floris.tools`

* Fix broken import paths

* Removed unused reference file

* Disable auto-doc for private functions

* Fix references format in CC docstring

* isort

* Add Em Gauss page to toc

* Spell check in docstrings

* Raise an error when notebooks fail in docs build

* Run the examples far away from the top directory

This ensures there’s no reliance on the repo struture to find source files

* Expand Python version checks

* Pin docs dependencies versions

Jupyter Book v0.14 supports setting this:
nb_execution_show_tb: true
nb_execution_raise_on_error: true

And sphinx-book-theme 0.4.0rc1 is the required version for JupyterBook v0.14. Note that there is an incompatibility with FLORIS docs and JupyterBook v0.15, sphinx-book-theme v1.0.

* Fix configuration parameter

* Use index for home page

Mostly just to make the docs build on GitHub to test that it exits on error
* Update floris_101.ipynb

* Fix more code cells

---------

Co-authored-by: Rafael M Mudafort <rafmudaf@gmail.com>
* account for using the method from a system call

* add internal library as farm object

* add relative file capability to FI for convenience in example running

* update Farm and multi dim turb to work with library paths

* change cp-ct curve reference location

* fix misspelling

* clean up library switch logic

* update docstrings

* remove notebook handling from the examples CI workflow

* fix example 18 to rely on the internal turbine library directly
* switch to compatible version

* missing equals

* relax some reqs
* fix third-case to be correct with new conversion logic

* Test the value of the result, implicitly the type

* Test a file search

* Use a more obviously bad path

* udpate to be inclusive of file checking

* Add more context in the docstring

---------

Co-authored-by: Rafael M Mudafort <rafmudaf@gmail.com>
Co-authored-by: Rafael M Mudafort <rafael.mudafort@nrel.gov>
* Use attrs class for low-level classes

* Add missing attribute declarations

These were monkey patched, but slotted classes do not allow monkey patching. See the previous commit for the change that enabled slotted classes.

* Support class parameters for attrs

* Fix linting

* Swap logger inheritance for composition

This allows for the floris.simulation package to use attrs and slotted classes while the floris.tools package can remain typical Python classes.
The LoggerBase did have @define in order to maintain the slotted classes, but that is removed here.

* Add missing attribute declarations

* Initialize BaseClass with LoggingManager

* Remove unused imports

* Raise an error instead of assertion

* Use as_dict to get model parameters
…754)

* fix third-case to be correct with new conversion logic

* Test the value of the result, implicitly the type

* Test a file search

* Use a more obviously bad path

* update default multi turbine path to turbine library

* fix data file path

* include multi-turbine and external libraries

* update docstring for type correction

* move towards multi dim support in plotting

* get multi dimensional power plots working

* fix plotting API for empty dictionary memory issues

* add conditions keys as variable to multidim turbine

* working multi dim Ct plots, w/o correct data

* working multidim ct curve

* fix Ct curves

* remove cp for future deprecation

* update turbine interaction example

* fix accidental change and add explanation at the end

---------

Co-authored-by: Rafael M Mudafort <rafmudaf@gmail.com>
* fix the test_power function

* Correct input to not include grid

* Add github revisions

* Fix multi-turbine test cases

* Use NumPy testing to compare arrays

* Revert "Use NumPy testing to compare arrays"

This reverts commit 6f88036.

---------

Co-authored-by: Rafael M Mudafort <rafmudaf@gmail.com>
* Rename grid unit test to reflect TurbineGrid focus

* Rename grid diameter array

Initially, this variable held a single reference turbine diameter value, but it was subsequently changed to contain the diameter of all wind turbines. The name change simply reflects it’s actual use.

* Remove a redundant Vec3 method

* Use numpy array for coordinates

Rather than a list of Vec3. This supports creating a layout from a dictionary of exported modules and classes rather than having to do the additional step of converting to Vec3.

* Add a Numpy array converter to ABC attributes

* Test grid to and from dict functionality - disabled

This requires setting the comparison method in the TurbineGrid and Grid classes. While this can be done with
field(eq=cmp_using(eq=np.array_equal))
this adds a lot of additional code to the attribute declarations and makes them difficult to read. Holding off for now but I wanted to leave the test in place for future reference.

* Remove an extra dimension in grid tests

* Add consistency to Grid docstrings

* Remove the Vec3 class

After switching the Grid coordinates from Vec3 to Numpy arrays, it turned out this wasn’t really used anymore.

* Disable filter_convert function

While this was useful early in the v3 redesign, we’ve converged to a design where this is no longer used.

* Fix Vec3 reference

* Fix syntax and typo

* Remove trailing whitespace
* replace default=[] in farm.py

* fix default np array in flow_field

* fix long lines

* Change default=[] to factory in turbine.py

* change default={} to factory=dict

* fix default arrays to factories

* fix default lists

* Evaluate factory in test
…729)

* Structure of file built out.

* Main functionality built out.

* Test built.

* passes tests.

* isort, ruff.

* Issues with 3.8, 3.9 tests.

* isort issue when removing import.

* newline?

* Reverting; __future__ import to handle testing on 3.8, 3.9

* Now defaults to providing dictionary back; option to print to yaml.

* Test updated; ruff, isort.

* Improving documentation and exposition of function arguments.'

* Update comments, syntax, and typos

* Ensure path independence in unit tests

---------

Co-authored-by: Rafael M Mudafort <rafmudaf@gmail.com>
)

* Clean up docstrings and comments

* Update code quality docs to include v3.5

* Consolidate fTilt_interp and tilt_interp

It’s not clear why both exist, but they seem to be redundant so I’ve removed fTilt_interp in favor of tilt_interp

* Remove fCp_interp in favor of power_interp

* Remove PowerThrustTable class

Ultimately, it wasn’t used aside from validating the input data. That has been included through the attrs validator.

* Fix type hints and docstrings

* Propogate turbine tilt_interp name change

* Remove TiltTable class and replace with dict

* Consolidate redundant tilt-correction flags

* Fix tilt interpolation dictionary type

* Set NUM_EPS to frozen attribute

* Change tilt table key to wind_speed

All other keys use the singular version rather than the plural version, so this keeps it consistent

* Improve validation of tilt table data

* Align TurbineMultiDim with Turbine changes

* ruff formatting

* Fix example API
* Moved from other branch

* Preparing inputs in FlorisInterface

* Created VelocityProfileGrid

* Velocity profiles returned successfully

* Small fixes

* Clarifications

* Draft of init for VelocityProfilesFigure class

* Small addition to class init

* Methods for adding profiles and reference lines

* Improved example

* Corrected self.axs

* Comments, style check, and updated output coords

* Details in example

* Updated comments

* Change example number and add to docs listing

* Replace LinesGrid with PointsGrid

Uses PointsGrid with lines rather than distinct points

* Rotate sample points with the wind direction, and cleanup

* Remove 5-dimensional indexing in point rotation

* Return figure axes from CutPlane vis

* Plot lines in horizontal plane

* Change coordinate notation and begin to update example

* Correct sampling, use solve_for_points, and WIP example

* WIP: example

* WIP: example

* Finalize example

* Details

* Auto-set xlim

* Fix tabbing

* Improve handling the velocity derivate at z=0

---------

Co-authored-by: Rafael M Mudafort <rafmudaf@gmail.com>
And a broken section of the turbine interaction notebook
…_turbines() (#781)

* Update calculate_horizontal_plane_with_turbines.

Add support for multiple turbine types by modifying copy of input turbine type list.

* Fix linting

* Linting: remove trailing whitespace

* Handle turbine_type len 1 case

---------

Co-authored-by: Rafael M Mudafort <rafmudaf@gmail.com>
Co-authored-by: Paul <paul.fleming@nrel.gov>
* Increase contour levels

* Rename the introductory notebook

* Add a documentation page for advanced concepts

* Update the architecture diagrams

Some details were out of date

* Add guidance for extending the wake models

This came from this discussion thread: #547

* Remove custom templates for api docs

* Unpin the docs dependencies

* Remove napoleon and sphinx_book_theme config
@misi9170 misi9170 marked this pull request as ready for review April 5, 2024 19:52
@misi9170 misi9170 merged commit abc7856 into main Apr 5, 2024
16 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.

None yet

7 participants