Skip to content
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

Release 3.5.3 #2121

Merged
merged 219 commits into from
Apr 11, 2024
Merged

Release 3.5.3 #2121

merged 219 commits into from
Apr 11, 2024

Conversation

andrew-platt
Copy link
Collaborator

@andrew-platt andrew-platt commented Mar 26, 2024

Feature or improvement description
Pull request to merge rc-3.5.3 into main and create a tagged release for v3.5.3.

See the milestone and project pages for additional information

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

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
  • Verify readthedocs builds correctly
  • Create a tag in OpenFAST
  • Create a merge commit in r-test and add a corresponding annotated tag
  • Compile executables for Windows builds
    • 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)
    • DISCON_SC.dll (x64)
    • FAST.Farm_x64.exe
    • FAST.Farm_x64_OMP.exe
    • FAST_SFunc.mexw64
    • HydroDynDriver_x64.exe
    • HydroDyn_C_Binding_x64.dll
    • IfW_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

Changelog

Overview

This release includes a long awaited set of bug fixes for linearization with BeamDyn. Anyone needing to linearize with BeamDyn should not use any version of OpenFAST prior to this release.

Other notable improvements include corrections to turbine indexing when coupled to external codes such as AMR-Wind, new linearization regression tests, and new docker images (thanks to first time contributor @cortadocodes at the @octue organization).

General

Build systems

#2116 VSbuild: always build Registry as release x64 (@andrew-platt)
#2120 #2125 CMake: openmp optional for FF and CPP if not explicitly requested (@andrew-platt and @deslaughter)
#2128 VSbuild: set VS version to VS 2017 (@andrew-platt)
#2138 Remove linking of implicit Fortran libraries. (@jrood-nrel)

Docker builds

#2124 Update dockerfile and facilitate nrel/openfast Docker Hub registry, with documentation (@cortadocodes, first time contributor 🎉)
#2139 Add final dockerfile updates (@cortadocodes)
#2141 GH actions to push docker image to Github container registry (@mayankchetan, first time contributor 🎉)

GH actions

#2041 Upgrade to setup-python@v4 and cache@v4 for GH actions (@andrew-platt)
#2129 Fix cache failure in Github Actions caused by setup-python (@deslaughter)

Documentation

#2130 Fix cache failure in Github Actions caused by setup-python (@andrew-platt)
#2144 Edit to readthedocs.io -- Adding Internal Reference Hyperlink for appendixD.rst (@reilandsberger, first time contributor 🎉)
#2145 Docs/update for 3.5.3 release (@andrew-platt)

Solvers

OpenFAST

#2060 Fix BD + AD linearization indexing (negative damping results) (@deslaugher and @andrew-platt)

Module changes

Multiple

#2118 Fix use of uninitialized variables in FAST.Farm and increase stack size in Visual Studio (@deslaughter and @andrew-platt)

BeamDyn

#2063 Fix bug in BD linearization resulting from reference rotation change (@deslaughter)
#2085 Bug: BeamDyn Initial Strain and Linearization (@deslaughter)

MoorDyn

#2049 Backport of bathymetry bugfixes in #2013 and #2016 (@RyanDavies19)

OpenFAST library

#2097 Consistent use of turbine indexing when coupled to c/c++ (@andrew-platt and @deslaughter)

ServoDyn

#2079 Handling of Paths for SrvD UserSubs Input Files (@rdamiani)
#2134 Bugfix seg fault if blade StC used while writing summary file (@andrew-platt)

TurbSim

#2102 TurbSim: increase filename to 1024 characters (@andrew-platt)

Regression tests

#2038 Add linearization regression tests (@andrew-platt)
#2055 Lin tests: increase out precision, error printing full filename, add SD linearization test (@andrew-platt)

Input file changes

No input files change with this release, as this only includes minor bugfixes.

Full list of changes: https://openfast.readthedocs.io/en/main/source/user/api_change.html

Full input file sets: https://github.com/OpenFAST/r-test/tree/v3.5.3 (example input files from the regression testing)

GH actions

#2041 Upgrade to setup-python@v4 and cache@v4 for GH actions (@andrew-platt)
#2129 Fix cache failure in Github Actions caused by setup-python (@deslaughter)

Documentation

#2130 Fix cache failure in Github Actions caused by setup-python (@andrew-platt)

Solvers

OpenFAST

#2060 Fix BD + AD linearization indexing (negative damping results) (@deslaugher and @andrew-platt)

