Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: GitHub Discussions
url: https://github.com/NREL/flasc/discussions/new
url: https://github.com/NatLabRockies/flasc/discussions/new
about: Discuss potential issues or ideas here prior to opening a GitHub Issue
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/documentation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ body:
label: URL
description: If this issue references online documentation, enter the complete url here.
placeholder:
https://nrel.github.io/flasc//<full link here>.html
https://natlabrockies.github.io/flasc//<full link here>.html
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ body:
id: feature-description
attributes:
label: Description
description: Describe the suggested feature in as much detail as possible. If the idea is not fully developed, first open a Discussion to work through aspects of the feature with the NREL team prior to creating an Issue.
description: Describe the suggested feature in as much detail as possible. If the idea is not fully developed, first open a Discussion to work through aspects of the feature with the NLR team prior to creating an Issue.
placeholder: |
Example: FLASC should support parallelization. Based on _this_ paper, it seems possible that the algorithms could all be modified with this line of code `call parallelize()` from an open source library. A good case to demonstrate this feature is ...

Expand Down
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,5 @@
<!-- Release checklist:
- Update the version in
- [ ] pyproject.toml
- [ ] Create a tag in the NREL/FLASC repository
- [ ] Create a tag in the NatLabRockies/FLASC repository
-->
12 changes: 12 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
version: 2
updates:
- package-ecosystem: "pip"
directory: "/" # Location of package manifests
target-branch: "develop"
schedule:
interval: "monthly"
labels:
- "package"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
4 changes: 3 additions & 1 deletion .github/workflows/deploy-pages.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ on:
paths:
- docs/**

workflow_dispatch: # Allows manual triggering of the workflow

# This job installs dependencies, builds the book, and pushes it to `gh-pages`
jobs:
deploy-book:
Expand Down Expand Up @@ -42,7 +44,7 @@ jobs:

# Push the book's HTML to github-pages
- name: GitHub Pages action
uses: peaceiris/actions-gh-pages@v3.6.1
uses: peaceiris/actions-gh-pages@v4.0.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/_build/html
2 changes: 1 addition & 1 deletion .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:

jobs:
deploy:
if: github.repository_owner == 'NREL'
if: github.repository_owner == 'NatLabRockies'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
Expand Down
8 changes: 4 additions & 4 deletions AUTHORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Development Leads
Contributors
------------

* Paul Fleming <paul.fleming@nrel.gov>
* Eric Simley <eric.simley@nrel.gov>
* Christopher Bay <christopher.bay@nrel.gov>
* Misha Sinner <michael.sinner@nrel.gov>
* Paul Fleming <paul.fleming@nlr.gov>
* Eric Simley
* Christopher Bay <christopher.bay@nlr.gov>
* Misha Sinner <michael.sinner@nlr.gov>
2 changes: 1 addition & 1 deletion LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BSD 3-Clause License

Copyright (c) 2024, Alliance for Sustainable Energy LLC, All rights reserved.
Copyright (c) 2026, Alliance for Energy Innovation, LLC, All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
Expand Down
42 changes: 21 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
# FLORIS-Based Analysis for SCADA Data (FLASC)


**Note:** Further documentation is available at **https://nrel.github.io/flasc/**
**Note:** Further documentation is available at **https://natlabrockies.github.io/flasc/**

## Description

FLASC provides a **rich suite of analysis tools** for SCADA data filtering, analysis,
wind farm model validation, field experiment design, and field experiment monitoring.
model validation, field experiment design, and field experiment monitoring.

The repository is centrally built around NRELs in-house ``FLORIS`` wind farm model, available at
**https://github.com/nrel/floris**. FLASC also largely relies on the ``energy ratio``, among others,
to quantify wake losses in synthetic and historical data, to perform turbine northing calibrations,
The repository is linked to NLR's in-house ``FLORIS`` model, available at
**https://github.com/NatLabRockies/floris**. FLASC also largely relies on the ``energy ratio``, among others,
to quantify wake losses in synthetic and historical data, to perform northing calibrations,
and model parameter estimation.

For technical questions or concerns, please email paul.fleming@nrel.gov.
For technical questions or concerns, please email paul.fleming@nlr.gov.


[![pages-build-deployment](https://github.com/NREL/flasc/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/NREL/flasc/actions/workflows/pages/pages-build-deployment)
[![pages-build-deployment](https://github.com/NatLabRockies/flasc/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/NatLabRockies/flasc/actions/workflows/pages/pages-build-deployment)

[![Automated tests & code coverage](https://github.com/NREL/flasc/actions/workflows/continuous-integration-workflow.yaml/badge.svg)](https://github.com/NREL/flasc/actions/workflows/continuous-integration-workflow.yaml)
[![Automated tests & code coverage](https://github.com/NatLabRockies/flasc/actions/workflows/continuous-integration-workflow.yaml/badge.svg)](https://github.com/NatLabRockies/flasc/actions/workflows/continuous-integration-workflow.yaml)

[![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)


## WETO software

FLASC is primarily developed with the support of the U.S. Department of Energy and is part of the [WETO Software Stack](https://nrel.github.io/WETOStack). For more information and other integrated modeling software, see:
- [Portfolio Overview](https://nrel.github.io/WETOStack/portfolio_analysis/overview.html)
- [Entry Guide](https://nrel.github.io/WETOStack/_static/entry_guide/index.html)
- [Controls and Analysis Workshop](https://nrel.github.io/WETOStack/workshops/user_workshops_2024.html#wind-farm-controls-and-analysis)
FLASC is primarily developed with the support of the U.S. Department of Energy and is part of the [WETO Software Stack](https://natlabrockies.github.io/WETOStack). For more information and other integrated modeling software, see:
- [Portfolio Overview](https://natlabrockies.github.io/WETOStack/portfolio_analysis/overview.html)
- [Entry Guide](https://natlabrockies.github.io/WETOStack/_static/entry_guide/index.html)
- [Controls and Analysis Workshop](https://natlabrockies.github.io/WETOStack/workshops/user_workshops_2024.html#wind-farm-controls-and-analysis)


## Installation
Expand All @@ -37,35 +37,35 @@ We recommend installing this repository in a separate virtual environment.
After creating a new virtual environment, clone this repository to your local
system and install it locally using ``pip``. The command for this is ``pip install -e flasc``.

If installing for develop, follow the developer [install instructions](https://nrel.github.io/flasc/installation.html)
If installing for develop, follow the developer [install instructions](https://natlabrockies.github.io/flasc/installation.html)

## Documentation

Documentation is provided via the included examples folders as well as [online documentation](https://nrel.github.io/flasc/).
Documentation is provided via the included examples folders as well as [online documentation](https://natlabrockies.github.io/flasc/).

## Engaging on GitHub

FLASC leverages the following GitHub features to coordinate support and development efforts:

- [Discussions](https://github.com/NREL/flasc/discussions): Collaborate to develop ideas for new use cases, features, and software designs, and get support for usage questions
- [Issues](https://github.com/NREL/flasc/issues): Report potential bugs and well-developed feature requests
- [Projects](https://github.com/orgs/NREL/projects/39): Include current and future work on a timeline and assign a person to "own" it
- [Discussions](https://github.com/NatLabRockies/flasc/discussions): Collaborate to develop ideas for new use cases, features, and software designs, and get support for usage questions
- [Issues](https://github.com/NatLabRockies/flasc/issues): Report potential bugs and well-developed feature requests
- [Projects](https://github.com/orgs/NatLabRockies/projects/39): Include current and future work on a timeline and assign a person to "own" it

Your feedback is crucial in this environment, as it helps identify areas for enhancement, resolve issues, and ensure the project meets the needs of its users. By sharing your insights and suggestions, you contribute to the project's evolution and success.

Generally, the first entry point for the community will be within one of the
categories in Discussions.
[Ideas](https://github.com/NREL/flasc/discussions/categories/ideas) is a great spot to develop the
details for a feature request. [Q&A](https://github.com/NREL/flasc/discussions/categories/q-a)
[Ideas](https://github.com/NatLabRockies/flasc/discussions/categories/ideas) is a great spot to develop the
details for a feature request. [Q&A](https://github.com/NatLabRockies/flasc/discussions/categories/q-a)
is where to get usage support.
[Show and tell](https://github.com/NREL/flasc/discussions/categories/show-and-tell) is a free-form
[Show and tell](https://github.com/NatLabRockies/flasc/discussions/categories/show-and-tell) is a free-form
space to show off the things you are doing with FLORIS.

# License

BSD 3-Clause License

Copyright (c) 2024, Alliance for Sustainable Energy LLC, All rights reserved.
Copyright (c) 2026, Alliance for Energy Innovation, LLC, All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
Expand Down
2 changes: 1 addition & 1 deletion docs/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ bibtex_bibfiles:

# Information about where the book exists on the web
repository:
url: https://github.com/NREL/flasc
url: https://github.com/NatLabRockies/flasc
path_to_book: docs
branch: main

Expand Down
10 changes: 5 additions & 5 deletions docs/energy_change.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,25 @@ FLASC now however includes three methods for quantifying the change in energy pr

`total_uplift_power_ratio` uses a similar input as the [energy ratio](energy_ratio) methods but returns a single value representing the total uplift, rather than uplift binned by wind direction. The method is named power_ratio because the change in energy production is computed using the mean per-wind-condition-bin power ratios. The change in ratio per bin is then combined with the mean base power and frequency to estimate change in energy production.

Currently the main example usage of the total uplift function is at the end of [smarteole example 06](https://github.com/NREL/flasc/blob/main/examples_smarteole/06_wake_steering_energy_ratio_analysis.ipynb). Documentation of the function itself is available in the [API documentation](https://nrel.github.io/flasc/_autosummary/flasc.analysis.total_uplift_power_ratio.compute_total_uplift.html#flasc.analysis.total_uplift_power_ratio.compute_total_uplift). Uncertainty of the results can be computed via bootstrapping.
Currently the main example usage of the total uplift function is at the end of [smarteole example 06](https://github.com/NatLabRockies/flasc/blob/main/examples_smarteole/06_wake_steering_energy_ratio_analysis.ipynb). Documentation of the function itself is available in the [API documentation](https://natlabrockies.github.io/flasc/_autosummary/flasc.analysis.total_uplift_power_ratio.compute_total_uplift.html#flasc.analysis.total_uplift_power_ratio.compute_total_uplift). Uncertainty of the results can be computed via bootstrapping.

The method was developed by Eric Simley and implemented by Paul Fleming and Misha Sinner of NREL.
The method was developed by Eric Simley and implemented by Paul Fleming and Misha Sinner of NLR.

## Wind-Up

FLASC further includes methods for calculating change in energy production using the [wind-up](https://github.com/resgroup/wind-up) module. [wind-up](https://github.com/resgroup/wind-up) is a tool to assess yield uplift of wind turbines developed by Alex Clerc of RES and available open-source on GitHub. Using translation methods in the [FlascDataFrame](flasc_data_format), the methods and analysis of wind-up can be invoked from FLASC.

[smarteole example 09](https://github.com/NREL/flasc/blob/main/examples_smarteole/09_wind-up_wake_steering_uplift_analysis.ipynb), calculates the change in energy production (as in [smarteole example 06](https://github.com/NREL/flasc/blob/main/examples_smarteole/06_wake_steering_energy_ratio_analysis.ipynb)) using wind-up.
[smarteole example 09](https://github.com/NatLabRockies/flasc/blob/main/examples_smarteole/09_wind-up_wake_steering_uplift_analysis.ipynb), calculates the change in energy production (as in [smarteole example 06](https://github.com/NatLabRockies/flasc/blob/main/examples_smarteole/06_wake_steering_energy_ratio_analysis.ipynb)) using wind-up.

## Expected Power Analysis

The final included methodology for calculating change in energy production is the module `expected_power_analysis`. This module implements the calculations of change in energy production described in [AWC validation methodology](https://publications.tno.nl/publication/34637216/LWOb3s/TNO-2020-R11300.pdf), by Stoyan Kanev of TNO. The method was implemented into python/FLASC by Paul Fleming and Eric Simley of NREL referring to the above publication by Stoyan Kanev. The method is named `expected_power_analysis` within FLASC to denote its calculation of the expected farm power as the weighted sum of the per-bin expected powers, rather than power ratios, and using this to calculate the change in energy production.
The final included methodology for calculating change in energy production is the module `expected_power_analysis`. This module implements the calculations of change in energy production described in [AWC validation methodology](https://publications.tno.nl/publication/34637216/LWOb3s/TNO-2020-R11300.pdf), by Stoyan Kanev of TNO. The method was implemented into python/FLASC by Paul Fleming and Eric Simley of NLR referring to the above publication by Stoyan Kanev. The method is named `expected_power_analysis` within FLASC to denote its calculation of the expected farm power as the weighted sum of the per-bin expected powers, rather than power ratios, and using this to calculate the change in energy production.

Specifically, this module computes the total uplift along with the confidence interval of the total uplift estimate by implementing Equations 4.11 - 4.29 in the abovementioned TNO report. To determine the expected wind farm power for each wind direction/wind speed bin the expected power of each individual turbine is summed for the bin. One advantage of this method is that by computing expected power at the turbine level before summing, the method does not require that all test turbines are operating normally at each timestamp. Total wind farm energy is then computed by summing the expected farm power values weighted by their frequencies of occurrence over all wind condition bins.

The module provides two approaches for quantifying uncertainty in the total uplift. First, bootstrapping can be used similar to the first two methods. The second option approximates uncertainty in the total uplift following the approach in the abovementioned TNO report by propagating the standard errors of the expected wind farm power in each wind condition bin for the two control modes following analytic expressions derived by linearizing the total uplift formula. Benefits of this approach include higher computational efficiency compared to bootstrapping, which relies on computing the uplift for many different iterations. However, challenges with computing the required variances and covariances of wind turbine power can arise for bins with very little data (though this is accounted for automatically by approximating the missing terms).

The approach is different from the above approaches in several ways (refer to [AWC validation methodology](https://publications.tno.nl/publication/34637216/LWOb3s/TNO-2020-R11300.pdf) for full description). First, as mentioned above, the uncertainty of the result can be computed directly from the variance and co-variances of the turbine powers instead of relying on the more computationally expensive bootstrapping approach. Additionally, the method does not normalize the power of the test turbines by reference powers. Therefore, the method may be more sensitive to wind speed variations within bins and other atmospheric conditions that would otherwise be partially controlled for through normalization by reference powers. To account for this sensitivity we suggest using smaller wind speed bins and wind speed estimates based on measured turbine performance (rather than nacelle anemometry) when calculating the expected power. However, by avoiding normalization by a reference power signal, this method does not require all test turbines to be operating normally at each sample, increasing the amount of usable data, especially when large wind farms are being analyzed.

Similar to above, an example using the smarteole data provides usage example, see [smarteole example 10](https://github.com/NREL/flasc/blob/main/examples_smarteole/examples_smarteole/10_uplift_with_expected_power.ipynb)
Similar to above, an example using the smarteole data provides usage example, see [smarteole example 10](https://github.com/NatLabRockies/flasc/blob/main/examples_smarteole/examples_smarteole/10_uplift_with_expected_power.ipynb)

4 changes: 2 additions & 2 deletions docs/energy_ratio.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ Key syntax for computing energy ratios is provided in the examples:

Within the set of analysis of the smarteole dataset are also examples of using flasc's energy ratio calculations. See for example:

- [Baseline Energy Ratio Analysis](https://github.com/NREL/flasc/blob/main/examples_smarteole/05_baseline_energy_ratio_analysis.ipynb)
- [Wake Steering Energy Ratio Analysis](https://github.com/NREL/flasc/blob/main/examples_smarteole/06_wake_steering_energy_ratio_analysis.ipynb)
- [Baseline Energy Ratio Analysis](https://github.com/NatLabRockies/flasc/blob/main/examples_smarteole/05_baseline_energy_ratio_analysis.ipynb)
- [Wake Steering Energy Ratio Analysis](https://github.com/NatLabRockies/flasc/blob/main/examples_smarteole/06_wake_steering_energy_ratio_analysis.ipynb)
2 changes: 1 addition & 1 deletion docs/flasc_data_format.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Another use case for `FlascDataFrame` is to export the data into the \"wind-up\" format. [Wind-up](https://github.com/resgroup/wind-up) is an open source tool for assessing uplift provided by RES. This conversion provides a convenient way to assess the data, in the case of uplift assessment, using the wind-up tool, which is imported by FLASC. A full demonstration of the usage of the wind-up tool in FLASC is provided within the [Smarteole](https://github.com/NREL/flasc/tree/main/examples_smarteole) example set."
"Another use case for `FlascDataFrame` is to export the data into the \"wind-up\" format. [Wind-up](https://github.com/resgroup/wind-up) is an open source tool for assessing uplift provided by RES. This conversion provides a convenient way to assess the data, in the case of uplift assessment, using the wind-up tool, which is imported by FLASC. A full demonstration of the usage of the wind-up tool in FLASC is provided within the [Smarteole](https://github.com/NatLabRockies/flasc/tree/main/examples_smarteole) example set."
]
},
{
Expand Down
Loading