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.5 #2572

Merged
merged 46 commits into from
Dec 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
bbded1b
CMAKE_INSTALL_PREFIX was incorrectly being prepended to the install d…
deslaughter Nov 4, 2024
309832a
Docker: typo was preventing docker build upload to GH
andrew-platt Nov 4, 2024
fdb0d23
Merge pull request #2497 from deslaughter/b/install_prefix_FTNMOD_DIR
deslaughter Nov 4, 2024
a6268d3
Remove OpenMP statements from AeroDyn_Inflow.f90 because it causes co…
deslaughter Nov 5, 2024
aa51340
Merge pull request #2501 from deslaughter/b/aerodyn_inflow_omp
andrew-platt Nov 5, 2024
ee1726c
change to tag tracking
mayankchetan Nov 6, 2024
71c9d79
Merge pull request #25 from mayankchetan/b/docker_build
andrew-platt Nov 7, 2024
3acba02
repository name must be lowercase
mayankchetan Nov 8, 2024
b9c7df1
Merge pull request #26 from mayankchetan/b/docker_build
andrew-platt Nov 8, 2024
e7d378b
Merge pull request #2498 from andrew-platt/b/docker_build
andrew-platt Nov 8, 2024
15bafa4
AD bugfix: Segmentation fault with ifx
andrew-platt Nov 14, 2024
fde83ba
Merge pull request #2516 from andrew-platt/b/AD_dvr_segFault
andrew-platt Nov 15, 2024
d4ea5ff
ADI bugfix: BoxExceed was not enabled for OLAF with ADI
andrew-platt Nov 15, 2024
9344e3d
Merge pull request #2518 from andrew-platt/b/ADI_BoxExceed
andrew-platt Nov 15, 2024
901e3b3
Incorrect initial value for `BoxExceedAllowIdx`
andrew-platt Nov 22, 2024
5bbddd9
Fix error in BoxExceedAllowIdx in glue code
andrew-platt Nov 22, 2024
d802f93
Merge pull request #2530 from andrew-platt/b/ADI_BoxExceed_2
andrew-platt Nov 23, 2024
239316f
bugfix: IfW rotor points for disk average incorrect
andrew-platt Nov 23, 2024
ce8351e
IfW: use single point for disk average if no radius given
andrew-platt Nov 25, 2024
28c15b0
Update AD14 cases using disk average velocity
andrew-platt Nov 25, 2024
0462307
Merge pull request #2532 from andrew-platt/b/GetSpatialAverage
andrew-platt Nov 25, 2024
84537f7
FF: increase number of output planes to 999
andrew-platt Nov 25, 2024
17ac3c7
AWAE: update comment
andrew-platt Nov 26, 2024
ada86f4
Add BUILD_OPENFAST_CFD_DRIVER to build C++ driver for CFD interface (…
deslaughter Nov 26, 2024
dbfff8c
Use CPP driver for CFD and LIB for the openfastlib C++ interface
deslaughter Nov 26, 2024
9df3363
Missed an instance of BUILD_OPENFAST_LIB_DRIVER
deslaughter Nov 26, 2024
a5caa47
Merge pull request #2536 from andrew-platt/f/FF_OutPlanes999
andrew-platt Nov 26, 2024
4943c19
Update r-test pointer
andrew-platt Nov 27, 2024
61549fc
Add `!$OMP critical` directives around some GetNewUnit/Open*File calls
andrew-platt Dec 10, 2024
6bacfca
Modify NWTC_IO's GetWords function to handle quoted strings properly
deslaughter Dec 11, 2024
4c6aad1
Use NumWords for length of array
deslaughter Dec 11, 2024
7ffff7e
GetWords: always break on ',' and ';'
deslaughter Dec 12, 2024
892756d
Add IgnoreQuotes arg to GetWords and add IsPath arg to ParseChVar
deslaughter Dec 12, 2024
f77571d
Add IsPath=.true. where ParseVar is used to parse a file path
deslaughter Dec 12, 2024
fce5c22
Allow , and ; in quoted words
deslaughter Dec 12, 2024
fca18ee
Merge pull request #2558 from deslaughter/b/GetWords_quotes
andrew-platt Dec 12, 2024
a62d877
Use INTENT(IN) for IgnoreQuotes in GetWords (NWTC_IO)
deslaughter Dec 16, 2024
64e00f4
Merge pull request #2554 from andrew-platt/f/OMP_critical
andrew-platt Dec 16, 2024
f1e444b
Merge remote-tracking branch 'upstream/rc-3.5.5' into f/build_openfas…
deslaughter Dec 17, 2024
0e99c52
Change openfast_cpp_driver to openfast_lib_driver to better separate …
deslaughter Dec 17, 2024
5656574
Merge pull request #2564 from deslaughter/f/build_openfast_cfd_driver
andrew-platt Dec 18, 2024
8193c7a
Disable LiDAR in IfW at FAST.Farm level
andrew-platt Dec 18, 2024
5c30c42
Update release notes and changelog for 3.5.5
andrew-platt Dec 18, 2024
a8fe70e
IfW: change logic flag for LidarEnabled
andrew-platt Dec 19, 2024
ee85fef
Merge pull request #2569 from andrew-platt/b/Lidar_SegFault
andrew-platt Dec 19, 2024
0b4a550
Update v3.5.5.md with summary
andrew-platt Dec 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/automated-dev-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,7 @@ jobs:
-DVARIABLE_TRACKING=OFF \
-DBUILD_FASTFARM:BOOL=ON \
-DBUILD_OPENFAST_CPP_API:BOOL=ON \
-DBUILD_OPENFAST_LIB_DRIVER:BOOL=ON \
-DBUILD_OPENFAST_CPP_DRIVER:BOOL=ON \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DBUILD_TESTING:BOOL=ON \
Expand Down Expand Up @@ -242,7 +243,7 @@ jobs:
- name: Build OpenFAST C-Interfaces
working-directory: ${{runner.workspace}}/openfast/build
run: |
cmake --build . --target openfastlib openfast_cpp_driver openfastcpp aerodyn_inflow_c_binding moordyn_c_binding ifw_c_binding hydrodyn_c_binding regression_test_controllers
cmake --build . --target openfastlib openfast_lib_driver openfastcpp aerodyn_inflow_c_binding moordyn_c_binding ifw_c_binding hydrodyn_c_binding regression_test_controllers
- name: Cache the workspace
uses: actions/cache@v4
with:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-docker-image-manual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ jobs:
timeout-minutes: 300
env:
DOCKERFILE_PATH: share/docker/Dockerfile
DOCKERFILE_PERMALINK: https://raw.githubusercontent.com/OpenFAST/openfast/main/share/docker/Dockerfile
DOCKERFILE_PERMALINK: https://raw.githubusercontent.com/openfast/openfast/main/share/docker/Dockerfile
DOCKERHUB_REPOSITORY: nrel/openfast
GH_REGISTRY: ghcr.io/OpenFAST/openfast
GH_REGISTRY: ghcr.io/openfast/openfast
permissions:
contents: read
packages: write
Expand Down
10 changes: 7 additions & 3 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
env:
DOCKERFILE_PATH: share/docker/Dockerfile
DOCKERHUB_REPOSITORY: nrel/openfast
GH_REGISTRY: ghcr.io/OpenFAST/openfast
GH_REGISTRY: ghcr.io/openfast/openfast
permissions:
contents: read
packages: write
Expand All @@ -68,7 +68,11 @@ jobs:

- name: Extract tag from release candidate branch name
id: extract-tag
run: echo "openfast-tag=$(expr substr "${{ github.head_ref }}" 4 100)" >> $GITHUB_OUTPUT
run: |
TAG="${{ github.event.release.tag_name }}"
CLEAN_TAG="${TAG#v}"
echo "openfast-tag=$CLEAN_TAG" >> $GITHUB_OUTPUT
echo "Extracted tag $CLEAN_TAG"

- name: Build and push to registry
uses: docker/build-push-action@v5
Expand All @@ -77,7 +81,7 @@ jobs:
file: ${{ env.DOCKERFILE_PATH }}
platforms: linux/amd64,linux/aarch64
tags: |
${{ env.GH_REGISTRY }}:${{ steps.extract-tag.outputs.openfast-tag }},${{ env.DOCKERHUB_REPOSITORY }}:latest
${{ env.GH_REGISTRY }}:${{ steps.extract-tag.outputs.openfast-tag }},${{ env.GH_REGISTRY }}:latest
# ${{ env.DOCKERHUB_REPOSITORY }}:${{ steps.extract-tag.outputs.openfast-tag }},${{ env.DOCKERHUB_REPOSITORY }}:latest
push: true
cache-from: type=gha
Expand Down
7 changes: 4 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ option(FPE_TRAP_ENABLED "Enable FPE trap in compiler options" off)
option(ORCA_DLL_LOAD "Enable OrcaFlex Library Load" on)
option(BUILD_FASTFARM "Enable building FAST.Farm" off)
option(BUILD_OPENFAST_CPP_API "Enable building OpenFAST - C++ API" off)
option(BUILD_OPENFAST_CPP_DRIVER "Enable building OpenFAST C++ driver using C++ API" off)
option(BUILD_OPENFAST_CPP_DRIVER "Enable building OpenFAST C++ driver using C++ CFD API" off)
option(BUILD_OPENFAST_LIB_DRIVER "Enable building OpenFAST driver using C++ Library API" off)
option(BUILD_OPENFAST_SIMULINK_API "Enable building OpenFAST for use with Simulink" off)
option(OPENMP "Enable OpenMP support" off)
option(USE_LOCAL_STATIC_LAPACK "Enable downloading and building static LAPACK and BLAS libs" off)
Expand Down Expand Up @@ -232,8 +233,8 @@ endforeach(IDIR IN ITEMS ${OPENFAST_MODULES})
add_subdirectory(glue-codes)

# Install fortran .mod files also to installation directory
install(DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/
DESTINATION ${CMAKE_INSTALL_PREFIX}/include/openfast/
install(DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}
DESTINATION include/openfast/
FILES_MATCHING PATTERN "*.mod"
)

Expand Down
107 changes: 107 additions & 0 deletions docs/changelogs/v3.5.5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
**Feature or improvement description**
Pull request to merge `rc-3.5.5` into `main` and create a tagged release for v3.5.5.

See the milestone and project pages for additional information

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

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
- [ ] Turbsim_x64.exe

# Changelog

## Overview

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.

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.



## General

### Build systems

#2497 `CMAKE_INSTALL_PREFIX` was incorrectly being prepended to the install direcotry (@deslaughter) Derek Slaughter

#2564 Create `BUILD_OPENFAST_LIB_DRIVER` flag for the OpenFAST C++ Library Interface (not CFD) (@deslaughter)


### Docker

#2498 Docker: typo was preventing docker build upload to GH (@andrew-platt)



## Solvers

### FAST.Farm

#2536 FAST.Farm: increase number of output planes to 999 (@andrew-platt)

#2554 Add `!$OMP critical` directives around some `GetNewUnit/Open*File` to reduce probability of file unit conflicts (@andrew-platt)

#2569 Disable LiDAR in IfW at FAST.Farm level (@andrew-platt)


## Module changes

### AeroDyn

#2501 Remove `$OMP` directives from `AeroDyn_Inflow` due to Intel compiler bug (@deslaughter)

#2516 AD bugfix: Segmentation fault with ifx compiler (@andrew-platt)


### InflowWind

#2518, #2530 ADI bugfix: BoxExceed was not enabled for OLAF with ADI (@andrew-platt)

#2532 bugfix: IfW rotor points for disk average incorrect (@andrew-platt)


### NWTC-Library

#2558 Allow ParseVar to parse file paths containing spaces. (@deslaughter)




## Input file changes

No input files change with this release as this only includes minor bugfixes (input files are identical across all 3.5.x releases).

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.5 (example input files from the regression testing)

2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ def runDoxygen(sourcfile, doxyfileIn, doxyfileOut):
# The short X.Y version.
version = u'3.5'
# The full version, including alpha/beta/rc tags.
release = u'v3.5.4'
release = u'v3.5.5'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
6 changes: 6 additions & 0 deletions docs/source/user/api_change.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ The changes are tabulated according to the module input file, line number, and f
The line number corresponds to the resulting line number after all changes are implemented.
Thus, be sure to implement each in order so that subsequent line numbers are correct.

OpenFAST v3.5.4 to OpenFAST v3.5.5
----------------------------------

No input file changes were made.


OpenFAST v3.5.3 to OpenFAST v3.5.4
----------------------------------

Expand Down
14 changes: 7 additions & 7 deletions glue-codes/fast-farm/src/FAST_Farm_Subs.f90
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ MODULE FAST_Farm_Subs


integer, parameter :: maxOutputPoints = 9
integer, parameter :: maxOutputPlanes = 99 ! Allow up to 99 outpt planes
integer, parameter :: maxOutputPlanes = 999 ! Allow up to 999 outpt planes

CONTAINS

Expand Down Expand Up @@ -1140,7 +1140,7 @@ SUBROUTINE Farm_ReadPrimaryFile( InputFile, p, WD_InitInp, AWAE_InitInp, SC_Init
end if

! 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]:
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)
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)
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
if ( ErrStat >= AbortErrLev ) then
call cleanup()
Expand All @@ -1163,7 +1163,7 @@ SUBROUTINE Farm_ReadPrimaryFile( InputFile, p, WD_InitInp, AWAE_InitInp, SC_Init
end if

! 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]:
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)
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)
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
if ( ErrStat >= AbortErrLev ) then
call cleanup()
Expand All @@ -1186,7 +1186,7 @@ SUBROUTINE Farm_ReadPrimaryFile( InputFile, p, WD_InitInp, AWAE_InitInp, SC_Init
end if

! 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]:
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)
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)
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
if ( ErrStat >= AbortErrLev ) then
call cleanup()
Expand Down Expand Up @@ -1546,9 +1546,9 @@ SUBROUTINE Farm_ValidateInput( p, WD_InitInp, AWAE_InitInp, SC_InitInp, ErrStat,
AWAE_InitInp%WrDisDT = p%DT_low * n_disDT_dt


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 )
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 )
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 )
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 )
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 )
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 )
if (p%NOutDist < 0 .or. p%NOutDist > maxOutputPoints ) then
CALL SetErrStat( ErrID_Fatal, 'NOutDist must be in the range [0, 9].', ErrStat, ErrMsg, RoutineName )
else
Expand Down
8 changes: 4 additions & 4 deletions glue-codes/openfast/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ endif()
install(TARGETS openfast
RUNTIME DESTINATION bin)

if(BUILD_OPENFAST_CPP_DRIVER)
add_executable(openfast_cpp_driver src/FAST_Prog.cpp src/FastLibAPI.cpp)
target_link_libraries(openfast_cpp_driver openfastlib)
if(BUILD_OPENFAST_LIB_DRIVER)
add_executable(openfast_lib_driver src/FAST_Prog.cpp src/FastLibAPI.cpp)
target_link_libraries(openfast_lib_driver openfastlib)

install(TARGETS openfast_cpp_driver
install(TARGETS openfast_lib_driver
RUNTIME DESTINATION bin)
endif()

Expand Down
Loading
Loading