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

Static yaw misalignment analysis method #249

Merged
merged 31 commits into from
Aug 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
3687475
including yaw misalignment analysis method
ejsimley Jul 6, 2023
c68f776
static yaw misalignment example notebook
ejsimley Jul 6, 2023
da6c248
minor plot module bug fix
ejsimley Jul 10, 2023
6adac6a
updating changelog
ejsimley Jul 10, 2023
6eb5de0
yaw misalgiment sphinx documentation
ejsimley Jul 11, 2023
5bc9205
update to yaw misalignment notebook text
ejsimley Jul 11, 2023
cdcb990
regression tests for yaw misalignment
ejsimley Jul 12, 2023
af0ca95
adding asset to metadata requirements for yaw mis. and wake losses
ejsimley Jul 12, 2023
643eee3
update the schemas for new SCADA column and static yaw misalignment
RHammond2 Jul 19, 2023
78a3713
add analysis creation method for PlantData
RHammond2 Jul 19, 2023
6336c92
update schema testing to ensure asset is correctly included
RHammond2 Jul 19, 2023
af16900
update plant helper tests to account for new scada variable
RHammond2 Jul 19, 2023
11c18fa
introduce small efficiency gain in basic array math
RHammond2 Jul 19, 2023
b0ced92
convert Series math to NumPy math for small gains
RHammond2 Jul 19, 2023
74e0179
add the examples-level imports to conftest for consistent data access…
RHammond2 Jul 24, 2023
47c6356
Merge remote-tracking branch 'nrel/develop_v3' into HEAD
RHammond2 Jul 25, 2023
2c6e81f
test updating expected values from different computer
RHammond2 Jul 27, 2023
bdcdea6
check with decimal=5 for uq stabilization
RHammond2 Aug 4, 2023
bbc1bc6
several minor edits to yaw misalignment feature based on PR review
ejsimley Aug 8, 2023
2e20bbe
Merge branch 'develop_v3' into feature/static_yaw_misalignment
ejsimley Aug 8, 2023
0e62d47
removing unused subplots in yaw misalignment plots
ejsimley Aug 8, 2023
d20f77d
adding more power curve filter parameters as arguments in yaw misalig…
ejsimley Aug 8, 2023
5fbc5f0
temporary fix for wind farm map plotting in example 07 notebook; spec…
ejsimley Aug 8, 2023
8c28acf
adding INLINE resource to bokeh plotting for example 06 notebook
ejsimley Aug 9, 2023
2a9518e
updating yaw misalginment tests
ejsimley Aug 9, 2023
b326ee3
add verbosity flag to failing check
RHammond2 Aug 30, 2023
069f2b1
print failing check
RHammond2 Aug 30, 2023
e4cb926
update testing installation steps for process isolation
RHammond2 Aug 30, 2023
4f14449
remove prints
RHammond2 Aug 30, 2023
903930a
test dropping the 95% CI and updating missed test in numbers reconfig
RHammond2 Aug 30, 2023
91048d4
add missing decimal restrictions
RHammond2 Aug 30, 2023
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
3 changes: 1 addition & 2 deletions .github/workflows/ci-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install -e .
pip install -e ".[develop]"
shell: bash
- name: Test with pytest
run: |
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
All notable changes to this project will be documented in this file. If you make a notable change to the project, please add a line describing the change to the "unreleased" section. The maintainers will make an effort to keep the [Github Releases](https://github.com/NREL/OpenOA/releases) page up to date with this changelog. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## Unreleased
- A static yaw misalignment analysis class `StaticYawMisalignment` has been added to estimate static yaw misalignment as a function of wind speed for individual wind turbines using turbine-level SCADA data
- The new `07_static_yaw_misalignment` example notebook demonstrates the application of the yaw misalignment method using the example La Haute Borne data
- Added downloader utils module containing functions for downloading generic files from the web, downloading files from Zenodo, and downloading monthly-resolution ERA5 and MERRA2 data
- Added example notebook "02c_plant_aep_analysis_cubico.ipynb" that demonstrates creating a `PlantData` object and running AEP analysis for two Cubico wind plants (Kelmarsh and Penmanshiel) using open data downloaded from Zenodo
- Hard-coded reanalyis product abbreviation requirements in the analysis classes have been moved to check that the provided abbreviations match the reanalysis abbreviations used for the `PlantData.reanalysis` dictionary keys.
Expand Down
4,414 changes: 2,899 additions & 1,515 deletions examples/06_wake_loss_analysis.ipynb

Large diffs are not rendered by default.

2,452 changes: 2,452 additions & 0 deletions examples/07_static_yaw_misalignment.ipynb

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions examples/data/plant_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
"scada": {
"WMET_EnvTmp": "Ot_avg",
"WMET_HorWdDir": "Wa_avg",
"WMET_HorWdDirRel": "Va_avg",
"WMET_HorWdSpd": "Ws_avg",
"WROT_BlPthAngVal": "Ba_avg",
"WTUR_W": "P_avg",
Expand Down
1 change: 1 addition & 0 deletions examples/data/plant_meta.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,5 @@ scada:
WMET_EnvTmp: Ot_avg # temperature, C
time: Date_time # timestamps
WMET_HorWdDir: Wa_avg # wind direction, degrees
WMET_HorWdDirRel: Va_avg # wind direction relative to nacelle orientation, degrees
WMET_HorWdSpd: Ws_avg # non-directional windspeed, m/s
4 changes: 3 additions & 1 deletion openoa/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@ def __attach_methods():
from openoa.analysis.aep import create_MonteCarloAEP
from openoa.analysis.wake_losses import create_WakeLosses
from openoa.analysis.eya_gap_analysis import create_EYAGapAnalysis
from openoa.analysis.yaw_misalignment import create_StaticYawMisalignment
from openoa.analysis.electrical_losses import create_ElectricalLosses
from openoa.analysis.turbine_long_term_gross_energy import create_TurbineLongTermGrossEnergy

setattr(PlantData, "MonteCarloAEP", create_MonteCarloAEP)
setattr(PlantData, "WakeLosses", create_WakeLosses)
setattr(PlantData, "EYAGapAnalysis", create_EYAGapAnalysis)
setattr(PlantData, "ElectricalLosses", create_ElectricalLosses)
setattr(PlantData, "StaticYawMisalignment", create_StaticYawMisalignment)
setattr(PlantData, "TurbineLongTermGrossEnergy", create_TurbineLongTermGrossEnergy)
setattr(PlantData, "WakeLosses", create_WakeLosses)


__attach_methods()
Expand Down
1 change: 1 addition & 0 deletions openoa/analysis/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from openoa.analysis.aep import MonteCarloAEP
from openoa.analysis.wake_losses import WakeLosses
from openoa.analysis.eya_gap_analysis import EYAGapAnalysis
from openoa.analysis.yaw_misalignment import StaticYawMisalignment
from openoa.analysis.electrical_losses import ElectricalLosses
from openoa.analysis.turbine_long_term_gross_energy import TurbineLongTermGrossEnergy
7 changes: 7 additions & 0 deletions openoa/analysis/wake_losses.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,13 @@
# steps to estimate wake losses during the period of record. Methods for calclating the
# long-term wake losses using reanalaysis data and quantifying uncertainty are provided as well.

# The general approach for estimating wake losses and quantifying uncertainty using bootstrapping
# is based in part on the following publications:
# 1. N. G. Nygaard, "Systematic quantification of wake model uncertainty,"" Proc. EWEA Offshore,
# Copenhagen, Denmark, 2015.
# 2. J. Xue and L. Wang, “Online data-driven approach of yaw error estimation and correction of
# horizontal axis wind turbine,” IET J. Eng., 2019(18), 4937–4940, 2019.

from __future__ import annotations

import random
Expand Down
613 changes: 613 additions & 0 deletions openoa/analysis/yaw_misalignment.py

Large diffs are not rendered by default.

28 changes: 14 additions & 14 deletions openoa/schema/base_electrical_losses_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@
"units": "kWh"
},
"frequency": [
"H",
"min",
"T",
"S",
"D",
"T",
"L",
"min",
"ms",
"U",
"H",
"N",
"M",
"us",
"N",
"MS",
"U",
"W",
"L"
"S"
]
},
"scada": {
Expand All @@ -33,16 +33,16 @@
"units": null
},
"frequency": [
"T",
"S",
"D",
"ms",
"U",
"us",
"N",
"L",
"min",
"ms",
"H",
"L"
"N",
"us",
"T",
"U",
"S"
]
}
}
28 changes: 14 additions & 14 deletions openoa/schema/base_electrical_losses_schema.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,32 +8,32 @@ scada:
dtype: float
units: kW
frequency:
- T
- S
- D
- ms
- U
- us
- N
- L
- min
- ms
- H
- L
- N
- us
- T
- U
- S
meter:
MMTR_SupWh:
name: MMTR_SupWh
dtype: float
units: kWh
frequency:
- H
- min
- T
- S
- D
- T
- L
- min
- ms
- U
- H
- N
- M
- us
- N
- MS
- U
- W
- L
- S
42 changes: 21 additions & 21 deletions openoa/schema/base_monte_carlo_aep_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,19 @@
"units": "kWh"
},
"frequency": [
"H",
"min",
"T",
"S",
"D",
"T",
"L",
"min",
"ms",
"U",
"H",
"N",
"M",
"us",
"N",
"MS",
"U",
"W",
"L"
"S"
]
},
"meter": {
Expand All @@ -33,19 +33,19 @@
"units": "kWh"
},
"frequency": [
"H",
"min",
"T",
"S",
"D",
"T",
"L",
"min",
"ms",
"U",
"H",
"N",
"M",
"us",
"N",
"MS",
"U",
"W",
"L"
"S"
]
},
"reanalysis": {
Expand All @@ -60,19 +60,19 @@
"units": "m/s"
},
"frequency": [
"H",
"min",
"T",
"S",
"D",
"T",
"L",
"min",
"ms",
"U",
"H",
"N",
"M",
"us",
"N",
"MS",
"U",
"W",
"L"
"S"
]
}
}
42 changes: 21 additions & 21 deletions openoa/schema/base_monte_carlo_aep_schema.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ meter:
dtype: float
units: kWh
frequency:
- H
- min
- T
- S
- D
- T
- L
- min
- ms
- U
- H
- N
- M
- us
- N
- MS
- U
- W
- L
- S
curtail:
IAVL_ExtPwrDnWh:
name: IAVL_ExtPwrDnWh
Expand All @@ -27,19 +27,19 @@ curtail:
dtype: float
units: kWh
frequency:
- H
- min
- T
- S
- D
- T
- L
- min
- ms
- U
- H
- N
- M
- us
- N
- MS
- U
- W
- L
- S
reanalysis:
WMETR_HorWdSpd:
name: WMETR_HorWdSpd
Expand All @@ -50,16 +50,16 @@ reanalysis:
dtype: float
units: kg/m^3
frequency:
- H
- min
- T
- S
- D
- T
- L
- min
- ms
- U
- H
- N
- M
- us
- N
- MS
- U
- W
- L
- S
28 changes: 14 additions & 14 deletions openoa/schema/base_tie_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,16 @@
"units": "m/s"
},
"frequency": [
"T",
"S",
"D",
"ms",
"U",
"us",
"N",
"L",
"min",
"ms",
"H",
"L"
"N",
"us",
"T",
"U",
"S"
]
},
"scada": {
Expand All @@ -45,16 +45,16 @@
"units": null
},
"frequency": [
"T",
"S",
"D",
"ms",
"U",
"us",
"N",
"L",
"min",
"ms",
"H",
"L"
"N",
"us",
"T",
"U",
"S"
]
}
}
Loading
Loading