Skip to content

Commit f4c0b48

Browse files
authored
Merge pull request #2856 from OpenFAST/rc-4.0.5
Release 4.0.5
2 parents d28a823 + 86c2323 commit f4c0b48

File tree

25 files changed

+1156
-1350
lines changed

25 files changed

+1156
-1350
lines changed

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

Lines changed: 227 additions & 651 deletions
Large diffs are not rendered by default.
1.02 KB
Binary file not shown.

docs/changelogs/v4.0.5.md

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
**Feature or improvement description**
2+
Pull request to merge `rc-4.0.5` into `main` and create a tagged release for v4.0.5
3+
4+
See the milestone and project pages for additional information
5+
6+
https://github.com/OpenFAST/openfast/milestone/22
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+
- [ ] Update version info in openfast\_io/pyproject.toml
15+
- [ ] Verify readthedocs builds correctly
16+
- [ ] Create an annotated tag in OpenFAST during merge (mark as most recent if necessary)
17+
- [ ] Create a merge commit in r-test and add a corresponding annotated tag
18+
- [ ] Upload Docker image
19+
- [ ] Compile executables for Windows builds
20+
- [ ] `AeroDisk_Driver_x64.exe`
21+
- [ ] `AeroDyn_Driver_x64.exe`
22+
- [ ] `AeroDyn_Driver_x64_OpenMP.exe`
23+
- [ ] `AeroDyn_Inflow_c_binding_x64.dll`
24+
- [ ] `AeroDyn_Inflow_c_binding_x64_OpenMP.dll`
25+
- [ ] `BeamDyn_Driver_x64.exe`
26+
- [ ] `DISCON.dll (x64)`
27+
- [ ] `DISCON_ITIBarge.dll (x64)`
28+
- [ ] `DISCON_OC3Hywind.dll (x64)`
29+
- [ ] `DISCON_SC.dll (x64)`
30+
- [ ] `FAST.Farm_x64.exe`
31+
- [ ] `FAST.Farm_x64_OMP.exe`
32+
- [ ] `FAST_SFunc.mexw64`
33+
- [ ] `HydroDynDriver_x64.exe`
34+
- [ ] `HydroDyn_C_Binding_x64.dll`
35+
- [ ] `IinflowWind_c_binding_x64.dll`
36+
- [ ] `InflowWind_Driver_x64.exe`
37+
- [ ] `InflowWind_Driver_x64_OpenMP.exe`
38+
- [ ] `MoorDyn_Driver_x64.exe`
39+
- [ ] `MoorDyn_c_binding_x64.dll`
40+
- [ ] `OpenFAST-Simulink_x64.dll`
41+
- [ ] `openfast_x64.exe`
42+
- [ ] `SeaStateDriver_x64.exe`
43+
- [ ] `SimpleElastoDyn_x64.exe`
44+
- [ ] `SubDyn_x64.exe`
45+
- [ ] `Turbsim_x64.exe`
46+
- [ ] `UnsteadyAero_x64.exe`
47+
48+
# Changelog
49+
50+
## Overview
51+
52+
This release includes several bug fixes and improvements for _OpenFAST_, GitHub actions, and _openfast\_io_.
53+
54+
## General
55+
56+
### CMake build system
57+
58+
### GitHub actions
59+
60+
#2825 Simplify GitHub Action for regression tests (backport from dev-tc) (@deslaughter)
61+
62+
63+
### openfast_io
64+
65+
#2828 updated outlist reading in openfast\_io (@mayankchetan)
66+
67+
#2818 OpenFAST IO updates: MoorDyn and StC (@dzalkind)
68+
69+
70+
71+
## Solvers
72+
73+
### OpenFAST
74+
75+
#2831 [BugFix] WrVTK with VTK\_fps fails (@andrew-platt)
76+
77+
78+
## Interfaces
79+
80+
### cpp interface
81+
82+
#2792 Fix openfastcpp restart parsing of file name (@marchdf)
83+
84+
#2804 Add a checkError in openfast cpp (@marchdf)
85+
86+
#2815 Fix restart parsing of file name (backport of #2792 and #2793) (@marchdf)
87+
88+
89+
## Module changes
90+
91+
### AeroDyn
92+
93+
#2853 Backport #2848 (@bjonkman)
94+
95+
96+
### BeamDyn
97+
98+
#2811 BD: new output - aero only loads mapped to the root (@andrew-platt)
99+
100+
101+
### IceFlow
102+
103+
#2855 Fix Typo in "interpolation" in Ice Crushing Modules (@leopardracer)
104+
105+
106+
### SubDyn
107+
108+
#2821 bugfix: SD maximum number of output channels was incorrectly set (@andrew-platt)
109+
110+
111+
## Input file changes
112+
113+
No input file changes since v4.0.0
114+
115+
#2829 FF: typo in SeaState names in `MD_Shared` .fst files - this is not an API change (@andrew-platt)
116+

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.4'
141+
release = u'v4.0.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 & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ The line number corresponds to the resulting line number after all changes are i
1010
Thus, be sure to implement each in order so that subsequent line numbers are correct.
1111

1212

13+
OpenFAST v4.0.4 to OpenFAST v4.0.5
14+
----------------------------------
15+
16+
No input file changes were made.
17+
18+
1319
OpenFAST v4.0.3 to OpenFAST v4.0.4
1420
----------------------------------
1521

glue-codes/openfast-cpp/src/OpenFAST.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,15 @@ void fast::OpenFAST::findRestartFile(int iTurbLoc) {
9494
check_nc_error(ierr, "nc_get_vara_double - getting latest time");
9595
tStart = latest_time;
9696

97-
char tmpOutFileRoot[INTERFACE_STRING_LENGTH];
97+
char *tmpOutFileRoot;
98+
size_t len;
99+
ierr = nc_inq_attlen(ncid, NC_GLOBAL, "out_file_root", &len);
100+
check_nc_error(ierr, "nc_inq_attlen - getting out_file_root length");
101+
102+
tmpOutFileRoot = (char*) malloc(len + 1);
98103
ierr = nc_get_att_text(ncid, NC_GLOBAL, "out_file_root", tmpOutFileRoot);
104+
check_nc_error(ierr, "nc_get_att_text - getting out_file_root");
105+
tmpOutFileRoot[len] = '\0';
99106
turbineData[iTurbLoc].outFileRoot.assign(tmpOutFileRoot);
100107

101108
ierr = nc_get_att_double(ncid, NC_GLOBAL, "dt_fast", &dtFAST);
@@ -119,7 +126,7 @@ void fast::OpenFAST::findRestartFile(int iTurbLoc) {
119126
std::cout << "Restarting from time " << latest_time << " at time step " << tstep << " from file name " << turbineData[iTurbLoc].FASTRestartFileName << std::endl ;
120127

121128
nc_close(ncid);
122-
129+
free(tmpOutFileRoot);
123130
}
124131

125132
void fast::OpenFAST::prepareRestartFile(int iTurbLoc) {
@@ -668,6 +675,7 @@ void fast::OpenFAST::init() {
668675
&sc->op_to_FAST[iTurb],
669676
&ErrStat,
670677
ErrMsg);
678+
checkError(ErrStat, ErrMsg);
671679
turbineData[iTurb].inflowType = 0;
672680
}
673681

modules/aerodyn/src/FVW.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1601,7 +1601,7 @@ subroutine UA_Init_Wrapper(AFInfo, InitInp, interval, p, x, xd, OtherState, m, E
16011601
do i = 1,InitInp%numBladeNodes
16021602
InitInp%UA_Init%c(i,1) = p%W(iW)%chord_LL(i) ! NOTE: InitInp chord move-allocd to p
16031603
end do
1604-
InitInp%UA_Init%OutRootName = trim(InitInp%RootName)//'W'//num2lstr(iW)//'.UA'
1604+
InitInp%UA_Init%OutRootName = trim(InitInp%RootName)//'W'//trim(num2lstr(iW))//'.UA'
16051605

16061606
InitInp%UA_Init%ShedEffect = .False. ! Important, when coupling UA wih vortex code, shed vorticity is inherently accounted for
16071607
InitInp%UA_Init%UAOff_innerNode(1) = InitInp%W(iW)%UAOff_innerNode

modules/beamdyn/src/BeamDyn.f90

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1746,6 +1746,27 @@ subroutine Init_MiscVars( p, u, y, m, ErrStat, ErrMsg )
17461746
CALL BD_CopyInput(u, m%u2, MESH_NEWCOPY, ErrStat2, ErrMsg2)
17471747
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName )
17481748

1749+
! compute mapping of applied distributed loads to the root location
1750+
! NOTE: PtLoads are not handled at present. See comments in BeamDyn_IO.f90 for changes required.
1751+
if (p%CompAppliedLdAtRoot .and. p%BldMotionNodeLoc == BD_MESH_QP) then
1752+
! create point mesh at root (cousin of rootmotion)
1753+
CALL MeshCopy( SrcMesh = u%RootMotion &
1754+
, DestMesh = m%LoadsAtRoot &
1755+
, CtrlCode = MESH_COUSIN &
1756+
, IOS = COMPONENT_OUTPUT &
1757+
, Force = .TRUE. &
1758+
, Moment = .TRUE. &
1759+
, ErrStat = ErrStat2 &
1760+
, ErrMess = ErrMsg2 )
1761+
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName )
1762+
if (ErrStat>=AbortErrLev) RETURN
1763+
1764+
! mapping of distributed loads to LoadsAtRoot
1765+
CALL MeshMapCreate( u%DistrLoad, m%LoadsAtRoot, m%Map_u_DistrLoad_to_R, ErrStat2, ErrMsg2 )
1766+
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName )
1767+
m%LoadsAtRoot%remapFlag = .false.
1768+
1769+
endif
17491770

17501771
end subroutine Init_MiscVars
17511772
!-----------------------------------------------------------------------------------------------------------------------------------

0 commit comments

Comments
 (0)