Simulation Core
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

66 Zeilen
3.0 KiB

  1. module CRotaryProblems
  2. use SimulationVariables
  3. implicit none
  4. public
  5. contains
  6. subroutine ProcessRotaryProblemsDueTime(time)
  7. implicit none
  8. integer :: time
  9. if(data%problems%RotaryProblems%MotorFail%ProblemType == Time_ProblemType) call ProcessDueTime(data%problems%RotaryProblems%MotorFail, ChangeMotorFail, time)
  10. if(data%problems%RotaryProblems%OverideTorqueLimit%ProblemType == Time_ProblemType) call ProcessDueTime(data%problems%RotaryProblems%OverideTorqueLimit, ChangeOverideTorqueLimit, time)
  11. end subroutine
  12. subroutine ProcessRotaryProblemsDuePumpStrokes(strokes)
  13. implicit none
  14. integer :: strokes
  15. if(data%problems%RotaryProblems%MotorFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(data%problems%RotaryProblems%MotorFail, ChangeMotorFail, strokes)
  16. if(data%problems%RotaryProblems%OverideTorqueLimit%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(data%problems%RotaryProblems%OverideTorqueLimit, ChangeOverideTorqueLimit, strokes)
  17. end subroutine
  18. subroutine ProcessRotaryProblemsDueVolumePumped(volume)
  19. implicit none
  20. real(8) :: volume
  21. if(data%problems%RotaryProblems%MotorFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(data%problems%RotaryProblems%MotorFail, ChangeMotorFail, volume)
  22. if(data%problems%RotaryProblems%OverideTorqueLimit%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(data%problems%RotaryProblems%OverideTorqueLimit, ChangeOverideTorqueLimit, volume)
  23. end subroutine
  24. subroutine ProcessRotaryProblemsDueDistanceDrilled(distance)
  25. implicit none
  26. real(8) :: distance
  27. if(data%problems%RotaryProblems%MotorFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(data%problems%RotaryProblems%MotorFail, ChangeMotorFail, distance)
  28. if(data%problems%RotaryProblems%OverideTorqueLimit%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(data%problems%RotaryProblems%OverideTorqueLimit, ChangeOverideTorqueLimit, distance)
  29. end subroutine
  30. subroutine ChangeMotorFail(status)
  31. use SimulationVariables !@
  32. implicit none
  33. integer, intent (in) :: status
  34. !if(associated(MotorFailPtr)) call MotorFailPtr(status)
  35. if(status == Clear_StatusType) data%State%RTable%MotorFaileMalf=0
  36. if(status == Executed_StatusType) data%State%RTable%MotorFaileMalf=1
  37. endsubroutine
  38. subroutine ChangeOverideTorqueLimit(status)
  39. use SimulationVariables !@
  40. implicit none
  41. integer, intent (in) :: status
  42. !if(associated(OverideTorqueLimitPtr)) call OverideTorqueLimitPtr(status)
  43. if(status == Clear_StatusType) data%State%RTable%OverideTorqueLimitMalf=0
  44. if(status == Executed_StatusType) data%State%RTable%OverideTorqueLimitMalf=1
  45. endsubroutine
  46. end module CRotaryProblems