/welib

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

Primary LanguagePythonMIT LicenseMIT

Build Status Donate just a small amount, buy me a coffee!

welib

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

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 Morten Hansen) (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

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.

MGH dynamic stall model Oye dynamic stall model Analytical mode shapes of a beam Steady BEM - Performance curve Steady BEM - CP-lambda-pitch
MGH dynamic stall model Oye dynamic stall model Analytical mode shapes of a beam Steady BEM - Performance curve Steady BEM - CP-lambda-pitch
Unsteady BEM - Prescribed surge motion Dynamic Inflow (Oye) - induction step FAST - interpolate radial time series FAST - Average radial outputs Hydro - Wave kinematics
Unsteady BEM - Prescribed surge motion Dynamic Inflow (Oye) - induction step FAST - interpolate radial time series FAST - Average radial outputs Hydro - Wave kinematics
Hydro - Jonswap spectrum Hydro - wave generation Hydro - Morison loads on monopile IEC Standards - Turbulence classes 3D pendulum - motion
Hydro - Jonswap spectrum Hydro - wave generation Hydro - Morison loads on monopile IEC Standards - Turbulence classes 3D pendulum - motion
Signal - Correlation coefficient Signal - FFT
Signal - Correlation coefficient Signal - FFT

Installation and testing

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

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!