diff --git a/modules/hydrodyn/src/WAMIT.f90 b/modules/hydrodyn/src/WAMIT.f90 index d73dd5c2c3..e256247382 100644 --- a/modules/hydrodyn/src/WAMIT.f90 +++ b/modules/hydrodyn/src/WAMIT.f90 @@ -1565,7 +1565,7 @@ SUBROUTINE WAMIT_UpdateStates( t, n, Inputs, InputTimes, p, x, xd, z, OtherState REAL(DbKi), INTENT(IN ) :: t !< Current simulation time in seconds INTEGER(IntKi), INTENT(IN ) :: n !< Current step of the simulation: t = n*Interval - TYPE(WAMIT_InputType), INTENT(IN ) :: Inputs(:) !< Inputs at InputTimes + TYPE(WAMIT_InputType), INTENT(INOUT) :: Inputs(:) !< Inputs at InputTimes REAL(DbKi), INTENT(IN ) :: InputTimes(:) !< Times in seconds associated with Inputs TYPE(WAMIT_ParameterType), INTENT(IN ) :: p !< Parameters TYPE(WAMIT_ContinuousStateType), INTENT(INOUT) :: x !< Input: Continuous states at t; @@ -1598,7 +1598,6 @@ SUBROUTINE WAMIT_UpdateStates( t, n, Inputs, InputTimes, p, x, xd, z, OtherState TYPE(SS_Rad_InputType), ALLOCATABLE :: SS_Rdtn_u(:) ! Inputs TYPE(SS_Exc_InputType), ALLOCATABLE :: SS_Exctn_u(:) ! Inputs - TYPE(WAMIT_InputType), ALLOCATABLE :: WAMIT_u(:) ! Inputs TYPE(WAMIT_InputType) :: WAMIT_u_t @@ -1669,23 +1668,9 @@ SUBROUTINE WAMIT_UpdateStates( t, n, Inputs, InputTimes, p, x, xd, z, OtherState END IF IF ( (p%ExctnMod>0).AND.(p%ExctnDisp==2) ) THEN - ALLOCATE( WAMIT_u(nTime), STAT = ErrStat ) - IF (ErrStat /=0) THEN - ErrMsg = ' Failed to allocate array WAMIT_u.' - RETURN - END IF - DO I=1,nTime - ALLOCATE( WAMIT_u(I)%Mesh%TranslationDisp(3,p%NBody), STAT = ErrStat ) - IF (ErrStat /=0) THEN - ErrMsg = ' Failed to allocate array WAMIT_u(I)%Mesh%TranslationDisp.' - RETURN - END IF - DO iBody=1,p%NBody - WAMIT_u(I)%Mesh%TranslationDisp(:,iBody) = Inputs(I)%Mesh%TranslationDisp(:,iBody) - END DO - END DO ! Interpolate WAMIT input at time t+dt - CALL WAMIT_Input_ExtrapInterp(WAMIT_u, InputTimes, WAMIT_u_t, t+p%dt, ErrStat, ErrMsg) + CALL WAMIT_CopyInput(Inputs(1), WAMIT_u_t, MESH_NEWCOPY, ErrStat, ErrMsg) + CALL WAMIT_Input_ExtrapInterp(Inputs, InputTimes, WAMIT_u_t, t+p%dt, ErrStat, ErrMsg) DO iBody = 1,p%NBody ! Current unfiltered body position at time t+dt bodyPosition(1) = WAMIT_u_t%Mesh%TranslationDisp(1,iBody) @@ -1697,10 +1682,6 @@ SUBROUTINE WAMIT_UpdateStates( t, n, Inputs, InputTimes, p, x, xd, z, OtherState xd%BdyPosFilt(2,iBody,1) = p%ExctnFiltConst * xd%BdyPosFilt(2,iBody,1) + (1.0_ReKi - p%ExctnFiltConst) * bodyPosition(2) END DO CALL WAMIT_DestroyInput( WAMIT_u_t, ErrStat, ErrMsg) - DO I=1,nTime - CALL WAMIT_DestroyInput( WAMIT_u(I), ErrStat, ErrMsg) - END DO - DEALLOCATE(WAMIT_u) END IF IF ( p%ExctnMod == 2 ) THEN ! Update the state-space wave excitation sub-module's states @@ -1835,8 +1816,8 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er bodyPosition(2) = u%Mesh%TranslationDisp(2,iBody) ELSE IF ( p%ExctnDisp == 2 ) THEN ! Use filtered body position - bodyPosition(1) = xd%BdyPosFilt(1,iBody,1) - bodyPosition(2) = xd%BdyPosFilt(2,iBody,1) + bodyPosition(1) = p%ExctnFiltConst * xd%BdyPosFilt(1,iBody,1) + (1.0_ReKi - p%ExctnFiltConst) * u%Mesh%TranslationDisp(1,iBody) + bodyPosition(2) = p%ExctnFiltConst * xd%BdyPosFilt(2,iBody,1) + (1.0_ReKi - p%ExctnFiltConst) * u%Mesh%TranslationDisp(2,iBody) END IF iStart = (iBody-1)*6+1 ! WaveExctnGrid dimensions are: 1st: wavetime, 2nd: X, 3rd: Y, 4th: Force component for each WAMIT Body diff --git a/reg_tests/CTestList.cmake b/reg_tests/CTestList.cmake index 000b96e3e3..dec7c8ae21 100644 --- a/reg_tests/CTestList.cmake +++ b/reg_tests/CTestList.cmake @@ -399,16 +399,27 @@ bd_regression("bd_static_twisted_with_k1" "beamdyn;static") # HydroDyn regression tests hd_regression("hd_OC3tripod_offshore_fixedbottom_wavesirr" "hydrodyn;offshore") -#hd_regression("hd_5MW_ITIBarge_DLL_WTurb_WavesIrr" "hydrodyn;offshore") +#hd_regression("hd_5MW_ITIBarge_DLL_WTurb_WavesIrr" "hydrodyn;offshore") hd_regression("hd_5MW_OC3Spar_DLL_WTurb_WavesIrr" "hydrodyn;offshore") -#hd_regression("hd_5MW_OC4Jckt_DLL_WTurb_WavesIrr_MGrowth" "hydrodyn;offshore") +#hd_regression("hd_5MW_OC4Jckt_DLL_WTurb_WavesIrr_MGrowth" "hydrodyn;offshore") hd_regression("hd_5MW_OC4Semi_WSt_WavesWN" "hydrodyn;offshore") hd_regression("hd_5MW_TLP_DLL_WTurb_WavesIrr_WavesMulti" "hydrodyn;offshore") hd_regression("hd_TaperCylinderPitchMoment" "hydrodyn;offshore") hd_regression("hd_NBodyMod1" "hydrodyn;offshore") hd_regression("hd_NBodyMod2" "hydrodyn;offshore") hd_regression("hd_NBodyMod3" "hydrodyn;offshore") - +hd_regression("hd_WaveStMod1" "hydrodyn;offshore") +hd_regression("hd_WaveStMod2" "hydrodyn;offshore") +hd_regression("hd_WaveStMod3" "hydrodyn;offshore") +hd_regression("hd_MHstLMod2" "hydrodyn;offshore") +hd_regression("hd_MHstLMod1_compare" "hydrodyn;offshore") +hd_regression("hd_MHstLMod2_compare" "hydrodyn;offshore") +hd_regression("hd_MCF_WaveStMod0" "hydrodyn;offshore") +hd_regression("hd_MCF_WaveStMod1" "hydrodyn;offshore") +hd_regression("hd_MCF_WaveStMod2" "hydrodyn;offshore") +hd_regression("hd_MCF_WaveStMod3" "hydrodyn;offshore") +hd_regression("hd_ExctnMod1_ExctnDisp1" "hydrodyn;offshore") +hd_regression("hd_ExctnMod1_ExctnDisp2" "hydrodyn;offshore") # Py-HydroDyn regression tests py_hd_regression("py_hd_5MW_OC4Semi_WSt_WavesWN" "hydrodyn;offshore;python") @@ -447,6 +458,11 @@ py_ifw_regression("py_ifw_turbsimff" "inflowwind;python seast_regression("seastate_1" "seastate") seast_regression("seastate_wavemod5" "seastate") seast_regression("seastate_wr_kin1" "seastate") +seast_regression("seastate_CNW1" "seastate") +seast_regression("seastate_CNW2" "seastate") +seast_regression("seastate_WaveMod7_WaveStMod1" "seastate") +seast_regression("seastate_WaveMod7_WaveStMod2" "seastate") +seast_regression("seastate_WaveMod7_WaveStMod3" "seastate") # MoorDyn regression tests md_regression("md_5MW_OC4Semi" "moordyn") diff --git a/reg_tests/r-test b/reg_tests/r-test index 38fcfe03c1..7e3ed6d74c 160000 --- a/reg_tests/r-test +++ b/reg_tests/r-test @@ -1 +1 @@ -Subproject commit 38fcfe03c10a7084afc41e4a1604d4fe7fee7601 +Subproject commit 7e3ed6d74c793360a3e147bbf1df2a7423384f59