Simulation Core
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

189 lines
7.3 KiB

  1. module CChokeControlPanel
  2. use CChokeControlPanelVariables
  3. use SimulationVariables
  4. implicit none
  5. public
  6. contains
  7. subroutine CChokeToJson(parent)
  8. type(json_value),pointer :: parent
  9. type(json_core) :: json
  10. type(json_value),pointer :: p
  11. ! 1. create new node
  12. call json%create_object(p,'CChoke')
  13. call json%add(p,"ChokePanelPumpSelectorSwitch",data%Equipments%ContolPanel%CChoke%ChokePanelPumpSelectorSwitch)
  14. call json%add(p,"ChokePanelStrokeResetSwitch",data%Equipments%ContolPanel%CChoke%ChokePanelStrokeResetSwitch)
  15. call json%add(p,"ChokeSelectorSwitch",data%Equipments%ContolPanel%CChoke%ChokeSelectorSwitch)
  16. call json%add(p,"ChokeRateControlKnob",data%Equipments%ContolPanel%CChoke%ChokeRateControlKnob)
  17. call json%add(p,"ChokeControlLever",data%Equipments%ContolPanel%CChoke%ChokeControlLever)
  18. call json%add(p,"ChokePanelRigAirSwitch",data%Equipments%ContolPanel%CChoke%ChokePanelRigAirSwitch)
  19. call json%add(p,"EnableAutoChoke",data%Equipments%ContolPanel%CChoke%EnableAutoChoke)
  20. call json%add(p,"StandPipePressure",data%Equipments%ContolPanel%CChoke%StandPipePressure)
  21. call json%add(p,"CasingPressure",data%Equipments%ContolPanel%CChoke%CasingPressure)
  22. call json%add(p,"ChokePosition",data%Equipments%ContolPanel%CChoke%ChokePosition)
  23. call json%add(p,"ChokePanelSPMCounter",data%Equipments%ContolPanel%CChoke%ChokePanelSPMCounter)
  24. call json%add(p,"ChokePanelTotalStrokeCounter",data%Equipments%ContolPanel%CChoke%ChokePanelTotalStrokeCounter)
  25. call json%add(p,"Choke1LED",data%Equipments%ContolPanel%CChoke%Choke1LED)
  26. call json%add(p,"Choke2LED",data%Equipments%ContolPanel%CChoke%Choke2LED)
  27. call json%add(parent,p)
  28. end subroutine
  29. ! Input routines
  30. subroutine SetChokePanelPumpSelectorSwitch(v)
  31. !DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelPumpSelectorSwitch
  32. !DEC$ ATTRIBUTES ALIAS: 'SetChokePanelPumpSelectorSwitch' :: SetChokePanelPumpSelectorSwitch
  33. implicit none
  34. integer, intent(in) :: v
  35. data%EquipmentControl%ChokeControlPanel%ChokePanelPumpSelectorSwitch = v
  36. #ifdef deb
  37. print*, 'ChokePanelPumpSelectorSwitch=', data%EquipmentControl%ChokeControlPanel%ChokePanelPumpSelectorSwitch
  38. #endif
  39. end subroutine
  40. subroutine SetChokePanelStrokeResetSwitch(v)
  41. !DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelStrokeResetSwitch
  42. !DEC$ ATTRIBUTES ALIAS: 'SetChokePanelStrokeResetSwitch' :: SetChokePanelStrokeResetSwitch
  43. implicit none
  44. logical, intent(in) :: v
  45. data%EquipmentControl%ChokeControlPanel%ChokePanelStrokeResetSwitch = v
  46. #ifdef deb
  47. print*, 'ChokePanelStrokeResetSwitch=', data%EquipmentControl%ChokeControlPanel%ChokePanelStrokeResetSwitch
  48. #endif
  49. end subroutine
  50. subroutine SetChokeSelectorSwitch(v)
  51. !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeSelectorSwitch
  52. !DEC$ ATTRIBUTES ALIAS: 'SetChokeSelectorSwitch' :: SetChokeSelectorSwitch
  53. implicit none
  54. logical, intent(in) :: v
  55. data%EquipmentControl%ChokeControlPanel%ChokeSelectorSwitch = v
  56. #ifdef deb
  57. print*, 'ChokeSelectorSwitch=', data%EquipmentControl%ChokeControlPanel%ChokeSelectorSwitch
  58. #endif
  59. end subroutine
  60. subroutine SetChokeRateControlKnob(v)
  61. !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeRateControlKnob
  62. !DEC$ ATTRIBUTES ALIAS: 'SetChokeRateControlKnob' :: SetChokeRateControlKnob
  63. implicit none
  64. real*8, intent(in) :: v
  65. !character(8) :: date
  66. !character(10) :: time
  67. !character(5) :: zone
  68. !integer,dimension(8) :: values
  69. data%EquipmentControl%ChokeControlPanel%ChokeRateControlKnob = v
  70. #ifdef deb
  71. !call date_and_time(date,time,zone,values)
  72. !!print '(a,2x,a,2x,a)', date, time, zone
  73. !print '(8i5)', values
  74. print*, 'ChokeRateControlKnob=', data%EquipmentControl%ChokeControlPanel%ChokeRateControlKnob
  75. #endif
  76. end subroutine
  77. subroutine SetChokeControlLever(v)
  78. !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeControlLever
  79. !DEC$ ATTRIBUTES ALIAS: 'SetChokeControlLever' :: SetChokeControlLever
  80. implicit none
  81. real*8, intent(in) :: v
  82. data%EquipmentControl%ChokeControlPanel%ChokeControlLever = v
  83. #ifdef deb
  84. print*, 'ChokeControlLever=', data%EquipmentControl%ChokeControlPanel%ChokeControlLever
  85. #endif
  86. end subroutine
  87. subroutine SetChokePanelRigAirSwitch(v)
  88. !DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelRigAirSwitch
  89. !DEC$ ATTRIBUTES ALIAS: 'SetChokePanelRigAirSwitch' :: SetChokePanelRigAirSwitch
  90. implicit none
  91. logical, intent(in) :: v
  92. data%EquipmentControl%ChokeControlPanel%ChokePanelRigAirSwitch = v
  93. #ifdef deb
  94. print*, 'ChokePanelRigAirSwitch=', data%EquipmentControl%ChokeControlPanel%ChokePanelRigAirSwitch
  95. #endif
  96. end subroutine
  97. subroutine SetEnableAutoChoke(v)
  98. !DEC$ ATTRIBUTES DLLEXPORT :: SetEnableAutoChoke
  99. !DEC$ ATTRIBUTES ALIAS: 'SetEnableAutoChoke' :: SetEnableAutoChoke
  100. implicit none
  101. logical, intent(in) :: v
  102. data%EquipmentControl%ChokeControlPanel%EnableAutoChoke = v
  103. #ifdef deb
  104. print*, 'EnableAutoChoke=', data%EquipmentControl%ChokeControlPanel%EnableAutoChoke
  105. #endif
  106. end subroutine
  107. ! Output routines
  108. real(8) function GetStandPipePressure()
  109. !DEC$ ATTRIBUTES DLLEXPORT :: GetStandPipePressure
  110. !DEC$ ATTRIBUTES ALIAS: 'GetStandPipePressure' :: GetStandPipePressure
  111. implicit none
  112. GetStandPipePressure = data%EquipmentControl%ChokeControlPanel%StandPipePressure
  113. end function
  114. real(8) function GetCasingPressure()
  115. !DEC$ ATTRIBUTES DLLEXPORT :: GetCasingPressure
  116. !DEC$ ATTRIBUTES ALIAS: 'GetCasingPressure' :: GetCasingPressure
  117. implicit none
  118. GetCasingPressure = data%EquipmentControl%ChokeControlPanel%CasingPressure
  119. end function
  120. real(8) function GetChokePosition()
  121. !DEC$ ATTRIBUTES DLLEXPORT :: GetChokePosition
  122. !DEC$ ATTRIBUTES ALIAS: 'GetChokePosition' :: GetChokePosition
  123. implicit none
  124. GetChokePosition = data%EquipmentControl%ChokeControlPanel%ChokePosition
  125. end function
  126. real(8) function GetChokePanelSPMCounter()
  127. !DEC$ ATTRIBUTES DLLEXPORT :: GetChokePanelSPMCounter
  128. !DEC$ ATTRIBUTES ALIAS: 'GetChokePanelSPMCounter' :: GetChokePanelSPMCounter
  129. implicit none
  130. !GetChokePanelSPMCounter = 0
  131. GetChokePanelSPMCounter = data%EquipmentControl%ChokeControlPanel%ChokePanelSPMCounter
  132. end function
  133. real(8) function GetChokePanelTotalStrokeCounter()
  134. !DEC$ ATTRIBUTES DLLEXPORT :: GetChokePanelTotalStrokeCounter
  135. !DEC$ ATTRIBUTES ALIAS: 'GetChokePanelTotalStrokeCounter' :: GetChokePanelTotalStrokeCounter
  136. implicit none
  137. !GetChokePanelTotalStrokeCounter = 0
  138. GetChokePanelTotalStrokeCounter = data%EquipmentControl%ChokeControlPanel%ChokePanelTotalStrokeCounter
  139. end function
  140. integer function GetChoke1LED()
  141. !DEC$ ATTRIBUTES DLLEXPORT :: GetChoke1LED
  142. !DEC$ ATTRIBUTES ALIAS: 'GetChoke1LED' :: GetChoke1LED
  143. implicit none
  144. GetChoke1LED = data%EquipmentControl%ChokeControlPanel%Choke1LED
  145. end function
  146. integer function GetChoke2LED()
  147. !DEC$ ATTRIBUTES DLLEXPORT :: GetChoke2LED
  148. !DEC$ ATTRIBUTES ALIAS: 'GetChoke2LED' :: GetChoke2LED
  149. implicit none
  150. GetChoke2LED = data%EquipmentControl%ChokeControlPanel%Choke2LED
  151. end function
  152. end module CChokeControlPanel