# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/Problems/CHoistingProblems.f90" module CHoistingProblems use SimulationVariables implicit none public contains subroutine HoistingProblemsFromJson(parent) type(json_value),pointer :: parent type(json_core) :: json type(json_value),pointer :: p call json%get(parent,'HoistingProblems',p) call ProblemFromJson(p,"MotorFail",data%problems%HoistingProblems%MotorFail) call ProblemFromJson(p,"ClutchEngage",data%problems%HoistingProblems%ClutchEngage) call ProblemFromJson(p,"ClutchDisengage",data%problems%HoistingProblems%ClutchDisengage) end subroutine subroutine HoistingProblemsToJson(parent) type(json_value),pointer :: parent type(json_core) :: json type(json_value),pointer :: p ! 1. create new node call json%create_object(p,'HoistingProblems') ! 2. add member of data type to new node call ProblemToJson(p,"MotorFail",data%problems%HoistingProblems%MotorFail) call ProblemToJson(p,"ClutchEngage",data%problems%HoistingProblems%ClutchEngage) call ProblemToJson(p,"ClutchDisengage",data%problems%HoistingProblems%ClutchDisengage) ! 3. add new node to parent call json%add(parent,p) end subroutine subroutine ProcessHoistingProblemsDueTime(time) implicit none integer :: time if(data%problems%HoistingProblems%MotorFail%ProblemType == Time_ProblemType) call ProcessDueTime(data%problems%HoistingProblems%MotorFail, ChangeMotorFail, time) if(data%problems%HoistingProblems%ClutchEngage%ProblemType == Time_ProblemType) call ProcessDueTime(data%problems%HoistingProblems%ClutchEngage, ChangeClutchEngage, time) if(data%problems%HoistingProblems%ClutchDisengage%ProblemType == Time_ProblemType) call ProcessDueTime(data%problems%HoistingProblems%ClutchDisengage, ChangeClutchDisengage, time) end subroutine subroutine ProcessHoistingProblemsDuePumpStrokes(strokes) implicit none integer :: strokes if(data%problems%HoistingProblems%MotorFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(data%problems%HoistingProblems%MotorFail, ChangeMotorFail, strokes) if(data%problems%HoistingProblems%ClutchEngage%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(data%problems%HoistingProblems%ClutchEngage, ChangeClutchEngage, strokes) if(data%problems%HoistingProblems%ClutchDisengage%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(data%problems%HoistingProblems%ClutchDisengage, ChangeClutchDisengage, strokes) end subroutine subroutine ProcessHoistingProblemsDueVolumePumped(volume) implicit none real(8) :: volume if(data%problems%HoistingProblems%MotorFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(data%problems%HoistingProblems%MotorFail, ChangeMotorFail, volume) if(data%problems%HoistingProblems%ClutchEngage%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(data%problems%HoistingProblems%ClutchEngage, ChangeClutchEngage, volume) if(data%problems%HoistingProblems%ClutchDisengage%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(data%problems%HoistingProblems%ClutchDisengage, ChangeClutchDisengage, volume) end subroutine subroutine ProcessHoistingProblemsDueDistanceDrilled(distance) implicit none real(8) :: distance if(data%problems%HoistingProblems%MotorFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(data%problems%HoistingProblems%MotorFail, ChangeMotorFail, distance) if(data%problems%HoistingProblems%ClutchEngage%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(data%problems%HoistingProblems%ClutchEngage, ChangeClutchEngage, distance) if(data%problems%HoistingProblems%ClutchDisengage%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(data%problems%HoistingProblems%ClutchDisengage, ChangeClutchDisengage, distance) end subroutine subroutine ChangeMotorFail(status) use SimulationVariables !@ implicit none integer, intent (in) :: status ! if(associated(MotorFailPtr)) call MotorFailPtr(status) if(status == Clear_StatusType) data%State%Drawworks%MotorFaileMalf=0 if(status == Executed_StatusType) data%State%Drawworks%MotorFaileMalf=1 endsubroutine subroutine ChangeClutchEngage(status) use SimulationVariables !@ implicit none integer, intent (in) :: status ! if(associated(ClutchEngagePtr)) call ClutchEngagePtr(status) if(status == Clear_StatusType) data%State%Drawworks%ClutchEngageMalf=0 if(status == Executed_StatusType) data%State%Drawworks%ClutchEngageMalf=1 endsubroutine subroutine ChangeClutchDisengage(status) use SimulationVariables !@ implicit none integer, intent (in) :: status ! if(associated(ClutchDisengagePtr)) call ClutchDisengagePtr(status) if(status == Clear_StatusType) data%State%Drawworks%ClutchDisengageMalf=0 if(status == Executed_StatusType) data%State%Drawworks%ClutchDisengageMalf=1 endsubroutine end module CHoistingProblems