module CBopProblemsVariables use CProblemDifinition implicit none public ! Input vars type(CProblem) :: AnnularWash type(CProblem) :: AnnularFail type(CProblem) :: AnnularLeak type(CProblem) :: UpperRamWash type(CProblem) :: UpperRamFail type(CProblem) :: UpperRamLeak type(CProblem) :: MiddleRamWash type(CProblem) :: MiddleRamFail type(CProblem) :: MiddleRamLeak type(CProblem) :: LowerRamWash type(CProblem) :: LowerRamFail type(CProblem) :: LowerRamLeak type(CProblem) :: AccumulatorPumpFail type(CProblem) :: AccumulatorPumpLeak type(CProblem) :: AccumulatorSystemFail type(CProblem) :: AccumulatorSystemLeak procedure (ActionInteger), pointer :: AnnularWashPtr procedure (ActionInteger), pointer :: AnnularFailPtr procedure (ActionInteger), pointer :: AnnularLeakPtr procedure (ActionInteger), pointer :: UpperRamWashPtr procedure (ActionInteger), pointer :: UpperRamFailPtr procedure (ActionInteger), pointer :: UpperRamLeakPtr procedure (ActionInteger), pointer :: MiddleRamWashPtr procedure (ActionInteger), pointer :: MiddleRamFailPtr procedure (ActionInteger), pointer :: MiddleRamLeakPtr procedure (ActionInteger), pointer :: LowerRamWashPtr procedure (ActionInteger), pointer :: LowerRamFailPtr procedure (ActionInteger), pointer :: LowerRamLeakPtr procedure (ActionInteger), pointer :: AccumulatorPumpFailPtr procedure (ActionInteger), pointer :: AccumulatorPumpLeakPtr procedure (ActionInteger), pointer :: AccumulatorSystemFailPtr procedure (ActionInteger), pointer :: AccumulatorSystemLeakPtr contains subroutine ProcessBopProblemsDueTime(time) implicit none integer :: time if(AnnularWash%ProblemType == Time_ProblemType) call ProcessDueTime(AnnularWash, ChangeAnnularWash, time) if(AnnularFail%ProblemType == Time_ProblemType) call ProcessDueTime(AnnularFail, ChangeAnnularFail, time) if(AnnularLeak%ProblemType == Time_ProblemType) call ProcessDueTime(AnnularLeak, ChangeAnnularLeak, time) if(UpperRamWash%ProblemType == Time_ProblemType) call ProcessDueTime(UpperRamWash, ChangeUpperRamWash, time) if(UpperRamFail%ProblemType == Time_ProblemType) call ProcessDueTime(UpperRamFail, ChangeUpperRamFail, time) if(UpperRamLeak%ProblemType == Time_ProblemType) call ProcessDueTime(UpperRamLeak, ChangeUpperRamLeak, time) if(MiddleRamWash%ProblemType == Time_ProblemType) call ProcessDueTime(MiddleRamWash, ChangeMiddleRamWash, time) if(MiddleRamFail%ProblemType == Time_ProblemType) call ProcessDueTime(MiddleRamFail, ChangeMiddleRamFail, time) if(MiddleRamLeak%ProblemType == Time_ProblemType) call ProcessDueTime(MiddleRamLeak, ChangeMiddleRamLeak, time) if(LowerRamWash%ProblemType == Time_ProblemType) call ProcessDueTime(LowerRamWash, ChangeLowerRamWash, time) if(LowerRamFail%ProblemType == Time_ProblemType) call ProcessDueTime(LowerRamFail, ChangeLowerRamFail, time) if(LowerRamLeak%ProblemType == Time_ProblemType) call ProcessDueTime(LowerRamLeak, ChangeLowerRamLeak, time) if(AccumulatorPumpFail%ProblemType == Time_ProblemType) call ProcessDueTime(AccumulatorPumpFail, ChangeAccumulatorPumpFail, time) if(AccumulatorPumpLeak%ProblemType == Time_ProblemType) call ProcessDueTime(AccumulatorPumpLeak, ChangeAccumulatorPumpLeak, time) if(AccumulatorSystemFail%ProblemType == Time_ProblemType) call ProcessDueTime(AccumulatorSystemFail, ChangeAccumulatorSystemFail, time) if(AccumulatorSystemLeak%ProblemType == Time_ProblemType) call ProcessDueTime(AccumulatorSystemLeak, ChangeAccumulatorSystemLeak, time) end subroutine subroutine ProcessBopProblemsDuePumpStrokes(strokes) implicit none integer :: strokes if(AnnularWash%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AnnularWash, ChangeAnnularWash, strokes) if(AnnularFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AnnularFail, ChangeAnnularFail, strokes) if(AnnularLeak%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AnnularLeak, ChangeAnnularLeak, strokes) if(UpperRamWash%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(UpperRamWash, ChangeUpperRamWash, strokes) if(UpperRamFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(UpperRamFail, ChangeUpperRamFail, strokes) if(UpperRamLeak%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(UpperRamLeak, ChangeUpperRamLeak, strokes) if(MiddleRamWash%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(MiddleRamWash, ChangeMiddleRamWash, strokes) if(MiddleRamFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(MiddleRamFail, ChangeMiddleRamFail, strokes) if(MiddleRamLeak%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(MiddleRamLeak, ChangeMiddleRamLeak, strokes) if(LowerRamWash%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(LowerRamWash, ChangeLowerRamWash, strokes) if(LowerRamFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(LowerRamFail, ChangeLowerRamFail, strokes) if(LowerRamLeak%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(LowerRamLeak, ChangeLowerRamLeak, strokes) if(AccumulatorPumpFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AccumulatorPumpFail, ChangeAccumulatorPumpFail, strokes) if(AccumulatorPumpLeak%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AccumulatorPumpLeak, ChangeAccumulatorPumpLeak, strokes) if(AccumulatorSystemFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AccumulatorSystemFail, ChangeAccumulatorSystemFail, strokes) if(AccumulatorSystemLeak%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AccumulatorSystemLeak, ChangeAccumulatorSystemLeak, strokes) end subroutine subroutine ProcessBopProblemsDueVolumePumped(volume) implicit none real(8) :: volume if(AnnularWash%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AnnularWash, ChangeAnnularWash, volume) if(AnnularFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AnnularFail, ChangeAnnularFail, volume) if(AnnularLeak%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AnnularLeak, ChangeAnnularLeak, volume) if(UpperRamWash%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(UpperRamWash, ChangeUpperRamWash, volume) if(UpperRamFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(UpperRamFail, ChangeUpperRamFail, volume) if(UpperRamLeak%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(UpperRamLeak, ChangeUpperRamLeak, volume) if(MiddleRamWash%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(MiddleRamWash, ChangeMiddleRamWash, volume) if(MiddleRamFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(MiddleRamFail, ChangeMiddleRamFail, volume) if(MiddleRamLeak%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(MiddleRamLeak, ChangeMiddleRamLeak, volume) if(LowerRamWash%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(LowerRamWash, ChangeLowerRamWash, volume) if(LowerRamFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(LowerRamFail, ChangeLowerRamFail, volume) if(LowerRamLeak%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(LowerRamLeak, ChangeLowerRamLeak, volume) if(AccumulatorPumpFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AccumulatorPumpFail, ChangeAccumulatorPumpFail, volume) if(AccumulatorPumpLeak%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AccumulatorPumpLeak, ChangeAccumulatorPumpLeak, volume) if(AccumulatorSystemFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AccumulatorSystemFail, ChangeAccumulatorSystemFail,volume) if(AccumulatorSystemLeak%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AccumulatorSystemLeak, ChangeAccumulatorSystemLeak, volume) end subroutine subroutine ProcessBopProblemsDueDistanceDrilled(distance) implicit none real(8) :: distance if(AnnularWash%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AnnularWash, ChangeAnnularWash, distance) if(AnnularFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AnnularFail, ChangeAnnularFail, distance) if(AnnularLeak%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AnnularLeak, ChangeAnnularLeak, distance) if(UpperRamWash%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(UpperRamWash, ChangeUpperRamWash, distance) if(UpperRamFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(UpperRamFail, ChangeUpperRamFail, distance) if(UpperRamLeak%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(UpperRamLeak, ChangeUpperRamLeak, distance) if(MiddleRamWash%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(MiddleRamWash, ChangeMiddleRamWash, distance) if(MiddleRamFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(MiddleRamFail, ChangeMiddleRamFail, distance) if(MiddleRamLeak%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(MiddleRamLeak, ChangeMiddleRamLeak, distance) if(LowerRamWash%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(LowerRamWash, ChangeLowerRamWash, distance) if(LowerRamFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(LowerRamFail, ChangeLowerRamFail, distance) if(LowerRamLeak%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(LowerRamLeak, ChangeLowerRamLeak, distance) if(AccumulatorPumpFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AccumulatorPumpFail, ChangeAccumulatorPumpFail, distance) if(AccumulatorPumpLeak%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AccumulatorPumpLeak, ChangeAccumulatorPumpLeak, distance) if(AccumulatorSystemFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AccumulatorSystemFail, ChangeAccumulatorSystemFail, distance) if(AccumulatorSystemLeak%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AccumulatorSystemLeak, ChangeAccumulatorSystemLeak, distance) end subroutine subroutine ChangeAnnularWash(status) implicit none integer, intent (in) :: status if(associated(AnnularWashPtr)) call AnnularWashPtr(status) !if(status == Clear_StatusType) print*,'On_AnnularWash_Clear' !if(status == Executed_StatusType) print*,'On_AnnularWash_Execute' endsubroutine subroutine ChangeAnnularFail(status) USE VARIABLES implicit none integer, intent (in) :: status if(associated(AnnularFailPtr)) call AnnularFailPtr(status) if(status == Clear_StatusType) AnnularFailureMalf = 0 if(status == Executed_StatusType) AnnularFailureMalf = 1 endsubroutine subroutine ChangeAnnularLeak(status) USE VARIABLES implicit none integer, intent (in) :: status if(associated(AnnularLeakPtr)) call AnnularLeakPtr(status) if(status == Clear_StatusType) AnnularLeakMalf = 0 if(status == Executed_StatusType) AnnularLeakMalf = 1 endsubroutine subroutine ChangeUpperRamWash(status) implicit none integer, intent (in) :: status if(associated(UpperRamWashPtr)) call UpperRamWashPtr(status) !if(status == Clear_StatusType) print*,'On_UpperRamWash_Clear' !if(status == Executed_StatusType) print*,'On_UpperRamWash_Execute' endsubroutine subroutine ChangeUpperRamFail(status) USE VARIABLES implicit none integer, intent (in) :: status if(associated(UpperRamFailPtr)) call UpperRamFailPtr(status) if(status == Clear_StatusType) UpperRamsFailureMalf = 0 if(status == Executed_StatusType) UpperRamsFailureMalf = 1 endsubroutine subroutine ChangeUpperRamLeak(status) USE VARIABLES implicit none integer, intent (in) :: status if(associated(UpperRamLeakPtr)) call UpperRamLeakPtr(status) if(status == Clear_StatusType) UpperRamsLeakMalf = 0 if(status == Executed_StatusType) UpperRamsLeakMalf = 1 endsubroutine subroutine ChangeMiddleRamWash(status) implicit none integer, intent (in) :: status if(associated(MiddleRamWashPtr)) call MiddleRamWashPtr(status) !if(status == Clear_StatusType) print*,'On_MiddleRamWash_Clear' !if(status == Executed_StatusType) print*,'On_MiddleRamWash_Execute' endsubroutine subroutine ChangeMiddleRamFail(status) USE VARIABLES implicit none integer, intent (in) :: status if(associated(MiddleRamFailPtr)) call MiddleRamFailPtr(status) if(status == Clear_StatusType) MiddleRamsFailureMalf = 0 if(status == Executed_StatusType) MiddleRamsFailureMalf = 1 endsubroutine subroutine ChangeMiddleRamLeak(status) USE VARIABLES implicit none integer, intent (in) :: status if(associated(MiddleRamLeakPtr)) call MiddleRamLeakPtr(status) if(status == Clear_StatusType) MiddleRamsLeakMalf = 0 if(status == Executed_StatusType) MiddleRamsLeakMalf = 1 endsubroutine subroutine ChangeLowerRamWash(status) implicit none integer, intent (in) :: status if(associated(LowerRamWashPtr)) call LowerRamWashPtr(status) !if(status == Clear_StatusType) print*,'On_LowerRamWash_Clear' !if(status == Executed_StatusType) print*,'On_LowerRamWash_Execute' endsubroutine subroutine ChangeLowerRamFail(status) USE VARIABLES implicit none integer, intent (in) :: status if(associated(LowerRamFailPtr)) call LowerRamFailPtr(status) if(status == Clear_StatusType) LowerRamsFailureMalf = 0 if(status == Executed_StatusType) LowerRamsFailureMalf = 1 endsubroutine subroutine ChangeLowerRamLeak(status) USE VARIABLES implicit none integer, intent (in) :: status if(associated(LowerRamLeakPtr)) call LowerRamLeakPtr(status) if(status == Clear_StatusType) LowerRamsLeakMalf = 0 if(status == Executed_StatusType) LowerRamsLeakMalf = 1 endsubroutine subroutine ChangeAccumulatorPumpFail(status) USE VARIABLES implicit none integer, intent (in) :: status if(associated(AccumulatorPumpFailPtr)) call AccumulatorPumpFailPtr(status) if(status == Clear_StatusType) AccPupmsFailMalf = 0 if(status == Executed_StatusType) AccPupmsFailMalf = 1 endsubroutine subroutine ChangeAccumulatorPumpLeak(status) implicit none integer, intent (in) :: status if(associated(AccumulatorPumpLeakPtr)) call AccumulatorPumpLeakPtr(status) !if(status == Clear_StatusType) print*,'On_AccumulatorPumpLeak_Clear' !if(status == Executed_StatusType) print*,'On_AccumulatorPumpLeak_Execute' endsubroutine subroutine ChangeAccumulatorSystemFail(status) implicit none integer, intent (in) :: status if(associated(AccumulatorSystemFailPtr)) call AccumulatorSystemFailPtr(status) !if(status == Clear_StatusType) print*,'On_AccumulatorSystemFail_Clear' !if(status == Executed_StatusType) print*,'On_AccumulatorSystemFail_Execute' endsubroutine subroutine ChangeAccumulatorSystemLeak(status) implicit none integer, intent (in) :: status if(associated(AccumulatorSystemLeakPtr)) call AccumulatorSystemLeakPtr(status) !if(status == Clear_StatusType) print*,'On_AccumulatorSystemLeak_Clear' !if(status == Executed_StatusType) print*,'On_AccumulatorSystemLeak_Execute' endsubroutine subroutine SubscribeAnnularWash(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAnnularWash !DEC$ ATTRIBUTES ALIAS: 'SubscribeAnnularWash' :: SubscribeAnnularWash implicit none procedure (ActionInteger) :: v AnnularWashPtr => v end subroutine subroutine SubscribeAnnularFail(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAnnularFail !DEC$ ATTRIBUTES ALIAS: 'SubscribeAnnularFail' :: SubscribeAnnularFail implicit none procedure (ActionInteger) :: v AnnularFailPtr => v end subroutine subroutine SubscribeAnnularLeak(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAnnularLeak !DEC$ ATTRIBUTES ALIAS: 'SubscribeAnnularLeak' :: SubscribeAnnularLeak implicit none procedure (ActionInteger) :: v AnnularLeakPtr => v end subroutine subroutine SubscribeUpperRamWash(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeUpperRamWash !DEC$ ATTRIBUTES ALIAS: 'SubscribeUpperRamWash' :: SubscribeUpperRamWash implicit none procedure (ActionInteger) :: v UpperRamWashPtr => v end subroutine subroutine SubscribeUpperRamFail(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeUpperRamFail !DEC$ ATTRIBUTES ALIAS: 'SubscribeUpperRamFail' :: SubscribeUpperRamFail implicit none procedure (ActionInteger) :: v UpperRamFailPtr => v end subroutine subroutine SubscribeUpperRamLeak(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeUpperRamLeak !DEC$ ATTRIBUTES ALIAS: 'SubscribeUpperRamLeak' :: SubscribeUpperRamLeak implicit none procedure (ActionInteger) :: v UpperRamLeakPtr => v end subroutine subroutine SubscribeMiddleRamWash(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMiddleRamWash !DEC$ ATTRIBUTES ALIAS: 'SubscribeMiddleRamWash' :: SubscribeMiddleRamWash implicit none procedure (ActionInteger) :: v MiddleRamWashPtr => v end subroutine subroutine SubscribeMiddleRamFail(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMiddleRamFail !DEC$ ATTRIBUTES ALIAS: 'SubscribeMiddleRamFail' :: SubscribeMiddleRamFail implicit none procedure (ActionInteger) :: v MiddleRamFailPtr => v end subroutine subroutine SubscribeMiddleRamLeak(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMiddleRamLeak !DEC$ ATTRIBUTES ALIAS: 'SubscribeMiddleRamLeak' :: SubscribeMiddleRamLeak implicit none procedure (ActionInteger) :: v MiddleRamLeakPtr => v end subroutine subroutine SubscribeLowerRamWash(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLowerRamWash !DEC$ ATTRIBUTES ALIAS: 'SubscribeLowerRamWash' :: SubscribeLowerRamWash implicit none procedure (ActionInteger) :: v LowerRamWashPtr => v end subroutine subroutine SubscribeLowerRamFail(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLowerRamFail !DEC$ ATTRIBUTES ALIAS: 'SubscribeLowerRamFail' :: SubscribeLowerRamFail implicit none procedure (ActionInteger) :: v LowerRamFailPtr => v end subroutine subroutine SubscribeLowerRamLeak(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLowerRamLeak !DEC$ ATTRIBUTES ALIAS: 'SubscribeLowerRamLeak' :: SubscribeLowerRamLeak implicit none procedure (ActionInteger) :: v LowerRamLeakPtr => v end subroutine subroutine SubscribeAccumulatorPumpFail(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAccumulatorPumpFail !DEC$ ATTRIBUTES ALIAS: 'SubscribeAccumulatorPumpFail' :: SubscribeAccumulatorPumpFail implicit none procedure (ActionInteger) :: v AccumulatorPumpFailPtr => v end subroutine subroutine SubscribeAccumulatorPumpLeak(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAccumulatorPumpLeak !DEC$ ATTRIBUTES ALIAS: 'SubscribeAccumulatorPumpLeak' :: SubscribeAccumulatorPumpLeak implicit none procedure (ActionInteger) :: v AccumulatorPumpLeakPtr => v end subroutine subroutine SubscribeAccumulatorSystemFail(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAccumulatorSystemFail !DEC$ ATTRIBUTES ALIAS: 'SubscribeAccumulatorSystemFail' :: SubscribeAccumulatorSystemFail implicit none procedure (ActionInteger) :: v AccumulatorSystemFailPtr => v end subroutine subroutine SubscribeAccumulatorSystemLeak(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAccumulatorSystemLeak !DEC$ ATTRIBUTES ALIAS: 'SubscribeAccumulatorSystemLeak' :: SubscribeAccumulatorSystemLeak implicit none procedure (ActionInteger) :: v AccumulatorSystemLeakPtr => v end subroutine end module CBopProblemsVariables