Skip to content

Commit b48e032

Browse files
authored
Merge pull request #2572 from OpenFAST/rc-3.5.5
Release 3.5.5
2 parents 6a63db7 + 0b4a550 commit b48e032

40 files changed

+489
-244
lines changed

.github/workflows/automated-dev-tests.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ jobs:
198198
-DVARIABLE_TRACKING=OFF \
199199
-DBUILD_FASTFARM:BOOL=ON \
200200
-DBUILD_OPENFAST_CPP_API:BOOL=ON \
201+
-DBUILD_OPENFAST_LIB_DRIVER:BOOL=ON \
201202
-DBUILD_OPENFAST_CPP_DRIVER:BOOL=ON \
202203
-DBUILD_SHARED_LIBS:BOOL=OFF \
203204
-DBUILD_TESTING:BOOL=ON \
@@ -242,7 +243,7 @@ jobs:
242243
- name: Build OpenFAST C-Interfaces
243244
working-directory: ${{runner.workspace}}/openfast/build
244245
run: |
245-
cmake --build . --target openfastlib openfast_cpp_driver openfastcpp aerodyn_inflow_c_binding moordyn_c_binding ifw_c_binding hydrodyn_c_binding regression_test_controllers
246+
cmake --build . --target openfastlib openfast_lib_driver openfastcpp aerodyn_inflow_c_binding moordyn_c_binding ifw_c_binding hydrodyn_c_binding regression_test_controllers
246247
- name: Cache the workspace
247248
uses: actions/cache@v4
248249
with:

.github/workflows/build-docker-image-manual.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ jobs:
2020
timeout-minutes: 300
2121
env:
2222
DOCKERFILE_PATH: share/docker/Dockerfile
23-
DOCKERFILE_PERMALINK: https://raw.githubusercontent.com/OpenFAST/openfast/main/share/docker/Dockerfile
23+
DOCKERFILE_PERMALINK: https://raw.githubusercontent.com/openfast/openfast/main/share/docker/Dockerfile
2424
DOCKERHUB_REPOSITORY: nrel/openfast
25-
GH_REGISTRY: ghcr.io/OpenFAST/openfast
25+
GH_REGISTRY: ghcr.io/openfast/openfast
2626
permissions:
2727
contents: read
2828
packages: write

.github/workflows/deploy.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
env:
4242
DOCKERFILE_PATH: share/docker/Dockerfile
4343
DOCKERHUB_REPOSITORY: nrel/openfast
44-
GH_REGISTRY: ghcr.io/OpenFAST/openfast
44+
GH_REGISTRY: ghcr.io/openfast/openfast
4545
permissions:
4646
contents: read
4747
packages: write
@@ -68,7 +68,11 @@ jobs:
6868

6969
- name: Extract tag from release candidate branch name
7070
id: extract-tag
71-
run: echo "openfast-tag=$(expr substr "${{ github.head_ref }}" 4 100)" >> $GITHUB_OUTPUT
71+
run: |
72+
TAG="${{ github.event.release.tag_name }}"
73+
CLEAN_TAG="${TAG#v}"
74+
echo "openfast-tag=$CLEAN_TAG" >> $GITHUB_OUTPUT
75+
echo "Extracted tag $CLEAN_TAG"
7276
7377
- name: Build and push to registry
7478
uses: docker/build-push-action@v5
@@ -77,7 +81,7 @@ jobs:
7781
file: ${{ env.DOCKERFILE_PATH }}
7882
platforms: linux/amd64,linux/aarch64
7983
tags: |
80-
${{ env.GH_REGISTRY }}:${{ steps.extract-tag.outputs.openfast-tag }},${{ env.DOCKERHUB_REPOSITORY }}:latest
84+
${{ env.GH_REGISTRY }}:${{ steps.extract-tag.outputs.openfast-tag }},${{ env.GH_REGISTRY }}:latest
8185
# ${{ env.DOCKERHUB_REPOSITORY }}:${{ steps.extract-tag.outputs.openfast-tag }},${{ env.DOCKERHUB_REPOSITORY }}:latest
8286
push: true
8387
cache-from: type=gha

CMakeLists.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ option(FPE_TRAP_ENABLED "Enable FPE trap in compiler options" off)
4444
option(ORCA_DLL_LOAD "Enable OrcaFlex Library Load" on)
4545
option(BUILD_FASTFARM "Enable building FAST.Farm" off)
4646
option(BUILD_OPENFAST_CPP_API "Enable building OpenFAST - C++ API" off)
47-
option(BUILD_OPENFAST_CPP_DRIVER "Enable building OpenFAST C++ driver using C++ API" off)
47+
option(BUILD_OPENFAST_CPP_DRIVER "Enable building OpenFAST C++ driver using C++ CFD API" off)
48+
option(BUILD_OPENFAST_LIB_DRIVER "Enable building OpenFAST driver using C++ Library API" off)
4849
option(BUILD_OPENFAST_SIMULINK_API "Enable building OpenFAST for use with Simulink" off)
4950
option(OPENMP "Enable OpenMP support" off)
5051
option(USE_LOCAL_STATIC_LAPACK "Enable downloading and building static LAPACK and BLAS libs" off)
@@ -232,8 +233,8 @@ endforeach(IDIR IN ITEMS ${OPENFAST_MODULES})
232233
add_subdirectory(glue-codes)
233234

234235
# Install fortran .mod files also to installation directory
235-
install(DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/
236-
DESTINATION ${CMAKE_INSTALL_PREFIX}/include/openfast/
236+
install(DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}
237+
DESTINATION include/openfast/
237238
FILES_MATCHING PATTERN "*.mod"
238239
)
239240

docs/changelogs/v3.5.5.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
**Feature or improvement description**
2+
Pull request to merge `rc-3.5.5` into `main` and create a tagged release for v3.5.5.
3+
4+
See the milestone and project pages for additional information
5+
6+
https://github.com/OpenFAST/openfast/milestone/15
7+
8+
Test results, if applicable
9+
See GitHub Actions
10+
11+
### Release checklist:
12+
- [ ] Update the documentation version in docs/conf.py
13+
- [ ] Update the versions in docs/source/user/api_change.rst
14+
- [ ] Verify readthedocs builds correctly
15+
- [ ] Create a tag in OpenFAST
16+
- [ ] Create a merge commit in r-test and add a corresponding annotated tag
17+
- [ ] Compile executables for Windows builds
18+
- [ ] AeroDyn_Driver_x64.exe
19+
- [ ] AeroDyn_Driver_x64_OpenMP.exe
20+
- [ ] AeroDyn_Inflow_C_Binding_x64.dll
21+
- [ ] AeroDyn_Inflow_C_Binding_x64_OpenMP.dll
22+
- [ ] BeamDyn_Driver_x64.exe
23+
- [ ] DISCON.dll (x64)
24+
- [ ] DISCON_ITIBarge.dll (x64)
25+
- [ ] DISCON_OC3Hywind.dll (x64)
26+
- [ ] DISCON_SC.dll (x64)
27+
- [ ] FAST.Farm_x64.exe
28+
- [ ] FAST.Farm_x64_OMP.exe
29+
- [ ] FAST_SFunc.mexw64
30+
- [ ] HydroDynDriver_x64.exe
31+
- [ ] HydroDyn_C_Binding_x64.dll
32+
- [ ] IfW_C_Binding_x64.dll
33+
- [ ] InflowWind_Driver_x64.exe
34+
- [ ] InflowWind_Driver_x64_OpenMP.exe
35+
- [ ] MoorDyn_Driver_x64.exe
36+
- [ ] MoorDyn_C_Binding_x64.dll
37+
- [ ] OpenFAST-Simulink_x64.dll
38+
- [ ] openfast_x64.exe
39+
- [ ] Turbsim_x64.exe
40+
41+
# Changelog
42+
43+
## Overview
44+
45+
This release includes multiple small bug-fixes for compilation with CMake, compilation with the IFX compilers, file opening issues when OpenMP is used, and a couple of infrequent segmentation faults from improper usage. One minor feature improvement is the increase in the number of output planes available in _FAST.Farm_ from 99 to 999.
46+
47+
We recommend all users currently using any 3.5.x version to update to this version. There are no input files changes or API changes for calling from other codes since version 3.5.0.
48+
49+
50+
51+
## General
52+
53+
### Build systems
54+
55+
#2497 `CMAKE_INSTALL_PREFIX` was incorrectly being prepended to the install direcotry (@deslaughter) Derek Slaughter
56+
57+
#2564 Create `BUILD_OPENFAST_LIB_DRIVER` flag for the OpenFAST C++ Library Interface (not CFD) (@deslaughter)
58+
59+
60+
### Docker
61+
62+
#2498 Docker: typo was preventing docker build upload to GH (@andrew-platt)
63+
64+
65+
66+
## Solvers
67+
68+
### FAST.Farm
69+
70+
#2536 FAST.Farm: increase number of output planes to 999 (@andrew-platt)
71+
72+
#2554 Add `!$OMP critical` directives around some `GetNewUnit/Open*File` to reduce probability of file unit conflicts (@andrew-platt)
73+
74+
#2569 Disable LiDAR in IfW at FAST.Farm level (@andrew-platt)
75+
76+
77+
## Module changes
78+
79+
### AeroDyn
80+
81+
#2501 Remove `$OMP` directives from `AeroDyn_Inflow` due to Intel compiler bug (@deslaughter)
82+
83+
#2516 AD bugfix: Segmentation fault with ifx compiler (@andrew-platt)
84+
85+
86+
### InflowWind
87+
88+
#2518, #2530 ADI bugfix: BoxExceed was not enabled for OLAF with ADI (@andrew-platt)
89+
90+
#2532 bugfix: IfW rotor points for disk average incorrect (@andrew-platt)
91+
92+
93+
### NWTC-Library
94+
95+
#2558 Allow ParseVar to parse file paths containing spaces. (@deslaughter)
96+
97+
98+
99+
100+
## Input file changes
101+
102+
No input files change with this release as this only includes minor bugfixes (input files are identical across all 3.5.x releases).
103+
104+
Full list of changes: https://openfast.readthedocs.io/en/main/source/user/api_change.html
105+
106+
Full input file sets: https://github.com/OpenFAST/r-test/tree/v3.5.5 (example input files from the regression testing)
107+

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def runDoxygen(sourcfile, doxyfileIn, doxyfileOut):
130130
# The short X.Y version.
131131
version = u'3.5'
132132
# The full version, including alpha/beta/rc tags.
133-
release = u'v3.5.4'
133+
release = u'v3.5.5'
134134

135135
# The language for content autogenerated by Sphinx. Refer to documentation
136136
# for a list of supported languages.

docs/source/user/api_change.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ The changes are tabulated according to the module input file, line number, and f
99
The line number corresponds to the resulting line number after all changes are implemented.
1010
Thus, be sure to implement each in order so that subsequent line numbers are correct.
1111

12+
OpenFAST v3.5.4 to OpenFAST v3.5.5
13+
----------------------------------
14+
15+
No input file changes were made.
16+
17+
1218
OpenFAST v3.5.3 to OpenFAST v3.5.4
1319
----------------------------------
1420

glue-codes/fast-farm/src/FAST_Farm_Subs.f90

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ MODULE FAST_Farm_Subs
4444

4545

4646
integer, parameter :: maxOutputPoints = 9
47-
integer, parameter :: maxOutputPlanes = 99 ! Allow up to 99 outpt planes
47+
integer, parameter :: maxOutputPlanes = 999 ! Allow up to 999 outpt planes
4848

4949
CONTAINS
5050

@@ -1140,7 +1140,7 @@ SUBROUTINE Farm_ReadPrimaryFile( InputFile, p, WD_InitInp, AWAE_InitInp, SC_Init
11401140
end if
11411141

11421142
! NOutDisWindXY - Number of XY planes for output of disturbed wind data across the low-resolution domain to <OutFileRoot>.Low.DisXY.<n_out>.t<n/n_low-out>.vtk (-) [0 to 9]:
1143-
CALL ReadVar( UnIn, InputFile, AWAE_InitInp%NOutDisWindXY, "NOutDisWindXY", "Number of XY planes for output of disturbed wind data across the low-resolution domain to <OutFileRoot>.Low.DisXY.<n_out>.t<n/n_low-out>.vtk (-) [0 to 99]", ErrStat2, ErrMsg2, UnEc)
1143+
CALL ReadVar( UnIn, InputFile, AWAE_InitInp%NOutDisWindXY, "NOutDisWindXY", "Number of XY planes for output of disturbed wind data across the low-resolution domain to <OutFileRoot>.Low.DisXY.<n_out>.t<n/n_low-out>.vtk (-) [0 to 999]", ErrStat2, ErrMsg2, UnEc)
11441144
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
11451145
if ( ErrStat >= AbortErrLev ) then
11461146
call cleanup()
@@ -1163,7 +1163,7 @@ SUBROUTINE Farm_ReadPrimaryFile( InputFile, p, WD_InitInp, AWAE_InitInp, SC_Init
11631163
end if
11641164

11651165
! NOutDisWindYZ - Number of YZ planes for output of disturbed wind data across the low-resolution domain to <OutFileRoot>.Low.DisYZ.<n_out>.t<n/n_low-out>.vtk (-) [0 to 9]:
1166-
CALL ReadVar( UnIn, InputFile, AWAE_InitInp%NOutDisWindYZ, "NOutDisWindYZ", "Number of YZ planes for output of disturbed wind data across the low-resolution domain to <OutFileRoot>.Low.DisYZ.<n_out>.t<n/n_low-out>.vtk (-) [0 to 99]", ErrStat2, ErrMsg2, UnEc)
1166+
CALL ReadVar( UnIn, InputFile, AWAE_InitInp%NOutDisWindYZ, "NOutDisWindYZ", "Number of YZ planes for output of disturbed wind data across the low-resolution domain to <OutFileRoot>.Low.DisYZ.<n_out>.t<n/n_low-out>.vtk (-) [0 to 999]", ErrStat2, ErrMsg2, UnEc)
11671167
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
11681168
if ( ErrStat >= AbortErrLev ) then
11691169
call cleanup()
@@ -1186,7 +1186,7 @@ SUBROUTINE Farm_ReadPrimaryFile( InputFile, p, WD_InitInp, AWAE_InitInp, SC_Init
11861186
end if
11871187

11881188
! NOutDisWindXZ - Number of XZ planes for output of disturbed wind data across the low-resolution domain to <OutFileRoot>.Low/DisXZ.<n_out>.t<n/n_low-out>.vtk (-) [0 to 9]:
1189-
CALL ReadVar( UnIn, InputFile, AWAE_InitInp%NOutDisWindXZ, "NOutDisWindXZ", "Number of XZ planes for output of disturbed wind data across the low-resolution domain to <OutFileRoot>.Low/DisXZ.<n_out>.t<n/n_low-out>.vtk (-) [0 to 99]", ErrStat2, ErrMsg2, UnEc)
1189+
CALL ReadVar( UnIn, InputFile, AWAE_InitInp%NOutDisWindXZ, "NOutDisWindXZ", "Number of XZ planes for output of disturbed wind data across the low-resolution domain to <OutFileRoot>.Low/DisXZ.<n_out>.t<n/n_low-out>.vtk (-) [0 to 999]", ErrStat2, ErrMsg2, UnEc)
11901190
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
11911191
if ( ErrStat >= AbortErrLev ) then
11921192
call cleanup()
@@ -1546,9 +1546,9 @@ SUBROUTINE Farm_ValidateInput( p, WD_InitInp, AWAE_InitInp, SC_InitInp, ErrStat,
15461546
AWAE_InitInp%WrDisDT = p%DT_low * n_disDT_dt
15471547

15481548

1549-
if (AWAE_InitInp%NOutDisWindXY < 0 .or. AWAE_InitInp%NOutDisWindXY > maxOutputPlanes ) CALL SetErrStat( ErrID_Fatal, 'NOutDisWindXY must be in the range [0, 99].', ErrStat, ErrMsg, RoutineName )
1550-
if (AWAE_InitInp%NOutDisWindYZ < 0 .or. AWAE_InitInp%NOutDisWindYZ > maxOutputPlanes ) CALL SetErrStat( ErrID_Fatal, 'NOutDisWindYZ must be in the range [0, 99].', ErrStat, ErrMsg, RoutineName )
1551-
if (AWAE_InitInp%NOutDisWindXZ < 0 .or. AWAE_InitInp%NOutDisWindXZ > maxOutputPlanes ) CALL SetErrStat( ErrID_Fatal, 'NOutDisWindXZ must be in the range [0, 99].', ErrStat, ErrMsg, RoutineName )
1549+
if (AWAE_InitInp%NOutDisWindXY < 0 .or. AWAE_InitInp%NOutDisWindXY > maxOutputPlanes ) CALL SetErrStat( ErrID_Fatal, 'NOutDisWindXY must be in the range [0, 999].', ErrStat, ErrMsg, RoutineName )
1550+
if (AWAE_InitInp%NOutDisWindYZ < 0 .or. AWAE_InitInp%NOutDisWindYZ > maxOutputPlanes ) CALL SetErrStat( ErrID_Fatal, 'NOutDisWindYZ must be in the range [0, 999].', ErrStat, ErrMsg, RoutineName )
1551+
if (AWAE_InitInp%NOutDisWindXZ < 0 .or. AWAE_InitInp%NOutDisWindXZ > maxOutputPlanes ) CALL SetErrStat( ErrID_Fatal, 'NOutDisWindXZ must be in the range [0, 999].', ErrStat, ErrMsg, RoutineName )
15521552
if (p%NOutDist < 0 .or. p%NOutDist > maxOutputPoints ) then
15531553
CALL SetErrStat( ErrID_Fatal, 'NOutDist must be in the range [0, 9].', ErrStat, ErrMsg, RoutineName )
15541554
else

glue-codes/openfast/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ endif()
3333
install(TARGETS openfast
3434
RUNTIME DESTINATION bin)
3535

36-
if(BUILD_OPENFAST_CPP_DRIVER)
37-
add_executable(openfast_cpp_driver src/FAST_Prog.cpp src/FastLibAPI.cpp)
38-
target_link_libraries(openfast_cpp_driver openfastlib)
36+
if(BUILD_OPENFAST_LIB_DRIVER)
37+
add_executable(openfast_lib_driver src/FAST_Prog.cpp src/FastLibAPI.cpp)
38+
target_link_libraries(openfast_lib_driver openfastlib)
3939

40-
install(TARGETS openfast_cpp_driver
40+
install(TARGETS openfast_lib_driver
4141
RUNTIME DESTINATION bin)
4242
endif()
4343

0 commit comments

Comments
 (0)