module CMudTreatmentProblemsVariables use CProblemDifinition implicit none public ! Input vars type(CProblem) :: Degasser type(CProblem) :: ShaleShaker type(CProblem) :: Desander type(CProblem) :: Desilter procedure (ActionInteger), pointer :: DegasserPtr procedure (ActionInteger), pointer :: ShaleShakerPtr procedure (ActionInteger), pointer :: DesanderPtr procedure (ActionInteger), pointer :: DesilterPtr contains subroutine ProcessMudTreatmentProblemsDueTime(time) implicit none integer :: time if(Degasser%ProblemType == Time_ProblemType) call ProcessDueTime(Degasser, ChangeDegasser, time) if(ShaleShaker%ProblemType == Time_ProblemType) call ProcessDueTime(ShaleShaker, ChangeShaleShaker, time) if(Desander%ProblemType == Time_ProblemType) call ProcessDueTime(Desander, ChangeDesander, time) if(Desilter%ProblemType == Time_ProblemType) call ProcessDueTime(Desilter, ChangeDesilter, time) end subroutine subroutine ProcessMudTreatmentProblemsDuePumpStrokes(strokes) implicit none integer :: strokes if(Degasser%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Degasser, ChangeDegasser, strokes) if(ShaleShaker%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ShaleShaker, ChangeShaleShaker, strokes) if(Desander%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Desander, ChangeDesander, strokes) if(Desilter%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Desilter, ChangeDesilter, strokes) end subroutine subroutine ProcessMudTreatmentProblemsDueVolumePumped(volume) implicit none real(8) :: volume if(Degasser%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Degasser, ChangeDegasser, volume) if(ShaleShaker%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ShaleShaker, ChangeShaleShaker, volume) if(Desander%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Desander, ChangeDesander, volume) if(Desilter%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Desilter, ChangeDesilter, volume) end subroutine subroutine ProcessMudTreatmentProblemsDueDistanceDrilled(distance) implicit none real(8) :: distance if(Degasser%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Degasser, ChangeDegasser, distance) if(ShaleShaker%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ShaleShaker, ChangeShaleShaker, distance) if(Desander%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Desander, ChangeDesander, distance) if(Desilter%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Desilter, ChangeDesilter, distance) end subroutine subroutine ChangeDegasser(status) implicit none integer, intent (in) :: status if(associated(DegasserPtr)) call DegasserPtr(status) !if(status == Clear_StatusType) print*,'On_Degasser_Clear' !if(status == Executed_StatusType) print*,'On_Degasser_Execute' endsubroutine subroutine ChangeShaleShaker(status) implicit none integer, intent (in) :: status if(associated(ShaleShakerPtr)) call ShaleShakerPtr(status) !if(status == Clear_StatusType) print*,'On_ShaleShaker_Clear' !if(status == Executed_StatusType) print*,'On_ShaleShaker_Execute' endsubroutine subroutine ChangeDesander(status) implicit none integer, intent (in) :: status if(associated(DesanderPtr)) call DesanderPtr(status) !if(status == Clear_StatusType) print*,'On_Desander_Clear' !if(status == Executed_StatusType) print*,'On_Desander_Execute' endsubroutine subroutine ChangeDesilter(status) implicit none integer, intent (in) :: status if(associated(DesilterPtr)) call DesilterPtr(status) !if(status == Clear_StatusType) print*,'On_Desilter_Clear' !if(status == Executed_StatusType) print*,'On_Desilter_Execute' endsubroutine subroutine SubscribeDegasser(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeDegasser !DEC$ ATTRIBUTES ALIAS: 'SubscribeDegasser' :: SubscribeDegasser implicit none procedure (ActionInteger) :: v DegasserPtr => v end subroutine subroutine SubscribeShaleShaker(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeShaleShaker !DEC$ ATTRIBUTES ALIAS: 'SubscribeShaleShaker' :: SubscribeShaleShaker implicit none procedure (ActionInteger) :: v ShaleShakerPtr => v end subroutine subroutine SubscribeDesander(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeDesander !DEC$ ATTRIBUTES ALIAS: 'SubscribeDesander' :: SubscribeDesander implicit none procedure (ActionInteger) :: v DesanderPtr => v end subroutine subroutine SubscribeDesilter(v) !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeDesilter !DEC$ ATTRIBUTES ALIAS: 'SubscribeDesilter' :: SubscribeDesilter implicit none procedure (ActionInteger) :: v DesilterPtr => v end subroutine end module CMudTreatmentProblemsVariables