module AnnularMain
    implicit none
    public
    contains
    
    ! subroutine Annular_Setup()
    !     ! use CSimulationVariables
    !     implicit none
    !     call OnSimulationInitialization%Add(Annular_Init)
    !     call OnSimulationStop%Add(Annular_Init)
    !     call OnAnnularStep%Add(Annular_Step)
    !     call OnAnnularOutput%Add(Annular_Output)
    !     call OnAnnularMain%Add(AnnularMainBody)
    ! end subroutine
    
    ! subroutine Annular_Init
    !     implicit none
    ! end subroutine Annular_Init
    
    subroutine Annular_Step
        use VARIABLES
        implicit none
        if (finished_Annular/=0) then
            call ANNULAR
            if (AnnularIsOpening .or. AnnularIsClosing .or. RAM(1)%Bottles_Charged_MalfActive) then
                if(finished_Annular==0) then
                    call ANNULAR_SUB !only body of loop2
                endif
            endif
        else
            call ANNULAR_SUB
        endif        
    end subroutine Annular_Step
    
    ! subroutine Annular_Output
    !     implicit none
    ! end subroutine Annular_Output
    
    ! subroutine AnnularMainBody
    !     USE ifport
    !     USE ifmt
    !     ! use CSimulationVariables
    !   !  USE BOP
    !     implicit none  
        
    !     INTEGER :: AnnularDuration
    !     integer,dimension(8) :: AnnularStartTime , AnnularEndTime
        
    !    !     CALL BOP_StartUp()
    !     loop1: DO
    !         CALL DATE_AND_TIME(values=AnnularStartTime)
            
    !         CALL ANNULAR
            
    !         CALL DATE_AND_TIME(values=AnnularEndTime)
            
    !         AnnularDuration = 3600000 * (AnnularEndTime(5) - AnnularStartTime(5)) + 60000 * (AnnularEndTime(6) - AnnularStartTime(6)) + 1000 * (AnnularEndTime(7) - AnnularStartTime(7)) + (AnnularEndTime(8) - AnnularStartTime(8))
            
    !         if (AnnularDuration < 100) then
    !             call sleepqq(100 - AnnularDuration)
    !         ELSE
    !             WRITE (*,*) 'Annular BOP run duration exceeded 100 ms and =', AnnularDuration
    !         end if            
            
    !         IF (IsStopped==.true.) THEN
    !             EXIT loop1
    !         ENDIF
            

    !     ENDDO loop1 


        ! !    CALL DEALLOCATE_ARRAYS()
    ! end subroutine AnnularMainBody
    
end module AnnularMain