Skip to content

Commit 30eb71d

Browse files
committed
Merge remote-tracking branch 'OpenFAST/dev' into wavetank3
2 parents 7664528 + 14ad361 commit 30eb71d

Some content is hidden

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

42 files changed

+1587
-986
lines changed

CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@ if (OPENMP)
125125
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
126126
link_libraries("${OpenMP_CXX_LIBRARIES}")
127127
endif()
128+
elseif (NOT BLA_VENDOR)
129+
# If we're not using OpenMP, and a specific BLAS vendor has not been set,
130+
# set MKL threading to sequential to avoid potential issues with
131+
# small calculations taking longer due to threading overhead (turbsim).
132+
set(MKL_THREADING "sequential")
128133
endif()
129134

130135
#-------------------------------------------------------------------------------

docs/source/install/install_vs_windows.rst

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@ Prerequisites
1111

1212
1. A version of Visual Studio (VS).
1313

14-
- Currently VS 2013 Professional and VS 2015 Community Edition have been tested with OpenFAST.
14+
- NOTE: not all VS Studio versions are supported by the Intel compilers. In general, the Fortran compiler must be newer than Visual Studio. A list of Intel Fortran compatible VS versions and specific installation notes are found `here <https://software.intel.com/en-us/intel-parallel-studio-xe-compilers-required-microsoft-visual-studio>`_.
1515

16-
- A list of Intel Fortran compatible VS versions and specific installation notes are found `here <https://software.intel.com/en-us/intel-parallel-studio-xe-compilers-required-microsoft-visual-studio>`_.
16+
- Currently VS 2019 Community Edition, VS 2022 Professional, and VS 2022 Community Edition have been tested with OpenFAST. Download VS 2022 Community `here <https://aka.ms/vs/17/release/vs_community.exe>`__.
1717

18-
- The included C/C++ project files for MAP++ and the Registry are compatible with VS 2013, but will upgrade seemlessly to a newer version of VS.
18+
- When installing Visual Studio, select the ``Desktop development with C++`` under ``Workloads``.
1919

20-
- If you download and install `Visual Studio 2015 Community Edition <https://go.microsoft.com/fwlink/?LinkId=691978&clcid=0x409>`__, you will need to be sure and select the ``C/C++ component`` using the ``Customize`` option.
20+
- Note: The included C/C++ project files for MAP++ and the Registry are compatible with VS 2019, but will upgrade seemlessly to a newer version of VS.
2121

2222
2. Intel Fortran Compiler
2323

24-
- Currently only version 2017.1 has been tested with OpenFAST, but any newer version should be compatible.
24+
- We recommend compiling with the IFX compiler from Intel. This is included in the ``Intel Fortran Essentials`` installation package. Currently tested with version 2025.3
2525

26-
- You can download an Intel Fortran compiler `here <https://software.intel.com/en-us/fortran-compilers>`__.
26+
- You can download ``Intel Fortran Essentials`` `here <https://www.intel.com/content/www/us/en/developer/tools/oneapi/fortran-compiler-download.html>`__. Note: do not install the ``oneAPI HPC Toolkit``
2727

28-
- Only install Intel Fortran after you have completed your Visual Studio installation.
28+
- Only install Intel Fortran after you have completed your Visual Studio installation. Note that Intel Fortran must be compatible with your version of Visual Studio. See `here <https://www.intel.com/content/www/us/en/developer/articles/reference-implementation/intel-compilers-compatibility-with-microsoft-visual-studio-and-xcode.html>`__ for compatibility tables.
2929

3030
3. Git for Windows
3131

docs/source/user/hydrodyn/input_files.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -561,9 +561,9 @@ flow is directed away from the endplate where flow separation is
561561
expected, not when the relative flow is impinging on the endplate
562562
where flow separation is unlikely. Option 0 is suitable for
563563
strip-theory-only members, whereas option 1 might be better suited for
564-
hybrid potential-flow members with drag force. Note that option 1
564+
hybrid potential-flow members with drag force. Note that option 0
565565
uses a leading coefficient of 1/4 when computing the drag force, while
566-
option 2 uses the more common leading coefficient of 1/2 since drag
566+
option 1 uses the more common leading coefficient of 1/2 since drag
567567
is usually only applied to one of the two endplates of the member
568568
instead of on both.
569569

modules/hydrodyn/src/Morison.f90

Lines changed: 74 additions & 83 deletions
Large diffs are not rendered by default.

modules/hydrodyn/src/Morison.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ typedef ^ ^ ReKi
462462
typedef ^ ^ ReKi V_rel_n_HiPass {:} - - "High-pass filtered normal relative flow velocity at joints" m/s
463463
typedef ^ ^ ReKi zFillGroup {:} - - "Instantaneous highest point of each filled group" m
464464
typedef ^ ^ MeshMapType VisMeshMap - - - "Mesh mapping for visualization mesh" -
465-
typedef ^ ^ SeaSt_WaveField_MiscVarType WaveField_m - - - "misc var information from the SeaState Interpolation module" -
465+
typedef ^ ^ GridInterp_MiscVarType WaveField_m - - - "misc var information from the Grid Interpolation module" -
466466

467467
# ..... Parameters ................................................................................................................
468468
# Define parameters here:

modules/hydrodyn/src/Morison_Output.f90

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8037,7 +8037,9 @@ SUBROUTINE MrsnOut_Init( InitInp, y, p, InitOut, ErrStat, ErrMsg )
80378037
! Need to search mesh for the two markers which surround the requested output location and then store those marker indices and compute the
80388038
! scale factor based on how far they are from the requested output location.
80398039
! Since this is being done on markers and not nodes, the subroutine must be called after the Morison_Init() subroutine is called
8040-
8040+
IF (p%Members(memberIndx)%Flipped) THEN
8041+
p%MOutLst(I)%NodeLocs(J) = 1.0 - p%MOutLst(I)%NodeLocs(J)
8042+
END IF
80418043
CALL GetNeighboringNodes(p%Members(memberIndx), p%MOutLst(I)%NodeLocs(J), m1, m2, i1, i2, s, ErrStat, ErrMsg)
80428044

80438045
p%MOutLst(I)%MeshIndx1(J) = m1

modules/hydrodyn/src/Morison_Types.f90

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ MODULE Morison_Types
530530
REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: V_rel_n_HiPass !< High-pass filtered normal relative flow velocity at joints [m/s]
531531
REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: zFillGroup !< Instantaneous highest point of each filled group [m]
532532
TYPE(MeshMapType) :: VisMeshMap !< Mesh mapping for visualization mesh [-]
533-
TYPE(SeaSt_WaveField_MiscVarType) :: WaveField_m !< misc var information from the SeaState Interpolation module [-]
533+
TYPE(GridInterp_MiscVarType) :: WaveField_m !< misc var information from the Grid Interpolation module [-]
534534
END TYPE Morison_MiscVarType
535535
! =======================
536536
! ========= Morison_ParameterType =======
@@ -4693,7 +4693,7 @@ subroutine Morison_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg)
46934693
call NWTC_Library_CopyMeshMapType(SrcMiscData%VisMeshMap, DstMiscData%VisMeshMap, CtrlCode, ErrStat2, ErrMsg2)
46944694
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
46954695
if (ErrStat >= AbortErrLev) return
4696-
call SeaSt_WaveField_CopyMisc(SrcMiscData%WaveField_m, DstMiscData%WaveField_m, CtrlCode, ErrStat2, ErrMsg2)
4696+
call GridInterp_CopyMisc(SrcMiscData%WaveField_m, DstMiscData%WaveField_m, CtrlCode, ErrStat2, ErrMsg2)
46974697
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
46984698
if (ErrStat >= AbortErrLev) return
46994699
end subroutine
@@ -4780,7 +4780,7 @@ subroutine Morison_DestroyMisc(MiscData, ErrStat, ErrMsg)
47804780
end if
47814781
call NWTC_Library_DestroyMeshMapType(MiscData%VisMeshMap, ErrStat2, ErrMsg2)
47824782
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
4783-
call SeaSt_WaveField_DestroyMisc(MiscData%WaveField_m, ErrStat2, ErrMsg2)
4783+
call GridInterp_DestroyMisc(MiscData%WaveField_m, ErrStat2, ErrMsg2)
47844784
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
47854785
end subroutine
47864786

@@ -4821,7 +4821,7 @@ subroutine Morison_PackMisc(RF, Indata)
48214821
call RegPackAlloc(RF, InData%V_rel_n_HiPass)
48224822
call RegPackAlloc(RF, InData%zFillGroup)
48234823
call NWTC_Library_PackMeshMapType(RF, InData%VisMeshMap)
4824-
call SeaSt_WaveField_PackMisc(RF, InData%WaveField_m)
4824+
call GridInterp_PackMisc(RF, InData%WaveField_m)
48254825
if (RegCheckErr(RF, RoutineName)) return
48264826
end subroutine
48274827

@@ -4868,7 +4868,7 @@ subroutine Morison_UnPackMisc(RF, OutData)
48684868
call RegUnpackAlloc(RF, OutData%V_rel_n_HiPass); if (RegCheckErr(RF, RoutineName)) return
48694869
call RegUnpackAlloc(RF, OutData%zFillGroup); if (RegCheckErr(RF, RoutineName)) return
48704870
call NWTC_Library_UnpackMeshMapType(RF, OutData%VisMeshMap) ! VisMeshMap
4871-
call SeaSt_WaveField_UnpackMisc(RF, OutData%WaveField_m) ! WaveField_m
4871+
call GridInterp_UnpackMisc(RF, OutData%WaveField_m) ! WaveField_m
48724872
end subroutine
48734873

48744874
subroutine Morison_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg)

