A MATLAB-based library for parametric wind turbine blade design and analysis using NuMAD as a backend. WTLib leverages object-oriented programming to "puppeteer" NuMAD workflows, enabling automated generation, modification, and evaluation of blade designs for research and design space exploration.
WTLib provides a high-level interface to:
-
Define wind turbine blade geometries programmatically
-
Interface with NuMAD without relying on Excel-only workflows
-
Perform automated analyses (beam models, operating points, etc.)
-
Conduct design space exploration (DSE)
-
Match blade designs based on:
- Axial induction distributions (Jamieson model)
- Root bending moments
- Tip deflection
The library is particularly suited for multidisciplinary design optimization (MDO) studies and reproducible research workflows.
-
Central class:
bladeParam -
Encapsulates:
- Geometry
- Materials
- Components
- Operating conditions
-
Automates:
- Blade updates
- Beam model generation
- Structural analysis
-
Avoids manual GUI interaction
- Inputs are not restricted to Excel
- Custom parsing supported (e.g.,
.xlsx, future support for standardized formats likewind.io)
- Grid-based exploration of aerodynamic parameters
- Parallel execution support via MATLAB
parpoolandparfeval
- Jamieson Fit: Fits axial induction curves
- Moment Matching: Matches root bending moments
- Tip Deflection Matching: Matches structural compliance
git clone https://github.com/jjmoraa/WTLib.gitEnsure all required toolboxes and dependencies are available.
Run:
addWindTurbinesLib()Modify this function to correctly point to:
- NuMAD source
- External tools (e.g., BModes, PreComp, ANSYS if used)
WTLib relies on a modified version of NuMAD maintained alongside this repository.
- MATLAB (Parallel Computing Toolbox recommended)
- Custom NuMAD fork (required): https://github.com/jjmoraa/NuMAD-3.00_devUMass
- BModes
- PreComp
- ANSYS
git clone https://github.com/jjmoraa/WTLib.gitWTLib depends on a custom NuMAD version. Clone it as a sibling directory (same parent folder as WTLib):
git clone https://github.com/jjmoraa/NuMAD-3.00_devUMass.gitYour folder structure should look like:
parent_directory/
├── WTLib/
└── NuMAD-3.00_devUMass/
Run:
addWindTurbinesLib()Modify this function if needed so it correctly points to:
- WTLib
- The modified NuMAD directory
- External tools (BModes, PreComp, ANSYS, etc.)
Below is a simplified outline of a typical WTLib workflow.
addWindTurbinesLib();
[inputs, airfoils] = scriptInit_v2(dataFolder);[geometryVec, materialsVec, componentsVec] = parseInputs(inputs, inputFile);
refBlade = bladeParam(...);
refBlade.updateBlade;
refBlade.generateBeamModel;
refBlade.operatingPoint;[fitcurve, gof] = jamiesonsFitv2(refBlade, rootPct);- Moment-matching blade
- Tip-deflection-matching blade
grid_points = JamiesonsBoundGenerator(...);
for idx = 1:length(grid_points)
% Generate blade
% Run analysis
endParallel execution supported via:
parfevalWTLib/
├── source/ # Core library code
├── examples/ # Example scripts
├── data/ # Input data
├── results/ # Output results
├── utilities/ # Helper functions
└── README.md
Generated blades are automatically labeled using:
mommat_idxXXX_nX.XXX_pX.XXX
or
dflmat_idxXXX_nX.XXX_pX.XXX
This ensures traceability across large parametric studies.
WTLib supports parallel execution using MATLAB's parallel toolbox:
if isempty(gcp('nocreate'))
parpool(N)
endAsynchronous execution example:
f = parfeval(@functionName, 1, args...);
wait(f, 'finished', timeout);
result = fetchOutputs(f);The library has been used to:
-
Analyze the IEA 15MW reference turbine
-
Generate families of blades with equivalent:
- Aerodynamic performance
- Structural response
-
Perform trade studies between stiffness and loading
- Integration with standardized input formats (e.g., wind.io)
- GUI or lightweight app interface
- Docker/containerized deployment
- Expanded optimization frameworks
Jose Mora University of Massachusetts Amherst
Specify your license here (e.g., MIT License, BSD, etc.)
- NuMAD development team
- Wind energy research community
If you use WTLib in your research, please cite it as:
Mora, J.; Lackner, M. (2026). WTLib: A Matlab toolbox for wind turbine analysis and simulation. GitHub repository. https://github.com/jjmoraa/WTLib
BibTeX:
@misc{mora2026wtlib,
author = {Jose Mora},
title = {{WTLib}: A Matlab toolbox for wind turbine analysis and simulation},
year = {2026},
howpublished = {\url{https://github.com/jjmoraa/WTLib}},
note = {GitHub repository}
}
## Contact
For questions or collaboration inquiries, please open an issue on GitHub or contact the author.