Skip to content

Wind energy library, python and matlab tools for wind turbines analyses

License

Notifications You must be signed in to change notification settings

ebranlard/welib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

642 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build status Buy Me a Coffee

Wind Energy Library - welib

Wind energy library: suite of python and matlab tools for aero-servo-hydro-elasticity (aerodynanmics, controls, hydrodynamics, structure/elasticity) and wind energy.

Installation and testing

Installing the latest release:

pip install --upgrade welib

Installing the latest dev version and running the unittests:

git clone http://github.com/ebranlard/welib -b dev
cd welib
python -m pip install -r requirements.txt
python -m pip install -e .
pytest

Gallery of example scripts

A sample of the figures generated by the examples in this repository are given below. Additional examples can be found in the examples and tests folders of the different subpackages.

Click on the links to access the corresponding scripts. Click on the figures to enlarge the figures.

airfoils: airfoil and polar applications

Examples of applications:

  • Manipulation of airfoil curves, find slopes, interpolate (see airfoils)
  • Run different dynamic stall models (e.g Oye or MHH/HGM model) (see airfoils/DS)

Sample figures from examples:

Airfoils - 3D correction Airfoils - Karman-Trefftz Velocity Field Airfoils - MGH dynamic stall model Airfoils - Oye dynamic stall model Airfoils - Wagner function
Airfoils - 3D correction Airfoils - Karman-Trefftz Velocity Field Airfoils - MGH dynamic stall model Airfoils - Oye dynamic stall model Airfoils - Wagner function

BEM: Blade Element Momentum Theory

Examples of Blade Element Momentum (BEM) Theory applications.

Sample figures from examples:

BEM - Steady - CP-lambda-pitch BEM - Steady - High thrust correction BEM - Steady - Performance curve BEM - Theory - Ideal rotor planform BEM - Unsteady - Prescribed surge motion
BEM - Steady - CP-lambda-pitch BEM - Steady - High thrust correction BEM - Steady - Performance curve BEM - Theory - Ideal rotor planform BEM - Unsteady - Prescribed surge motion

beam: beam theory and numerical analyses

Sample figures from examples:

Beam - 1D - Analytical and numerical deflections Beam - 1D - Analytical and numerical modes Beam - 2D - NREL5MW coupled blade modes Beam - 2D - NREL5MW deflections Beam - Analytical mode shapes different BC
Beam - 1D - Analytical and numerical deflections Beam - 1D - Analytical and numerical modes Beam - 2D - NREL5MW coupled blade modes Beam - 2D - NREL5MW deflections Beam - Analytical mode shapes different BC
Beam - Analytical mode shapes of a beam
Beam - Analytical mode shapes of a beam

dyninflow: dynamic inflow

Sample figures from examples:

Dynamic Inflow - Oye - induction step
Dynamic Inflow - Oye - induction step

fast: OpenFAST tools

This package led to the openfast\_toolbox Sample figures from examples:

FAST - Average radial outputs FAST - interpolate radial time series
FAST - Average radial outputs FAST - interpolate radial time series

FEM: finite element method

Examples of applications:

  • Perform 2d/3d FEM analyses using beam/frame elements (see FEM)
  • Craig-Bampton / Guyan reduction of a structure (see FEM)

Sample figures from examples:

FEM - mode shapes of a beam FEM - mode shapes of tower
FEM - mode shapes of a beam FEM - mode shapes of tower

hydro: hydrodynamics applications

Examples of applications:

  • Wave kinematics for linear waves (see hydro/Ex1)
  • Generation of wave time series from a given spectrum (see hydro/Ex3)
  • Computation of wave loads on a monopile (see hydro/Ex4)

Sample figures from examples:

Hydro - Jonswap spectrum Hydro - Morison loads on monopile Hydro - wave generation Hydro - Wave kinematics
Hydro - Jonswap spectrum Hydro - Morison loads on monopile Hydro - wave generation Hydro - Wave kinematics

standards

Sample figures from examples:

IEC Standards - Extreme operating gusts IEC Standards - Turbulence classes
IEC Standards - Extreme operating gusts IEC Standards - Turbulence classes

partdyn: particle dynamics

Sample figures from examples:

