diff --git a/modules/openfast-library/src/FAST_Subs.f90 b/modules/openfast-library/src/FAST_Subs.f90 index 62530aab12..c7b1cb9df5 100644 --- a/modules/openfast-library/src/FAST_Subs.f90 +++ b/modules/openfast-library/src/FAST_Subs.f90 @@ -834,7 +834,18 @@ SUBROUTINE FAST_InitializeAll( t_initial, p_FAST, y_FAST, m_FAST, ED, BD, SrvD, CALL HydroDyn_Init( Init%InData_HD, HD%Input(1), HD%p, HD%x(STATE_CURR), HD%xd(STATE_CURR), HD%z(STATE_CURR), & HD%OtherSt(STATE_CURR), HD%y, HD%m, p_FAST%dt_module( MODULE_HD ), Init%OutData_HD, ErrStat2, ErrMsg2 ) CALL SetErrStat(ErrStat2,ErrMsg2,ErrStat,ErrMsg,RoutineName) - + ! 1) Nullify the HD Init Input pointers (do this now in case HD_Init failed) + ! 2) Now, when HydroDyn_DestroyInitInput is called and hence SeaState_DestroyInitOutput, we will not deallocate data which is still in use because the is associated test will fail. + nullify(Init%InData_HD%WaveElevC0) + nullify(Init%InData_HD%WaveDirArr) + nullify(Init%InData_HD%WaveDynP) + nullify(Init%InData_HD%WaveAcc) + nullify(Init%InData_HD%WaveVel) + nullify(Init%InData_HD%WaveTime) + nullify(Init%InData_HD%WaveElev1) + nullify(Init%InData_HD%WaveElev2) + + ! If HD_Init failed, cleanup and exit IF (ErrStat >= AbortErrLev) THEN CALL Cleanup() RETURN @@ -862,19 +873,6 @@ SUBROUTINE FAST_InitializeAll( t_initial, p_FAST, y_FAST, m_FAST, ED, BD, SrvD, if (allocated(Init%OutData_HD%WriteOutputHdr)) y_FAST%Lin%Modules(MODULE_HD)%Instance(1)%NumOutputs = size(Init%OutData_HD%WriteOutputHdr) end if - ! 1) Nullify the HD Init Input pointers - ! 2) Now, when HydroDyn_DestroyInitInput is called and hence SeaState_DestroyInitOutput, we will not deallocate data which is still in use because the is associated test will fail. - - nullify(Init%InData_HD%WaveElevC0) - nullify(Init%InData_HD%WaveDirArr) - nullify(Init%InData_HD%WaveDynP) - nullify(Init%InData_HD%WaveAcc) - nullify(Init%InData_HD%WaveVel) - nullify(Init%InData_HD%WaveTime) - nullify(Init%InData_HD%WaveElev1) - nullify(Init%InData_HD%WaveElev2) - - IF (ErrStat >= AbortErrLev) THEN CALL Cleanup() RETURN