Skip to content

Releases: OpenFAST/openfast

Release v5.0.0

12 Mar 23:57
2895884

Choose a tag to compare

Release Overview


OpenFAST 5.0 delivers a major update to the glue code and introduces an implicit tight‑coupling solver for improved speed and stability. The revised glue code streamlines development by automating module interactions and supporting multiple solve methods, including the legacy loose‑coupling algorithm and a generalized‑alpha based tight‑coupling approach that solves structural modules together. With additional enhancements to the SubDyn, HydroDyn, and ExtPtfm modules, OpenFAST now supports modeling multiple rotors attached to a single support structure. Additional new features include hydroelastic super-elements, blade-pitch actuator dynamics, and a new SoilDyn module for soil-structure interaction. For MHK turbines, new features include wave-current coupling, added mass effects, and fluid-inertia loads.

FAST.Farm adds substantial performance improvements: a k‑d tree algorithm to accelerate wake interaction calculations; dynamic wake‑plane management improving propagation and visualization; dynamic partitioning of the low-resolution domain to neglect partitions without wakes; and wind file reader improvements including a significantly faster VTK inflow reader and a native AMReX wind file reader. These improvements lead to substantially reduced compuational time for very large wind farms.

Contribution Acknowledgements

Thanks to @deslaughter, @jjonkman, @bjonkman, @luwang00, @RBergua, and @mattEhall for numerous code reviews and suggestions and testing.

Many thanks to @jjonkman and others for theory development and guidance to developers.

Special thanks to @deslaughter for developing the new glue code framework during his ~4 year tenure at NREL/NLR. You will be greatly missed by all who had the privelage of working with you during this time.

Statistics (since 4.0.0)

  • Total PR's unique to 5.0.0: 59
  • Total unique commits: 1276
  • Total individual code contributors: 9
  • OpenFAST code/docs: 505 files changed, 137,399 insertions(+), 107,358 deletions(-)
  • regression tests: 1214 files changed, 970336 insertions(+), 74612 deletions(-)

Changelog


General

Build systems

There were several updates to the CMake and Visual Studio build systems to support code revisions and improve support for compilers such as Flang.

CMake

Minor updates to the CMake were included in various pull requests, but no major changes to the system setup itself.

Visual Studio (Windows)

The VS build system was completely overhauled to split modules out as separate projects.

#2814 Update VS Build dependencies for SeaState Changes (@deslaughter)

#2964 Update VS solution/project files (@deslaughter)

#3169 Update Visual Studio projects in dev-tc (@deslaughter)

#3258 Remove amrex_utils.cpp from AWAE-C.vcxproj (@deslaughter)

Documentation

There were multiple improvements to documentation, notably with the new tight coupling algorithm, ElastoDyn, and InflowWind.

#2929 Update SubDyn user documentation for the new multirotor capabilities (@luwang00)

#3043 Documentation of WHOC and ROSCO for super controller in FAST.Farm (@abhineet-gupta)

#3132 Update ED user manual with information on the new blade pitch DoF (@luwang00)

#3168 Docs: Fix typos in OutListParameters.xlsx (@RBergua)

#3225 Add User-defined wind documentation for InflowWind (@deslaughter)

#3244 Tight-coupling code documentation (@deslaughter)

#3255 Docs: add link to CSF tool and change NREL --> NLR in docs. (@andrew-platt)

Solvers

FAST.Farm

Input file changes

FAST.Farm delivers a significant performance upgrade with dynamic partitioning of the low resolution domain, compuationally efficient wake interaction with a k‑d tree approach across turbine and farm grids, and dynamic wake‑plane management ensuring wake planes propagate for an expected distance with a buffer region so the wakes do not end abruptly causing adverse loading of downstream turbines. The reading of wind data is also greatly improved with a new C++ VTK reader that cuts OpenMP overhead by 60–80%, and a native AMReX file reader to directly use AMReX-format wind precursors thereby simplifying AMR-Wind based workflows. Overall these modifications greatly improve the scalability and speed of calculation for large wind farm calculations.

OpenFAST

Major input file changes

OpenFAST 5.0 introduces a significantly revised glue code and solver which aims to streamline the development experience by automating and managing the module interactions and using a generalized-alpha based solver for structural modules. Each module now defines which input, output, and state variables are visible to the glue-code, along with their attributes and locations in the data structures, and the glue code decides what data to use for the time-domain solve and linearization. Users can define mesh mapping between modules in one location and the glue-code handles all the connections and transfers automatically. Even adding new modules is relatively straightforward and the user will generally receive error messages instead of segmentation faults when issues arise. The goal is to improve the developer experience through automation and the user experience through faster and more stable solutions. A journal paper will be published soon that explains the algorithmic details and the impact on OpenFAST's solution and performance.

With this restructuring, the glue-code now supports multiple solve methods including the loose-coupling algorithm used in earlier version of OpenFAST, as well as an implicit tight-coupling solve where all structural modules are solved together. With these changes and with changes to the SubDyn module, modeling of multiple rotors attached to a single structure is now possible.

Additional improvements to ExtPtfm and HydroDyn now support hydroelastic super-elements and linearization with platforms defined in the ExtPtfm module. Other improvements include

#2439 Tight-Coupling Algorithm for OpenFAST 5.0 (@deslaughter)

#2817 Incorrect mesh mapping between BeamDyn and ServoDyn for Blade Structural Controller (@deslaughter)

#2838 Multi-Rotor input file and glue-code changes (@deslaughter)

#2965 Missing BD Blade VTK Output in dev-tc (@deslaughter)

#2990 Updates to dev-tc: linearization visualization, bug fixes, sync with dev branch (@deslaughter)

#3115 Updated SD NPropSets to NPropSetsCyl and NPropSetsRec and fixed typos in the HD input file (@deslaughter)

#3125 Performance improvements in dev-tc (@deslaughter)

#3213 Include ServoDyn in Option 1 solve if structural controllers are enabled (@deslaughter)

#3261 Reduce module variables included in Option 1 solve with ServoDyn (@deslaughter)

Modules

Multiple modules

#3252 Remove unused registry entries (leftover from old lin method) (@andrew-platt)

AeroDyn

Driver input file changes
Input file changes
Blade input file changes

#2861 Add MHK loads to OLAF blade loads (@hkross)

#2945 [OLAF] Implementation of a source panel method (@ebranlard)

#3239 Fixed SeaState initialization in AeroDyn driver (@luwang00)

#3240 UA: adding quasi steady outputs to UA driver outputs (@ebranlard)

AWAE

As part of the overhaul of wind data handling in FAST.Farm, the AWAE module received a major overhaul with the inclusion of a k-d tree algorithm for wake interaction and wind domain calculations.

#3066 Use k-d tree to speed up wake application to high-res grid in AWAE (@deslaughter)

#3071 Various changes to the handling of wake planes (@luwang00)

#3074 Use C++ to read VTK inflow in AWAE (@deslaughter)

#3112 Move FAST.Farm K-d tree logic into AWAE_UpdateStates (@deslaughter)

#3238 Add AMReX-based inflow reader to AWAE for FAST.Farm (@deslaughter)

BeamDyn

Blade input file changes

BeamDyn now includes a modal damping option in the blade file.

#3105 Remove blade pitch actuator from BeamDyn and blade PitchAxis from ElastoDyn (@luwang00)

#3147 Modal damping (@JustinPorter88)

ElastoDyn

Input file changes
Blade input file changes

ElastoDyn updates include tower offset and a new blade pitch actuator model.

#2830 Add PtfmRefxt and PtfmRefyt in ElastoDyn to allow the tower to be offset from (0,0) (@luwang00)

#3039 Blade pitch dynamics and actuation (@luwang) [also changed ServoDyn]

#3114 ED blade input check, bug fix, and docs update (@luwang00)

#3253 ED: update blade file parser to allow arbitrary column locations (@andrew-platt)

ExtPtfm

Input file changes

ExtPtfm has been overhauled to handle large rigid-body motion, define structural connection points for mooring coupling, and accept prescribed force time series at those points (forces only; no moments), with redesigned input files.

#3210 Hydroelastic super-element capability for OpenFAST (@luwang00)

HydroDyn

Input file changes

HydroDyn now supports potential-flow bodies with extra generalized DOFs beyond 6 rigid-body modes for integration with improvements to ExtPtfm.

#3219 Added flexibility for strip-theory hydrostatic load calculation (@luwang00)

MoorDyn

#2972 Add in missing passing of SS pointer to MD during FAST init (@RyanDavies19)

NWTC-Library

Many NWTC-Library modifications were made as part of the development of tight coupling (included in those PRs).

#3233 NWTC Library: Adjust subroutines for converting between DCM and small angles (@bjonkman)

Registry

Registry modifications were made as part of the development of tight coupling (included in those PRs).

SeaState

Input file changes

SeaState module updates include wave-current coupling, turbulent currents modeled through InflowWind (MHK only), and a few other small improvements.

#2213 MHK wave-current sup...

Read more

Release v4.2.1

10 Mar 19:29
2daa99a

Choose a tag to compare

Changelog (from 4.2.1)


Solvers

FAST.Farm

#3243 Add high res windslice at T=t_low - DT_high (Fix for FAST.Farm issue #3183) (@andrew-platt)

Modules

AeroDyn

AeroDyn Driver / AeroDyn_Inflow_C_Bindings interface

#3214 [BugFix] ADI c-bind: comment out code that causes segfaults with interface debugging (@andrew-platt)

#3227 [BugFix] AD: DTAero from input file was ignored (@andrew-platt)

#3230 [BugFix] AD driver: hub acceleration value incorrect in RotMotionType==1 (@andrew-platt)

