Skip to content

Commit

Permalink
Implemented missing dU^{ED}/dy^{ED} terms related to HD and MAP
Browse files Browse the repository at this point in the history
  • Loading branch information
HaymanConsulting committed Dec 4, 2018
1 parent ece7c59 commit 371fd44
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions modules-local/openfast-library/src/FAST_Lin.f90
Original file line number Diff line number Diff line change
Expand Up @@ -2206,16 +2206,13 @@ SUBROUTINE Linear_ED_InputSolve_dy( p_FAST, y_FAST, u_ED, y_ED, y_AD, u_AD, BD,
ED_Start = Indx_u_ED_Hub_Start(u_ED, y_FAST) + u_ED%HubPtLoad%NNodes*3 ! start of u_ED%HubPtLoad%Moment field (skip forces)
DO k=1,p_FAST%nBeams
ED_Out_Start = Indx_y_ED_BladeRoot_Start(y_ED, y_FAST, k) ! start of y_ED%BladeRootMotion(k)%TranslationDisp field
CALL SumBlockMatrix( dUdy, MeshMapData%BD_P_2_ED_P(k)%dM%m_ud, ED_Start, ED_Out_Start)
call SumBlockMatrix( dUdy, MeshMapData%BD_P_2_ED_P(k)%dM%m_ud, ED_Start, ED_Out_Start)
END DO

END IF

! HD
!..........
! dU^{ED}/dy^{HD}
!..........
! LIN-TODO: Implement
! parts of dU^{ED}/dy^{HD} and dU^{ED}/dy^{ED}:
if ( p_FAST%CompHydro == Module_HD ) then ! HydroDyn-{ElastoDyn or SubDyn}

! we're just going to assume u_ED%PlatformPtMesh is committed
Expand All @@ -2228,9 +2225,17 @@ SUBROUTINE Linear_ED_InputSolve_dy( p_FAST, y_FAST, u_ED, y_ED, y_AD, u_AD, BD,
ED_Start = Indx_u_ED_Platform_Start(u_ED, y_FAST) ! start of u_ED%PlatformPtMesh%TranslationDisp field
call Assemble_dUdy_Loads(HD%y%AllHdroOrigin, u_ED%PlatformPtMesh, MeshMapData%HD_W_P_2_ED_P, ED_Start, HD_Out_Start, dUdy)
end if

! ED translation displacement-to-ED moment transfer (dU^{ED}/dy^{ED}):
ED_Start = Indx_u_ED_Platform_Start(u_ED, y_FAST) + u_ED%PlatformPtMesh%NNodes*3 ! start of u_ED%PlatformPtMesh%Moment field (skip the ED forces)
ED_Out_Start = Indx_y_ED_Platform_Start(y_ED, y_FAST) ! start of y_ED%PlatformPtMesh%TranslationDisp field
call SetBlockMatrix( dUdy, MeshMapData%HD_W_P_2_ED_P%dM%m_uD, ED_Start, ED_Out_Start )


end if

! MAP
! parts of dU^{ED}/dy^{MAP} and dU^{ED}/dy^{ED}:
if ( p_FAST%CompMooring == Module_MAP ) then
if ( MAPp%y%ptFairleadLoad%Committed ) then ! meshes for floating
!!! ! This linearization was done in forming dUdu (see Linear_ED_InputSolve_du()), so we don't need to re-calculate these matrices
Expand All @@ -2240,6 +2245,12 @@ SUBROUTINE Linear_ED_InputSolve_dy( p_FAST, y_FAST, u_ED, y_ED, y_AD, u_AD, BD,
ED_Start = Indx_u_ED_Platform_Start(u_ED, y_FAST) ! start of u_ED%PlatformPtMesh%TranslationDisp field
call Assemble_dUdy_Loads(MAPp%y%ptFairLeadLoad, u_ED%PlatformPtMesh, MeshMapData%Mooring_P_2_ED_P, ED_Start, MAP_Out_Start, dUdy)
end if

! ED translation displacement-to-ED moment transfer (dU^{ED}/dy^{ED}):
ED_Start = Indx_u_ED_Platform_Start(u_ED, y_FAST) + u_ED%PlatformPtMesh%NNodes*3 ! start of u_ED%PlatformPtMesh%Moment field (skip the ED forces)
ED_Out_Start = Indx_y_ED_Platform_Start(y_ED, y_FAST) ! start of y_ED%PlatformPtMesh%TranslationDisp field
call SumBlockMatrix( dUdy, MeshMapData%Mooring_P_2_ED_P%dM%m_uD, ED_Start, ED_Out_Start )

end if

END SUBROUTINE Linear_ED_InputSolve_dy
Expand Down

0 comments on commit 371fd44

Please sign in to comment.