PartDyn - Gravitational and spring interactions PartDyn - Gravitational interaction - Moon Orbit
PartDyn - Gravitational and spring interactions PartDyn - Gravitational interaction - Moon Orbit

plot

Sample figures from examples:

Plot - 3D blades
Plot - 3D blades

stoch: stochasticity

Manipulate stochastic variables. Sample figures from examples:

Stochastic - Correlated variables Stochastic - Distributions Stochastic - Independent and standardized
Stochastic - Correlated variables Stochastic - Distributions Stochastic - Independent and standardized

system: system dynamics applications

Examples of applications:

  • Linearize a non-linear system defined by a state and output equation (implicit or explicit) (see system)
  • Perform time integration of mechanical systems (see system)

Sample figures from examples:

System - 2nd order - forced vibrations System - 2nd order - Responses System - 3D pendulum - motion System - LTI Bode plot - 2nd order mass spring damper System - Lorenz attractor
System - 2nd order - forced vibrations System - 2nd order - Responses System - 3D pendulum - motion System -  LTI Bode plot - 2nd order mass spring damper System - Lorenz attractor

tools: misc tools

  • Spectral analyses, signal processing, time integration, vector analyses Sample figures from examples:
Tools - Fatigue - Sinusoids Tools - Signal - Correlation coefficient Tools - Signal - FFT
Tools - Fatigue - Sinusoids Tools - Signal - Correlation coefficient Tools - Signal - FFT

vortilib: vortex dynamics, theory and methods

Sample figures from examples:

Vortilib - 2D vorticity patch discretized with vortex points Vortilib - Elliptical Coordinates Vortilib - Flow about a 2D point doublet Vortilib - Flow about a 2D point doublet - alt Vortilib - Flow about a 2D point source
Vortilib - 2D vorticity patch discretized with vortex points Vortilib - Elliptical Coordinates Vortilib - Flow about a 2D point doublet Vortilib - Flow about a 2D point doublet - alt Vortilib - Flow about a 2D point source
Vortilib - Flow about a 2D point source - alt Vortilib - Flow about a 2D point vortex Vortilib - Flow about a 2D point vortex - alt Vortilib - Flow about a 2D Rankine oval - alt Vortilib - Flow about a 2D vortex cylinder - Gamma=0.0
Vortilib - Flow about a 2D point source - alt Vortilib - Flow about a 2D point vortex Vortilib - Flow about a 2D point vortex - alt Vortilib - Flow about a 2D Rankine oval - alt Vortilib - Flow about a 2D vortex cylinder - Gamma=0.0
Vortilib - Flow about a 2D vortex cylinder - Gamma=0.5 Vortilib - Flow about a 2D vortex cylinder - Gamma=1.1 Vortilib - Flow about an axisymmetric vorticity surface Vortilib - Flow about an Ellipsoid Vortilib - Inviscid Vorticity Patch
Vortilib - Flow about a 2D vortex cylinder - Gamma=0.5 Vortilib - Flow about a 2D vortex cylinder - Gamma=1.1 Vortilib - Flow about an axisymmetric vorticity surface Vortilib - Flow about an Ellipsoid Vortilib - Inviscid Vorticity Patch
Vortilib - Rankine nose Vortilib - Vortex helix lifting line velocity Vortilib - Vortex particle regularization Vortilib - Vortex segment regularization
Vortilib - Rankine nose Vortilib - Vortex helix lifting line velocity Vortilib - Vortex particle regularization Vortilib - Vortex segment regularization

wt_theory: Analytical wind turbine solutions

Examples of applications:

  • Theory of optimal circulation

Sample figures from examples:

WT Theory - CP optimal WT Theory - CP optimal WT Theory - Induced velocity vs Wake length WT Theory - Wake Expansion Models
WT Theory - CP optimal WT Theory - CP optimal WT Theory - Induced velocity vs Wake length WT Theory - Wake Expansion Models

