Skip to content

Conversation

@andrew-platt
Copy link
Collaborator

Feature or improvement description
Pull request to merge dev into main and create a tagged release for v4.2.0

See the milestone and project pages for additional information

https://github.com/OpenFAST/openfast/milestone/23

Test results, if applicable
See GitHub Actions

Release checklist:

  • Update the documentation version in docs/conf.py
  • Update the versions in docs/source/user/api_change.rst
  • Update version info in openfast_io/pyproject.toml (openfast_io package)
  • Update version info in glue-codes/python/pyproject.toml (pyOpenFAST package for testing)
  • Verify readthedocs builds correctly
  • Create an annotated tag in OpenFAST during merge (mark as most recent if necessary)
  • Create a merge commit in r-test and add a corresponding annotated tag
  • Upload Docker image
  • Compile executables for Windows builds
    • AeroDisk_Driver_x64.exe
    • AeroDyn_Driver_x64.exe
    • AeroDyn_Driver_x64_OpenMP.exe
    • AeroDyn_Inflow_c_binding_x64.dll
    • AeroDyn_Inflow_c_binding_x64_OpenMP.dll
    • BeamDyn_Driver_x64.exe
    • DISCON.dll (x64)
    • DISCON_ITIBarge.dll (x64)
    • DISCON_OC3Hywind.dll (x64)
    • FAST.Farm_x64.exe
    • FAST.Farm_x64_OMP.exe
    • FAST_SFunc.mexw64
    • HydroDynDriver_x64.exe
    • HydroDyn_C_Binding_x64.dll
    • IinflowWind_c_binding_x64.dll
    • InflowWind_Driver_x64.exe
    • InflowWind_Driver_x64_OpenMP.exe
    • MoorDyn_Driver_x64.exe
    • MoorDyn_c_binding_x64.dll
    • OpenFAST-Simulink_x64.dll
    • openfast_x64.exe
    • SeaStateDriver_x64.exe
    • SeaState_c_binding_x64.dll
    • SimpleElastoDyn_x64.exe
    • SubDyn_x64.exe
    • Turbsim_x64.exe
    • UnsteadyAero_x64.exe

Release 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:

  • 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.

andrew-platt and others added 30 commits September 4, 2025 16:51
This was leftover from when `WrFileNR` was changed to WrScr in commit 6361417
The Print_FileInfo_Struct from the NWTC_IO needs to access the CU variable
to use, add "ISO_C_BINDING" by itself on a line someplace in the registry text file
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
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)
andrew-platt and others added 27 commits January 16, 2026 11:40
NWTC Library: update error message with IOSTAT return value
- make arrays allocated to size 2  be fixed-size arrays instead of allocatable
- fix comments
- cleanup multiple IF statements that could be a single IF/ELSEIF/ELSE statement
- removed a few unused parameters and states
- AFInfo parameters now passed separately in Init routine and not used afterwards
- removed continuous and constraint states to match call to AA_UpdateStates, which had already removed those variables
- added check that AD_Bl_Prctge is between 0-100%
- allow `startnode` to be 1 if there aren't 2 blade nodes (required some changes in calculating `elementspan` for first node
- pre-calculate element span (stored as a parameter instead of calculated inside DO loop each step
- pre-calculate indices for TICalcMethod = 2 discrete state filter
- fix bug in TICalcMethod state initialization (AllRegCounter)
- fix bug in TICalcMethod TIVx calculation (was computing standard deviation instead of turbulence intensity)
[Bug Fix] Fix the element size calculation in AeroAcoustics module
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.
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
@andrew-platt andrew-platt self-assigned this Jan 23, 2026
@andrew-platt andrew-platt marked this pull request as draft January 23, 2026 00:43
@andrew-platt
Copy link
Collaborator Author

andrew-platt commented Jan 23, 2026

Update the following before merging this:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants