Dear Dr. Jason
Load Case 3.8 - damage case 1: loss of one mooring line at fairlead (line 1).
The simulation length is 60 s before loss / 60 min after loss.
I have revised it according to your suggestion.
misc%FAIR_T(LEG) = 0*x%GLU(LEG,(p%NumElems+1)*p%NHBD-1)
misc%ANCH_T(LEG) = 0*x%GLU(LEG,p%NHBD-1)
Now, It can’t zero out loads of the fairlead at a given point in time.
Is the other code wrong?
[code] !----------------------------------------------------------------------------------------------------------------------------------
!> Routine for computing outputs, used in both loose and tight coupling.
SUBROUTINE FEAM_CalcOutput ( t, u, p, x, xd, z, OtherState, y, misc, ErrStat, ErrMsg )
!..
REAL(DbKi), INTENT(IN ) :: t ! Current simulation time in seconds
TYPE(FEAM_InputType), INTENT(IN ) :: u ! Inputs at t
TYPE(FEAM_ParameterType), INTENT(IN ) :: p ! Parameters
TYPE(FEAM_ContinuousStateType), INTENT(IN ) :: x ! Continuous states at t
TYPE(FEAM_DiscreteStateType), INTENT(IN ) :: xd ! Discrete states at t
TYPE(FEAM_ConstraintStateType), INTENT(IN ) :: z ! Constraint states at t
TYPE(FEAM_OtherStateType), INTENT(IN ) :: OtherState ! Other states at t
TYPE(FEAM_OutputType), INTENT(INOUT) :: y ! Outputs computed at t (Input only so that mesh con-
! nectivity information does not have to be recalculated)
TYPE(FEAM_MiscVarType), INTENT(INOUT) :: misc ! misc/optimization variables
INTEGER(IntKi), INTENT( OUT) :: ErrStat ! Error status of the operation
CHARACTER(*), INTENT( OUT) :: ErrMsg ! Error message if ErrStat /= ErrID_None
! Local variables
REAL(ReKi) :: AllOuts(MaxOutPts) ! All the the available output channels
INTEGER(IntKi) :: I,J ! Generic loop index
INTEGER(IntKi) :: LEG ! Generic index
REAL(ReKi) :: TEMP ! Temporary storage
! Initialize ErrStat
ErrStat = ErrID_None
ErrMsg = ""
DO LEG=1,p%NumLines
IF (t>=60 .AND. LEG==1) THEN
! Fairlead & Anchor tensions Output
misc%FAIR_T(LEG) = 0*x%GLU(LEG,(p%NumElems+1)*p%NHBD-1)
misc%ANCH_T(LEG) = 0*x%GLU(LEG,p%NHBD-1)
ELSE
misc%FAIR_T(LEG) = x%GLU(LEG,(p%NumElems+1)*p%NHBD-1)
misc%ANCH_T(LEG) = x%GLU(LEG,p%NHBD-1)
END IF
! Fairlead & Anchor angle output
DO I=1, p%NDIM
misc%FAIR_ANG(LEG,I) = x%GLU(LEG,p%NumElems*p%NHBD+I*2)
misc%ANCH_ANG(LEG,I) = x%GLU(LEG,I*2)
ENDDO
! Line element displacement & tangent vector output
DO I=1, p%NumElems+1
DO J=1, p%NDIM
misc%Line_Coordinate(LEG,I,J) = x%GLU(LEG,(I-1)*p%NHBD+J*2-1)
misc%Line_Tangent( LEG,I,J) = x%GLU(LEG,(I-1)*p%NHBD+J*2 )
ENDDO
ENDDO
! OtherState%FAST_RP is set in UpdateStates (FEAM_Solve); seems like we should just recalculate it here:
TEMP = SQRT(OtherState%FAST_RP(LEG,1)**2+OtherState%FAST_RP(LEG,2)**2+OtherState%FAST_RP(LEG,3)**2)
DO J=1,p%NDIM
misc%F_Lines(LEG,J) = misc%FAIR_T(LEG)*(-OtherState%FAST_RP(LEG,J)/TEMP)
END DO
ENDDO
DO i = 1,y%PtFairleadLoad%NNodes
y%PtFairleadLoad%Force(1,i) = misc%F_Lines(i,1)
y%PtFairleadLoad%Force(2,i) = misc%F_Lines(i,2)
y%PtFairleadLoad%Force(3,i) = misc%F_Lines(i,3)
END DO [/code]
Best Regards
Jason.Lai