Simulation Core
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 
 
 

88 рядки
2.4 KiB

  1. module CKickProblemsVariables
  2. use CProblemDifinition
  3. implicit none
  4. public
  5. !constants
  6. integer :: Gas_FluidType = 0
  7. integer :: Oil_FluidType = 1
  8. integer :: Water_FluidType = 2
  9. ! Input vars
  10. type :: KickProblemsType
  11. type(CProblem) :: Kick
  12. integer :: FluidType
  13. integer :: FlowRate
  14. integer :: OverBalancePressure
  15. logical :: IsAutoMigrationRateSelected
  16. real(8) :: AutoMigrationRate
  17. end type KickProblemsType
  18. type(KickProblemsType)::KickProblems
  19. ! procedure (ActionInteger), pointer :: KickPtr
  20. contains
  21. subroutine ProcessKickProblemsDueTime(time)
  22. implicit none
  23. integer :: time
  24. if(KickProblems%Kick%ProblemType == Time_ProblemType) call ProcessDueTime(KickProblems%Kick, ChangeKick, time)
  25. end subroutine
  26. subroutine ProcessKickProblemsDuePumpStrokes(strokes)
  27. implicit none
  28. integer :: strokes
  29. if(KickProblems%Kick%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(KickProblems%Kick, ChangeKick, strokes)
  30. end subroutine
  31. subroutine ProcessKickProblemsDueVolumePumped(volume)
  32. implicit none
  33. real(8) :: volume
  34. if(KickProblems%Kick%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(KickProblems%Kick, ChangeKick, volume)
  35. end subroutine
  36. subroutine ProcessKickProblemsDueDistanceDrilled(distance)
  37. implicit none
  38. real(8) :: distance
  39. if(KickProblems%Kick%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(KickProblems%Kick, ChangeKick, distance)
  40. end subroutine
  41. subroutine ChangeKick(status)
  42. implicit none
  43. integer, intent (in) :: status
  44. ! if(associated(KickProblems%KickPtr)) call KickProblems%KickPtr(status)
  45. !if(status == Clear_StatusType) print*,'On_Kick_Clear'
  46. !if(status == Executed_StatusType) print*,'On_Kick_Execute'
  47. endsubroutine
  48. ! subroutine SubscribeKick(v)
  49. ! !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeKick
  50. ! !DEC$ ATTRIBUTES ALIAS: 'SubscribeKick' :: SubscribeKick
  51. ! implicit none
  52. ! procedure (ActionInteger) :: v
  53. ! KickProblems%KickPtr => v
  54. ! end subroutine
  55. end module CKickProblemsVariables