Skip to content

Commit 89358f1

Browse files
authored
Merge pull request #2622 from OpenFAST/rc-4.0.1
Release 4.0.1
2 parents da685d4 + afce8d1 commit 89358f1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+2265
-938
lines changed

docs/changelogs/ReleaseProcess.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# OpenFAST release process
2+
3+
## Prep
4+
### pull request
5+
1. Create release changelog.md
6+
2. Post PR with contents of the changelog/release notes
7+
3. Get reviews and address all issues
8+
9+
### PR branch updates
10+
1. checkout branch to merge in and verify builds on VS if any changes for VS or new files added
11+
2. Update the documentation version in docs/conf.py
12+
3. Update the versions in docs/source/user/api_change.rst
13+
4. Verify readthedocs builds correctly
14+
5. Update `openfast_io/pyproject.toml`
15+
16+
****
17+
18+
## Posting the release
19+
### r-test
20+
1. Merge and add annotated tag
21+
2. Update pointer on main OF repository (not always necessary)
22+
23+
### Main repository
24+
1. Merge PR
25+
2. Create release with new tag
26+
* Copy `Changelog` section down from the changlog.md file to release notes
27+
* add short intro section at top with 2 sentence synopsis (see prior release for this)
28+
* copy `Precompiled Windows Binaries` section from prior release, and update as needed into the release notes
29+
* check the `create discussion` box
30+
* Post
31+
3. delete `rc-` branch if merging from one
32+
33+
### Windows executables build and upload
34+
After posting and tagging release
35+
1. Pull main and tags
36+
* `git fetch --tags OpenFAST`
37+
* `git fetch OpenFAST main:main`
38+
* `git checkout main`
39+
2. Delete `vs-build` and checkout again
40+
* `rm -rf vs-build`
41+
* `git checkout vs-build`
42+
3. Set a couple of VS files to not track changes on files that VS wants to update Windows related stuff in
43+
```
44+
git update-index --assume-unchanged vs-build/MAPlib/MAP_dll.vcxproj vs-uild/Registry/FAST_Registry.vcxproj
45+
```
46+
47+
4. Compile executables for Windows builds
48+
* Run one of the executables and check the version info. Muck about with VS if there is an issue.
49+
* Also run `dumpbin.exe /dependents <exe>.exe` to check static linking
50+
* NOTE: build the simulink last -- it messes up some things otherwise
51+
- [ ] AeroDyn_Driver_x64.exe
52+
- [ ] AeroDyn_Driver_x64_OpenMP.exe
53+
- [ ] AeroDyn_Inflow_C_Binding_x64.dll
54+
- [ ] AeroDyn_Inflow_C_Binding_x64_OpenMP.dll
55+
- [ ] BeamDyn_Driver_x64.exe
56+
- [ ] DISCON.dll (x64)
57+
- [ ] DISCON_ITIBarge.dll (x64)
58+
- [ ] DISCON_OC3Hywind.dll (x64)
59+
- [ ] DISCON_SC.dll (x64)
60+
- [ ] FAST.Farm_x64.exe
61+
- [ ] FAST.Farm_x64_OMP.exe
62+
- [ ] FAST_SFunc.mexw64 -- build from MATLAB
63+
- [ ] HydroDynDriver_x64.exe
64+
- [ ] HydroDyn_C_Binding_x64.dll
65+
- [ ] IfW_C_Binding_x64.dll
66+
- [ ] InflowWind_Driver_x64.exe
67+
- [ ] InflowWind_Driver_x64_OpenMP.exe
68+
- [ ] MoorDyn_Driver_x64.exe
69+
- [ ] MoorDyn_C_Binding_x64.dll
70+
- [ ] OpenFAST-Simulink_x64.dll -- change `additional dependencies` in the `OpenFAST-Simulink` project in `FAST` to point to correct install of MATLAB
71+
- [ ] openfast_x64.exe
72+
- [ ] SubDyn_x64.exe
73+
- [ ] Turbsim_x64.exe
74+
75+
5. Upload all filesUnset the no tracking of files
76+
```
77+
git ls-files -v | grep "^[a-z]"
78+
git update-index --no-assume-unchanged <files-from-cmd-above>
79+
```
80+
## Post-release
81+
### Docker Image push to ghcr.io
82+
1. Build latest `OpenFAST/main` image locally.
83+
2. Push image to ghcr.io/openfast/openfast using tags `latest` and `<version>`
84+

docs/changelogs/v4.0.1.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
**Feature or improvement description**
2+
Pull request to merge `rc-4.0.1` into `main` and create a tagged release for v4.0.1
3+
4+
See the milestone and project pages for additional information
5+
6+
https://github.com/OpenFAST/openfast/milestone/16
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+
- [ ] `SubDyn_x64.exe`
40+
- [ ] `Turbsim_x64.exe`
41+
42+
# Changelog
43+
44+
## Overview
45+
46+
This release includes multiple small bug-fixes including compilation issues with Flang and Intel (IFX), improved diagnostics for the AeroDyn\_Inflow\_c-binding interface, user specified external loads and damping for MoorDyn, `Wind_IO` updates, a fix for a stack overflow with FAST.Farm built with Visual Studio on Windows, and other minor bugfixes.
47+
48+
49+
50+
## General
51+
52+
### Wind_IO
53+
54+
#2603 updates to handle writing OpenFAST models from weis and wind_io (mayankchetan)
55+
56+
57+
### Build systems
58+
59+
#2607 Windows VS build -- stack overflow with FAST.Farm (andrew-platt)
60+
61+
#2619 ROCM Flang doesn't compile NWTC_IO.f90 (andrew-platt)
62+
63+
#2621 Bugfix: Update `create_FAST_SFunc.m` for Windows, update docs on Simulink MEX building (andrew-platt)
64+
65+
66+
## Module changes
67+
68+
### AeroDyn
69+
70+
#2609 AD bugfix: aerodyn driver non-OLAF combined cases don't update wind (andrew-platt)
71+
72+
#2615 Improve diagnostics for ADI_c interface coupling (andrew-platt)
73+
74+
75+
### MoorDyn
76+
77+
#2597 MD: User-specified external forces and translational damping for MoorDyn point, rod, and body objects (luwang00)
78+
79+
80+
## Input file changes
81+
82+
No input file changes are required from 4.0.0. MoorDyn can contain an optional section for `External Loads`.
83+
84+
Full list of changes: https://openfast.readthedocs.io/en/main/source/user/api_change.html
85+
86+
Full input file sets: https://github.com/OpenFAST/r-test/tree/v4.0.1 (example input files from the regression testing)
87+

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'4.0'
140140
# The full version, including alpha/beta/rc tags.
141-
release = u'v4.0.0'
141+
release = u'v4.0.1'
142142

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

