From e1234fd5f58ae7744f2e51b449d97ffde1386985 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Wed, 22 Oct 2025 19:36:27 +0000 Subject: [PATCH 1/9] Add multi-rotor test cases and fix a couple of loose ends for linearization of these models --- modules/aerodyn/src/AeroDyn.f90 | 3 +++ .../aerodyn/src/AeroDyn_Inflow_C_Binding_Types.f90 | 7 +++++-- modules/openfast-library/src/FAST_Subs.f90 | 2 -- reg_tests/CTestList.cmake | 5 +++-- reg_tests/executeOpenfastLinearRegressionCase.py | 12 ++++++------ reg_tests/r-test | 2 +- 6 files changed, 18 insertions(+), 13 deletions(-) diff --git a/modules/aerodyn/src/AeroDyn.f90 b/modules/aerodyn/src/AeroDyn.f90 index 27c1af45a7..421eda7da3 100644 --- a/modules/aerodyn/src/AeroDyn.f90 +++ b/modules/aerodyn/src/AeroDyn.f90 @@ -2439,6 +2439,9 @@ subroutine RotCavtCrit(u, p, m, errStat, errMsg) errStat = ErrID_None errMsg = '' + ! Skip the cavitation check if no wake mod + if ( p%Wake_Mod == WakeMod_none ) return + do iR = 1,size(p%rotors) if ( p%rotors(iR)%CavitCheck ) then ! Calculate the cavitation number for the airfoil at the node in quesiton, and compare to the critical cavitation number based on the vapour pressure and submerged depth do j = 1,p%rotors(iR)%numBlades ! Loop through all blades diff --git a/modules/aerodyn/src/AeroDyn_Inflow_C_Binding_Types.f90 b/modules/aerodyn/src/AeroDyn_Inflow_C_Binding_Types.f90 index 6d02105ed9..3250aff6ad 100644 --- a/modules/aerodyn/src/AeroDyn_Inflow_C_Binding_Types.f90 +++ b/modules/aerodyn/src/AeroDyn_Inflow_C_Binding_Types.f90 @@ -33,7 +33,7 @@ MODULE AeroDyn_Inflow_C_Binding_Types !--------------------------------------------------------------------------------------------------------------------------------- USE NWTC_Library IMPLICIT NONE - INTEGER(IntKi), PUBLIC, PARAMETER :: NumPtsDiskAvg = 144 ! Number of points for disk average velocity calculations [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: NumPtsDiskAvg = 144 ! Number of points for disk average velocity calculations [-] ! ========= DiskAvgVelData ======= TYPE, PUBLIC :: DiskAvgVelData REAL(ReKi) , DIMENSION(1:3,1:NumPtsDiskAvg) :: DiskWindPosRel = 0.0_ReKi !< Position points for disk average sampling, relative to hub [-] @@ -70,7 +70,8 @@ MODULE AeroDyn_Inflow_C_Binding_Types TYPE(MeshType) , DIMENSION(:), ALLOCATABLE :: BldMesh !< Mesh for motions/loads of external nodes at each blade (sized by number of blades on the rotor) [-] END TYPE MeshByBladeType ! ======================= -CONTAINS + +contains subroutine ADI_cbind_CopyDiskAvgVelData(SrcDiskAvgVelDataData, DstDiskAvgVelDataData, CtrlCode, ErrStat, ErrMsg) type(DiskAvgVelData), intent(in) :: SrcDiskAvgVelDataData @@ -576,5 +577,7 @@ subroutine ADI_cbind_UnPackMeshByBladeType(RF, OutData) end do end if end subroutine + END MODULE AeroDyn_Inflow_C_Binding_Types + !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/openfast-library/src/FAST_Subs.f90 b/modules/openfast-library/src/FAST_Subs.f90 index 0fc1944c31..6483f81151 100644 --- a/modules/openfast-library/src/FAST_Subs.f90 +++ b/modules/openfast-library/src/FAST_Subs.f90 @@ -1992,8 +1992,6 @@ SUBROUTINE ValidateInputData(p, m_FAST, ErrStat, ErrMsg) IF (p%MHK /= MHK_None .and. p%MHK /= MHK_FixedBottom .and. p%MHK /= MHK_Floating) CALL SetErrStat( ErrID_Fatal, 'MHK switch is invalid. Set MHK to 0, 1, or 2 in the FAST input file.', ErrStat, ErrMsg, RoutineName ) - IF (p%MHK /= MHK_None .and. p%Linearize) CALL SetErrStat( ErrID_Warn, 'Linearization is not fully implemented for an MHK turbine (buoyancy not included in perturbations, and added mass not included anywhere).', ErrStat, ErrMsg, RoutineName ) - IF (p%MHK /= MHK_None .and. p%CompSeaSt == Module_SeaSt .and. p%CompInflow /= Module_IfW) CALL SetErrStat( ErrID_Fatal, 'InflowWind must be activated for MHK turbines when SeaState is used.', ErrStat, ErrMsg, RoutineName ) IF (p%Gravity < 0.0_ReKi) CALL SetErrStat( ErrID_Fatal, 'Gravity must not be negative.', ErrStat, ErrMsg, RoutineName ) diff --git a/reg_tests/CTestList.cmake b/reg_tests/CTestList.cmake index ed1f69aaed..0ede2aa566 100644 --- a/reg_tests/CTestList.cmake +++ b/reg_tests/CTestList.cmake @@ -338,7 +338,6 @@ of_regression("5MW_ITIBarge_DLL_WTurb_WavesIrr" "openfast;elastodyn;aerod of_regression("5MW_TLP_DLL_WTurb_WavesIrr_WavesMulti" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;map;offshore") of_regression("5MW_OC3Spar_DLL_WTurb_WavesIrr" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;map;offshore") of_regression("5MW_OC4Semi_WSt_WavesWN" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;moordyn;offshore") -# of_regression("5MW_OC4Semi_WSt_WavesWN_MR" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;moordyn;multirotor;offshore") of_regression("5MW_Land_BD_DLL_WTurb" "openfast;beamdyn;aerodyn;servodyn") of_regression("5MW_Land_BD_DLL_WTurb_StC" "openfast;beamdyn;aerodyn;servodyn;stc") of_regression("5MW_Land_BD_Init" "openfast;beamdyn;aerodyn;servodyn") @@ -349,6 +348,7 @@ of_regression("StC_test_OC4Semi" "openfast;servodyn;hydrod of_regression("StC_test_OC4Semi_blade2" "openfast;servodyn;hydrodyn;moordyn;offshore;stc") of_regression("MHK_RM1_Fixed" "openfast;elastodyn;aerodyn;mhk;offshore") of_regression("MHK_RM1_Floating" "openfast;elastodyn;aerodyn;hydrodyn;moordyn;mhk;offshore") +of_regression("MHK_RM1_Floating_MR" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;moordyn;multirotor;offshore") of_regression("MHK_RM1_Floating_wNacDrag" "openfast;elastodyn;aerodyn;hydrodyn;moordyn;mhk;offshore") of_regression("Tailfin_FreeYaw1DOF_PolarBased" "openfast;elastodyn;aerodyn") of_regression("Tailfin_FreeYaw1DOF_Unsteady" "openfast;elastodyn;aerodyn") @@ -401,7 +401,8 @@ of_regression_linear("StC_test_OC4Semi_Linear_Tow" "" "openfas of_regression_linear("WP_Stationary_Linear" "" "openfast;linear;elastodyn") of_regression_linear("5MW_OC3Spar_Linear" "" "openfast;linear;map;hydrodyn") of_regression_linear("5MW_OC3Mnpl_Linear" "" "openfast;linear;hydrodyn;servodyn;moordyn") -# of_regression_linear("MHK_RM1_Floating_Linear" "-highpass=0.05" "openfast;linear;elastodyn;aerodyn;hydrodyn;moordyn;mhk") +of_regression_linear("MHK_RM1_Floating_MR_Linear" "-highpass=0.05" "openfast;linear;elastodyn;aerodyn;servodyn;hydrodyn;moordyn;multirotor;offshore;mhk") + # FAST Farm regression tests if(BUILD_FASTFARM) diff --git a/reg_tests/executeOpenfastLinearRegressionCase.py b/reg_tests/executeOpenfastLinearRegressionCase.py index 17baf99714..4af4fdf086 100644 --- a/reg_tests/executeOpenfastLinearRegressionCase.py +++ b/reg_tests/executeOpenfastLinearRegressionCase.py @@ -442,12 +442,12 @@ def freqFileClose(file_freq_ref,file_freq_new): exitWithError('See errors below: \n'+'\n'.join(Errors)) # If able to import openfast_toolbox, generate input file for visualization -try: - import openfast_toolbox.linearization as lin - CDDOP, MBCOP = lin.getCampbellDataOP(caseInputFile, writeModes=True, verbose=True) - vizfile = lin.writeVizFile(caseInputFile, verbose=True, VTKLinModes=1, VTKLinScale=10, VTKModes="1", VTKLinTim=2) -except ImportError as e: - pass +# try: +# import openfast_toolbox.linearization as lin +# CDDOP, MBCOP = lin.getCampbellDataOP(caseInputFile, writeModes=True, verbose=True) +# vizfile = lin.writeVizFile(caseInputFile, verbose=True, VTKLinModes=1, VTKLinScale=10, VTKModes="1", VTKLinTim=2) +# except ImportError as e: +# pass # passing case sys.exit(0) diff --git a/reg_tests/r-test b/reg_tests/r-test index 751426eb08..1678dbf285 160000 --- a/reg_tests/r-test +++ b/reg_tests/r-test @@ -1 +1 @@ -Subproject commit 751426eb0896ba63436da8a2a6697090f86a67f8 +Subproject commit 1678dbf2854faf1bc6439a59f6b44186ce393f26 From 1e6b578552e886146c4e2763fd3d529de9dd2050 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Wed, 22 Oct 2025 20:08:14 +0000 Subject: [PATCH 2/9] Update r-test pointer --- reg_tests/r-test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reg_tests/r-test b/reg_tests/r-test index 1678dbf285..286577017e 160000 --- a/reg_tests/r-test +++ b/reg_tests/r-test @@ -1 +1 @@ -Subproject commit 1678dbf2854faf1bc6439a59f6b44186ce393f26 +Subproject commit 286577017e512a7afecb675a2a543ef03e2f2f42 From afe0442a40cf7dfe402821eeeea80b0a83a3477f Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Thu, 23 Oct 2025 10:01:49 -0400 Subject: [PATCH 3/9] Update reg_tests/CTestList.cmake Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- reg_tests/CTestList.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/reg_tests/CTestList.cmake b/reg_tests/CTestList.cmake index 0ede2aa566..386398bfc5 100644 --- a/reg_tests/CTestList.cmake +++ b/reg_tests/CTestList.cmake @@ -403,7 +403,6 @@ of_regression_linear("5MW_OC3Spar_Linear" "" "openfas of_regression_linear("5MW_OC3Mnpl_Linear" "" "openfast;linear;hydrodyn;servodyn;moordyn") of_regression_linear("MHK_RM1_Floating_MR_Linear" "-highpass=0.05" "openfast;linear;elastodyn;aerodyn;servodyn;hydrodyn;moordyn;multirotor;offshore;mhk") - # FAST Farm regression tests if(BUILD_FASTFARM) ff_regression("TSinflow" "" "fastfarm") From cef4cc76983016e084b85c4824f09502fe136130 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Tue, 28 Oct 2025 14:10:06 +0000 Subject: [PATCH 4/9] Set lower bound of AllOuts to 0 in SeaState to fix indexing bug for invalid output variables --- modules/seastate/src/SeaState.f90 | 2 +- modules/seastate/src/SeaState_Output.f90 | 19 +++++++------------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/modules/seastate/src/SeaState.f90 b/modules/seastate/src/SeaState.f90 index 301d300c12..ed656cf6a5 100644 --- a/modules/seastate/src/SeaState.f90 +++ b/modules/seastate/src/SeaState.f90 @@ -712,7 +712,7 @@ SUBROUTINE SeaSt_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er REAL(SiKi) :: WaveAcc(3,p%NWaveKin) REAL(SiKi) :: WaveAccMCF(3,p%NWaveKin) REAL(SiKi) :: WaveDynP(p%NWaveKin) - REAL(ReKi) :: AllOuts(MaxOutPts) + REAL(ReKi) :: AllOuts(0:MaxOutPts) real(ReKi) :: positionXYZ(3), positionXY(2) REAL(SiKi) :: zeta diff --git a/modules/seastate/src/SeaState_Output.f90 b/modules/seastate/src/SeaState_Output.f90 index 7dacda0be8..db07f41aea 100644 --- a/modules/seastate/src/SeaState_Output.f90 +++ b/modules/seastate/src/SeaState_Output.f90 @@ -490,7 +490,7 @@ subroutine SeaStOut_MapOutputs( p, WaveElev, WaveElev1, WaveElev2, WaveVel, Wav REAL(SiKi), intent( in ) :: WaveAcc(:,:) ! Instantaneous first order elevation of incident waves at each of the NWaveElev points where the incident wave elevations can be output (meters) REAL(SiKi), intent( in ) :: WaveAccMCF(:,:) ! Instantaneous first order elevation of incident waves at each of the NWaveElev points where the incident wave elevations can be output (meters) REAL(SiKi), intent( in ) :: WaveDynP(:) ! Instantaneous second order elevation of incident waves at each of the NWaveElev points where the incident wave elevations can be output (meters) - REAL(ReKi), intent( out ) :: AllOuts(MaxOutpts) + REAL(ReKi), intent( out ) :: AllOuts(0:MaxOutpts) INTEGER(IntKi), intent( out ) :: ErrStat ! Error status of the operation CHARACTER(*), intent( out ) :: ErrMsg ! Error message if ErrStat /= ErrID_None @@ -916,21 +916,16 @@ SUBROUTINE SetOutParam(OutList, p, ErrStat, ErrMsg ) Indx = FindValidChannelIndx(OutList(I), ValidParamAry, p%OutParam(I)%SignM) - IF ( Indx > 0 ) THEN ! we found the channel name - IF ( InvalidOutput( ParamIndxAry(Indx) ) ) THEN ! but, it isn't valid for these settings - p%OutParam(I)%Indx = 0 ! pick any valid channel (I just picked "Time=0" here because it's universal) - p%OutParam(I)%Units = "INVALID" - p%OutParam(I)%SignM = 0 - ELSE - p%OutParam(I)%Indx = ParamIndxAry(Indx) - p%OutParam(I)%Units = ParamUnitsAry(Indx) ! it's a valid output - END IF - ELSE ! this channel isn't valid + ! If channel has no index or is invalid + IF ( Indx <= 0 .or. InvalidOutput( ParamIndxAry(Indx) ) ) THEN p%OutParam(I)%Indx = 0 ! pick any valid channel (I just picked "Time=0" here because it's universal) p%OutParam(I)%Units = "INVALID" p%OutParam(I)%SignM = 0 ! multiply all results by zero - CALL SetErrStat(ErrID_Warn, TRIM(p%OutParam(I)%Name)//" is not an available output channel.",ErrStat,ErrMsg,RoutineName) + ELSE + ! Channel is invalid + p%OutParam(I)%Indx = ParamIndxAry(Indx) + p%OutParam(I)%Units = ParamUnitsAry(Indx) ! it's a valid output END IF END DO From bf32fae06c95d7f23b4e37a7250fa1a4c8617837 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Tue, 28 Oct 2025 14:14:33 +0000 Subject: [PATCH 5/9] Add test 5MW_MRSemi_DLL_WSt_WavesIrr --- reg_tests/CTestList.cmake | 1 + reg_tests/r-test | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/reg_tests/CTestList.cmake b/reg_tests/CTestList.cmake index 386398bfc5..c92c5ec588 100644 --- a/reg_tests/CTestList.cmake +++ b/reg_tests/CTestList.cmake @@ -338,6 +338,7 @@ of_regression("5MW_ITIBarge_DLL_WTurb_WavesIrr" "openfast;elastodyn;aerod of_regression("5MW_TLP_DLL_WTurb_WavesIrr_WavesMulti" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;map;offshore") of_regression("5MW_OC3Spar_DLL_WTurb_WavesIrr" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;map;offshore") of_regression("5MW_OC4Semi_WSt_WavesWN" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;moordyn;offshore") +of_regression("5MW_MRSemi_DLL_WSt_WavesIrr" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;moordyn;offshore,multirotor") of_regression("5MW_Land_BD_DLL_WTurb" "openfast;beamdyn;aerodyn;servodyn") of_regression("5MW_Land_BD_DLL_WTurb_StC" "openfast;beamdyn;aerodyn;servodyn;stc") of_regression("5MW_Land_BD_Init" "openfast;beamdyn;aerodyn;servodyn") diff --git a/reg_tests/r-test b/reg_tests/r-test index 286577017e..ef96912f47 160000 --- a/reg_tests/r-test +++ b/reg_tests/r-test @@ -1 +1 @@ -Subproject commit 286577017e512a7afecb675a2a543ef03e2f2f42 +Subproject commit ef96912f4775653fd4b01f210db5a849d1836cf9 From bc14a48e3d4e7ffc977a451474d95d8c967b9be6 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Wed, 29 Oct 2025 20:04:19 +0000 Subject: [PATCH 6/9] Split out multirotor tests since they take much longer --- .github/workflows/automated-dev-tests.yml | 56 ++++++++++++++++++++++- reg_tests/r-test | 2 +- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/.github/workflows/automated-dev-tests.yml b/.github/workflows/automated-dev-tests.yml index 2e371a343c..bdb408b54b 100644 --- a/.github/workflows/automated-dev-tests.yml +++ b/.github/workflows/automated-dev-tests.yml @@ -469,6 +469,61 @@ jobs: run: | ctest -VV \ -L openfast -L offshore \ + -LE "cpp|linear|python|fastlib|multirotor" + - name: Failing test artifacts + uses: actions/upload-artifact@v4 + if: failure() + with: + name: rtest-OF-offshore + path: | + ${{github.workspace}}/build/reg_tests/glue-codes/openfast + !${{github.workspace}}/build/reg_tests/glue-codes/openfast/5MW_Baseline + !${{github.workspace}}/build/reg_tests/glue-codes/openfast/AOC + !${{github.workspace}}/build/reg_tests/glue-codes/openfast/AWT27 + !${{github.workspace}}/build/reg_tests/glue-codes/openfast/SWRT + !${{github.workspace}}/build/reg_tests/glue-codes/openfast/UAE_VI + !${{github.workspace}}/build/reg_tests/glue-codes/openfast/WP_Baseline + + rtest-OF-multirotor: + runs-on: ubuntu-24.04 + needs: build-all-release + steps: + - name: Restore workspace from artifact + uses: actions/download-artifact@v4 + with: + name: build-all-release + - name: Untar workspace + run: | + tar -xf workspace.tar -C${{github.workspace}} + rm workspace.tar + - name: List files in workspace + run: ls + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + - name: Install dependencies + working-directory: ${{github.workspace}} + run: | + pip install -r requirements.txt + pip install glue-codes/python/. # Installs the interface library + sudo apt-get update -y + sudo apt-get install -y libopenblas-dev libopenblas-openmp-dev + sudo apt-get install -y libhdf5-dev libnetcdf-dev libopenmpi-dev libyaml-cpp-dev + - name: Configure Tests + working-directory: ${{github.workspace}}/build + run: | + cmake \ + -DPython_ROOT_DIR:PATH=${{env.pythonLocation}} \ + -DBUILD_TESTING:BOOL=ON \ + -DCTEST_PLOT_ERRORS:BOOL=ON \ + ${GITHUB_WORKSPACE} + cmake --build . --target regression_test_controllers + - name: Run 5MW tests + working-directory: ${{github.workspace}}/build + run: | + ctest -VV \ + -L openfast -L multirotor \ -LE "cpp|linear|python|fastlib" - name: Failing test artifacts uses: actions/upload-artifact@v4 @@ -484,7 +539,6 @@ jobs: !${{github.workspace}}/build/reg_tests/glue-codes/openfast/UAE_VI !${{github.workspace}}/build/reg_tests/glue-codes/openfast/WP_Baseline - rtest-OF-linearization: runs-on: ubuntu-24.04 needs: build-all-release diff --git a/reg_tests/r-test b/reg_tests/r-test index ef96912f47..ae4c80c9c9 160000 --- a/reg_tests/r-test +++ b/reg_tests/r-test @@ -1 +1 @@ -Subproject commit ef96912f4775653fd4b01f210db5a849d1836cf9 +Subproject commit ae4c80c9c956379a1c604b7fef1133425303b61e From e8d6c6b89aa00f05f26dbce335bd5825481fe217 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Wed, 29 Oct 2025 21:38:18 +0000 Subject: [PATCH 7/9] Update r-test pointer --- reg_tests/r-test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reg_tests/r-test b/reg_tests/r-test index ae4c80c9c9..67c88e760e 160000 --- a/reg_tests/r-test +++ b/reg_tests/r-test @@ -1 +1 @@ -Subproject commit ae4c80c9c956379a1c604b7fef1133425303b61e +Subproject commit 67c88e760e0a7f6018789a21bd4bf1e05a68cc27 From b51fe5e667087eb975482f834adaa71703914d5e Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Thu, 30 Oct 2025 14:28:27 +0000 Subject: [PATCH 8/9] Update r-test pointer --- reg_tests/r-test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reg_tests/r-test b/reg_tests/r-test index 67c88e760e..ea42802154 160000 --- a/reg_tests/r-test +++ b/reg_tests/r-test @@ -1 +1 @@ -Subproject commit 67c88e760e0a7f6018789a21bd4bf1e05a68cc27 +Subproject commit ea4280215426fa8b1e58809ba7d182d0e811fd13 From 964c6faa6331824987dff4f4371e04a71577babf Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Wed, 5 Nov 2025 14:41:28 -0500 Subject: [PATCH 9/9] Update reg_tests/CTestList.cmake Co-authored-by: Andy Platt --- reg_tests/CTestList.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reg_tests/CTestList.cmake b/reg_tests/CTestList.cmake index c92c5ec588..3f8333e8be 100644 --- a/reg_tests/CTestList.cmake +++ b/reg_tests/CTestList.cmake @@ -338,7 +338,7 @@ of_regression("5MW_ITIBarge_DLL_WTurb_WavesIrr" "openfast;elastodyn;aerod of_regression("5MW_TLP_DLL_WTurb_WavesIrr_WavesMulti" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;map;offshore") of_regression("5MW_OC3Spar_DLL_WTurb_WavesIrr" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;map;offshore") of_regression("5MW_OC4Semi_WSt_WavesWN" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;moordyn;offshore") -of_regression("5MW_MRSemi_DLL_WSt_WavesIrr" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;moordyn;offshore,multirotor") +of_regression("5MW_MRSemi_DLL_WSt_WavesIrr" "openfast;elastodyn;aerodyn;servodyn;hydrodyn;moordyn;offshore;subdyn;olaf;multirotor") of_regression("5MW_Land_BD_DLL_WTurb" "openfast;beamdyn;aerodyn;servodyn") of_regression("5MW_Land_BD_DLL_WTurb_StC" "openfast;beamdyn;aerodyn;servodyn;stc") of_regression("5MW_Land_BD_Init" "openfast;beamdyn;aerodyn;servodyn")