modules/hydrodyn/src/SS_Excitation.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ typedef ^ ^ SS_Exc_ContinuousStateType
4343
# Define any data that are used only for efficiency purposes (these variables are not associated with time):
4444
# e.g. indices for searching in an array, large arrays that are local variables in any routine called multiple times, etc.
4545
typedef ^ MiscVarType INTEGER LastIndWave - 1 - "last used index in the WaveTime array" -
46-
typedef ^ ^ SeaSt_WaveField_MiscVarType WaveField_m - - - "misc var information from the SeaState Interpolation module" -
46+
typedef ^ ^ GridInterp_MiscVarType WaveField_m - - - "misc var information from the Grid Interpolation module" -
4747

4848

4949
# ..... Parameters .........................

modules/hydrodyn/src/SS_Excitation_Types.f90

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ MODULE SS_Excitation_Types
7373
! ========= SS_Exc_MiscVarType =======
7474
TYPE, PUBLIC :: SS_Exc_MiscVarType
7575
INTEGER(IntKi) :: LastIndWave = 1 !< last used index in the WaveTime array [-]
76-
TYPE(SeaSt_WaveField_MiscVarType) :: WaveField_m !< misc var information from the SeaState Interpolation module [-]
76+
TYPE(GridInterp_MiscVarType) :: WaveField_m !< misc var information from the Grid Interpolation module [-]
7777
END TYPE SS_Exc_MiscVarType
7878
! =======================
7979
! ========= SS_Exc_ParameterType =======
@@ -494,7 +494,7 @@ subroutine SS_Exc_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg)
494494
ErrStat = ErrID_None
495495
ErrMsg = ''
496496
DstMiscData%LastIndWave = SrcMiscData%LastIndWave
497-
call SeaSt_WaveField_CopyMisc(SrcMiscData%WaveField_m, DstMiscData%WaveField_m, CtrlCode, ErrStat2, ErrMsg2)
497+
call GridInterp_CopyMisc(SrcMiscData%WaveField_m, DstMiscData%WaveField_m, CtrlCode, ErrStat2, ErrMsg2)
498498
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
499499
if (ErrStat >= AbortErrLev) return
500500
end subroutine
@@ -508,7 +508,7 @@ subroutine SS_Exc_DestroyMisc(MiscData, ErrStat, ErrMsg)
508508
character(*), parameter :: RoutineName = 'SS_Exc_DestroyMisc'
509509
ErrStat = ErrID_None
510510
ErrMsg = ''
511-
call SeaSt_WaveField_DestroyMisc(MiscData%WaveField_m, ErrStat2, ErrMsg2)
511+
call GridInterp_DestroyMisc(MiscData%WaveField_m, ErrStat2, ErrMsg2)
512512
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
513513
end subroutine
514514

@@ -518,7 +518,7 @@ subroutine SS_Exc_PackMisc(RF, Indata)
518518
character(*), parameter :: RoutineName = 'SS_Exc_PackMisc'
519519
if (RF%ErrStat >= AbortErrLev) return
520520
call RegPack(RF, InData%LastIndWave)
521-
call SeaSt_WaveField_PackMisc(RF, InData%WaveField_m)
521+
call GridInterp_PackMisc(RF, InData%WaveField_m)
522522
if (RegCheckErr(RF, RoutineName)) return
523523
end subroutine
524524

@@ -528,7 +528,7 @@ subroutine SS_Exc_UnPackMisc(RF, OutData)
528528
character(*), parameter :: RoutineName = 'SS_Exc_UnPackMisc'
529529
if (RF%ErrStat /= ErrID_None) return
530530
call RegUnpack(RF, OutData%LastIndWave); if (RegCheckErr(RF, RoutineName)) return
531-
call SeaSt_WaveField_UnpackMisc(RF, OutData%WaveField_m) ! WaveField_m
531+
call GridInterp_UnpackMisc(RF, OutData%WaveField_m) ! WaveField_m
532532
end subroutine
533533

534534
subroutine SS_Exc_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg)

modules/hydrodyn/src/WAMIT.f90

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS
241241

242242
! Set up wave excitation grid - Can no longer use the WaveField parameters due to different headings
243243
! Copy WaveField grid parameters
244-
call SeaSt_WaveField_CopyParam(p%WaveField%GridParams, p%ExctnGridParams, 0, ErrStat2, ErrMsg2); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
244+
call GridInterp_CopyParam(p%WaveField%VolGridParams, p%ExctnGridParams, 0, ErrStat2, ErrMsg2); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
245245
if ( p%ExctnDisp == 0 ) then
246246
p%ExctnGridParams%n(2:3) = 1_IntKi
247247
p%ExctnGridParams%delta(2:3) = 0.0_SiKi
@@ -257,7 +257,6 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS
257257
p%ExctnGridParams%pZero(4) = -Pi
258258
end if
259259
p%ExctnGridParams%n(4) = p%NExctnHdg+1
260-
p%ExctnGridParams%Z_depth = -1.0 ! Set to Z_depth to a negative value to indicate uniform "z" grid for platform heading
261260

262261
! This module's implementation requires that if NBodyMod = 2 or 3, then there is one instance of a WAMIT module for each body, therefore, HydroDyn may have NBody > 1, but this WAMIT module will have NBody = 1
263262
if ( (p%NBodyMod > 1) .and. (p%NBody > 1) ) then

0 commit comments

Comments
 (0)