Module changes

Multiple

#2118 Fix use of uninitialized variables in FAST.Farm and increase stack size in Visual Studio (@deslaughter and @andrew-platt)

BeamDyn

#2063 Fix bug in BD linearization resulting from reference rotation change (@deslaughter)
#2085 Bug: BeamDyn Initial Strain and Linearization (@deslaughter)

MoorDyn

#2049 Backport of bathymetry bugfixes in #2013 and #2016 (@RyanDavies19)

OpenFAST library

#2097 Consistent use of turbine indexing when coupled to c/c++ (@andrew-platt and @deslaughter)

ServoDyn

#2079 Handling of Paths for SrvD UserSubs Input Files (@rdamiani)
#2134 Bugfix seg fault if blade StC used while writing summary file (@andrew-platt)

TurbSim

#2102 TurbSim: increase filename to 1024 characters (@andrew-platt)

Regression tests

#2038 Add linearization regression tests (@andrew-platt)
#2055 Lin tests: increase out precision, error printing full filename, add SD linearization test (@andrew-platt)

Input file changes

No input files change with this release, as this only includes minor bugfixes.

Full list of changes: https://openfast.readthedocs.io/en/main/source/user/api_change.html

Full input file sets: https://github.com/OpenFAST/r-test/tree/v3.5.3 (example input files from the regression testing)

andrew-platt and others added 30 commits February 14, 2024 17:08
- 5MW_Land_BD_Linear_Aero: BD + AD15 (based on 5MW_Land_BD_Linear, but with aero)
- 5MW_Land_Linear_Aero: ED + AD15 (based on 5MW_Land_BD_Linear_Aero, but with ED)
- 5MW_OC4Semi_MD_Linear: MD equivalent of 5MW_OC4Semi_Linear
Upgrade to setup-python@v4 and cache@v4 for GH actions
Specify using np.float32 where possible in reading the linearization file. Also use np.float64 instead of float for matrices. Read matrices with genfromtxt instead of line by line
Previously the number of parallel threads in CTest was set via the -j flag. This changes it to use an environment variable set at the top of the file. The number of parallel tests was reduced from 4 to 2 as the linearization tests were failing from lack of memory. This may need to be adjusted.
…sion tests.

The previous method looped over each element and checked to see if it was within tolerance of the reference. This does the compare for the full matrices and then iterates over the element indices which were not within tolerance. This should significantly reduce the time to do the comparison for large matrices.

Also prints out the row/column variables which correspond to that element.
This will prevent warnings about node 16 deprecation
…SS_Rdtn%numStates

This also moves to a simpler scheme that just checks if the perturbation index 'n' is equal to the current value index 'k'
The motions in dUdy from BD were starting at the incorrect index.  Instead of starting at the motion, the index started at the root load output.  This resulted in a shift of all the dUdy terms coupling y_BD motion to u_AD blade motion.

This error has existed since at least commit 315bb29 on April 13, 2018

Co-authored-by: Derek Slaughter <deslaughter@gmail.com>
Lin tests: increase out precision, error printing full filename, add SD linearization test
…h documentation)

This results in some differences in the dUdy, A, and C matrices, but basically the same frequencies

Co-authored-by: Derek Slaughter <deslaughter@gmail.com>
Fix BD + AD linearization indexing (negative damping results)
When the change in reference rotation was implemented in v3.5.0, it effectively changed the states to be in the rotating frame. The existing method for putting the state Jacobians into the rotating frame involved calculating the difference in rotation between the root mesh reference orientation and the root mesh current orientation. Originally, the reference orientation always aligned with the blade root reference orientation inside BeamDyn. However, this is not a valid assumption when ChangeRefFrame = .true. as the blade root reference is updated by UpdateStates at every step.

This commit changes two things: first, if ChangeRefFrame is true, then p%RotStates is also set to true because the states are in the rotating frame; second, the Jacobian is now rotated by the difference between the root mesh current orientation and BeamDyn's root reference orientation. These orientations will be the same after UpdateStates, but the correction is still applied in case the Jacobian routines are called with a different root mesh orientation.
Fix bug in BD linearization resulting from reference rotation change
@andrew-platt andrew-platt merged commit 6a7a543 into main Apr 11, 2024
39 checks passed
@andrew-platt andrew-platt deleted the rc-3.5.3 branch April 11, 2024 21:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment