module ChokeLineMain implicit none public contains subroutine ChokeLine_Setup() use CSimulationVariables implicit none call OnSimulationInitialization%Add(ChokeLine_Init) call OnSimulationStop%Add(ChokeLine_Init) call OnChokeLineStep%Add(ChokeLine_Step) call OnChokeLineOutput%Add(ChokeLine_Output) call OnChokeLineMain%Add(ChokeLineMainBody) end subroutine subroutine ChokeLine_Init implicit none end subroutine ChokeLine_Init subroutine ChokeLine_Step CALL CHOKE_LINE end subroutine ChokeLine_Step subroutine ChokeLine_Output implicit none end subroutine ChokeLine_Output subroutine ChokeLineMainBody USE ifport USE ifmt USE CSimulationVariables ! USE BOP implicit none INTEGER :: ChokeLineDuration integer,dimension(8) :: ChokeLineStartTime , ChokeLineEndTime ! CALL BOP_StartUp() loop1: DO CALL DATE_AND_TIME(values=ChokeLineStartTime) CALL CHOKE_LINE CALL DATE_AND_TIME(values=chokeLineEndTime) chokeLineDuration = 3600000 * (chokeLineEndTime(5) - chokeLineStartTime(5)) + 60000 * (chokeLineEndTime(6) - chokeLineStartTime(6)) + 1000 * (chokeLineEndTime(7) - chokeLineStartTime(7)) + (chokeLineEndTime(8) - chokeLineStartTime(8)) if (chokeLineDuration < 100) then call sleepqq(100 - chokeLineDuration) ELSE WRITE (*,*) 'chokeLine BOP run duration exceeded 100 ms and =', chokeLineDuration end if IF (IsStopped==.true.) THEN EXIT loop1 ENDIF ENDDO loop1 ! CALL DEALLOCATE_ARRAYS() end subroutine ChokeLineMainBody end module ChokeLineMain