Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
a4768d0
Add documentation for the release process (#727)
rafmudaf Nov 8, 2023
1a2e868
Raise documentation and examples errors in CI (#736)
rafmudaf Nov 15, 2023
bc4fd28
Fix errors in notebooks for online documentation (#721)
rctredgold Nov 15, 2023
34a7e0c
Support relative paths in YAML configuration files (#739)
RHammond2 Nov 28, 2023
e1dd6b7
Use compatible-release specifier for dependency versions (#748)
Nov 30, 2023
599f226
Fix path dependency in `convert_to_path` test (#749)
RHammond2 Dec 1, 2023
52b8a5f
Improve attrs usage in simulation package (#750)
rafmudaf Dec 6, 2023
6f2256d
Bug fix: Enable mulit-dimensional turbines for turbine interactions (…
RHammond2 Dec 6, 2023
b6de318
Fix the turbine.power function unit test (#755)
Dec 7, 2023
94357ca
Grid-class tidying (#751)
rafmudaf Dec 7, 2023
64ae678
Replace mutable default attributes with immutable types (#759)
Dec 8, 2023
da61128
Add utility to build turbine yaml from absolute power, thrust curves …
misi9170 Dec 13, 2023
bbcb8c3
Clean up and align Turbine and TurbineMultiDim class architectures (#…
rafmudaf Dec 13, 2023
ebdf9a1
Add capability to sample and plot velocity profiles (#699)
vallbog Dec 13, 2023
b88dc7b
Fix links to invalid documentation pages
rafmudaf Jan 4, 2024
a88a154
Support for multiple turbine types in calculate_horizontal_plane_with…
scottryn Feb 7, 2024
c7f8f36
[BUGFIX] Error when yaw angles are used with TurbOPark (#811)
misi9170 Feb 20, 2024
4b33139
[BUGFIX] Adjust hub_height shape for simulation state (#846)
misi9170 Mar 19, 2024
faba989
Documentation improvements and fixes (#853)
rafmudaf Mar 26, 2024
3fba47f
Update version to 3.6
misi9170 Apr 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 7 additions & 23 deletions .github/workflows/check-working-examples.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.10"]
python-version: ["3.9", "3.10", "3.11"]
os: [ubuntu-latest] #, macos-latest, windows-latest]
fail-fast: False

Expand All @@ -25,9 +25,14 @@ jobs:
pip install nbconvert # For converting Jupyter notebook to python script in the next step
- name: Run examples
# Run all examples and test that they finish successfully. Do not evaluate the results.
# Copy the examples to a new directory outside of the repo to ensure that there is no
# reliance on the repo directory structure.
run: |

cd examples/
mkdir -p temp1/temp2/temp3
cp -r examples/ temp1/temp2/temp3/.
cd temp1/temp2/temp3/examples/

error_found=0 # 0 is false
error_results="Error in example:"

Expand All @@ -48,27 +53,6 @@ jobs:
fi
done

# Run all Jupyter notebooks
for i in *.ipynb; do

# Convert this notebook to a Python script
if ! jupyter nbconvert --to script $i; then
# On conversion error, report and go to the next notebook
error_results="${error_results}"$'\n'" - Error converting ${i} to Python script"
continue
fi

# Get the basename of the notebook since the converted script will have the same basename
script_name=`basename $i .ipynb`

# Run the converted script
if ! python "${script_name}.py"; then
error_results="${error_results}"$'\n'" - ${i}"
error_found=1
fi

done

if [[ $error_found ]]; then
echo "${error_results}"
fi
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/continuous-integration-workflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10"]
python-version: ["3.8", "3.9", "3.10", "3.11"]
os: [ubuntu-latest] #, macos-latest, windows-latest]
fail-fast: False
env:
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,4 @@ submit a new feature, let us know in

We rely heavily on git and GitHub, so be sure to review the
contributing guidelines in the
[online documentation](https://floris.readthedocs.io/en/main/source/developers.html).
[online documentation](https://nrel.github.io/floris/dev_guide.html).
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
FLORIS is a controls-focused wind farm simulation software incorporating
steady-state engineering wake models into a performance-focused Python
framework. It has been in active development at NREL since 2013 and the latest
release is [FLORIS v3.5](https://github.com/NREL/floris/releases/latest).
release is [FLORIS v3.6](https://github.com/NREL/floris/releases/latest).
Online documentation is available at https://nrel.github.io/floris.

The software is in active development and engagement with the development team
Expand Down Expand Up @@ -71,7 +71,7 @@ and importing FLORIS:
version

VERSION
3.5
3.6

FILE
~/floris/floris/__init__.py
Expand Down
11 changes: 6 additions & 5 deletions docs/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,13 @@ sphinx:
- 'sphinx.ext.viewcode'
- 'sphinx_autodoc_typehints'
- 'sphinxcontrib.autoyaml'
- 'sphinx.ext.napoleon' # Formats google and numpy docstring styles
- 'sphinxcontrib.mermaid'
config:
html_theme: sphinx_book_theme
templates_path:
- '_templates'
language: 'python'
nb_execution_show_tb: true # Shows the stack trace in stdout; its suppressed otherwise.
nb_execution_raise_on_error: true # Stops the Sphinx build if there is an error in a notebook. See https://github.com/executablebooks/jupyter-book/issues/2011
suppress_warnings:
- etoc.toctree # autodoc output contains toctrees, so suppress this warning. See https://github.com/executablebooks/sphinx-external-toc/issues/36
autoyaml_level: 3
autosummary_generate: true

Expand All @@ -60,7 +60,7 @@ sphinx:
members: true
member-order: bysource
undoc-members: true
private-members: true
private-members: false
# special-members: true
# inherited-members
# show-inheritance
Expand All @@ -70,3 +70,4 @@ sphinx:
# class-doc-from
# no-value
autodoc_typehints: both
mermaid_version: "10.8"
34 changes: 0 additions & 34 deletions docs/_templates/custom-class-template.rst

This file was deleted.

66 changes: 0 additions & 66 deletions docs/_templates/custom-module-template.rst

This file was deleted.

8 changes: 5 additions & 3 deletions docs/_toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@
# Learn more at https://jupyterbook.org/customize/toc.html

format: jb-book
root: intro
root: index
parts:
- caption: Getting Started
chapters:
# - file: intro
- file: installation

- caption: User Reference
chapters:
- file: floris_101
- file: intro_concepts
- file: advanced_concepts
- file: floating_wind_turbine
- file: turbine_interaction
- file: input_reference_main
Expand All @@ -21,6 +21,8 @@ parts:
- caption: Theory and Background
chapters:
- file: wake_models
sections:
- file: empirical_gauss_model
- file: bibliography

- caption: Developer Reference
Expand Down
132 changes: 132 additions & 0 deletions docs/advanced_concepts.ipynb

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions docs/api_docs.rst → docs/api_docs.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
API Documentation
=================
# API Documentation

FLORIS is divided into two primary packages.
:py:mod:`floris.simulation` is the core code that models the wind turbines
and wind farms. It is low-level code that generally is nto accessed
by typical users. :py:mod:`floris.tools` is the set of analysis routines
{py:mod}`floris.simulation` is the core code that models the wind turbines
and wind farms. It is low-level code that generally is not accessed
by typical users. {py:mod}`floris.tools` is the set of analysis routines
that define, drive, and post process a simulation. This is where
more users will interface with the software.

```{eval-rst}
.. autosummary::
:toctree: _autosummary
:template: custom-module-template.rst
:recursive:

floris.logging_manager
Expand All @@ -19,3 +18,4 @@ more users will interface with the software.
floris.type_dec
floris.turbine_library
floris.utilities
```
58 changes: 32 additions & 26 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ be violated, and ongoing work should strive to meet these ideas and expand on th
as possible.

- Modularity in wake model formulation:
- New mathematical formulation should be straightforward to incorporate.
- Requisite solver and grid data structures should not conflict with other existing
wake models.
- New mathematical formulation should be straightforward to incorporate by non-expert
software developers.
- Solver and grid data structures for one wake model should not conflict with the data
structures for other wake models.
- Any new feature or work should not affect an existing feature:
- Low level code should be reused as much as possible, but high level code should rarely
be repurposed.
Expand All @@ -31,12 +32,12 @@ packages. The internal structure and hierarchy is described below.
```{mermaid}
classDiagram

class tools {
+FlorisInterface
class simulation["floris.simulation"] {
+Floris
}

class simulation {
+Floris
class tools["floris.tools"] {
+FlorisInterface
}

class logging_manager
Expand All @@ -45,9 +46,7 @@ classDiagram

tools <-- logging_manager
simulation <-- logging_manager
tools <-- type_dec
simulation <-- type_dec
tools <-- utilities
simulation <-- utilities
tools <-- simulation
```
Expand Down Expand Up @@ -75,54 +74,61 @@ classDiagram
class Farm

class FlowField {
array u
array v
array w
u: NDArrayFloat
v: NDArrayFloat
w: NDArrayFloat
}

class Grid {
<<interface>>
x: NDArrayFloat
y: NDArrayFloat
z: NDArrayFloat
}
class TurbineGrid
class TurbineCubatureGrid
class FlowFieldPlanarGrid
class PointsGrid

class WakeModelManager {
<<interface>>
}
class WakeCombination {
dict parameters
parameters: dict
function()
}
class WakeDeflection {
dict parameters
parameters: dict
function()
}
class WakeTurbulence {
dict parameters
parameters: dict
function()
}
class WakeVelocity {
dict parameters
parameters: dict
function()
}

class Solver {
<<interface>>
dict parameters
parameters: dict
}

Floris o-- Farm
Floris o-- FlowField
Floris o-- Grid
Floris o-- WakeModelManager
Floris *-- Solver
WakeModelManager o-- WakeCombination
WakeModelManager o-- WakeDeflection
WakeModelManager o-- WakeTurbulence
WakeModelManager o-- WakeVelocity
Floris *-- Farm
Floris *-- FlowField
Floris *-- Grid
Floris *-- WakeModelManager
Floris --> Solver
WakeModelManager *-- WakeCombination
WakeModelManager *-- WakeDeflection
WakeModelManager *-- WakeTurbulence
WakeModelManager *-- WakeVelocity

Grid <|-- TurbineGrid
Grid <|-- TurbineCubatureGrid
Grid <|-- FlowFieldPlanarGrid
Grid <|-- PointsGrid

Solver --> Farm
Solver --> FlowField
Expand Down
Loading