-
Notifications
You must be signed in to change notification settings - Fork 509
Release 4.2.0 #3167
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Release 4.2.0 #3167
Conversation
to use, add "ISO_C_BINDING" by itself on a line someplace in the registry text file
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Registry: add basic ISO_C_BINDING types
- removed: output channel handling from interface (unnecessary as will pipe to file instead) - make wavefield pointer setting private - add a registry file for new data organization (not included in build process yet) - remove ADI_HH_Vel from interface (may add later if needed)
- remove extra `IMPLICIT NONE` statements - change name SeaSt_GetWaveFieldPointer_C to SeaSt_C_GetWaveFieldPointer (matches convention elsewehre)
- SeaSt_C_GetFluidVelAccDens - SeaSt_C_GetSurfElev
…eVelAcc - add acceleration output (similar to `dev-tc` usage) - I don't see anything that directly uses this.
- SeaSt_C_GetWaveFieldPointer - convert to subroutine, add error handling, add DebugLevel - SeaSt_C_SetWaveFieldPointer - new routine - python lib: revisions to support above, and also to support a new regression test (in progress)
… table for the read_ServoDyn method
When linearizing with a trim solution and NLinTimes=1, the range of the reference outputs was always 0.01. Now it uses the channel value. This could probably be modified further, but for now, it gives a slightly better "range"
Linear Trim Solution: update range calculation when NLinTimes=1
Update comments and add warning for now StC channel requested
FAST_reader.py fix for ServoDyn.dat GenTrq_TLU read
NOTE: DLL interface does not support moments, but one user added a pipe in this location for applying forces/moments. The addition of this logic makes moments from a pipe possible
SrvD: updates to StC control from DLL
These were not getting included in testing for some reason.
Add in yaw friction cases
Fix simulink build for Windows in GH Actions
AeroAcoustics cleanup + added driver code
Minor correction to AA_driver_subs: changed `storage` array to `ReKi` so it will work with the binary writer
AA driver: add driver compile to cmake
|
Update the following before merging this:
|
Update project description from NREL to NLR
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request merges the dev branch into main to create the OpenFAST v4.2.0 release. The release includes numerous bug fixes, new features, and improvements across multiple modules including AeroDyn, HydroDyn, MoorDyn, SeaState, and others. Key changes include enhanced structural tuned mass control, improved wave field handling, new wavetank library for hardware-in-the-loop testing, and various code quality improvements.
Changes:
- Bug fixes across multiple modules (AeroAcoustics, FAST.Farm, OpenFAST linearization, WakeDynamics)
- New features including wavetank library, rectangular member drag modeling in HydroDyn, and enhanced StC control
- Documentation updates for copyright year, installation instructions, and module-specific guidance
- Build system improvements for Visual Studio and CMake configurations
Reviewed changes
Copilot reviewed 108 out of 181 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| vs-build/SeaState_c_binding/SeaState_c_binding.vfproj | Added GridInterp files and reorganized filter structure for SeaState c-binding |
| vs-build/SeaState/SeaStateDriver.vfproj | Added GridInterp files for SeaState driver |
| vs-build/RunRegistry.bat | Added registry generation for GridInterp and ADI_cbind |
| vs-build/ReadMe.md | Updated NREL reference to historical context |
| vs-build/MoorDyn/MoorDynDriver.vfproj | Added GridInterp files and corrected registry base file reference |
| vs-build/HydroDyn/HydroDynDriver.vfproj | Added GridInterp files and corrected registry base file reference |
| vs-build/FASTlib/FASTlib.vfproj | Added GridInterp files |
| requirements.txt | Added nptdms dependency |
| reg_tests/r-test | Updated submodule commit reference |
| reg_tests/executeWavetankPyRegressionCase.py | New test driver for wavetank python regression testing |
| reg_tests/executeSeaStatePyRegressionCase.py | New test driver for SeaState python regression testing |
| reg_tests/CTestList.cmake | Added new regression test cases and functions |
| openfast_io/pyproject.toml | Updated email domains and Python version support |
| openfast_io/turbsim_util.py | Added file close call |
| openfast_io/FAST_writer.py | Added HubIner_Teeter parameter and file sync operations |
| openfast_io/FAST_vars_out.py | Simplified MoorDyn output channel definitions using loop |
| openfast_io/FAST_reader.py | Added HubIner_Teeter reading and fixed GenTrq_TLU array indexing |
| openfast_io/README.md | Updated ROSCO repository URL |
| modules/wakedynamics/src/WakeDynamics_Registry.txt | Removed commented-out code |
| modules/wakedynamics/src/WakeDynamics.f90 | Improved error handling in UpdateStates |
| modules/version/tests/VersionInfo_test_tools.F90 | Changed stdout to use CU constant directly |
| modules/servodyn/src/StrucCtrl_Registry.txt | Added InitMoment, M_ext, and CmdMoment fields |
| modules/servodyn/src/ServoDyn_Registry.txt | Added PrevStCCmdMoment and StCCmdMoment fields with corrected units |
| modules/seastate/src/SeaState_Types.f90 | Replaced SeaSt_WaveField types with GridInterp types |
| modules/seastate/src/SeaState_Output.f90 | Changed grid depth reference and file handle check |
| modules/seastate/src/SeaState_DriverCode.f90 | Added WaveTimeShift initialization |
| modules/seastate/src/SeaState.txt | Added WaveTimeShift parameter and changed to GridInterp types |
| modules/seastate/src/SeaState.f90 | Implemented WaveTimeShift validation and separate surface/volume grid parameters |
| modules/seastate/src/SeaSt_WaveField.txt | Replaced grid parameters with GridInterp types |
| modules/seastate/CMakeLists.txt | Restructured c-binding library build to separate object, shared, and static libraries |
| modules/openfast-registry/src/registry_gen_fortran.cpp | Added ISO_C_BINDING support and removed C_obj packing checks |
| modules/openfast-registry/src/registry.hpp | Added ISO_C_BINDING type support |
| modules/openfast-library/src/FAST_Subs.f90 | Added WaveTimeShift initialization and improved error messages |
| modules/openfast-library/src/FAST_SS_Subs.f90 | Added BeamDyn compatibility check and simulation status call |
| modules/openfast-library/src/FAST_Lin.f90 | Fixed linearization bugs and improved NLinTimes=1 handling |
| modules/openfast-library/src/FAST_Library.f90 | Added error handling to FAST_CFD_WriteOutput |
| modules/nwtc-library/tests/NWTC_Library_test_tools.F90 | Changed stdout to use CU constant directly |
| modules/nwtc-library/src/VTK.f90 | Fixed argument order in ReadVTK_SP_info |
| modules/nwtc-library/src/Sys*.f90 | Changed CU from PARAMETER to PUBLIC variable and added SetConsoleUnit subroutine |
| modules/nwtc-library/src/NetLib/slatec/NWTC_SLATEC.f90 | Fixed intent declarations and comment |
| modules/nwtc-library/src/ModMesh.f90 | Changed DCM_logMap to EulerExtract |
| modules/nwtc-library/src/GridInterp.txt | New registry file for grid interpolation |
| modules/nwtc-library/CMakeLists.txt | Added GridInterp source files |
| modules/moordyn/src/MoorDyn_Point.f90 | Added error handling to Point_AddLine |
| modules/moordyn/src/MoorDyn_Misc.f90 | Fixed wave direction usage and improved code clarity |
| modules/moordyn/src/MoorDyn_Line.f90 | Improved warning messages and error handling |
| modules/moordyn/src/MoorDyn_Body.f90 | Added error handling to Body_AddPoint and Body_AddRod |
| modules/moordyn/README.md | Updated documentation link |
| modules/moordyn/CMakeLists.txt | Restructured c-binding library build |
| modules/map/src/MAP_Types.f90 | Removed C_obj packing checks |
| modules/inflowwind/src/IfW_FlowField.f90 | Improved out-of-bounds error messages |
| modules/hydrodyn/src/WAMIT*.f90 | Replaced SeaSt_WaveField types with GridInterp types |
| modules/hydrodyn/src/WAMIT*.txt | Updated to use GridInterp types |
| modules/hydrodyn/src/SS_Excitation*.f90 | Replaced SeaSt_WaveField types with GridInterp types |
| modules/hydrodyn/src/Morison_Output.f90 | Added flipped member handling |
| modules/hydrodyn/src/Morison.txt | Added rectangular member drag parameters |
| modules/hydrodyn/src/HydroDyn_C_Binding.f90 | Improved node checking and added documentation |
| modules/hydrodyn/src/HydroDyn.txt | Fixed formatting |
| modules/extloads/src/ExtLoadsDX_Types.f90 | Removed C_obj packing checks |
| modules/externalinflow/src/ExternalInflow_Types.f90 | Removed C_obj packing checks |
| modules/elastodyn/src/ElastoDyn_Registry.txt | Added HubIner_Teeter and tower concentrated mass parameters |
| modules/awae/src/AWAE_Registry.txt | Added planeDomainExit and valid plane flags |
| modules/aerodyn/src/AirfoilInfo.f90 | Changed function call to subroutine call |
| modules/aerodyn/src/AeroDyn_Types.f90 | Removed AA continuous and constraint states |
| modules/aerodyn/src/AeroDyn_Registry.txt | Removed AA state types |
| modules/aerodyn/src/AeroDyn_Inflow*.f90 | Added external InflowWind support |
| modules/aerodyn/src/AeroDyn_Driver_Subs.f90 | Improved variable naming and MHK handling |
| modules/aerodyn/src/AeroDyn_AllBldNdOuts_IO.f90 | Fixed output indexing |
| modules/aerodyn/src/AeroAcoustics_TNO.f90 | Added PRIVATE scope and improved variable naming |
| modules/aerodyn/CMakeLists.txt | Restructured library organization and added c-binding static library |
| glue-codes/simulink/CMakeLists.txt | Added aeroacousticslib dependency |
| glue-codes/python/pyproject.toml | Updated dependencies and Python version support |
| glue-codes/python/pyOpenFAST/*.py | Updated to use interface_abc base class |
| glue-codes/python/examples/*.py | Updated examples |
| glue-codes/openfast/CMakeLists.txt | Removed trailing blank lines |
| glue-codes/labview/* | New wavetank testing library files |
| glue-codes/fast-farm/src/*.f90 | Improved WAT initialization and summary output |
| docs/* | Documentation updates for copyright, installation, and module usage |
| CMakeLists.txt | Added MKL threading configuration |
| .github/workflows/*.yml | Updated Intel compiler installation and test artifacts |
| README.rst | Updated organization references |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Feature or improvement description
Pull request to merge
devintomainand create a tagged release for v4.2.0See the milestone and project pages for additional information
Test results, if applicable
See GitHub Actions
Release checklist:
openfast_iopackage)pyOpenFASTpackage for testing)AeroDisk_Driver_x64.exeAeroDyn_Driver_x64.exeAeroDyn_Driver_x64_OpenMP.exeAeroDyn_Inflow_c_binding_x64.dllAeroDyn_Inflow_c_binding_x64_OpenMP.dllBeamDyn_Driver_x64.exeDISCON.dll (x64)DISCON_ITIBarge.dll (x64)DISCON_OC3Hywind.dll (x64)FAST.Farm_x64.exeFAST.Farm_x64_OMP.exeFAST_SFunc.mexw64HydroDynDriver_x64.exeHydroDyn_C_Binding_x64.dllIinflowWind_c_binding_x64.dllInflowWind_Driver_x64.exeInflowWind_Driver_x64_OpenMP.exeMoorDyn_Driver_x64.exeMoorDyn_c_binding_x64.dllOpenFAST-Simulink_x64.dllopenfast_x64.exeSeaStateDriver_x64.exeSeaState_c_binding_x64.dllSimpleElastoDyn_x64.exeSubDyn_x64.exeTurbsim_x64.exeUnsteadyAero_x64.exeRelease Overview
Contribution Acknowledgements
Statistics (since X.Y.Z)
Changelog (from X.Y.Z)
#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)
#3145 WD: Ct_avg was not set when polar wake used giving RtCtAvgT (@andrew-platt)
Issue #2947 Reenable use of MAP when using Checkpoint files. (@deslaughter)
Issue #2979 Docs: remove references to pfunit (@andrew-platt)
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)
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)
#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)
Input file changes
[TBD] -- there are changes, but not listed in the changelog for some reason. Will add shortly
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:
InitNodePositionsinput to HydroDyn_c-binding library interface does not currently work with any non-zeroxorycoordinates (non-zerozis ok)