Conversation
Documentation for SoilDyn is missing, so this might be better than nothing.
|
Rendering of notes: ============== Feature or improvement description See the milestone and project pages for additional information Test results, if applicable Release checklist:
Release OverviewOpenFAST 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 SubDyn, OpenFAST now supports modeling multiple rotors attached to a single structure. FAST.Farm adds substantial performance improvements: a k‑d tree algorithm to accelerate wake interaction calculations; dynamic wake‑plane management improving propagation and visualization; 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 AcknowledgementsThanks 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. You will be greatly missed by all who had the privelage of working with you during this time. Statistics (since 4.0.0)
ChangelogGeneralBuild systemsThere were several updates to the CMakeMinor 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 DocumentationThere 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) SolversFAST.FarmFAST.Farm delivers a significant performance upgrade, accelerating wake application with a k‑d tree approach across turbine and farm grids, introducing dynamic wake‑plane management (NumDFull/NumDBuff) for more efficient propagation and coupling, and optimizing inflow I/O with a C++ VTK reader that cuts OpenMP overhead by 60–80%. It also adds an AMReX inflow reader to directly use AMReX-format wind precursors, simplifying workflows and improving scalability for large wind farms.
OpenFASTOpenFAST 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. 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.
#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) ModulesMultiple modules#3252 Remove unused registry entries (leftover from old lin method) (@andrew-platt) AeroDyn
#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) AWAEAs 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 #3238 Add AMReX-based inflow reader to AWAE for FAST.Farm (@deslaughter) BeamDynBeamDyn 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) ElastoDynElastoDyn 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#3210 Hydroelastic super-element capability for OpenFAST (@luwang00) HydroDynSeveral changes were introduced into HydroDyn to support modifications of the ExtPtfm module. For the end user however, the modifiations are relatively minimal.
#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-LibraryMany 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) RegistryRegistry modifications were made as part of the development of tight coupling (included in those PRs). SeaStateSeaState module updates include wave-current superposition, turbulent currents modeled through InflowWind (MHK only), and a few other small improvements.
#2213 MHK wave-current superposition, added mass, inertia (@hkross) #2906 SeaState: Allow WaveStMod=1 with WaveMod=0 (@luwang00) #2978 Improved wave-current modeling in SeaState (@luwang00) #3202 SeaState: Small change in WavePkShp logic (@RBergua) #3231 SeaState: Small change in WaveTp logic (@RBergua) ServoDynServoDyn updates include a new 3 DOF TMD option, and minor improvements.
#2960 Add connection from ElastoDyn platform motion mesh to ServoDyn (@dzalkind) #2970 Allow up to MaxStC outputs (@mayankchetan) #3221 Enhancements to the structural control submodule of ServoDyn (@luwang00) SoilDynThe SoilDyn module primarily exists as a way to use the RedWin DLL from NGI for modeling soil interaction. This module also offers the option of a 6x6 stiffness and damping matrix connection to model soil interaction - however this capability is also available through SubDyn and may be more stable when used there.
#3126 Add SoilDyn to dev-tc (@deslaughter, @andrew-platt) SubDynSubDyn now supports multiple transition pieces to enable multirotor wind and MHK turbine simulations. It also has the ability to solve the 6-DoF rigid-body motion of the floater internally with a user-selected reference joint. The latter is required for multirotor models but is optional for single-rotor models. However, when including the tower in SubDyn instead of ElastoDyn, enabling the SubDyn internal rigid-body solution can improve accuracy and stability even for single-rotor systems by allowing the user to select a rigid-body reference point near the floater center instead of at the tower-top interface joint. This minimizes the elastic deflection at the floater, thus improving the hydrodynamic and hydrostatic load calculations. A previous bug in SubDyn causing incomplete external load calculations for interface DOFs when the interface joint is part of a rigid assembly is now fixed by including loads on all nodes in the assembly. The inputs NPropSets have been changed to NPropSetsCyl and NPropSetsRec to remove non-unique fields and align with HydroDyn. Lastly, rectangular members can now be visualized using the viz3Danim tool.
#2782 SubDyn upgrade to support multiple transition pieces (@luwang00) #2905 SD: Fix a bug where interface DoF loads are incomplete if the interface joint is part of a rigid assembly (@RBergua) #3117 Updated SD NPropSets to NPropSetsCyl and NPropSetsRec and fixed typos in the HD input file (@luwang00) #3195 SubDyn: add rectangular beam properties to JSON output (@RBergua) #3205 Don't write to SubDyn output file if no outputs requested. (@deslaughter) Testing and input file processingThere were several updates and improvements to the testing system and GitHub actions. openfast_ioThere were numerous incremental improvements to the GitHub actionsThere were numerous incremental improvements to the GH actions embeded in other PRs. Regression and Unit testing#3041 Add RM1 MHK Multi-Rotor examples to regression test suite (@deslaughter) #3079 Add missing files for #3113 Add IceDyn and IceFloe Regression Tests (@deslaughter) #3173 Add aerodyn driver test for MHK turbine with IfW based inflow (@deslaughter) #3215 Add a new r-test with blade pitch dynamics enabled (@luwang00) Input file changesThis release brings a large number of input file changes and rearrangements with multiple new modules. A partial 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/v5.0.0 (example input files from the regression testing) Known issuesThere are several issues that have not been addressed in this release due to time constraints, but will be addressed in future releases. These include:
Unknown issuesThere are likely a few bugs in the code. If you find one, please report it along with a full description so that we can reproduce and fix it, or post a solution we can implement. |
jjonkman
left a comment
There was a problem hiding this comment.
Super excited for this release; see a few recommended edits below.
|
Updated release notes: Feature or improvement description See the milestone and project pages for additional information Test results, if applicable Release checklist:
Release OverviewOpenFAST 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 superposition, 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 AcknowledgementsThanks 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)
ChangelogGeneralBuild systemsThere were several updates to the CMakeMinor 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 DocumentationThere 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) SolversFAST.Farm
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
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) ModulesMultiple modules#3252 Remove unused registry entries (leftover from old lin method) (@andrew-platt) AeroDyn
#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) AWAEAs 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 #3238 Add AMReX-based inflow reader to AWAE for FAST.Farm (@deslaughter) BeamDyn
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
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
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
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-LibraryMany 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) RegistryRegistry modifications were made as part of the development of tight coupling (included in those PRs). SeaState
SeaState module updates include wave-current superposition, turbulent currents modeled through InflowWind (MHK only), and a few other small improvements. #2213 MHK wave-current superposition, added mass, inertia (@hkross) #2906 SeaState: Allow WaveStMod=1 with WaveMod=0 (@luwang00) #2978 Improved wave-current modeling in SeaState (@luwang00) #3202 SeaState: Small change in WavePkShp logic (@RBergua) #3231 SeaState: Small change in WaveTp logic (@RBergua) ServoDyn
ServoDyn updates include a new 3 DOF TMD option, and minor improvements. #2960 Add connection from ElastoDyn platform motion mesh to ServoDyn (@dzalkind) #2970 Allow up to MaxStC outputs (@mayankchetan) #3221 Enhancements to the structural control submodule of ServoDyn (@luwang00) SoilDyn
The SoilDyn module primarily exists as a way to use the RedWin DLL from NGI for modeling soil interaction. This module also offers the option of a 6x6 stiffness and damping matrix connection to model soil interaction - however this capability is also available through SubDyn and may be more stable when used there. #3126 Add SoilDyn to dev-tc (@deslaughter, @andrew-platt) SubDyn
SubDyn now supports multiple transition pieces to enable multirotor wind and MHK turbine simulations. It also has the ability to solve the 6-DoF rigid-body motion of the floater internally with a user-selected reference joint. The latter is required for multirotor models but is optional for single-rotor models. However, when including the tower in SubDyn instead of ElastoDyn, enabling the SubDyn internal rigid-body solution can improve accuracy and stability even for single-rotor systems by allowing the user to select a rigid-body reference point near the floater center instead of at the tower-top interface joint. This minimizes the elastic deflection at the floater due to tower flexibility, thus improving the hydrodynamic and hydrostatic load calculations. A previous bug in SubDyn causing incomplete external load calculations for interface DOFs when the interface joint is part of a rigid assembly is now fixed by including loads on all nodes in the assembly. The inputs NPropSets have been changed to NPropSetsCyl and NPropSetsRec to remove non-unique fields and align with HydroDyn. Lastly, rectangular members can now be visualized using the viz3Danim tool. #2782 SubDyn upgrade to support multiple transition pieces (@luwang00) #2905 SD: Fix a bug where interface DoF loads are incomplete if the interface joint is part of a rigid assembly (@RBergua) #3117 Updated SD NPropSets to NPropSetsCyl and NPropSetsRec and fixed typos in the HD input file (@luwang00) #3195 SubDyn: add rectangular beam properties to JSON output (@RBergua) #3205 Don't write to SubDyn output file if no outputs requested. (@deslaughter) Testing and input file processingThere were several updates and improvements to the testing system and GitHub actions. openfast_ioThere were numerous incremental improvements to the GitHub actionsThere were numerous incremental improvements to the GH actions embeded in other PRs. Regression and Unit testing#3041 Add RM1 MHK Multi-Rotor examples to regression test suite (@deslaughter) #3079 Add missing files for #3113 Add IceDyn and IceFloe Regression Tests (@deslaughter) #3173 Add aerodyn driver test for MHK turbine with IfW based inflow (@deslaughter) #3215 Add a new r-test with blade pitch dynamics enabled (@luwang00) Input file changesThis release brings a large number of input file changes and rearrangements with multiple new modules. A partial 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/v5.0.0 (example input files from the regression testing) Known issuesThere are several issues that have not been addressed in this release due to time constraints, but will be addressed in future releases. These include:
Unknown issuesThere are likely a few bugs in the code. If you find one, please report it along with a full description so that we can reproduce and fix it, or post a solution we can implement. Precompiled Windows BinariesThe binary files in this release were built with the Visual Studio solution files distributed with OpenFAST (not using cmake), using
The other OpenFAST executables DO NOT require these redistributable libraries to be installed. Instead, they were built with static libraries. |
Draft
Feature or improvement description
These are the release notes for v5.0.0, version incrementing, and api change logs.
Related issue, if one exists
This should go in right before #3260
Impacted areas of the software
Documentation only
Generative AI usage
None
Test results, if applicable
None