NWTC-Library

#3123 Switch from xPPTRF to xPOTRF to improve TurbSim speed on macOS (@IrisMeasure)

#3229 Re-add the xPPTRF routines (rename xPOTRF routines from #3123) (@andrew-platt)

SeaState

#3235 backport of #3231 - SS WaveTp logic (@andrew-platt, @RBergua)

#3236 Add SeaSt_C_GetFluidDynP routine to SeaState_C_Binding interface (@andrew-platt)

TurbSim

#3224 Fix TurbSim compile with OpenMP and IFX compiler (@deslaughter)

Testing and input file processing

Regression and Unit testing

#3228 regtest: check if destination dirs exist before copyTree call (@andrew-platt)

Input file changes

No input file changes since v4.2.0

Known issues

There are several issues that have not been addressed in this release due to time constraints, but will be addressed in future releases. These include:

  • No visualization of rectangular members from HydroDyn or SubDyn through the VTK output options
  • Missing and broken features from several c-binding library interfaces:
    • the AeroDyn_Inflow_c-binding library interface does not allow for coupling to the tower. This will require an interface update.
    • the HydroDyn_c-binding library interface does not currently support vizualization. This will require an interface update.
    • the InitNodePositions input to HydroDyn_c-binding library interface does not currently work with any non-zero x or y coordinates (non-zero z is ok)
    • the MoorDyn_c-binding library interface does not currently support vizualization. This will require an interface update.
  • Documentation on the new pyOpenFAST module is incomplete. Partial documentation exists on how to use it in regression testing, but no documentation or examples exist on using it to call c-bindings modules from Python.
  • Documentation is incomplete for HydroDyn, SubDyn, and a few other modules.

Precompiled Windows Binaries

The binary files in this release were built with the Visual Studio solution files distributed with OpenFAST (not using cmake), using

  • Intel Fortran Essentials 2025.3.0.333
  • Microsoft Visual Studio 2022 Version 17.14.23.
  • MATLAB 2025.2.999 (R2025b)
  • Executables with _OpenMP or _OMP in the name are built with OpenMP libraries and linked with dynamic libraries.

The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.

Release v4.2.0

27 Jan 22:24

Choose a tag to compare

Changelog (from 4.1.2)


Overview

This release contains improvements to the AeroAcoustics module in AeroDyn, an improved cubic interpolation in HydroDyn and SeaState, an improved teeter inertia model in ElastoDyn for 2 bladed turbines, and many other small improvements and bug fixes.

General

Build systems

CMake

#3163 AA driver: add driver compile to cmake (@andrew-platt)

Visual Studio (Windows)

#2922 Update Visual Studio compile settings for C Binding interfaces (@rafmudaf)

Documentation

#3015 Fix readthedocs copyright year, add link to docs when calling openfast help (@mayankchetan)

#3083 docs: update info on VS versions and IFX

#3109 Docs: updates to StC docs (@andrew-platt)

#3166 Update project description from NREL to NLR (@andrew-platt)

Solvers

FAST.Farm

#2952 FAST.Farm: skip writing invalid VTK slices (@andrew-platt)

#3031 FF: align initial wake grid with the blades (@andrew-platt)

#3104 FF WAT: change default WAT_Scalebox to True (@andrew-platt)

#3145 WD: Ct_avg was not set when polar wake used giving RtCtAvgT (@andrew-platt)

OpenFAST

#3009 Linearization: Fix pointer to dUdy block for SD inputs to MAP outputs (@bjonkman)

#3111 Add error message when using BeamDyn with AeroMap (@deslaughter)

#3146 Reenable writing check point files when using the MAP module (@deslaughter)

#3156 Linear Trim Solution: update range calculation when NLinTimes=1 (@bjonkman)

OpenFAST interfaces

OpenFAST library

#2965 FASTlib: missing error handling on FAST_CFD_WriteOutput (@andrew-platt)

#3064 FASTlib: fix typo in error message

c-bindings interfaces

#2974 Add registry file for AeroDyn_Inflow_C_Binding (@andrew-platt)

#2997 Updates to SeaState c-bindings library interface (@andrew-platt)

#3108 Updates to c-bindings (@andrew-platt)

Modules

Multiple

#2975 Minor numerical improvements (@bjonkman)

AeroDyn

AeroAcoustics

#2948 AeroAcoustics code cleanup (@bjonkman)

#3134 [BUG FIX] AeroAcoustics module angle range (@bjonkman)

#3133 [Bug Fix] Fix the element size calculation in AeroAcoustics module (@bjonkman)

#3144 [Bug Fix] Fix the element size calculation in AeroAcoustics module (@andrew-platt)

#3149 AeroAcoustics cleanup + added driver code (@bjonkman)

AWAE

#3025 [BugFix] FF awae: set v_plane=0 when center of wake plane leaves domain (@andrew-platt)

ElastoDyn

#2953 ED: Implemented the ability to add concentrated masses to the tower (@luwang00)

#2981 Allow separate teeter inertia for 2-bladed turbines (@abhineet-gupta)

HydroDyn

#2895 HD: Additional transverse drag modeling options for rectangular members (@luwang00)

#3076 Miscellaneous bug fixes for HydroDyn (@luwang00)

#3141 HD: Fixed a bug with PtfmRefztRot (@luwang00)

InflowWind

#3099 ifw flowfield: add box corners to out of bounds message on 4D (@andrew-platt)

MoorDyn

#2946 Changed submergence calculation and added additional rod outputs for input file MoorDyn (@KylerF229)

#2977 Minor MoorDyn improvements (@ryandavies)

#3034 MoorDyn: increase number of attachment points possible for bodies/anchors/points

NWTC-Library

#3148 NWTC Library: update error message with IOSTAT return value (@bjonkman)

SeaState

#3007 Cubic interpolation for SeaState and HydroDyn (@luwang00)

ServoDyn

#3158 SrvD: updates to StC control from DLL (@andrew-platt)

TurbSim

#3020 TurbSim: OpenMP parallelization in factorization and FFT

Wavetank

#3065 New wavetank library for HIL simulations with AD+MD (@andrew-platt)

Testing and input file processing

openfast_io

#2957 More MoorDyn Output Channels in openfast-io chans (@dzalkind)

#3001 prepping for py314 and making requirements less restrictrive (@gbarter)

#3130 Fix FAST_Reader bug when ElastoDyn tower file path is absolute (@louis-papillon)

#3153 FAST_reader.py fix for ServoDyn.dat GenTrq_TLU read (@LKa505)

GitHub actions

#3162 Fix simulink build for Windows in GH Actions (@andrew-platt)

Regression and Unit testing

#3159 Add in yaw friction cases (@andrew-platt)

#3173 Add aerodyn driver test for MHK turbine with IfW based inflow (@deslaughter)

Input file changes

See https://openfast.readthedocs.io/en/main/source/user/api_change.html.

  • ElastoDyn input file has an additional line for HubIner_Teeter at line 76. (Note the ReadTheDocs table incorrectly states line 72)

Known issues

There are several issues that have not been addressed in this release due to time constraints, but will be addressed in future releases. These include:

  • No visualization of rectangular members from HydroDyn or SubDyn through the VTK output options
  • Missing and broken features from several c-binding library interfaces:
    • the AeroDyn_Inflow_c-binding library interface does not allow for coupling to the tower. This will require an interface update.
    • the HydroDyn_c-binding library interface does not currently support vizualization. This will require an interface update.
    • the InitNodePositions input to HydroDyn_c-binding library interface does not currently work with any non-zero x or y coordinates (non-zero z is ok)
    • the MoorDyn_c-binding library interface does not currently support vizualization. This will require an interface update.
  • Documentation on the new pyOpenFAST module is incomplete. Partial documentation exists on how to use it in regression testing, but no documentation or examples exist on using it to call c-bindings modules from Python.
  • Documentation is incomplete for HydroDyn, SubDyn, and a few other modules.

Precompiled Windows Binaries

The binary files in this release were built with the Visual Studio solution files distributed with OpenFAST (not using cmake), using

  • Intel Fortran Essentials 2025.3.0.333
  • Microsoft Visual Studio 2022 Version 17.14.23.
  • MATLAB 2025.2.999 (R2025b)
  • Executables with _OpenMP or _OMP in the name are built with OpenMP libraries and linked with dynamic libraries.

The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.

Release v4.1.2

06 Aug 18:20
0284731

Choose a tag to compare

Changelog (from 4.1.1)

Overview

This release includes several bug fixes and improvements for OpenFAST and fixes a critical error in the Visual Studio build system for OpenFAST and MoorDyn.

General

Visual Studio build system

#2914 Add SeaState path when running MoorDyn registry in RunRegistry.bat (@deslaughter)

Solvers

OpenFAST

#2915 Don't allow MAP when writing checkpoint files (@deslaughter)

Module changes

HydroDyn

#2941 HD: Switched to an equivalent but numerically more reliable expression for the hydrostatic moment on (partially wetted) circular endplates (@luwang00)

SeaState

#2919 Backport of #2906 ( SeaState: Allow WaveStMod=1 with WaveMod=0) (@luwang00)

ServoDyn

#2942 SrvD: bugfix linearization of StC _dYdx was not using x_perturb (@andrew-platt)

SubDyn

#2934 Backport of 2905: SD: Fix a bug where interface DoF loads are incomplete if the interface joint is part of a rigid assembly (@luwang00)

Documentation

#2931 docs: add guide for WSL+VScode (@skvibimigger)

#2937 Docs update recomendations from issue #1822 (FAST.Farm) (@andrew-platt)

Testing

