output-constrained-ipc
Output-constrained individual pitch control achieves a superior trade-off between wind turbine fatigue load reduction and actuator effort.
Science Score: 57.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 4 DOI reference(s) in README -
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.1%) to scientific vocabulary
Repository
Output-constrained individual pitch control achieves a superior trade-off between wind turbine fatigue load reduction and actuator effort.
Basic Info
- Host: GitHub
- Owner: jesseishi
- License: apache-2.0
- Language: MATLAB
- Default Branch: main
- Size: 7.99 MB
Statistics
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 1
Metadata Files
README.md
Output-constrained invididual pitch control
Output-constrained individual pitch control can find a trade-off between no IPC and full IPC by adding the possibility to set a reference on the oscilating loads experienced by the wind turbine rotor. For example, in the below figure you can see that without IPC the actuator duty cycle (ADC) is low and the damage equivalent load (DEL) is high. On the other hand, fully engaging IPC can lower the DEL at the expense of increased ADC. The proposed ℓ2-IPC and ℓ∞-IPC controllers achieve a superior trade-off between DEL reduction and ADC increase. With respect to full IPC, they can achieve 87% of the load reduction with just 50% of the actuation increase.

For more information, check out our publications on output-constrained IPC:
- Hummel, J. I. S., Kober, J., and Mulders, S. P.: Output-constrained individual pitch control methods using the multiblade coordinate transformation: Trading off actuation effort and blade fatigue load reduction for wind turbines, Wind Energy Science (accepted), https://doi.org/10.5194/wes-2024-153, 2025.
- Hummel, J. I. S., Kober, J., and Mulders, S. P.: Output-Constrained Individual Pitch Control using an Adaptive Leaky Integrator for Wind Turbine Blade Load Reductions, American Control Conference (ACC), 2025.
In case you have any questions, please contact me. You can find my contact details in the papers.
Getting started
Clone the repo by git clone --recurse-submodules
https://github.com/jesseishi/Output-constrained-IPC.git. --recurse-submodules
is used to also clone the
preplot-postplot repository
which is used for plotting.
Then, you can get started in two ways:
- Run your own simulations by defining a case in
generate_cases.py, then run the case withRun_cIPC.mor multiple cases withRun_batch_cIPC.m, and then analyze with a script inspired byPlot_xyz.m. - Download our results and put them in the
Results/datafolder. You can now analyze all the results usingPlot_WES.m.
Folder structure
IEA-15-240-RWT- Defines the IEA 15 MW reference turbine. Adjusted from
GitHub, see
IEA-15-240-RWT/README.mdfor the changes made.
- Defines the IEA 15 MW reference turbine. Adjusted from
GitHub, see
preplot-postplot(optional)- My plotting utilities to make nice plots with less boilerplate, available on GitHub.
Results(optional)data: Stores simulation data to be used by plotting scripts. If you want to recreate our results, store our datasets in this folder. This folder has folders that mirror the folders ofInputFiles. Then for each folder, there are folders indicating what reference signal was used by the controllers (e.g.ref0for a 0 Nm reference), then finally for each simulation there is an.outbfile with OpenFAST outputs and a.csvfiles which also contrains logged signals from Simulink.figures: Stores resulting figures.InputFiles: Stores input files used by OpenFAST to run the different cases.
src:Helper: Contains helper functions.Lib: Library with some static data (linearizations and optimal azimuth offsets).Models: Constains the different Simulink models.TempCache(optimal): Temporary cache folder.generate_cases.py: Generate input files to run different cases (wind speed, turbulence intensity, etc...).Plot_XYZ.m: Scripts to plot the results.Run_batch_cIPC.m: Script to run many OpenFAST simulations with an output-constrained IPC controller.Run_cIPC.m: Script to run a single OpenFAST simulation with an ouput-constrained IPC controller.TurbSim_x64.exe: TurbSim executable to generate turbulent wind files when runninggenerate_cases.py.
Software used
- Python 3.12.1
- Matlab and Simulink R2024b
- The OpenFAST toolbox
- OpenFAST 3.5.0
- TurbSim v2.0
- The preplot-postplot toolbox for plotting
Licence
Apache-2.0 license, see LICENSE.
Owner
- Name: Jesse Hummel
- Login: jesseishi
- Kind: user
- Company: TU Delft
- Repositories: 2
- Profile: https://github.com/jesseishi
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: Output-constrained invididual pitch control
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Jesse
family-names: Hummel
email: j.i.s.hummel@tudelft.nl
affiliation: Delft University of Technology
orcid: 'https://orcid.org/0009-0004-0502-7269'
identifiers:
- type: doi
value: 10.4121/372325a3-306e-4578-9c72-4fcda690a999
description: >-
Dataset used to analyze the l2 and linf
output-constrained IPC methods.
repository-code: 'https://github.com/jesseishi/Output-constrained-IPC'
abstract: >-
Output-constrained individual pitch control achieves a
superior trade-off between wind turbine fatigue load
reduction and actuator effort. This code proposes and
compares three such methods: the adaptive leaky-integrator
(associated with our ACC publication), ℓ2 and ℓ∞ IPC (both
associated with out WES publication).
keywords:
- wind energy
- wind turbine control
- individual pitch control
license: Apache-2.0
GitHub Events
Total
- Release event: 2
- Watch event: 2
- Push event: 4
- Create event: 1
Last Year
- Release event: 2
- Watch event: 2
- Push event: 4
- Create event: 1