docs/source/install/index.rst

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -460,19 +460,26 @@ The CMake options specific to OpenFAST and their default settings are:
460460
BUILD_DOCUMENTATION - Build documentation (Default: OFF)
461461
BUILD_FASTFARM - Enable FAST.Farm capabilities (Default: OFF)
462462
BUILD_OPENFAST_CPP_API - Enable building OpenFAST - C++ API (Default: OFF)
463+
BUILD_OPENFAST_CPP_DRIVER - Enable building OpenFAST C++ driver using C++ CFD API (Default: OFF)
464+
BUILD_OPENFAST_LIB_DRIVER - Enable building OpenFAST driver using C++ Library API (Default: OFF)
463465
BUILD_OPENFAST_SIMULINK_API - Enable building OpenFAST for use with Simulink (Default: OFF)
464466
BUILD_SHARED_LIBS - Enable building shared libraries (Default: OFF)
465467
BUILD_TESTING - Build the testing tree (Default: OFF)
468+
BUILD_UNIT_TESTING - Enable unit testing (Default: ON)
466469
CMAKE_BUILD_TYPE - Choose the build type: Debug Release (Default: Release)
467470
CMAKE_Fortran_MODULE_DIRECTORY - Set the Fortran Modules directory
468471
CMAKE_INSTALL_PREFIX - Install path prefix, prepended onto install directories.
469-
CODECOV - Enable infrastructure for measuring code coverage (Default: OFF)
472+
CMAKE_MACOSX_RPATH - Use RPATH runtime linking (Default: ON)
473+
CODECOVERAGE - Enable infrastructure for measuring code coverage (Default: OFF)
470474
DOUBLE_PRECISION - Treat REAL as double precision (Default: ON)
471475
FPE_TRAP_ENABLED - Enable Floating Point Exception (FPE) trap in compiler options (Default: OFF)
472476
GENERATE_TYPES - Use the openfast-registry to autogenerate types modules (Default: OFF)
473477
OPENMP - Enable OpenMP support (Default: OFF)
474-
ORCA_DLL_LOAD - Enable OrcaFlex library load (Default: OFF)
478+
ORCA_DLL_LOAD - Enable OrcaFlex library load (Default: ON)
475479
USE_DLL_INTERFACE - Enable runtime loading of dynamic libraries (Default: ON)
480+
USE_LOCAL_STATIC_LAPACK - Enable downloading and building static LAPACK and BLAS libs (Default: OFF)
481+
VARIABLE_TRACKING - Enables variable tracking for better runtime debugging output. May increase compile time. Valid only for GNU. (Defualt: ON)
482+
476483

477484
Additional system-specific options may exist for a given system, but those
478485
should not impact the OpenFAST configuration. As mentioned above, the
@@ -754,6 +761,27 @@ through the Intel oneAPI distributions.
754761

755762
.. _installation_appendix:
756763

764+
Simulink
765+
~~~~~~~~
766+
To build the MEX function for coupling OpenFAST into Simulink, there are two
767+
options depending on platform.
768+
769+
Windows with Visual Studio
770+
--------------------------
771+
For Windows, build with the `Release_Matlab` option from the Visual Studio
772+
project in `vs-build/FAST/FAST.sln`. Then run
773+
`glue-codes/simulink/src/create_FAST_SFunc.m` from MATLAB (instructions at the
774+
top of this file).
775+
776+
CMake
777+
-----
778+
For CMake builds on all platforms, enable the `-DBUILD_OPENFAST_SIMULINK_API=On`
779+
option in CMake and build the `FAST_SFunc` target. This will place the
780+
resulting `FAST_SFunc.mexXXXX` in
781+
`<build-dir>/glue-codes/simulink/FAST_SFunc.mexXXXX` (and in the install
782+
directory at `install/bin/FAST_SFunc.mexXXXX` if `make install` was called).
783+
784+
757785
Appendix
758786
~~~~~~~~
759787
The following are additional methods for installation which may not be fully

docs/source/user/api_change.rst

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

1212

1313

14+
OpenFAST v4.0.0 to OpenFAST v4.0.1
15+
----------------------------------
16+
17+
No input file changes are required. MoorDyn can contain an option section for
18+
`External Loads` (see the MoorDyn documentation for details `here <https://moordyn.readthedocs.io/en/latest/inputs.html#the-v2-input-file>`__).
19+
20+
============================================= ======== ==================== =================================================================================================================================================================================================
21+
Modified in OpenFAST `v4.0.1`
22+
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
23+
Module Line Flag Name Example Value
24+
============================================= ======== ==================== =================================================================================================================================================================================================
25+
MoorDyn \* New optional sections for `EXTERNAL LOADS` (freeform file). See MoorDyn documentation for details (`here <https://moordyn.readthedocs.io/en/latest/inputs.html#the-v2-input-file>`__)
26+
============================================= ======== ==================== =================================================================================================================================================================================================
27+
28+
\*Exact line number depends on number and size of preceeding sections.
29+
30+
1431
OpenFAST v3.5.5 to OpenFAST 4.0.0
1532
---------------------------------
1633

@@ -23,7 +40,7 @@ New modules AeroDisk (see :numref:`ADsk`), Simplified-ElastoDyn (see
2340
documentation on those modules for exmple input files.
2441

2542
============================================= ======== ==================== ========================================================================================================================================================================================================
26-
Modified in OpenFAST `dev`
43+
Modified in OpenFAST `v4.0.0`
2744
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2845
Module Line Flag Name Example Value
2946
============================================= ======== ==================== ========================================================================================================================================================================================================
@@ -56,7 +73,7 @@ ElastoDyn blade file 15 Remo
5673
InflowWind driver 27 ---- Output VTK slices ------------------------------------------------------
5774
InflowWind driver 28 NOutWindXY 0 NOutWindXY -- Number of XY planes for output <RootName>.XY<loc>.t<n>.vtk (-) [0 to 9]
5875
InflowWind driver 29 OutWindZ 90 OutWindZ -- Z coordinates of XY planes for output (m) [1 to NOutWindXY] [unused for NOutWindXY=0]
59-
MoorDyn -- New optional sections (freeform file). See MoorDyn documentation for details
76+
MoorDyn -- New optional sections (freeform file). See MoorDyn documentation for details (`here <https://moordyn.readthedocs.io/en/latest/inputs.html#the-v2-input-file>`__)
6077
SubDyn 8 --removed-- removed: GuyanLoadCorrection
6178
SubDyn 12 --removed-- removed: CBMod
6279
SubDyn 56\* ----------------------- SPRING ELEMENT PROPERTIES -------------------------------------

glue-codes/simulink/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,6 @@ endif()
8484
install(TARGETS FAST_SFunc
8585
EXPORT "${CMAKE_PROJECT_NAME}Libraries"
8686
RUNTIME DESTINATION bin
87-
LIBRARY DESTINATION lib
87+
LIBRARY DESTINATION bin
8888
ARCHIVE DESTINATION lib
8989
)
Lines changed: 24 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,30 @@
11
%% INSTRUCTIONS
2-
% This script is used to manually build a Simulink mex file which uses the openfastlib shared library (.dll, .so, .dylib).
3-
% If you are building OpenFAST with CMake on linux or macOS or windows, you can automatically generate the mex file
4-
% by specifying -DBUILD_OPENFAST_SIMULINK_API=ON when running cmake, you do not need to use this script.
2+
% This script is used to manually build a Simulink mex file on Windows with Visual Studio. It uses the openfastlib shared
3+
% library (.dll).
54
%
6-
% Before running this script, you must have compiled OpenFAST for Simulink to create a DLL (i.e., a shared library like .so, .dylib, .lib, etc.).
7-
% - If cmake was used, make sure the install directory is specified properly in the `installDir` variable below,
8-
% and if using Windows, set `built_with_visualStudio` to false.
5+
% If you are using Windows and building with CMake, do not use this script. Instead use cmake to build the FAST_SFunc.mexXXXX directly.
6+
%
7+
% If you are not using Windows, do not use this script. Instead use cmake to build the FAST_SFunc.mexXXXX directly.
8+
%
9+
% Alternative building with CMAKE:
10+
% specify -DBUILD_OPENFAST_SIMULINK_API=ON when running cmake
11+
% - "make FAST_SFunc" will place the resulting mex file at <build-dir>/glue-codes/simulink/FAST_SFunc.mexXXXX
12+
% - "make install" will place the resulting mex file at install/bin/FAST_SFunc.mexXXXX
13+
%
14+
%
15+
% Before running this script, you must have compiled OpenFAST for Simulink to create a DLL (i.e., a shared library .lib).
916
% - If the Visual Studio Solution file contained in the vs-build directory was used to create the DLL on Windows,
1017
% make sure `built_with_visualStudio` is set to true.
1118
% - The name of the library that was generated must match the `libname` variable below
1219
% and should be located in the directory specified by `libDir`.
1320
% - The `includeDir` variable must specify the directory that contains the following header files:
14-
% "FAST_Library.h", "OpenFOAM_Types.h", and "SuperController_Types.h"
15-
% - The `outDir` variable indicates where the resulting mex file will reside.
21+
% "FAST_Library.h", "OpenFOAM_Types.h", "SuperController_Types.h", and "ExtLoadsDX_Types.h"
1622
%
1723
% Run `mex -setup` in Matlab to configure a C compiler if you have not already done so.
1824

1925
mexname = 'FAST_SFunc'; % base name of the resulting mex file
2026

21-
built_with_visualStudio = false; %if the libraries were built with cmake, set to false
27+
built_with_visualStudio = true; %if the libraries were built with cmake, set to false
2228

2329

2430
if (ispc && built_with_visualStudio)
@@ -42,28 +48,19 @@
4248
else
4349
%% defaults for cmake builds:
4450

45-
if ( ismac ) % Apple MacOS
46-
installDir = '../../../install';
47-
outDir = fullfile(installDir, 'lib');
48-
elseif ( ispc ) % Windows PC
49-
installDir = '../../../install';
50-
outDir = fullfile(installDir, 'lib');
51-
% If there are shared libraries does it work for outDir to be the local directory?
52-
else
53-
installDir = '../../../install';
54-
outDir = '.';
55-
end
51+
fprintf( '\n----------------------------\n' );
52+
fprintf( 'Do not use this script with Mac/Linux. Follow the CMake instructions at the top of the script instead.' );
53+
fprintf( '\n----------------------------\n' );
5654

57-
libDir = fullfile(installDir, 'lib');
58-
includeDir = fullfile(installDir, 'include');
59-
libName = 'openfastlib_mex';
6055
end
6156

62-
%% BUILD COMMAND
63-
fprintf( '\n----------------------------\n' );
64-
fprintf( 'Creating %s\n\n', [outDir filesep mexname '.' mexext] );
57+
6558

6659
if ispc () % Windows PC
60+
%% BUILD COMMAND
61+
fprintf( '\n----------------------------\n' );
62+
fprintf( 'Creating %s\n\n', [outDir filesep mexname '.' mexext] );
63+
6764

6865
mex('-largeArrayDims', ...
6966
... % '-v', ... %add this line for "verbose" output (for debugging)
@@ -72,27 +69,10 @@
7269
['-I' includeDir], ...
7370
'-I../../../modules/supercontroller/src', ... % needed for visual studio builds to find "SuperController_Types.h"
7471
'-I../../../modules/externalinflow/src', ... % needed for visual studio builds to find "ExternalInflow_Types.h"
72+
'-I../../../modules/extloads/src', ... % needed for visual studio builds to find "ExtLoadsDX_Types.h"
7573
'-outdir', outDir, ...
7674
['COMPFLAGS=$COMPFLAGS -MT -DS_FUNCTION_NAME=' mexname], ...
7775
'-output', mexname, ...
7876
'FAST_SFunc.c');
7977

80-
else % mac/unix
81-
82-
mex('-largeArrayDims', ...
83-
... '-v', ... %add this line for "verbose" output (for debugging)
84-
['-L', libDir], ...
85-
['-l', libName], ...
86-
'-lgfortran', ...
87-
'-lquadmath', ...
88-
'-llapack', ...
89-
'-lblas', ...
90-
'-ldl', ...
91-
['-I', includeDir], ...
92-
'-outdir', outDir, ...
93-
['CFLAGS=$CFLAGS -DS_FUNCTION_NAME=' mexname], ...
94-
... ['CXXFLAGS=$CXXFLAGS -DS_FUNCTION_NAME=' mexname], ...
95-
'-output', mexname, ...
96-
'FAST_SFunc.c');
97-
9878
end

0 commit comments

Comments
 (0)