Test results for the StC_test_OC4Semi_Linear_Nac and StC_test_OC4Semi_Linear_Tow cases were updated in #2942 - these were missing effects from the state variables for structural controls.

Input file changes

No input file changes since v4.1.0

Known issues

There are several issues that have not been addressed in this release due to time constraints, but will be addressed in future releases. These include:

  • No visualization of rectangular members from HydroDyn or SubDyn through the VTK output options
  • Missing and broken features from several c-binding library interfaces:
    • the AeroDyn_Inflow_c-binding library interface does not allow for coupling to the tower. This will require an interface update.
    • the HydroDyn_c-binding library interface does not currently support vizualization. This will require an interface update.
    • the InitNodePositions input to HydroDyn_c-binding library interface does not currently work with any non-zero x or y coordinates (non-zero z is ok)
    • the MoorDyn_c-binding library interface does not currently support vizualization. This will require an interface update.
    • error messages from c-binding library interfaces will get truncated to 1024 characters. A fix is nearly ready, but will have to wait until the next release.
  • A glue-codes/labview/src/WaveTank.f90 file is included in this release, but it is incomplete and untested. This is a placeholder for internal development work that may be released in complete form at a later date.
  • The GitHub deploy action to build Windows executables does not currently catch failed builds. This might be addressed at a later date. We are manually checking these builds for now.
  • Documentation on the new pyOpenFAST module is incomplete. Partial documentation exists on how to use it in regression testing, but no documentation or examples exist on using it to call c-bindings modules from Python.
  • Documentation is incomplete for HydroDyn, SubDyn, and a few other modules.
  • Checkpoint restarts do not work with MAP++ (#2947)

Precompiled Windows Binaries

The binary files in this release were built with the Visual Studio solution files distributed with OpenFAST (not using cmake), using

  • Intel Fortran compiler 2021.12 (p_oneAPI_2024.1.0.595) with Microsoft Visual Studio 2022
  • Microsoft Visual C++ 2022 (C), for build in Matlab
  • MATLAB Version: 2024.2.999 (R2024b)
  • Executables with _OpenMP or _OMP in the name are built with OpenMP libraries and linked with dynamic libraries.

The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.

v4.1.1

08 Jul 23:48
4350a49

Choose a tag to compare

Changelog (from 4.1.0)

Overview

This release includes several bug fixes and improvements for OpenFAST, GitHub actions, and the C++ interface.

General

CMake build system

#2910 CMake: update location of external lapack (@andrew-platt)

GitHub actions

#2883 Gh actions debug (@deslaughter)

Conda deployment

#2891 Minor fixes for v4.1 for smoother conda deployment (@gbarter)

Python packages

pyOpenFAST

#2907 pyOpenFAST: remove unnecessary files, move examples (@andrew-platt)

Module changes

HydroDyn

#2880 HD bug fix: avoid division by zero with MHstLMod=2 (@luwang00)

ServoDyn

#2908 SrvD: add numbering to StC echo files (@andrew-platt)

Code API changes

CPP interface

#2881 Fix FAST_CreateCheckpoint in c++ interface (@marchdf)

HydroDyn c-binding library interface

#2894 Fix segfault when SeaState OutSwitch=2 and no output channels (@andrew-platt)

Testing

Updated driver_utilities.py to allow testing to run in current build directory which might not be build (included in #2894 above)

Input file changes

No input file changes since v4.1.0

Known issues

There are several issues that have not been addressed in this release due to time constraints, but will be addressed in future releases. These include:

  • No visualization of rectangular members from HydroDyn or SubDyn through the VTK output options
  • Missing and broken features from several c-binding library interfaces:
    • the AeroDyn_Inflow_c-binding library interface does not allow for coupling to the tower. This will require an interface update.
    • the HydroDyn_c-binding library interface does not currently support vizualization. This will require an interface update.
    • the InitNodePositions input to HydroDyn_c-binding library interface does not currently work with any non-zero x or y coordinates (non-zero z is ok)
    • the MoorDyn_c-binding library interface does not currently support vizualization. This will require an interface update.
    • error messages from c-binding library interfaces will get truncated to 1024 characters. A fix is nearly ready, but will have to wait until the next release.
  • A glue-codes/labview/src/WaveTank.f90 file is included in this release, but it is incomplete and untested. This is a placeholder for internal development work that may be released in complete form at a later date.
  • The GitHub deploy action to build Windows executables does not currently catch failed builds. This might be addressed at a later date. We are manually checking these builds for now.
  • Documentation on the new pyOpenFAST module is incomplete. Partial documentation exists on how to use it in regression testing, but no documentation or examples exist on using it to call c-bindings modules from Python.
  • Documentation is incomplete for HydroDyn, SubDyn, and a few other modules.

Precompiled Windows Binaries

The binary files in this release were built with the Visual Studio solution files distributed with OpenFAST (not using cmake), using

  • Intel Fortran compiler 2021.12 (p_oneAPI_2024.1.0.595) with Microsoft Visual Studio 2022
  • Microsoft Visual C++ 2022 (C), for build in Matlab
  • MATLAB Version: 2024.2.999 (R2024b)
  • Executables with _OpenMP or _OMP in the name are built with OpenMP libraries and linked with dynamic libraries.

The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.

v4.1.0

19 Jun 03:13
8d2470b

Choose a tag to compare

Changelog (since 4.0.5)

Overview

This release removes the SuperController from FAST.Farm in favor of ZeroMQ communication between ROSCO controllers.
This release also adds several new features including direct coupling of MoorDyn to SeaState, rectangular members in HydroDyn and SubDyn, vortex-induced vibration (VIV) capabilities in MoorDyn, and a new pyOpenFAST module for calling c-binding libraries directly from Python.
This release also includes several bug fixes and improvements for AeroDyn, BeamDyn, MoorDyn, OpenFAST, several various c-binding libary interfaces, and GitHub actions.

General

CMake build system

#2632 Reduce optimization level for FAST*_Types.f90 with gcc (@andrew-platt)

GitHub actions

#2636 Add job to build Windows executables to deploy.yml (@deslaughter)

#2771 Update GH conda-deploy action to use Ubuntu 24.04 (@andrew-platt)

Visual Studio build system

#2866 VS build: fix MD, add SeaStateS_c_binding and update GH deploy action (@andrew-platt)

Python packages

openfast_io

#2658 openfast_IO MoorDyn compatibility (@RyanDavies19)

pyOpenFAST

This is a new python package that interfaces the c-bindings library versions of OpenFAST with Python. Users who want to call standalone OpenFAST modules from Python will want to look into using this package. Note that the documentation is limited at this time.

This package is also used in testing (see documentation on testing environments)

#2680 Refactor the Aerodyn/Inflowwind Python interface to the C-bindings interface (@faisal-bhuiyan)

#2719 Python infrastructure improvements (new pyOpenFAST package) (@rafmudaf)

Solvers

FAST.Farm

#2729 Remove supercontroller from FAST.Farm (@abhineet-gupta)

OpenFAST

#2671 Avoid ending program when called as a shared library (@bjonkman)

#2705 MoorDyn-SeaState Coupling (OpenFAST and FAST.Farm) (@RyanDavies19)

#2760 bug fix: Adjust steady-state solver small angle assumptions (@bjonkman)

Module changes

multiple modules

#2770 Bug fix for Failed0 error checking functions (@rafmudaf)

AeroDyn

#2848 Bug fix: remove spaces in OLAF's UA summary file name (@bjonkman)

BeamDyn

#2642 [BugFix] BD: variable passing in Calc_RR0mEta_rho (@bjonkman, @andrew-platt)

HydroDyn

#2646 Implementation of rectangular members in HD and SD (@luwang00)

#2663 HydroDyn C-binding: Added mass matrix (@luwang00)

#2787 HD-cbind: Add HydroDyn input files handle (@wenchaoyu, @andrew-platt)

#2865 Reduce memory requirement in HydroDyn initialization (@bjonkman)

MoorDyn

#2746 MoorDyn bugfixes (@RyanDavies19)

#2650 MoorDyn: VIV and Rk4 solver (@RyanDavies19 )

#2791 MD cbind: correction to description of mesh point mapping (@andrew-platt)

#2794 MoorDyn wave directional spreading and custom current profile if no SeaState current (@RyanDavies19)

SeaState

#2720 Adds first pass SeaState C Binding interface (@rafmudaf)

ServoDyn

#2798 Docs: correct Bladed Interface channel 63 description (@andrew-platt)

SubDyn

#2646 (see above in HydroDyn)

TurbSim

#2808 [BugFix] TurbSim calculating grid bottom location (@ptrbortolotti)

Documentation

#2867 Docs: update info on testing (with pyOpenFAST module) (@andrew-platt)

#2850 Docs Update for the New Rectangular Members in HydroDyn and SubDyn (@luwang00)

Typo fixes in code comments

There have been several "fluff" pull requests with only typo fixes and no code changes.

#2858 Fix Typos in Comments and Log Messages for Flexural and Crushing Ice Failure Initialization (@kilavvy)

Regression Testing

#2765 MHK RM1: reduce HD resolution (@andrew-platt)

Code API changes

The SuperController has been removed. This changes the interfaces for some files:

CPP interface

  • glue-codes/openfast-cpp/src/OpenFAST.H
    • class fastInputs {
    • class OpenFAST {
  • glue-codes/openfast-cpp/src/OpenFAST.cpp
    • class fastInputs
    • fast::fastInputs::fastInputs():

OpenFAST library interface

  • modules/openfast-library/src/FAST_Library.h
    • FAST_ExtLoads_Restart - removal of SuperController arguments
    • FAST_ExtLoads_Init - removal of SuperController arguments
    • FAST_ExtInfw_Restart - removal of SuperController arguments
    • FAST_ExtInfw_Init -removal of SuperController arguments
  • modules/openfast-library/src/FAST_Library.f90
    • FAST_ExtLoads_Restart - removal of SuperController arguments
    • FAST_ExtLoads_Init - removal of SuperController arguments
    • FAST_ExtInfw_Restart - removal of SuperController arguments
    • FAST_ExtInfw_Init -removal of SuperController arguments

HydroDyn c-binding library interface

  • modules/hydrodyn/src/HydroDyn_C_Binding.f90
    • HydroDyn_C_Init - arguments
    • HydroDyn_C_CalcOutput_and_AddedMass - new routine

MoorDyn c-bindings libarary interface

  • modules/moordyn/src/MoorDyn_C_Binding.f90
    • MD_C_Init - new argument

Input file changes

This release brings several input file changes including the FAST.Farm (removal of supercontroller sections), HydroDyn (new sections for rectangular members, revised members table), SubDyn (new rectangular cross-section table, and additional columns in other tables).
A list of changes can be found here: https://openfast.readthedocs.io/en/main/source/user/api_change.html. However, we recommend that if you start by comparing to the complete set of input files found in the regression tests: https://github.com/OpenFAST/r-test/tree/v4.1.0 (example input files from the regression testing)

Known issues

There are several issues that have not been addressed in this release due to time constraints, but will be addressed in future releases. These include:

  • No visualization of rectangular members from HydroDyn or SubDyn through the VTK output options
  • Missing and broken features from several c-binding library interfaces:
    • the AeroDyn_Inflow_c-binding library interface does not allow for coupling to the tower. This will require an interface update.
    • the HydroDyn_c-binding library interface does not currently support vizualization. This will require an interface update.
    • the InitNodePositions input to HydroDyn_c-binding library interface does not currently work with any non-zero x or y coordinates (non-zero z is ok)
    • the MoorDyn_c-binding library interface does not currently support vizualization. This will require an interface update.
    • error messages from c-binding library interfaces will get truncated to 1024 characters. A fix is nearly ready, but will have to wait until the next release.
  • There are leftover unused and incomplete files from development in the glue-codes/python directory. These will be removed later.
  • A glue-codes/labview/src/WaveTank.f90 file is included in this release, but it is incomplete and untested. This is a placeholder for internal development work that may be released in complete form at a later date.
  • The GitHub deploy action to build Windows executables does not currently catch failed builds. This might be addressed at a later date. We are manually checking these builds for now.
  • Documentation on the new pyOpenFAST module is incomplete. Partial documentation exists on how to use it in regression testing, but no documentation or examples exist on using it to call c-bindings modules from Python.
  • Documentation is incomplete for HydroDyn, SubDyn, and a few other modules.

Precompiled Windows Binaries

The binary files in this release were built with the Visual Studio solution files distributed with OpenFAST (not using cmake), using

  • Intel Fortran compiler 2021.12 (p_oneAPI_2024.1.0.595) with Microsoft Visual Studio 2022
  • Microsoft Visual C++ 2022 (C), for build in Matlab
  • MATLAB Version: 2024.2.999 (R2024b)
  • Executables with _OpenMP or _OMP in the name are built with OpenMP libraries and linked with dynamic libraries.

The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.

v4.0.5

11 Jun 19:03
f4c0b48

Choose a tag to compare

v4.0.5 Overview

This is a minor incremental bug fix release. See the changelog below for details.

Changelog

Overview

This release includes several bug fixes and improvements for OpenFAST, GitHub actions, and openfast_io.

General

CMake build system

GitHub actions

#2825 Simplify GitHub Action for regression tests (backport from dev-tc) (@deslaughter)

openfast_io

#2828 updated outlist reading in openfast_io (@mayankchetan)

#2818 OpenFAST IO updates: MoorDyn and StC (@dzalkind)

Solvers

OpenFAST

#2831 [BugFix] WrVTK with VTK_fps fails (@andrew-platt)

Interfaces

cpp interface

#2792 Fix openfastcpp restart parsing of file name (@marchdf)

#2804 Add a checkError in openfast cpp (@marchdf)

#2815 Fix restart parsing of file name (backport of #2792 and #2793) (@marchdf)

Module changes

AeroDyn

#2853 Backport #2848 (@bjonkman)

BeamDyn

#2811 BD: new output - aero only loads mapped to the root (@andrew-platt)

IceFlow

#2855 Fix Typo in "interpolation" in Ice Crushing Modules (@leopardracer)

SubDyn

#2821 bugfix: SD maximum number of output channels was incorrectly set (@andrew-platt)

Input file changes

No input file changes since v4.0.0

#2829 FF: typo in SeaState names in MD_Shared .fst files - this is not an API change (@andrew-platt)

Precompiled Windows Binaries

The binary files in this release were built with the Visual Studio solution files distributed with OpenFAST (not using cmake), using

  • Intel Fortran compiler 2021.12 (p_oneAPI_2024.1.0.595) with Microsoft Visual Studio 2022
  • Microsoft Visual C++ 2022 (C), for build in Matlab
  • MATLAB Version: 2024.2.999 (R2024b)
  • Executables with _OpenMP or _OMP in the name are built with OpenMP libraries and linked with dynamic libraries.

The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.

v4.0.4

28 Apr 21:27
d28a823

Choose a tag to compare

v4.0.4 Overview

This is a minor incremental bug fix release. See the changelog below for details.

Changelog

Overview

This release includes several bug fixes and improvements for OpenFAST, GitHub actions, and openfast_io.

General

CMake build system

GitHub actions

#2778 Backport of GitHub Action to build windows executables on release (@deslaughter) -- backport of #2636

openfast_io

#2779 MD: Backport of PR #2658 -- openfast_IO MoorDyn compatibility (@RyanDavies19)

#2777 bug fix #2762 (@mayankchetan)

#2658 openfast_IO MoorDyn compatibilityModule (@RyanDavies19)

Solvers

Simulink

#2785 Avoid ending program when called as a shared library (@bjonkman) -- backport of #2671

Module changes

OpenFAST library

#2780 backport of #2760: bug-fix: Adjust steady-state solver small angle assumptions (@bjonkman)

#2776 Fix FAST_ExtInfw_Restart APIC++ API (@marchdf)

Input file changes

No input file changes since v4.0.0

Precompiled Windows Binaries

The binary files in this release were built with the Visual Studio solution files distributed with OpenFAST (not using cmake), using

  • Intel Fortran compiler 2021.12 (p_oneAPI_2024.1.0.595) with Microsoft Visual Studio 2022
  • Microsoft Visual C++ 2022 (C), for build in Matlab
  • MATLAB Version: 2024.2.999 (R2024b)
  • Executables with _OpenMP or _OMP in the name are built with OpenMP libraries and linked with dynamic libraries.

The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.

v4.0.3

08 Apr 21:07
20632d7

Choose a tag to compare

v4.0.3 Overview

This is a minor incremental bug fix release. See the changelog below for details.

Changelog

Overview

This release includes several bug fixes and improvements for FAST.Farm, including segmentation faults with large farms, file I/O collision fixes, increased error message length, and build/compile issues.

General

CMake build system

#2709 Add "nouninit" to debug flags for IntelLLVM (@andrew-platt)

#2732 Disable use of heap arrays for the Intel fortran compilers (@deslaughter)

openfast_io

#2727 generate BD files if fst_vt dictionary BD keys are not empty (@mayankchetan)

Visual Studio build

#2742 Fix VS build for FAST when using IFX Complier (@deslaughter)

Solvers

FAST.Farm

#2711 Fix FAST.Farm issues with OMP (segfaults mostly) (@andrew-platt)

Module changes

NWTC library

#2710 Increase length of error messages (@andrew-platt)

#2741 bug in simulation status number of days left (@andrew-platt)

Input file changes

No input file changes are required from 4.0.2.

Precompiled Windows Binaries

coming soon

The binary files in this release were built with the Visual Studio solution files distributed with OpenFAST (not using cmake), using

  • Intel Fortran compiler (ifx) 2025.1.0 with Microsoft Visual Studio Community 2022
  • Microsoft Visual C++ 2022 (C), for build in Matlab
  • MATLAB Version: 24.2.0.2863752 (R2024b) Update 5
  • Executables with _OpenMP or _OMP in the name are built with OpenMP libraries and linked with dynamic libraries.

The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.

v4.0.2

11 Feb 03:53
fc11101

Choose a tag to compare

v4.0.2 Overview

This is a minor incremental bug fix release. See the changelog below for details.

Changelog

Overview

This release includes a bug fix to the ExternalInflow module which is used by AMR-Wind to provide wind velocities to AeroDyn and receive aerodynamic forces. It also contains additional documentation on OpenFAST coordinate systems and more information on the release process.

General

#2626 Docs: add presentation overview of OF Coordinate systems (2024) (@andrew-platt)

#2627 Update ReleaseProcess.md notes (@andrew-platt)

Module changes

ExternalInflow

#2628 Fix bug in ExternalInflow Orientation indexing (@deslaughter)

Input file changes

No input file changes are required from 4.0.1.

Precompiled Windows Binaries

The binary files in this release were built with the Visual Studio solution files distributed with OpenFAST (not using cmake), using

  • Intel Fortran compiler 2021 (Update 2, w_oneAPI_2021.2.0.243) with Microsoft Visual Studio Community 2019
  • Microsoft Visual C++ 2019 (C), for build in Matlab
  • MATLAB Version: 9.9.0.1857802 (R2020b) Update 7
  • Executables with _OpenMP or _OMP in the name are built with OpenMP libraries and linked with dynamic libraries.

The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.