Kelmarsh wind farm¶
examples/kelmarsh.py
runs the wind part of the library on the Kelmarsh wind farm (UK): six Senvion MM92 turbines of 2050 kW, whose
10-minute SCADA data and status logs Cubico Sustainable Investments published on Zenodo (record 16807551,
CC BY 4.0). The repository holds no data; the script reads the yearly Parquet files that the companion project
wind-power-curve-kelmarsh builds from the
record.
python examples/kelmarsh.py --data <folder holding processed/> --out results/
It is an example of the API on real data, not a study: the operator's IEC categories are taken as logged, and a failure is any stop the log files as a forced outage (overlapping ones merged). The companion project wind-om-reliability builds failure episodes with far more care (restart attempts, fleet-wide events, code mappings) and therefore counts fewer failures; the validation runs the library on its episodes and reproduces its numbers exactly.
Availability by category¶
Stops overlap in the log (a fault during a maintenance visit, a grid event during a fault). The stops of each
turbine are split with intervals.first_up, which gives every moment to the stop that began first, so that no
hour is counted twice; the rest of the year is full performance.
| year | iec_operational |
oem_warranty |
|---|---|---|
| 2016 (from 15 April) | 0.9921 | 0.9960 |
| 2017 | 0.9923 | 0.9964 |
| 2018 | 0.9940 | 0.9982 |
| 2019 | 0.9953 | 0.9976 |
| 2020 | 0.9916 | 0.9947 |
| 2021 | 0.9678 | 0.9724 |
The warranty view is higher every year because it excuses grid, environmental and requested stops and 60 hours of scheduled maintenance per turbine-year.
Power curves¶
Records without a logged stop and with positive power, density-normalised (site elevation 150 m), binned at 0.5 m/s:
| turbine | 2017: P(8 m/s) kW | 2017: AEP at 6.5 m/s (MWh) | 2021: P(8 m/s) kW | 2021: AEP at 6.5 m/s (MWh) |
|---|---|---|---|---|
| T1 | 979.8 | 6125 | 994.9 | 6167 |
| T2 | 1040.4 | 6369 | 1067.3 | 6466 |
| T3 | 1025.5 | 6314 | 1023.9 | 6299 |
| T4 | 1030.3 | 6316 | 1003.7 | 6200 |
| T5 | 1061.0 | 6428 | 1057.4 | 6390 |
| T6 | 1032.3 | 6294 | 1037.7 | 6283 |
All twelve data sets are complete in the sense of the standard. The script rebuilds the wind speed as the mean of the two nacelle anemometers: the SCADA "wind speed" changes definition in April 2018 and would otherwise fake a power curve improvement of several percent, a finding of wind-power-curve-kelmarsh. With that fixed, the curves of 2017 and 2021 agree within 3 %.
Reliability¶
Operating time is the period since commercial operation minus every stop.
| turbine | failures | operating h | MTBF h (90 % interval) | MTTR h | median TTR h |
|---|---|---|---|---|---|
| T1 | 113 | 48 788 | 432 (369-508) | 2.46 | 0.25 |
| T2 | 106 | 49 033 | 463 (394-547) | 0.85 | 0.20 |
| T3 | 79 | 48 796 | 618 (512-751) | 1.73 | 0.18 |
| T4 | 96 | 49 000 | 510 (431-609) | 0.97 | 0.18 |
| T5 | 79 | 48 475 | 614 (509-746) | 4.81 | 0.26 |
| T6 | 120 | 48 262 | 402 (346-471) | 3.06 | 0.18 |
Most forced outages are cleared in minutes (automatic resets); a few long ones carry the mean. Crow-AMSAA over the fleet gives \(\beta = 0.883\) (90 % interval 0.825-0.944) from 593 failures in 34.3 turbine-years; the likelihood-ratio test rejects \(\beta = 1\) (p = 0.002), so failures thin out with age. The Laplace test on the observed-time clock does not confirm it (U = -0.62, p = 0.53): the trend is mild, and the two tests answer slightly different questions (a power law against any monotone change of the rate). With failure episodes built as in wind-om-reliability, both tests agree (\(\beta = 0.82\)).