Releases: OpenFAST/openfast
Release v5.0.0
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...
Release v4.2.1
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
InitNodePositionsinput to HydroDyn_c-binding library interface does not currently work with any non-zeroxorycoordinates (non-zerozis 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
_OpenMPor_OMPin the name are built with OpenMP libraries and linked with dynamic libraries.- You will need this Intel Fortran redistributable package installed to use these executables if you do not already have Intel Fortran OneAPI 2024 installed. See the installation instructions here.
The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.
Release v4.2.0
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_Teeterat 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
InitNodePositionsinput to HydroDyn_c-binding library interface does not currently work with any non-zeroxorycoordinates (non-zerozis 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
_OpenMPor_OMPin the name are built with OpenMP libraries and linked with dynamic libraries.- You will need this Intel Fortran redistributable package installed to use these executables if you do not already have Intel Fortran OneAPI 2025 installed. See the installation instructions here.
The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.
Release v4.1.2
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
InitNodePositionsinput to HydroDyn_c-binding library interface does not currently work with any non-zeroxorycoordinates (non-zerozis 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.f90file 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
deployaction 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
_OpenMPor_OMPin the name are built with OpenMP libraries and linked with dynamic libraries.- You will need this Intel Fortran redistributable package installed to use these executables if you do not already have Intel Fortran OneAPI 2024 installed. See the installation instructions here.
- You may also need a redistributable library for Visual Studio installed. See instructions here.
The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.
v4.1.1
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
InitNodePositionsinput to HydroDyn_c-binding library interface does not currently work with any non-zeroxorycoordinates (non-zerozis 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.f90file 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
deployaction 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
_OpenMPor_OMPin the name are built with OpenMP libraries and linked with dynamic libraries.- You will need this Intel Fortran redistributable package installed to use these executables if you do not already have Intel Fortran OneAPI 2024 installed. See the installation instructions here.
- You may also need a redistributable library for Visual Studio installed. See instructions here.
The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.
v4.1.0
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.Hclass fastInputs {class OpenFAST {
glue-codes/openfast-cpp/src/OpenFAST.cppclass fastInputsfast::fastInputs::fastInputs():
OpenFAST library interface
modules/openfast-library/src/FAST_Library.hFAST_ExtLoads_Restart- removal of SuperController argumentsFAST_ExtLoads_Init- removal of SuperController argumentsFAST_ExtInfw_Restart- removal of SuperController argumentsFAST_ExtInfw_Init-removal of SuperController arguments
modules/openfast-library/src/FAST_Library.f90FAST_ExtLoads_Restart- removal of SuperController argumentsFAST_ExtLoads_Init- removal of SuperController argumentsFAST_ExtInfw_Restart- removal of SuperController argumentsFAST_ExtInfw_Init-removal of SuperController arguments
HydroDyn c-binding library interface
modules/hydrodyn/src/HydroDyn_C_Binding.f90HydroDyn_C_Init- argumentsHydroDyn_C_CalcOutput_and_AddedMass- new routine
MoorDyn c-bindings libarary interface
modules/moordyn/src/MoorDyn_C_Binding.f90MD_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
InitNodePositionsinput to HydroDyn_c-binding library interface does not currently work with any non-zeroxorycoordinates (non-zerozis 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/pythondirectory. These will be removed later. - A
glue-codes/labview/src/WaveTank.f90file 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
deployaction 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
_OpenMPor_OMPin the name are built with OpenMP libraries and linked with dynamic libraries.- You will need this Intel Fortran redistributable package installed to use these executables if you do not already have Intel Fortran OneAPI 2024 installed. See the installation instructions here.
- You may also need a redistributable library for Visual Studio installed. See instructions here.
The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.
v4.0.5
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
_OpenMPor_OMPin the name are built with OpenMP libraries and linked with dynamic libraries.- You will need this Intel Fortran redistributable package installed to use these executables if you do not already have Intel Fortran OneAPI 2024 installed. See the installation instructions here.
- You may also need a redistributable library for Visual Studio installed. See instructions here.
The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.
v4.0.4
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
_OpenMPor_OMPin the name are built with OpenMP libraries and linked with dynamic libraries.- You will need this Intel Fortran redistributable package installed to use these executables if you do not already have Intel Fortran OneAPI 2024 installed. See the installation instructions here.
- You may also need a redistributable library for Visual Studio installed. See instructions here.
The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.
v4.0.3
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
_OpenMPor_OMPin the name are built with OpenMP libraries and linked with dynamic libraries.- You will need this Intel Fortran redistributable package installed to use these executables if you do not already have Intel Fortran OneAPI 2025 installed. See the installation instructions here.
- You may also need a redistributable library for Visual Studio installed. See instructions here.
The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.
v4.0.2
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
_OpenMPor_OMPin the name are built with OpenMP libraries and linked with dynamic libraries.- You will need this Intel Fortran redistributable package installed to use these executables if you do not already have Intel Fortran OneAPI 2021 installed. See the installation instructions here.
- You may also need a redistributable library for Visual Studio installed. See instructions here.
The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries.