Skip to content

Commit 840be1f

Browse files
committed
Merge remote-tracking branch 'OpenFAST/main' into m/3.5.5_to_dev
2 parents 4377c13 + b48e032 commit 840be1f

37 files changed

+526
-291
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ jobs:
204204
-DVARIABLE_TRACKING=OFF \
205205
-DBUILD_FASTFARM:BOOL=ON \
206206
-DBUILD_OPENFAST_CPP_API:BOOL=ON \
207+
-DBUILD_OPENFAST_LIB_DRIVER:BOOL=ON \
207208
-DBUILD_OPENFAST_CPP_DRIVER:BOOL=ON \
208209
-DBUILD_SHARED_LIBS:BOOL=OFF \
209210
-DBUILD_TESTING:BOOL=ON \
@@ -248,7 +249,7 @@ jobs:
248249
- name: Build OpenFAST C-Interfaces
249250
working-directory: ${{runner.workspace}}/openfast/build
250251
run: |
251-
cmake --build . --target openfastlib openfast_cpp_driver openfastcpp aerodyn_inflow_c_binding moordyn_c_binding ifw_c_binding hydrodyn_c_binding regression_test_controllers
252+
cmake --build . --target openfastlib openfast_lib_driver openfastcpp aerodyn_inflow_c_binding moordyn_c_binding ifw_c_binding hydrodyn_c_binding regression_test_controllers
252253
- name: Cache the workspace
253254
uses: actions/cache@v4
254255
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)
@@ -231,8 +232,8 @@ endforeach(IDIR IN ITEMS ${OPENFAST_MODULES})
231232
add_subdirectory(glue-codes)
232233

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

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
@@ -138,7 +138,7 @@ def runDoxygen(sourcfile, doxyfileIn, doxyfileOut):
138138
# The short X.Y version.
139139
version = u'3.5'
140140
# The full version, including alpha/beta/rc tags.
141-
release = u'v3.5.4'
141+
release = u'v3.5.5'
142142

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

docs/source/user/api_change.rst

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Thus, be sure to implement each in order so that subsequent line numbers are cor
1111

1212

1313

14-
OpenFAST v3.5.4 to OpenFAST dev
14+
OpenFAST v3.5.5 to OpenFAST dev
1515
----------------------------------
1616

1717
The HydroDyn module was split into HydroDyn and SeaState. This results in a
@@ -105,6 +105,11 @@ Old inputs Corresponding new inputs
105105
=========================== =========================================================
106106

107107

108+
OpenFAST v3.5.4 to OpenFAST v3.5.5
109+
----------------------------------
110+
111+
No input file changes were made.
112+
108113

109114
OpenFAST v3.5.3 to OpenFAST v3.5.4
110115
----------------------------------

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module FAST_Farm_IO
1010
TYPE(ProgDesc), PARAMETER :: Farm_Ver = ProgDesc( 'FAST.Farm', '', '' ) !< module date/version information
1111

1212
integer, parameter :: maxOutputPoints = 9
13-
integer, parameter :: maxOutputPlanes = 99 ! Allow up to 99 outpt planes
13+
integer, parameter :: maxOutputPlanes = 999 ! Allow up to 99 outpt planes
1414

1515

1616
contains
@@ -871,17 +871,17 @@ SUBROUTINE Farm_ReadPrimaryFile( InputFile, p, WD_InitInp, AWAE_InitInp, SC_Init
871871
CALL ReadVar( UnIn, InputFile, AWAE_InitInp%WrDisWind, "WrDisWind", "Write disturbed wind data to <OutFileRoot>.Low.Dis.t<n/n_low-out>.vtk etc.? (flag)", ErrStat2, ErrMsg2, UnEc); if (Failed()) return
872872

873873
! XY planes
874-
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); if (Failed()) return
874+
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); if (Failed()) return
875875
call allocAry( AWAE_InitInp%OutDisWindZ, AWAE_InitInp%NOutDisWindXY, "OutDisWindZ", ErrStat2, ErrMsg2 ); if (Failed()) return
876876
CALL ReadAry( UnIn, InputFile, AWAE_InitInp%OutDisWindZ, AWAE_InitInp%NOutDisWindXY, "OutDisWindZ", "Z coordinates of XY planes for output of disturbed wind data across the low-resolution domain (m) [1 to NOutDisWindXY] [unused for NOutDisWindXY=0]", ErrStat2, ErrMsg2, UnEc); if (Failed()) return
877877

878878
! YZ planes
879-
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 9]", ErrStat2, ErrMsg2, UnEc); if (Failed()) return
879+
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); if (Failed()) return
880880
call allocAry( AWAE_InitInp%OutDisWindX, AWAE_InitInp%NOutDisWindYZ, "OutDisWindX", ErrStat2, ErrMsg2 ); if (Failed()) return
881881
CALL ReadAry( UnIn, InputFile, AWAE_InitInp%OutDisWindX, AWAE_InitInp%NOutDisWindYZ, "OutDisWindX", "X coordinates of YZ planes for output of disturbed wind data across the low-resolution domain (m) [1 to NOutDisWindYZ] [unused for NOutDisWindYZ=0]", ErrStat2, ErrMsg2, UnEc); if (Failed()) return
882882

883883
! XZ planes
884-
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 9]", ErrStat2, ErrMsg2, UnEc); if (Failed()) return
884+
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); if (Failed()) return
885885
call allocAry( AWAE_InitInp%OutDisWindY, AWAE_InitInp%NOutDisWindXZ, "OutDisWindY", ErrStat2, ErrMsg2 ); if (Failed()) return
886886
CALL ReadAry( UnIn, InputFile, AWAE_InitInp%OutDisWindY, AWAE_InitInp%NOutDisWindXZ, "OutDisWindY", "Y coordinates of XZ planes for output of disturbed wind data across the low-resolution domain (m) [1 to NOutDisWindXZ] [unused for NOutDisWindXZ=0]", ErrStat2, ErrMsg2, UnEc); if (Failed()) return
887887

@@ -1117,9 +1117,9 @@ SUBROUTINE Farm_ValidateInput( p, WD_InitInp, AWAE_InitInp, SC_InitInp, ErrStat,
11171117
AWAE_InitInp%WrDisDT = p%DT_low * n_disDT_dt
11181118

11191119

1120-
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 )
1121-
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 )
1122-
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 )
1120+
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 )
1121+
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 )
1122+
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 )
11231123
if (p%NOutDist < 0 .or. p%NOutDist > maxOutputPoints ) then
11241124
CALL SetErrStat( ErrID_Fatal, 'NOutDist must be in the range [0, 9].', ErrStat, ErrMsg, RoutineName )
11251125
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)