SONATA is a toolbox for Multidiciplinary Rotor Blade Design Environment for Structural Optimization and Aeroelastic Analysis. SONATA has originally been developed at the Helicopter Technology Institute of the Technical University of Munich (TUM), Germany. The original repository is available at https://gitlab.lrz.de/HTMWTUM/SONATA. The original work was supported by the German Federal Ministry for Economic Affairs and Energy through the German Aviation Research Program LuFo V-2 and the Austrian Research Promotion Agency through the Austrian Research Program TAKE OFF in the project VARI-SPEED.
SONATA has been adapted to wind energy applications thanks to work performed at the National Renewable Energy Laboratory (NREL), recently renamed National Laboratory of the Rockies (NLR), located in Golden, Colorado, USA. Work at NREL/NLR is funded by the US Department of Energy, Wind Energy Technology Office under the Big Adaptive Rotor program, and the STability and Aeroelastic Behavior of Large wind turbinEs (STABLE) project.
This repository is managed by Pietro Bortolotti and Justin Porter, researchers in the wind energy systems group at NLR.
SONATA is primarily developed with the support of the U.S. Department of Energy and is part of the WETO Software Stack. For more information and other integrated modeling software, see:
SONATA can be run on mac and linux machines. No Windows installation is supported at the moment. We make use of Anaconda, which is a commonly used package manager for Python. Download and install the latest anaconda version here
If you are trying to install SONATA on NLR HPC system Kestrel, scroll to the bottom before proceeding.
First setup an anaconda environment, here named sonata-env, activate it, and add the pythonocc library (v7.4.1). You should do this in the folder that you want to clone SONATA to.
conda config --add channels conda-forge
conda config --add channels tpaviot
git clone git@github.com:NLRWindSystems/SONATA.git
cd SONATA
If you have a mac with a newer chip, run the following:
CONDA_SUBDIR=osx-64 conda env create --name sonata-env -f environment.yaml
conda activate sonata-env
conda config --env --set subdir osx-64 # run with sonata-env active.
cd ..
Otherwise, you should be able to run:
conda env create --name sonata-env -f environment.yaml
conda activate sonata-env
cd ..
Next, in the same conda environment compile ANBA4 (open-source)
git clone git@github.com:ANBA4/anba4.git # (or git clone https://github.com/ANBA4/anba4.git)
cd anba4
pip install -e .
cd ..
Go back to where you cloned SONATA and type:
cd SONATA
pip install -e .
To improve readability of git blame run (ignores commits involved with linting):
git config blame.ignoreRevsFile .git-blame-ignore-revs
If you are contributing code to SONATA, you also need to install pre-commit
pre-commit install
Done! now check your installation trying running an example
Navigate to examples/0_beams and run the example
cd examples/0_beams
python 0_SONATA_init_box_beam_HT_antisym_layup_15_6_SI_SmithChopra91.py
Next try modeling the blade of the IEA-15MW reference wind turbine.
cd ../examples/1_IEA15MW
python 1_sonata_IEA15.py
Note that two examples use two different structures of the input files. Example 0 uses the original yaml structure from TUM, whereas the second file uses the wind turbine ontology coded in windIO. windIO is developed within IEA Wind Task 55 REFWIND and its documentation lives here.
The IEA 22MW example includes instructions on how to estimate structural damping via the modal strain energy approach. Detailed instructions can be found here. Further details are provided in publications including Porter et al. (2025).
- You must define a TE anchor for SONATA. SONATA does not autodefine the TE anchor as implied by WindIO.
- Layer definition in SONATA only supports
start_nd_arcandend_nd_arc. Other tools can generate these quantities from the WindIO definition.
Feil, R., Pflumm, T., Bortolotti, P., Morandini, M.: A cross-sectional aeroelastic analysis and structural optimization tool for slender composite structures. Composite Structures Volume 253, 1 December 2020, 112755.[link]
Pflumm, T., Garre, W., Hajek, M.: A Preprocessor for Parametric Composite Rotor Blade Cross-Sections, 44th European Rotorcraft Forum, Delft, The Netherlands, 2018 [pdf] [more…] [BibTeX]
Pflumm, T., Rex, W., Hajek, M.: Propagation of Material and Manufacturing Uncertainties in Composite Helicopter Rotor Blades, 45th European Rotorcraft Forum, Warsaw, Poland, 2019 [more…] BibTeX]
Porter, J. H., Mace, T., Bortolotti, P., et al.: Prediction of structural damping in a composite structure from coupon tests, 2025, Preprint. [link]
To install SONATA on Kestrel, make sure to use the following pinned versions in the environment.yaml file. Once done, go back to the installation instructions.
channels:
- conda-forge
- defaults
dependencies:
- fenics=2019.1.0
- intervaltree=3.1.0
- mshr=2019.1.0
- pip=25.2
- pythonocc-core=7.9.0
- pyyaml=6.0.2
- python=3.10.18
- pip:
- shapely==2.1.1
- triangle==20230923
- windIO==2.1.1
variables:
PIP_EXTRA_INDEX_URL: https://pypi.org/simple