OpenOA Documentation#

Software Overview#

OpenOA [1] is a software framework written in Python for assessing wind plant performance using operational assessment (OA) methodologies that consume time series data from wind plants. The goal of the project is to provide an open source implementation of common data structures, analysis methods, and utility functions relevant to wind plant OA, while providing a platform to collaborate on new functionality.

Development of OpenOA was motivated by the Wind Plant Performance Prediction (WP3) Benchmark project [2], led by the National Renewable Energy Laboratory (NREL), which focuses on quantifying and understanding differences between the expected and actual energy production of wind plants. To support the WP3 Benchmark project, OpenOA was initially developed to provide a baseline implementation of a long-term operational annual energy production (AEP) estimation method. It has since grown to incorporate several more OA analysis methods, lower-level utility functions, and a schema for time-series data from wind power plants.

Warning

OpenOA is a research software library and is released under a BSD-3 license. Please refer to the accompanying license file for the full terms. We encourage caution, use of best practices, and engagement with subject matter experts when performing any data analysis.

Analysis Methods#

Name

Description

Citations

MonteCarloAEP

This routine estimates the long-term annual energy production (AEP) of a wind power plant (typically over 10-20 years) based on operational data from a shorter period of record (e.g., 1-3 years), along with the uncertainty.

[3], [4]

TurbineLongTermGrossEnergy

This routine estimates the long-term turbine ideal energy (TIE) of a wind plant, defined as the long-term AEP that would be generated by the wind plant if all turbines operated normally (i.e., no downtime, derating, or severe underperformance, but still subject to wake losses and moderate performance losses), along with the uncertainty.

[5]

ElectricalLosses

The ElectricalLosses routine estimates the average electrical losses at a wind plant, along with the uncertainty, by comparing the energy produced at the wind turbines to the energy delivered to the grid.

[5]

EYAGapAnalysis

This class is used to perform a gap analysis between the estimated AEP from a pre-construction energy yield estimate (EYA) and the actual AEP. The gap analysis compares different wind plant performance categories to help understand the sources of differences between EYA AEP estimates and actual AEP, specifically availability losses, electrical losses, and TIE.

[5]

WakeLosses

This routine estimates long-term internal wake losses experienced by a wind plant and for each individual turbine, along with the uncertainty.

[6]. Based in part on approaches in [7], [8], [9]

StaticYawMisalignment

The StaticYawMisalignment routine estimates the static yaw misalignment for individual wind turbines as a function of wind speed by comparing the estimated wind vane angle at which power is maximized to the mean wind vane angle at which the turbines operate. The routine includes uncertainty quantification. Warning: This method has not been validated using data from wind turbines with known static yaw misalignments and the results should be treated with caution.

Based in part on approaches in [10], [11], [12], [13], [14]

PlantData Schema#

OpenOA contains a PlantData class, which is based on Pandas data frames and provides a standardized base schema to combine raw data from wind turbines, meteorological (met) towers, revenue meters, and reanalysis products, such as MERRA-2 or ERA5. Additionally, the PlantData class can perform some basic validation for the data required to perform the operational analyses.

Utility Functions#

Lower-level utility modules are provided in the utils subpackage. They can also be used individually to support general wind plant data analysis activities. Some examples of utils modules include:

  • Quality Assurance: This module provides quality assurance methods for identifying potential quality issues with SCADA data prior to importing it into a PlantData object.

  • Filters: This module provides functions for flagging operational data based on a range of criteria (e.g., outlier detection).

  • Power Curve: The power curve module contains methods for fitting power curve models to SCADA data.

  • Imputing: This module provides methods for filling in missing data with imputed values.

  • Met Data Processing: This module contains methods for processing meteorological data, such as computing air density and wind shear coefficients.

  • Plotting: This module contains convenient functions for creating plots, such as power curve plots and maps showing the wind plant layout.

For further information about the features and citations, please see the OpenOA documentation website.

Installation#

Compatible with Python 3.8 through 3.11 with pip.

We strongly recommend using the Anaconda Python distribution and creating a new conda environment for OpenOA. You can download Anaconda through their website.

After installing Anaconda, create and activate a new conda environment with the name “openoa-env”:

conda create --name openoa-env python=3.10
conda activate openoa-env

Source Code#

Clone the repository and install the library and its dependencies using pip:

git clone https://github.com/NREL/OpenOA.git
cd OpenOA
pip install .

Pip#

pip install openoa

Citing OpenOA#

To cite analysis methods or individual features: Please cite the original authors of these methods, as noted in the documentation and inline comments.

To cite the open-source software framework as a whole, or the OpenOA open source development effort more broadly, please use citation [1], which is provided below in BibTeX:

   @article{Perr-Sauer2021,
      doi = {10.21105/joss.02171},
      url = {https://doi.org/10.21105/joss.02171},
      year = {2021},
      publisher = {The Open Journal},
      volume = {6},
      number = {58},
      pages = {2171},
      author = {Jordan Perr-Sauer and Mike Optis and Jason M. Fields and Nicola Bodini and Joseph C.Y. Lee and Austin Todd and Eric Simley and Robert Hammond and Caleb Phillips and Monte Lunacek and Travis Kemper and Lindy Williams and Anna Craig and Nathan Agarwal and Shawn Sheng and John Meissner},
      title = {OpenOA: An Open-Source Codebase For Operational Analysis of Wind Farms},
      journal = {Journal of Open Source Software}
   }

Documentation Table of Contents#

References#