HAWC2#

HAWC2 (Horizontal Axis Wind turbine simulation Code 2nd generation) is an aeroelastic code intended for calculating wind turbine response in time domain. The core of the code was developed mainly within the years 2003-2007, by the Aeroelastic Design Research Program at DTU Wind Energy, DTU Risø Campus in Denmark. HAWC2 is developed and distributed by DTU Wind Energy and has been used in numerous research projects and industrial applications. HAWC2 has a large number of users and is used both for design and verification purposes.

Download the latest version#

HAWC2 13.1.0, AppImage (153.49 MB)
HAWC2 13.1.0, zip archive (220.91 MB)
HAWC2 13.1.0, Windows installer (70.29 MB)
HAWC2 13.1.0, zip archive (65.05 MB)
HAWC2 13.1.0, Windows installer (131.46 MB)
HAWC2 13.1.0, zip archive (127.72 MB)
HAWC2 13.1.0, PDF Document (1.46 MB)

Archive of historical HAWC2 releases: HAWC2 Archive

Release notes

Updates since HAWC2 version 13.0.0

New features:

  • Added new lidar sensor: hub mounted pulsed lidar. For more details and a verification report see: Soto Sagredo, E. A., Rinker, J. M., & Lund, R. S. (2023). *Verification of numerical lidars in HAWC2: Analysis of nacelle- and hub-mounted lidars*.

  • HAWC2 can now also be accessed as a library through a Python interface, see HAWC2Lib. The interface is called h2lib and allows the user to interact programmatically with HAWC2 in a Python environment. This allows users to develop new applications such as a controller written entirely in Python instead of a compiled language (Fortran, C, C++), see different use cases here: Rotor Interaction.

  • Additional licensing mechanism: HAWC2 and HAWCStab2 support now an online licence server architecture that doesn’t require hardware/domain name bound license dll files. This licensing also works with HAWC2Lib. In our experience this licensing mechanism scales well across large cloud deployments and is much easier to manage from the developer’s side.

  • Customizable name/unit/description of sensors. Using $desc(), $unit() and $name() these attributes of a sensor can be set in the HTC file: Example: aero alfa 1 72.5 # $desc(My super cool new sensor measuring aoa) $unit(Deg) $name(MyInstrument); will give the sensor a name of “MyInstrument” with units “Deg” and a description of “My super cool new sensor measuring aoa”.

  • HAWC2 is now available in formats other than the traditional portable version:

    • AppImage for linux

    • Installable .msi package for windows.

  • The HAWC2 Manual “How2HAWC2.pdf” is now available as a website complimenting the pdf version in the existing bundle.

Major changes/updates:

  • The tilt/rotation of the tower-top is now applied to the nacelle-lidar probing vector. See point under New features for verification report.

  • Default turbulence advection direction has been reversed, See note on Mann turbulence. A warning will be printed in the log file if the user uses a turbulence box without explicitly stating how to read it.

Minor changes/updates:

  • Statically linked hdf5 libs, reduces the number of dll’s / so’s in the executable bundle

  • Provide user a more detailed message on which license mechanism is active.

  • Turbulence files are now read in larger chunks instead of 1 plane at a time. This reduces the risk of overloading the filesystem when running large sets of simulations on e.g. an HPC system with a common file system and distributed execution.

  • The turbulence scaling routines had the same flaws as the reading routines (see point above), and these have been fixed as well.

  • The dynamic stall time constants are now written to the log file if the unified dynamic stall model is used. This is done to avoid confusion because the previous flap model had other default values than the previous mhh stall model. Further, HAWC2 now switches to the 2-term attached flow step response approximation if either a1 and a2 or b1 and b2 are user-defined using the previous mhh commands.

  • Automatic arrays are stored on the heap instead of the stack to reduce the risk of stack overflows. For more background information see for example https://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap.

Bug fixes:

  • Fixed an error which meant that upper case characters where not always preserved in filename and continue_in_file commands

  • Removed incorrect message of “Profile coefficients have been 3D corrected inside HAWC2” when using output_profile_coef_filename, even when setting: 3d_correct_method  0.

  • Fixed bug causing HAWC2 to crash when reading a user defined a_ct_table.

  • Fixed bug where concentrated mass was added twice to a shared node. When using uniform distribution of nodes in a main body, AND more than one body, AND adding concentrated mass to a node which is shared between neighboring bodies, the concentrated mass was added to both bodies.

  • Now the blade number is correctly read for each sensor in an output_at_time block.

How2HAWC2 13.1:

  • Corrected typo on stop_simulation action.

  • Updated control DLL examples in DLL-Control chapter with fixed length arrays.

  • Added a section on the Mann Turbulence format.

  • Added description of the box_front keyword in the mann block.

  • Added description of the Magnus coefficient input in the hydrodynamics block.

  • Added documentation of the custom sensor naming.

  • Added description of the hub lidar output sensor.

  • Updated the description of the nacelle lidar output sensor.

wkin_dll 2.8.5:

  • update internal utils shared code (no modelling or functionality changes)

ESYSTools 1.4:

  • Automatic arrays are stored on the heap instead of the stack to reduce the risk of stack overflows.

  • Added origin offset to constraint cstr_body_origin_disp_forced.

ESYSSuperelement 1.3:

  • Automatic arrays are stored on the heap instead of the stack to reduce the risk of stack overflows.

  • Added check to see if the super-element data file exists.

  • Fixed bug where output would not contain node force/moment components.

ESYSWamit 1.8:

  • Bugfix in reset of first-call flag in ESYSWamit_update subroutine.

  • Enabled sorting of frequencies in radiation/diffraction input to enable frequency input in custom order.

  • Get time step from hawc2 directly. When using the time_step command in ESYSWamit the user is presented with a warning that the command has become obsolete.

  • Automatic arrays are stored on the heap instead of the stack to reduce the risk of stack overflows.

ESYSMooring 1.5:

  • Included creep model

  • Added non-linear stress/strain relation