module PipeRams2Main implicit none public contains ! subroutine PipeRams2_Setup() ! ! use CSimulationVariables ! implicit none ! call OnSimulationInitialization%Add(PipeRams2_Init) ! call OnSimulationStop%Add(PipeRams2_Init) ! call OnPipeRams2Step%Add(PipeRams2_Step) ! call OnPipeRams2Output%Add(PipeRams2_Output) ! call OnPipeRams2Main%Add(PipeRams2MainBody) ! end subroutine ! subroutine PipeRams2_Init ! implicit none ! end subroutine PipeRams2_Init subroutine PipeRams2_Step use VARIABLES implicit none if (PipeRam2%finished/=0) then call PIPE_RAMS2 if (PipeRam2%IsOpening .or. PipeRam2%IsClosing .or. RAM(3)%Bottles_Charged_MalfActive) then if(PipeRam2%finished==0) then call PIPE_RAMS2_SUB !only body of loop2 endif endif else call PIPE_RAMS2_SUB endif end subroutine PipeRams2_Step ! subroutine PipeRams2_Output ! implicit none ! end subroutine PipeRams2_Output ! subroutine PipeRams2MainBody ! USE ifport ! USE ifmt ! ! use CSimulationVariables ! ! USE BOP ! implicit none ! INTEGER :: PipeRam2Duration ! integer,dimension(8) :: PipeRam2StartTime , PipeRam2EndTime ! ! CALL BOP_StartUp() ! loop1: DO ! CALL DATE_AND_TIME(values=PipeRam2StartTime) ! CALL PIPE_RAMS2 ! CALL DATE_AND_TIME(values=PipeRam2EndTime) ! PipeRam2Duration = 3600000 * (PipeRam2EndTime(5) - PipeRam2StartTime(5)) + 60000 * (PipeRam2EndTime(6) - PipeRam2StartTime(6)) + 1000 * (PipeRam2EndTime(7) - PipeRam2StartTime(7)) + (PipeRam2EndTime(8) - PipeRam2StartTime(8)) ! if (PipeRam2Duration < 100) then ! call sleepqq(100 - PipeRam2Duration) ! ELSE ! WRITE (*,*) 'PipeRam2 BOP run duration exceeded 100 ms and =', PipeRam2Duration ! end if ! IF (IsStopped==.true.) THEN ! EXIT loop1 ! ENDIF ! ENDDO loop1 ! ! CALL DEALLOCATE_ARRAYS() ! end subroutine PipeRams2MainBody end module PipeRams2Main