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.1.1 #945

Merged
merged 12 commits into from
Jul 18, 2024
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 v4.1](https://github.com/NREL/floris/releases/latest).
release is [FLORIS v4.1.1](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 @@ -79,7 +79,7 @@ PACKAGE CONTENTS
wind_data

VERSION
4.1
4.1.1

FILE
~/floris/floris/__init__.py
Expand Down
2 changes: 1 addition & 1 deletion docs/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

title: FLORIS
author: National Renewable Energy Laboratory
logo: gch.gif
logo: docs_image.png
copyright: '2023'
only_build_toc_files: false

Expand Down
Binary file added docs/docs_image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/gch.gif
Binary file not shown.
4 changes: 3 additions & 1 deletion docs/heterogeneous_map.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"# HeterogeneousMap"
"(heterogeneous_map)=\n",
"\n",
"# Heterogeneous Map"
]
},
{
Expand Down
6 changes: 3 additions & 3 deletions docs/layout_optimization.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

(layout_optimization)=
# Layout optimization
# Layout Optimization

The FLORIS package provides layout optimization tools to place turbines within a specified
boundary area to optimize annual energy production (AEP) or wind plant value. Layout
Expand Down Expand Up @@ -59,8 +59,8 @@ turbine placement
- Set up to run cheap constraint checks prior to more expensive objective function evaluations
to accelerate optimization

The algorithm, described in full in an upcoming paper that will be linked here when it is
publicly available, moves a random turbine and random distance in a random direction; checks
The algorithm, described in full in {cite:t}`SinnerFleming2024grs`,
moves a random turbine and random distance in a random direction; checks
that constraints are satisfied; evaluates the objective function (AEP or value); and then
commits to the move if there is an objective function improvement. The main tuning parameter
is the probability mass function for the random movement distance, which is a dictionary to be
Expand Down
14 changes: 14 additions & 0 deletions docs/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -272,3 +272,17 @@ @Article{bay_2022
URL = {https://wes.copernicus.org/preprints/wes-2022-17/},
DOI = {10.5194/wes-2022-17}
}

@article{SinnerFleming2024grs,
doi = {10.1088/1742-6596/2767/3/032036},
url = {https://dx.doi.org/10.1088/1742-6596/2767/3/032036},
year = {2024},
month = {jun},
publisher = {IOP Publishing},
volume = {2767},
number = {3},
pages = {032036},
author = {Michael Sinner and Paul Fleming},
title = {Robust wind farm layout optimization},
journal = {Journal of Physics: Conference Series},
}
76 changes: 38 additions & 38 deletions docs/wind_data_user.ipynb

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions examples/003_wind_data_objects.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,15 +149,15 @@
# Aggregating and Resampling the Wind Rose
##################################################

# The aggregate function allows for aggregation of the wind rose data into
# The downsample function allows for aggregation of the wind rose data into
# fewer wind direction and wind speed bins.
# Note it will throw an error if the step sizes passed in are smaller than the
# step sizes of the original data.
wind_rose_aggregate = wind_rose.aggregate(wd_step=10, ws_step=2)
wind_rose_aggregate = wind_rose.downsample(wd_step=10, ws_step=2)

# For upsampling, the resample_by_interpolation function can be used to interpolate
# For upsampling, the upsample function can be used to interpolate
# the wind rose data to a finer grid. It can use either linear or nearest neighbor
wind_rose_resample = wind_rose.resample_by_interpolation(wd_step=0.5, ws_step=0.25)
wind_rose_resample = wind_rose.upsample(wd_step=0.5, ws_step=0.25)

##################################################
# Setting turbulence intensity
Expand Down Expand Up @@ -224,7 +224,7 @@
# bins for which frequency is zero are not simulated. This can be changed by setting the
# compute_zero_freq_occurrence parameter to True.
wind_directions = np.array([200.0, 300.0])
wind_speeds = np.array([5.0, 1.00])
wind_speeds = np.array([5.0, 10.0])
freq_table = np.array([[0.5, 0], [0.5, 0]])
wind_rose = WindRose(
wind_directions=wind_directions, wind_speeds=wind_speeds, ti_table=0.06, freq_table=freq_table
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@

# Setup 2 wind directions (due east and due west)
# and 1 wind speed with uniform probability
wind_directions = np.array([270.0, 90.0])
wind_directions = np.array([90.0, 270.0])
n_wds = len(wind_directions)
wind_speeds = [8.0] * np.ones_like(wind_directions)
turbulence_intensities = 0.06 * np.ones_like(wind_directions)
wind_speeds = np.array([8.0])

# Shape frequency distribution to match number of wind directions and wind speeds
freq_table = np.ones((len(wind_directions), len(wind_speeds)))
freq_table = freq_table / freq_table.sum()
Expand Down Expand Up @@ -106,7 +106,7 @@
fig = plt.gcf()
sm = ax.tricontourf(x_locs, y_locs, speed_multipliers[0], cmap="coolwarm")
fig.colorbar(sm, ax=ax, label="Speed multiplier")
ax.legend(["Initial layout", "Optimized layout", "Optimization boundary"])
ax.legend(["_Optimization boundary", "Initial layout", "Optimized layout" ])
ax.set_title("Geometric yaw disabled")


Expand Down Expand Up @@ -144,7 +144,7 @@
fig = plt.gcf()
sm = ax.tricontourf(x_locs, y_locs, speed_multipliers[0], cmap="coolwarm")
fig.colorbar(sm, ax=ax, label="Speed multiplier")
ax.legend(["Initial layout", "Optimized layout", "Optimization boundary"])
ax.legend(["_Optimization boundary", "Initial layout", "Optimized layout"])
ax.set_title("Geometric yaw enabled")

print(
Expand Down
Loading
Loading