wind and welib/ws_estimator: wind generation and estimation

  • Generate stochastic wind times series
  • Estimate wind speed (see 'welib\ws_estimator`))

Sample figures from examples:

Wind - wind generation at point
Wind - wind generation at point

ctrl: control

kalman: kalman

  • Run a kalman filter to estimate states of a system (see kalman)

weio: Wind energy IO

  • Read and write common wind energy file formats (see weio, a clone of weio) Sample figures from examples:

yams: Yet Another Multibody Solver

Set of tools to work with structural dyanmics. Examples of applications:

  • Setup the equation of motions for a multibody system with flexible members analytically or numerically (see yams)

Examples of application

You can have a look at the example gallery below for direct links to examples and associated plots.

  • Aerodynamic applications (package airfoils, BEM):

    • Manipulation of airfoil curves, find slopes, interpolate (see airfoils)
    • Run different dynamic stall models (e.g Oye or MHH/HGM model) (see airfoils/DS)
  • Hydrodynamics applications (package hydro):

    • Wave kinematics for linear waves (see hydro/Ex1)
    • Generation of wave time series from a given spectrum (see hydro/Ex3)
    • Computation of wave loads on a monopile (see hydro/Ex4)
  • Structural dynamics and system dynamics applications (packages FEM, system, yams):

    • Setup the equation of motions for a multibody system with flexible members analytically or numerically (see yams)
    • Linearize a non-linear system defined by a state and output equation (implicit or explicit) (see system)
    • Perform 2d/3d FEM analyses using beam/frame elements (see FEM)
    • Craig-Bampton / Guyan reduction of a structure (see FEM)
    • Perform time integration of mechanical systems (see system)
  • Controls applications (packages ctrl, kalman):

    • Run a kalman filter to estimate states of a system (see kalman)
  • Wind energy applications:

    • Run steady state BEM simulations (see BEM/steady 1-2
    • Run unsteady BEM simulations (see BEM/unsteady 1-2
    • Read and write common wind energy file formats (see weio, a clone of weio)
    • Generate stochastic wind and waves times series
    • Estimate wind speed (see 'welib\ws_estimator`))
    • Theory of optimal circulation
    • Standards
  • Other (packages tools, ode):

    • Spectral analyses, signal processing, time integration, vector analyses

See also:

  • pyDatView: GUI to visualize files (supported by weio) and perform analyses on the data

Libraries

The repository contains a set of small packages, for aerodynamics, structure, control and more:

  • airfoils: polar manipulations, dynamic stall models
  • beams: analytical results for beams
  • BEM: steady and unsteady bem code
  • ctrl: control tools
  • dyninflow: dynamic inflow models
  • fastlib: tools to handle OpenFAST models (run simulations, postprocess, linear model)
  • FEM: Finite Element Method tools (beams)
  • hydro: hydrodynamic tools
  • kalman: kalman filter
  • mesh: meshing tools
  • ode: tools for time integration of ODE
  • standards: some formulae and scripts useful for the IEC standards
  • system: tools for dynamic systems (e.g. LTI, state space) and mechanical systems (M,C,K matrices), eigenvalue analysis, time integration
  • tools: mathematical tools, signal processing
  • weio: library to read and write files used in wind energy, clone of weio
  • wt_theory: scripts implementing some wind turbine aerodynamic theory
  • ws_estimator: wind speed estimator for wind energy based on tabulated Cp Ct
  • yams: multibody analyses

References and how to cite

If you find some of this repository useful and use it in your research, thank you for using the following citations.

  • General wind turbine scripts and aerodynamics:
@book{Branlard:book,
    author = {E. Branlard},
    title = {Wind Turbine Aerodynamics and Vorticity-Based Methods: Fundamentals and Recent Applications},
    year = {2017},
    publisher= {Springer International Publishing},
    doi={10.1007/978-3-319-55164-7},
    isbn={ 978-3-319-55163-0}
}
  • Structural dynamics:
@article{Branlard:2019,
    title    = {{Flexible multibody dynamics using joint coordinates and the Rayleigh-Ritz approximation: The general framework behind and beyond Flex}},
    author   = {E. Branlard},
    journal  = {Wind Energy},
    volume   = {22},
    number   = {7},
    pages    = {877-893},
    year     = {2019},
    doi      = {10.1002/we.2327}
}

Contributing

Any contributions to this project are welcome! If you find this project useful, you can also buy me a coffee (donate a small amount) with the link below:

Donate just a small amount, buy me a coffee!

About

Wind energy library, python and matlab tools for wind turbines analyses

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5