|
- module CManifolds
- use CStack
- use CArrangement
- ! use CPathChangeEvents
- ! use CDrillingConsoleVariables
- use SimulationVariables
- ! use ConfigurationVariables, only: EquipmentControl
-
- implicit none
-
- public
- integer, parameter :: ValveCount = 128
- integer, parameter :: MinSource = 71
- integer, parameter :: MaxSource = 90
- integer, parameter :: MinRelation = 91
- integer, parameter :: MaxRelation = 128
-
- Type::ManifoldType
- type(Arrangement) :: Valve(ValveCount)
- type(Path), allocatable :: OpenPaths(:)
- type(Stack) :: Fringe
- logical :: IsRepititveOutput
-
- logical :: IsSafetyValveInstalled
- logical :: IsSafetyValveInstalled_KellyMode
- logical :: IsSafetyValveInstalled_TripMode
- logical :: IsSafetyValveInstalled_TopDrive
- logical :: SafetyValve
- logical :: IsIBopInstalled
- logical :: IBop
- logical :: IsKellyCockInstalled
- logical :: KellyCock
- logical :: IsTopDriveIBopInstalled
- logical :: TopDriveIBop
- logical :: IsFloatValveInstalled
- logical :: FloatValve
- logical :: IsPathsDirty = .false.
- logical :: IsTraverse = .false.
- End type ManifoldType
- type(ManifoldType)::Manifold
- contains
-
- subroutine PathFinding_Setup()
- ! use CSimulationVariables
- implicit none
- Manifold%IsTraverse = .false.
- call Setup()
- !call OnSimulationInitialization%Add(PathFinding_Init)
- !call OnSimulationStop%Add(PathFinding_Init)
- !!**call OnpPathFindingStep%Add(PathFinding_Step)
- !!**call OnpPathFindingOutput%Add(PathFinding_Output)
- ! !**call OnpPathFindingMain%Add(PathFindingMainBody)
- end subroutine
-
- subroutine PathFinding_Init
- implicit none
- Manifold%IsTraverse = .false.
- call Setup()
- end subroutine PathFinding_Init
-
- subroutine PathFinding_Step
- if (Manifold%IsPathsDirty) then
- Manifold%IsPathsDirty = .false.
- call Traverse()
- endif
- end subroutine PathFinding_Step
-
- ! subroutine PathFinding_Output
- ! implicit none
- ! end subroutine PathFinding_Output
-
- ! subroutine PathFindingMainBody
- ! ! use CSimulationVariables
- ! implicit none
- ! loop : do
- ! if(IsStopped) call Quit()
- ! call sleepqq(50)
- ! if (Manifold%IsPathsDirty) then
- ! Manifold%IsPathsDirty = .false.
- ! call Traverse()
- ! endif
- ! end do loop
- ! end subroutine PathFindingMainBody
-
- subroutine Traverse()
- use CLog5
- implicit none
- integer :: i, Duration
- integer, dimension(8) :: StartTime,EndTime !TODO: clean up
- call DATE_AND_TIME(values=StartTime) !TODO: clean up
-
- !**call BeforeTraverse%RunAll()
-
-
- if(allocated(Manifold%OpenPaths)) deallocate(Manifold%OpenPaths)
- do i=MinSource, MaxSource
- if(IsValveOpen(i)) then
- call AddRootNode(i)
- call AddChildren(Manifold%Valve(i))
- endif
- enddo
-
- call PostProcess(Manifold%OpenPaths)
-
- !**call AfterTraverse%RunAll()
-
- Manifold%IsTraverse = .true.
-
- !TODO: clean up
- #ifdef Log5
- CALL DATE_AND_TIME(values=EndTime)
- Duration= EndTime(8) - StartTime(8)
- !print*, 'Duration= ', Duration, 'ms'
- call Log_5('Duration= ', Duration)
- call DisplayOpenPaths()
-
- call Log_5('==========================================')
- #endif
-
- endsubroutine
-
- subroutine PostProcess(pathArr)
- implicit none
- type(Path), allocatable, intent(inout) :: pathArr(:)
- integer :: i
-
- if(.not.allocated(pathArr)) return
-
- i = 1
- do
- call pathArr(i)%Purge(MinRelation, MaxRelation)
-
- if(pathArr(i)%Length() <= 2) then
- call RemovePath(pathArr, i)
- else
- i = i + 1
- endif
-
- if(i > size(pathArr)) exit
- enddo
-
- end subroutine
-
- subroutine AddRootNode(valve)
- implicit none
- integer, intent(in) :: valve
- call Manifold%Fringe%Push(valve)
- end subroutine
-
- recursive subroutine AddChildren(node)
- implicit none
- type(Arrangement), intent(inout) :: node
- integer :: i,t
-
- do i=1, Manifold%Valve(node%Number)%Length()
- t = Manifold%Valve(node%Number)%Adjacent(i)
-
- if(IsValveOpen(t)) then
-
- if(Manifold%Fringe%DoesHave(t)) cycle
-
- call Manifold%Fringe%Push(t)
-
- if(Manifold%Valve(t)%IsSource()) then
- call AddPath(Manifold%OpenPaths, Manifold%Fringe%List)
- call Manifold%Fringe%Pop()
- cycle
- endif
-
- call AddChildren(Manifold%Valve(node%Adjacent(i)))
-
- end if
- enddo
- call Manifold%Fringe%Pop()
- end subroutine
-
- logical function IsValveOpen(no)
- implicit none
- integer, intent(in) :: no
-
- IsValveOpen = Manifold%Valve(no)%Status
-
- end function
-
- subroutine AddPath(pathArr, p)
- implicit none
- type(Path), intent(in) :: p
- type(Path), allocatable, intent(inout) :: pathArr(:)
- type(Path), allocatable :: tempArr(:)
- integer :: i, isize
-
- if(p%IsNull()) return
- if(p%Length()<=1) return
-
- !**call OnpPathOpen%RunAll(p%Valves)
-
- if(allocated(pathArr)) then
- isize = size(pathArr)
-
-
- ! check to see if already have a path same as p
- do i=1,isize
- if(pathArr(i)%First()==p%First() .and. pathArr(i)%Last()==p%Last()) then
- ! if there is then
- ! check to see if both have exacly a same length
- if(pathArr(i)%Length()==p%Length())then
- ! now they are the same so ignore adding this one
- return
- else
- !if they have different lengths then choose the shorter one
- if(pathArr(i)%Length()>p%Length())pathArr(i) = p
- return
- endif
-
- endif
- end do
-
-
-
- !TODO: if p last valve is input source then ignore adding it
- !TODO: if p start valve is output source then ignore adding it
-
-
-
- ! if p is a new entry then add it to the collections of found paths
- allocate(tempArr(isize+1))
- do i=1,isize
- tempArr(i) = pathArr(i)
- end do
- tempArr(isize+1) = p
- deallocate(pathArr)
- call move_alloc(tempArr, pathArr)
- else
- allocate(pathArr(1))
- pathArr(1) = p
- end if
-
- endsubroutine
-
- subroutine RemovePath(pathArr, index)
- implicit none
- integer, intent(in) :: index
- type(Path), allocatable, intent(inout) :: pathArr(:)
- type(Path), allocatable :: tempArr(:)
- integer :: i
- logical :: found
-
- if(index <= 0 .or. index > size(pathArr)) return
- if(.not.allocated(pathArr))return
- allocate(tempArr(size(pathArr)-1))
- found = .false.
- do i=1, size(pathArr)
- if(i==index) then
- found = .true.
- cycle
- end if
- if(found) then
- tempArr(i-1) = pathArr(i)
- !!**call OnpPathClose%RunAll(pathArr(i)%Valves)
- else
- tempArr(i) = pathArr(i)
- endif
- end do
- deallocate(pathArr)
- call move_alloc(tempArr, pathArr)
-
- endsubroutine
-
- subroutine Setup()
- implicit none
- integer :: i
-
- ! initialize all valves
- do i = 1, ValveCount
- call Manifold%Valve(i)%init(i)
- end do
-
- ! open source valves
- do i = MinSource , MaxSource
- Manifold%Valve(i)%Status = .true.
- Manifold%Valve(i)%ValveType = InputOutput
- end do
-
- do i = MinRelation , MaxRelation
- Manifold%Valve(i)%Status = .true.
- Manifold%Valve(i)%ValveType = Relation
- end do
-
-
-
- ! make adjustments
- call Manifold%Valve(1)%AdjacentTo(91)
-
- call Manifold%Valve(2)%AdjacentTo(92)
- call Manifold%Valve(2)%AdjacentTo(117)
-
- call Manifold%Valve(3)%AdjacentTo(93)
- call Manifold%Valve(3)%AdjacentTo(118)
-
- call Manifold%Valve(4)%AdjacentTo(94)
-
- call Manifold%Valve(5)%AdjacentTo(95)
-
- call Manifold%Valve(6)%AdjacentTo(91)
- call Manifold%Valve(6)%AdjacentTo(92)
-
- call Manifold%Valve(7)%AdjacentTo(92)
- call Manifold%Valve(7)%AdjacentTo(93)
-
- call Manifold%Valve(8)%AdjacentTo(93)
- call Manifold%Valve(8)%AdjacentTo(94)
-
- call Manifold%Valve(9)%AdjacentTo(91)
- call Manifold%Valve(9)%AdjacentTo(96)
-
- call Manifold%Valve(10)%AdjacentTo(94)
- call Manifold%Valve(10)%AdjacentTo(98)
-
- call Manifold%Valve(11)%AdjacentTo(96)
- call Manifold%Valve(11)%AdjacentTo(97)
-
- call Manifold%Valve(12)%AdjacentTo(97)
- call Manifold%Valve(12)%AdjacentTo(98)
-
- call Manifold%Valve(13)%AdjacentTo(96)
- call Manifold%Valve(13)%AdjacentTo(99)
-
- call Manifold%Valve(14)%AdjacentTo(78)
- call Manifold%Valve(14)%AdjacentTo(97)
- !call Valve(14)%AdjacentTo(126)
-
- call Manifold%Valve(15)%AdjacentTo(98)
- call Manifold%Valve(15)%AdjacentTo(99)
-
- call Manifold%Valve(16)%AdjacentTo(121)
- !call Valve(16)%AdjacentTo()
-
- call Manifold%Valve(17)%AdjacentTo(122)
- !call Valve(17)%AdjacentTo()
-
- call Manifold%Valve(18)%AdjacentTo(123)
- !call Valve(18)%AdjacentTo()
-
- call Manifold%Valve(19)%AdjacentTo(101)
- call Manifold%Valve(19)%AdjacentTo(102)
-
- call Manifold%Valve(20)%AdjacentTo(100)
-
- call Manifold%Valve(21)%AdjacentTo(101)
-
- call Manifold%Valve(22)%AdjacentTo(102)
-
- call Manifold%Valve(23)%AdjacentTo(71)
-
- call Manifold%Valve(24)%AdjacentTo(71)
-
- call Manifold%Valve(25)%AdjacentTo(108)
- call Manifold%Valve(25)%AdjacentTo(118)
-
- call Manifold%Valve(26)%AdjacentTo(109)
- call Manifold%Valve(26)%AdjacentTo(117)
-
- call Manifold%Valve(27)%AdjacentTo(32)
- call Manifold%Valve(27)%AdjacentTo(108)
-
- call Manifold%Valve(28)%AdjacentTo(33)
- call Manifold%Valve(28)%AdjacentTo(108)
-
- call Manifold%Valve(29)%AdjacentTo(110)
- call Manifold%Valve(29)%AdjacentTo(113)
-
- call Manifold%Valve(30)%AdjacentTo(34)
- call Manifold%Valve(30)%AdjacentTo(109)
-
- call Manifold%Valve(31)%AdjacentTo(35)
- call Manifold%Valve(31)%AdjacentTo(109)
-
- call Manifold%Valve(32)%AdjacentTo(27)
- call Manifold%Valve(32)%AdjacentTo(61)
-
- call Manifold%Valve(33)%AdjacentTo(28)
- call Manifold%Valve(33)%AdjacentTo(62)
-
- call Manifold%Valve(34)%AdjacentTo(30)
- call Manifold%Valve(34)%AdjacentTo(63)
-
- call Manifold%Valve(35)%AdjacentTo(31)
- call Manifold%Valve(35)%AdjacentTo(64)
-
- call Manifold%Valve(36)%AdjacentTo(116)
-
- call Manifold%Valve(37)%AdjacentTo(78)
-
- call Manifold%Valve(38)%AdjacentTo(71)
-
- call Manifold%Valve(39)%AdjacentTo(77)
-
- !call Valve(40)%AdjacentTo(105)
- call Manifold%Valve(40)%AdjacentTo(80)
-
- call Manifold%Valve(41)%AdjacentTo(77)
-
- call Manifold%Valve(42)%AdjacentTo(71)
-
- call Manifold%Valve(43)%AdjacentTo(106)
-
- call Manifold%Valve(44)%AdjacentTo(77)
-
- call Manifold%Valve(45)%AdjacentTo(71)
-
- call Manifold%Valve(46)%AdjacentTo(104)
-
- call Manifold%Valve(47)%AdjacentTo(104)
- call Manifold%Valve(47)%AdjacentTo(117)
-
- call Manifold%Valve(48)%AdjacentTo(69)
- call Manifold%Valve(48)%AdjacentTo(79)
-
- call Manifold%Valve(49)%AdjacentTo(104)
- call Manifold%Valve(49)%AdjacentTo(79)
-
- !call Valve(50)%AdjacentTo(48)
- call Manifold%Valve(50)%AdjacentTo(51)
- !call Valve(50)%AdjacentTo(54)
- call Manifold%Valve(50)%AdjacentTo(104)
-
- call Manifold%Valve(51)%AdjacentTo(50)
- call Manifold%Valve(51)%AdjacentTo(52)
-
- call Manifold%Valve(52)%AdjacentTo(51)
- !call Valve(52)%AdjacentTo(127)
- call Manifold%Valve(52)%AdjacentTo(80)
-
- !call Valve(53)%AdjacentTo(103)
- !call Valve(53)%AdjacentTo(105)
- call Manifold%Valve(53)%AdjacentTo(80)
-
- !call Valve(54)%AdjacentTo(69)
- !call Valve(54)%AdjacentTo(124)
-
- !call Valve(55)%AdjacentTo(103)
- !call Valve(55)%AdjacentTo(124)
-
- call Manifold%Valve(56)%AdjacentTo(128)
- call Manifold%Valve(56)%AdjacentTo(127)
-
- !call Valve(57)%AdjacentTo(14)
- !call Valve(57)%AdjacentTo(103)
- !call Valve(57)%AdjacentTo(126)
-
- call Manifold%Valve(58)%AdjacentTo(78)
-
- call Manifold%Valve(59)%AdjacentTo(78)
-
- call Manifold%Valve(60)%AdjacentTo(78)
-
- call Manifold%Valve(61)%AdjacentTo(32)
- call Manifold%Valve(61)%AdjacentTo(115)
-
- call Manifold%Valve(62)%AdjacentTo(33)
- call Manifold%Valve(62)%AdjacentTo(114)
-
- call Manifold%Valve(63)%AdjacentTo(112)
- call Manifold%Valve(63)%AdjacentTo(34)
-
- call Manifold%Valve(64)%AdjacentTo(35)
- call Manifold%Valve(64)%AdjacentTo(111)
-
- call Manifold%Valve(65)%AdjacentTo(120)
-
- call Manifold%Valve(66)%AdjacentTo(120)
-
- call Manifold%Valve(67)%AdjacentTo(73)
-
- call Manifold%Valve(68)%AdjacentTo(125)
- call Manifold%Valve(68)%AdjacentTo(126)
-
- call Manifold%Valve(69)%AdjacentTo(48)
- call Manifold%Valve(69)%AdjacentTo(124)
-
- !call Valve(70)%AdjacentTo()
- !call Valve(70)%AdjacentTo()
-
- call Manifold%Valve(71)%AdjacentTo(20)
- call Manifold%Valve(71)%AdjacentTo(44)
- call Manifold%Valve(71)%AdjacentTo(59)
-
- call Manifold%Valve(72)%AdjacentTo(21)
- call Manifold%Valve(72)%AdjacentTo(23)
-
- call Manifold%Valve(73)%AdjacentTo(22)
-
- call Manifold%Valve(74)%AdjacentTo(24)
-
- !call Valve(75)%AdjacentTo()
-
- !call Valve(76)%AdjacentTo()
-
- call Manifold%Valve(77)%AdjacentTo(43)
- call Manifold%Valve(77)%AdjacentTo(58)
-
- !call Valve(78)%AdjacentTo()
-
- call Manifold%Valve(79)%AdjacentTo(48)
- call Manifold%Valve(79)%AdjacentTo(49)
-
- call Manifold%Valve(80)%AdjacentTo(52)
- call Manifold%Valve(80)%AdjacentTo(107)
-
- call Manifold%Valve(81)%AdjacentTo(53)
-
- call Manifold%Valve(82)%AdjacentTo(16)
-
- call Manifold%Valve(83)%AdjacentTo(17)
-
- call Manifold%Valve(84)%AdjacentTo(18)
-
- !call Valve(85)%AdjacentTo()
-
- !call Valve(86)%AdjacentTo()
-
- !call Valve(87)%AdjacentTo()
-
- !call Valve(88)%AdjacentTo()
-
- !!call Valve(89)%AdjacentTo()
-
- !call Valve(90)%AdjacentTo()
-
- call Manifold%Valve(91)%AdjacentTo(6)
- call Manifold%Valve(91)%AdjacentTo(9)
- call Manifold%Valve(91)%AdjacentTo(75)
-
- call Manifold%Valve(92)%AdjacentTo(6)
- call Manifold%Valve(92)%AdjacentTo(7)
- call Manifold%Valve(92)%AdjacentTo(2)
-
- call Manifold%Valve(93)%AdjacentTo(3)
- call Manifold%Valve(93)%AdjacentTo(7)
- call Manifold%Valve(93)%AdjacentTo(8)
-
- call Manifold%Valve(94)%AdjacentTo(8)
- call Manifold%Valve(94)%AdjacentTo(10)
- call Manifold%Valve(94)%AdjacentTo(95)
-
- call Manifold%Valve(95)%AdjacentTo(76)
- call Manifold%Valve(95)%AdjacentTo(94)
-
- call Manifold%Valve(96)%AdjacentTo(9)
- call Manifold%Valve(96)%AdjacentTo(11)
- call Manifold%Valve(96)%AdjacentTo(13)
-
- call Manifold%Valve(97)%AdjacentTo(11)
- call Manifold%Valve(97)%AdjacentTo(12)
- call Manifold%Valve(97)%AdjacentTo(14)
-
- call Manifold%Valve(98)%AdjacentTo(10)
- call Manifold%Valve(98)%AdjacentTo(12)
- call Manifold%Valve(98)%AdjacentTo(15)
-
- call Manifold%Valve(99)%AdjacentTo(13)
- call Manifold%Valve(99)%AdjacentTo(15)
- call Manifold%Valve(99)%AdjacentTo(125)
-
- !call Valve(100)%AdjacentTo(16)
- call Manifold%Valve(100)%AdjacentTo(82)
- call Manifold%Valve(100)%AdjacentTo(101)
-
- !call Valve(101)%AdjacentTo(17)
- call Manifold%Valve(101)%AdjacentTo(19)
- call Manifold%Valve(101)%AdjacentTo(83)
- call Manifold%Valve(101)%AdjacentTo(100)
-
- !call Valve(102)%AdjacentTo(18)
- call Manifold%Valve(102)%AdjacentTo(19)
- call Manifold%Valve(102)%AdjacentTo(84)
-
- !call Valve(103)%AdjacentTo(53)
- !call Valve(103)%AdjacentTo(56)
- call Manifold%Valve(103)%AdjacentTo(124)
- !call Valve(103)%AdjacentTo(56)
- !call Valve(103)%AdjacentTo(78)
-
- call Manifold%Valve(104)%AdjacentTo(46)
- call Manifold%Valve(104)%AdjacentTo(47)
- call Manifold%Valve(104)%AdjacentTo(49)
- call Manifold%Valve(104)%AdjacentTo(50)
-
- !call Valve(105)%AdjacentTo(53)
- !call Valve(105)%AdjacentTo(107)
- !call Valve(105)%AdjacentTo(127)
-
- call Manifold%Valve(106)%AdjacentTo(40)
- call Manifold%Valve(106)%AdjacentTo(45)
-
-
- call Manifold%Valve(107)%AdjacentTo(41)
- !call Valve(107)%AdjacentTo(105)
- call Manifold%Valve(107)%AdjacentTo(119)
- !call Valve(107)%AdjacentTo(42)
-
- call Manifold%Valve(108)%AdjacentTo(25)
- call Manifold%Valve(108)%AdjacentTo(27)
- call Manifold%Valve(108)%AdjacentTo(28)
- call Manifold%Valve(108)%AdjacentTo(110)
-
- call Manifold%Valve(109)%AdjacentTo(26)
- call Manifold%Valve(109)%AdjacentTo(30)
- call Manifold%Valve(109)%AdjacentTo(31)
- call Manifold%Valve(109)%AdjacentTo(110)
-
- call Manifold%Valve(110)%AdjacentTo(29)
- call Manifold%Valve(110)%AdjacentTo(85)
- call Manifold%Valve(110)%AdjacentTo(108)
- call Manifold%Valve(110)%AdjacentTo(109)
-
- call Manifold%Valve(111)%AdjacentTo(37)
- call Manifold%Valve(111)%AdjacentTo(64)
- call Manifold%Valve(111)%AdjacentTo(112)
-
- call Manifold%Valve(112)%AdjacentTo(63)
- call Manifold%Valve(112)%AdjacentTo(111)
- call Manifold%Valve(112)%AdjacentTo(113)
-
- call Manifold%Valve(113)%AdjacentTo(29)
- call Manifold%Valve(113)%AdjacentTo(112)
- call Manifold%Valve(113)%AdjacentTo(114)
-
- call Manifold%Valve(114)%AdjacentTo(62)
- call Manifold%Valve(114)%AdjacentTo(113)
- call Manifold%Valve(114)%AdjacentTo(115)
-
- call Manifold%Valve(115)%AdjacentTo(36)
- call Manifold%Valve(115)%AdjacentTo(61)
- call Manifold%Valve(115)%AdjacentTo(114)
-
- call Manifold%Valve(116)%AdjacentTo(38)
- call Manifold%Valve(116)%AdjacentTo(39)
-
- call Manifold%Valve(117)%AdjacentTo(2)
- call Manifold%Valve(117)%AdjacentTo(26)
- call Manifold%Valve(117)%AdjacentTo(47)
-
- call Manifold%Valve(118)%AdjacentTo(3)
- call Manifold%Valve(118)%AdjacentTo(25)
- call Manifold%Valve(118)%AdjacentTo(46)
-
- call Manifold%Valve(119)%AdjacentTo(42)
- call Manifold%Valve(119)%AdjacentTo(60)
- call Manifold%Valve(119)%AdjacentTo(107)
-
- call Manifold%Valve(120)%AdjacentTo(71)
-
- !call Valve(121)%AdjacentTo(16)
- call Manifold%Valve(121)%AdjacentTo(1)
- call Manifold%Valve(121)%AdjacentTo(65)
-
- !call Valve(122)%AdjacentTo(17)
- call Manifold%Valve(122)%AdjacentTo(4)
- call Manifold%Valve(122)%AdjacentTo(66)
-
- !call Valve(123)%AdjacentTo(18)
- call Manifold%Valve(123)%AdjacentTo(5)
- call Manifold%Valve(123)%AdjacentTo(67)
-
- !call Valve(124)%AdjacentTo(54)
- !call Valve(124)%AdjacentTo(55)
- call Manifold%Valve(124)%AdjacentTo(69)
- call Manifold%Valve(124)%AdjacentTo(103)
-
- call Manifold%Valve(125)%AdjacentTo(68)
- call Manifold%Valve(125)%AdjacentTo(99)
- ! call Valve(125)%AdjacentTo(126)
-
- call Manifold%Valve(126)%AdjacentTo(128)
- call Manifold%Valve(126)%AdjacentTo(68)
- !call Valve(126)%AdjacentTo(125)
-
- call Manifold%Valve(127)%AdjacentTo(56)
- call Manifold%Valve(127)%AdjacentTo(78)
- !call Valve(127)%AdjacentTo(105)
-
- call Manifold%Valve(128)%AdjacentTo(56)
- call Manifold%Valve(128)%AdjacentTo(126)
-
-
- ! initialization
- call ChangeValve(60, .true.)
- call RemoveIBop()
- call ToggleFillupHead(.false.)
- call ToggleMudBox(.false.)
- call RemoveTopDriveIBop()
- call InstallSafetyValve_KellyMode()
- call KellyDisconnected()
- end subroutine
-
-
-
- subroutine KellyConnected()
- !use CLog3
- implicit none
-
- call Manifold%Valve(127)%RemoveAdjacent(78)
-
- call Manifold%Valve(127)%AdjacentTo(103)
- call Manifold%Valve(103)%AdjacentTo(127)
-
- #ifdef deb
- print*, 'KellyConnected()'
- !call Log_3( 'KellyConnected()')
- #endif
- Manifold%IsPathsDirty = .true.
- end subroutine
-
- subroutine KellyDisconnected()
- !use CLog3
- implicit none
-
- call Manifold%Valve(127)%RemoveAdjacent(103)
- call Manifold%Valve(103)%RemoveAdjacent(127)
-
- call Manifold%Valve(127)%AdjacentTo(78)
-
- #ifdef deb
- print*, 'KellyDisconnected()'
- !call Log_3( 'KellyDisconnected()')
- #endif
-
- Manifold%IsPathsDirty = .true.
-
- end subroutine
-
-
-
-
-
-
-
-
-
- subroutine InstallSafetyValve_KellyMode()
- implicit none
- Manifold%IsSafetyValveInstalled_KellyMode = .true.
-
- call RemoveTopDriveIBop()
-
- ! Remove Safey Valve (54)
- call Manifold%Valve(124)%RemoveAdjacent(54)
- call Manifold%Valve(54)%RemoveAdjacent(124)
-
- call Manifold%Valve(69)%RemoveAdjacent(54)
- call Manifold%Valve(54)%RemoveAdjacent(69)
-
- ! Remove 126-103 cnn
- call Manifold%Valve(128)%RemoveAdjacent(127)
- call Manifold%Valve(127)%RemoveAdjacent(128)
-
- ! now make cnn
- call Manifold%Valve(124)%AdjacentTo(69)
- call Manifold%Valve(69)%AdjacentTo(124)
-
- call Manifold%Valve(128)%AdjacentTo(56)
-
- call Manifold%Valve(56)%AdjacentTo(128)
- call Manifold%Valve(56)%AdjacentTo(127)
-
- call Manifold%Valve(127)%AdjacentTo(56)
-
- #ifdef deb
- print*, 'InstallSafetyValve_KellyMode()'
- #endif
-
- data%Equipments%DrillingConsole%IRSafetyValveLed = 1
- call OpenSafetyValve_KellyMode()
- end subroutine
-
- subroutine RemoveSafetyValve_KellyMode()
- implicit none
- Manifold%IsSafetyValveInstalled_KellyMode = .false.
-
- call Manifold%Valve(128)%RemoveAdjacent(56)
- call Manifold%Valve(56)%RemoveAdjacent(128)
-
- call Manifold%Valve(127)%RemoveAdjacent(56)
- call Manifold%Valve(56)%RemoveAdjacent(127)
-
- call Manifold%Valve(127)%AdjacentTo(128)
- call Manifold%Valve(128)%AdjacentTo(127)
-
- data%Equipments%DrillingConsole%IRSafetyValveLed = 0
- call CloseSafetyValve_KellyMode()
- data%Equipments%DrillingConsole%OpenSafetyValveLed = 0
- data%Equipments%DrillingConsole%CloseSafetyValveLed = 0
-
- #ifdef deb
- print*, 'RemoveSafetyValve_KellyMode()'
- #endif
-
- end subroutine
-
- subroutine OpenSafetyValve_KellyMode()
- implicit none
- if(.not.Manifold%IsSafetyValveInstalled_KellyMode) return
- data%Equipments%DrillingConsole%OpenSafetyValveLed = 1
- data%Equipments%DrillingConsole%CloseSafetyValveLed = 0
- Manifold%SafetyValve = .true.
- call ChangeValve(56, Manifold%SafetyValve)
-
- #ifdef deb
- print*, 'OpenSafetyValve_KellyMode()'
- #endif
-
- end subroutine
-
- subroutine CloseSafetyValve_KellyMode()
- implicit none
- if(.not.Manifold%IsSafetyValveInstalled_KellyMode) return
- data%Equipments%DrillingConsole%CloseSafetyValveLed = 1
- data%Equipments%DrillingConsole%OpenSafetyValveLed = 0
- Manifold%SafetyValve = .false.
- call ChangeValve(56, Manifold%SafetyValve)
-
- #ifdef deb
- print*, 'CloseSafetyValve_KellyMode()'
- #endif
-
- end subroutine
-
-
-
-
-
-
-
-
-
-
- subroutine InstallSafetyValve_TripMode()
- implicit none
- Manifold%IsSafetyValveInstalled_TripMode = .true.
-
- call Manifold%Valve(128)%RemoveAdjacent(56)
- call Manifold%Valve(56)%RemoveAdjacent(128)
-
- call Manifold%Valve(127)%RemoveAdjacent(56)
- call Manifold%Valve(56)%RemoveAdjacent(127)
-
- call Manifold%Valve(69)%RemoveAdjacent(124)
- call Manifold%Valve(124)%RemoveAdjacent(69)
-
-
- call Manifold%Valve(127)%AdjacentTo(128)
- call Manifold%Valve(128)%AdjacentTo(127)
-
- call Manifold%Valve(124)%AdjacentTo(54)
- call Manifold%Valve(54)%AdjacentTo(124)
-
- call Manifold%Valve(54)%AdjacentTo(69)
- call Manifold%Valve(69)%AdjacentTo(54)
-
- data%Equipments%DrillingConsole%IRSafetyValveLed = 1
- call OpenSafetyValve_TripMode()
-
- #ifdef deb
- print*, 'InstallSafetyValve_TripMode()'
- #endif
-
- end subroutine
-
- subroutine RemoveSafetyValve_TripMode()
- implicit none
- Manifold%IsSafetyValveInstalled_TripMode = .false.
-
- call Manifold%Valve(124)%RemoveAdjacent(54)
- call Manifold%Valve(54)%RemoveAdjacent(124)
-
- call Manifold%Valve(54)%RemoveAdjacent(69)
- call Manifold%Valve(69)%RemoveAdjacent(54)
-
- call Manifold%Valve(124)%AdjacentTo(69)
- call Manifold%Valve(69)%AdjacentTo(124)
-
- data%Equipments%DrillingConsole%IRSafetyValveLed = 0
- call CloseSafetyValve_TripMode()
- data%Equipments%DrillingConsole%OpenSafetyValveLed = 0
- data%Equipments%DrillingConsole%CloseSafetyValveLed = 0
-
- #ifdef deb
- print*, 'RemoveSafetyValve_TripMode()'
- #endif
-
- end subroutine
-
- subroutine OpenSafetyValve_TripMode()
- implicit none
- if(.not.Manifold%IsSafetyValveInstalled_TripMode) return
- data%Equipments%DrillingConsole%OpenSafetyValveLed = 1
- data%Equipments%DrillingConsole%CloseSafetyValveLed = 0
- Manifold%SafetyValve = .true.
- call ChangeValve(54, Manifold%SafetyValve)
-
- #ifdef deb
- print*, 'OpenSafetyValve_TripMode()'
- #endif
-
- end subroutine
-
- subroutine CloseSafetyValve_TripMode()
- implicit none
- if(.not.Manifold%IsSafetyValveInstalled_TripMode) return
- data%Equipments%DrillingConsole%CloseSafetyValveLed = 1
- data%Equipments%DrillingConsole%OpenSafetyValveLed = 0
- Manifold%SafetyValve = .false.
- call ChangeValve(54, Manifold%SafetyValve)
-
- #ifdef deb
- print*, 'CloseSafetyValve_TripMode()'
- #endif
-
- end subroutine
-
-
-
-
-
-
-
-
- subroutine InstallSafetyValve_TopDrive()
- implicit none
- Manifold%IsSafetyValveInstalled_TopDrive = .true.
-
- call Manifold%Valve(128)%RemoveAdjacent(56)
- call Manifold%Valve(56)%RemoveAdjacent(128)
-
- call Manifold%Valve(127)%RemoveAdjacent(56)
- call Manifold%Valve(56)%RemoveAdjacent(127)
-
- call Manifold%Valve(69)%RemoveAdjacent(124)
- call Manifold%Valve(124)%RemoveAdjacent(69)
-
- call Manifold%Valve(124)%AdjacentTo(54)
- call Manifold%Valve(54)%AdjacentTo(124)
-
- call Manifold%Valve(54)%AdjacentTo(69)
- call Manifold%Valve(69)%AdjacentTo(54)
-
- data%Equipments%DrillingConsole%IRSafetyValveLed = 1
- call OpenSafetyValve_TopDrive()
-
- #ifdef deb
- print*, 'InstallSafetyValve_TopDrive()'
- #endif
-
- end subroutine
-
- subroutine RemoveSafetyValve_TopDrive()
- implicit none
- Manifold%IsSafetyValveInstalled_TopDrive = .false.
-
- call Manifold%Valve(124)%RemoveAdjacent(54)
- call Manifold%Valve(54)%RemoveAdjacent(124)
-
- call Manifold%Valve(54)%RemoveAdjacent(69)
- call Manifold%Valve(69)%RemoveAdjacent(54)
-
- call Manifold%Valve(124)%AdjacentTo(69)
- call Manifold%Valve(69)%AdjacentTo(124)
-
- data%Equipments%DrillingConsole%IRSafetyValveLed = 0
- call CloseSafetyValve_TopDrive()
- data%Equipments%DrillingConsole%OpenSafetyValveLed = 0
- data%Equipments%DrillingConsole%CloseSafetyValveLed = 0
-
- #ifdef deb
- print*, 'RemoveSafetyValve_TopDrive()'
- #endif
-
- end subroutine
-
- subroutine OpenSafetyValve_TopDrive()
- implicit none
- if(.not.Manifold%IsSafetyValveInstalled_TopDrive) return
- data%Equipments%DrillingConsole%OpenSafetyValveLed = 1
- data%Equipments%DrillingConsole%CloseSafetyValveLed = 0
- Manifold%SafetyValve = .true.
-
- #ifdef deb
- print*, 'OpenSafetyValve_TopDrive()'
- #endif
-
- call ChangeValve(54, Manifold%SafetyValve)
- end subroutine
-
- subroutine CloseSafetyValve_TopDrive()
- implicit none
- if(.not.Manifold%IsSafetyValveInstalled_TopDrive) return
- data%Equipments%DrillingConsole%CloseSafetyValveLed = 1
- data%Equipments%DrillingConsole%OpenSafetyValveLed = 0
- Manifold%SafetyValve = .false.
-
- #ifdef deb
- print*, 'CloseSafetyValve_TopDrive()'
- #endif
-
- call ChangeValve(54, Manifold%SafetyValve)
- end subroutine
-
-
-
-
-
-
-
-
-
- subroutine InstallIBop()
- implicit none
- Manifold%IsIBopInstalled = .true.
-
- call Manifold%Valve(103)%RemoveAdjacent(124)
- call Manifold%Valve(124)%RemoveAdjacent(103)
-
- call Manifold%Valve(55)%AdjacentTo(103)
- call Manifold%Valve(55)%AdjacentTo(124)
-
- call Manifold%Valve(103)%AdjacentTo(55)
- call Manifold%Valve(124)%AdjacentTo(55)
-
- #ifdef deb
- print*, 'InstallIBop()'
- #endif
-
- data%Equipments%DrillingConsole%IRIBopLed = 1
- call OpenIBop()
- end subroutine
-
- subroutine RemoveIBop()
- implicit none
- Manifold%IsIBopInstalled = .false.
-
- call Manifold%Valve(55)%RemoveAdjacent(103)
- call Manifold%Valve(55)%RemoveAdjacent(124)
-
- call Manifold%Valve(103)%RemoveAdjacent(55)
- call Manifold%Valve(124)%RemoveAdjacent(55)
-
- call Manifold%Valve(103)%AdjacentTo(124)
- call Manifold%Valve(124)%AdjacentTo(103)
-
- #ifdef deb
- print*, 'RemoveIBop()'
- #endif
-
- data%Equipments%DrillingConsole%IRIBopLed = 0
- Manifold%IBop = .false.
- call ChangeValve(55, Manifold%IBop)
- end subroutine
-
- subroutine OpenIBop()
- implicit none
- if(.not.Manifold%IsIBopInstalled) return
- Manifold%IBop = .true.
-
- #ifdef deb
- print*, 'OpenIBop()'
- #endif
-
- call ChangeValve(55, Manifold%IBop)
- end subroutine
-
- subroutine CloseIBop()
- implicit none
- if(.not.Manifold%IsIBopInstalled) return
- Manifold%IBop = .false.
-
- #ifdef deb
- print*, 'CloseIBop()'
- #endif
-
- call ChangeValve(55, Manifold%IBop)
- end subroutine
-
-
-
-
-
-
- subroutine InstallKellyCock()
- implicit none
- Manifold%IsKellyCockInstalled = .true.
-
- call Manifold%Valve(125)%RemoveAdjacent(126)
- call Manifold%Valve(126)%RemoveAdjacent(125)
-
- call Manifold%Valve(125)%AdjacentTo(68)
-
- call Manifold%Valve(68)%AdjacentTo(125)
- call Manifold%Valve(68)%AdjacentTo(126)
-
- call Manifold%Valve(126)%AdjacentTo(68)
-
- #ifdef deb
- print*, 'InstallKellyCock()'
- #endif
-
- call OpenKellyCock()
- end subroutine
-
- subroutine RemoveKellyCock()
- implicit none
- Manifold%IsKellyCockInstalled = .false.
-
- call Manifold%Valve(125)%RemoveAdjacent(68)
- call Manifold%Valve(126)%RemoveAdjacent(68)
-
- call Manifold%Valve(68)%RemoveAdjacent(125)
- call Manifold%Valve(68)%RemoveAdjacent(126)
-
- call Manifold%Valve(125)%AdjacentTo(126)
- call Manifold%Valve(126)%AdjacentTo(125)
-
- Manifold%KellyCock = .false.
- call ChangeValve(68, Manifold%KellyCock)
- data%Equipments%DrillingConsole%CloseKellyCockLed = 0
- data%Equipments%DrillingConsole%OpenKellyCockLed = 0
-
- #ifdef deb
- print*, 'RemoveKellyCock()'
- #endif
-
- end subroutine
-
- subroutine OpenKellyCock()
- implicit none
- if(.not.Manifold%IsKellyCockInstalled) return
- data%Equipments%DrillingConsole%OpenKellyCockLed = 1
- data%Equipments%DrillingConsole%CloseKellyCockLed = 0
- Manifold%KellyCock = .true.
-
- #ifdef deb
- print*, 'OpenKellyCock()'
- #endif
-
- call ChangeValve(68, Manifold%KellyCock)
- end subroutine
-
- subroutine CloseKellyCock()
- implicit none
- if(.not.Manifold%IsKellyCockInstalled) return
- data%Equipments%DrillingConsole%CloseKellyCockLed = 1
- data%Equipments%DrillingConsole%OpenKellyCockLed = 0
- Manifold%KellyCock = .false.
-
- #ifdef deb
- print*, 'CloseKellyCock()'
- #endif
-
- call ChangeValve(68, Manifold%KellyCock)
- end subroutine
-
-
-
-
-
-
-
-
- subroutine InstallTopDriveIBop()
- implicit none
- Manifold%IsTopDriveIBopInstalled = .true.
-
- call Manifold%Valve(126)%RemoveAdjacent(128)
- call Manifold%Valve(128)%RemoveAdjacent(126)
-
-
- call Manifold%Valve(126)%AdjacentTo(70)
- call Manifold%Valve(70)%AdjacentTo(126)
-
- call Manifold%Valve(128)%AdjacentTo(70)
- call Manifold%Valve(70)%AdjacentTo(128)
-
- #ifdef deb
- print*, 'InstallTopDriveIBop()'
- #endif
- call OpenTopDriveIBop()
- end subroutine
-
- subroutine RemoveTopDriveIBop()
- implicit none
- Manifold%IsTopDriveIBopInstalled = .false.
-
- call Manifold%Valve(126)%RemoveAdjacent(70)
- call Manifold%Valve(70)%RemoveAdjacent(126)
-
- call Manifold%Valve(128)%RemoveAdjacent(70)
- call Manifold%Valve(70)%RemoveAdjacent(128)
-
- call Manifold%Valve(126)%AdjacentTo(128)
- call Manifold%Valve(128)%AdjacentTo(126)
-
- #ifdef deb
- print*, 'RemoveTopDriveIBop()'
- #endif
- Manifold%TopDriveIBop = .false.
- call ChangeValve(70, Manifold%TopDriveIBop)
- end subroutine
-
- subroutine OpenTopDriveIBop()
- implicit none
- if(.not.Manifold%IsTopDriveIBopInstalled) return
- Manifold%TopDriveIBop = .true.
- call ChangeValve(70, Manifold%TopDriveIBop)
- #ifdef deb
- print*, 'OpenTopDriveIBop()'
- #endif
- end subroutine
-
- subroutine CloseTopDriveIBop()
- implicit none
- if(.not.Manifold%IsTopDriveIBopInstalled) return
- Manifold%TopDriveIBop = .false.
- call ChangeValve(70, Manifold%TopDriveIBop)
- #ifdef deb
- print*, 'CloseTopDriveIBop()'
- #endif
- end subroutine
-
-
-
-
-
-
-
-
-
- subroutine InstallFloatValve()
- implicit none
- Manifold%IsFloatValveInstalled = .true.
-
- call Manifold%Valve(69)%RemoveAdjacent(79)
- call Manifold%Valve(79)%RemoveAdjacent(69)
-
- call Manifold%Valve(48)%AdjacentTo(69)
- call Manifold%Valve(48)%AdjacentTo(79)
-
- call Manifold%Valve(69)%AdjacentTo(48)
- call Manifold%Valve(79)%AdjacentTo(48)
- #ifdef deb
- print*, 'InstallFloatValve()'
- #endif
- call OpenFloatValve()
- end subroutine
-
- subroutine RemoveFloatValve()
- implicit none
- Manifold%IsFloatValveInstalled = .false.
-
- call Manifold%Valve(48)%RemoveAdjacent(69)
- call Manifold%Valve(48)%RemoveAdjacent(79)
-
- call Manifold%Valve(69)%RemoveAdjacent(48)
- call Manifold%Valve(79)%RemoveAdjacent(48)
-
- call Manifold%Valve(69)%AdjacentTo(79)
- call Manifold%Valve(79)%AdjacentTo(69)
- #ifdef deb
- print*, 'RemoveFloatValve()'
- #endif
- Manifold%FloatValve = .false.
- call ChangeValve(48, Manifold%FloatValve)
- end subroutine
-
- subroutine OpenFloatValve()
- implicit none
- if(.not.Manifold%IsFloatValveInstalled) return
- Manifold%FloatValve = .true.
- #ifdef deb
- print*, 'OpenFloatValve()'
- #endif
- call ChangeValve(48, Manifold%FloatValve)
- end subroutine
-
- subroutine CloseFloatValve()
- implicit none
- if(.not.Manifold%IsFloatValveInstalled) return
- Manifold%FloatValve = .false.
- #ifdef deb
- print*, 'CloseFloatValve()'
- #endif
- call ChangeValve(48, Manifold%FloatValve)
- end subroutine
-
-
-
-
-
-
-
- subroutine ToggleFillupHead(v)
- implicit none
- logical, intent(in) :: v
- if(v) then
- call Manifold%Valve(14)%RemoveAdjacent(78)
-
- call Manifold%Valve(14)%AdjacentTo(57)
- call Manifold%Valve(57)%AdjacentTo(14)
- call Manifold%Valve(57)%AdjacentTo(103)
- call Manifold%Valve(103)%AdjacentTo(57)
-
- else
- call Manifold%Valve(14)%RemoveAdjacent(57)
- call Manifold%Valve(57)%RemoveAdjacent(14)
- call Manifold%Valve(57)%RemoveAdjacent(103)
- call Manifold%Valve(103)%RemoveAdjacent(57)
-
- call Manifold%Valve(14)%AdjacentTo(78)
- endif
- Manifold%IsPathsDirty = .true.
- call ChangeValve(57, .true.)
- end subroutine
-
- subroutine ToggleMudBox(v)
- implicit none
- logical, intent(in) :: v
- call ChangeValve(53, v)
- end subroutine
-
-
-
-
-
-
-
-
-
- subroutine ToggleMiddleRams(v)
- implicit none
- logical, intent(in) :: v
- Manifold%Valve(50)%Status = v
- call ChangeValve(69, v)
- end subroutine
-
-
-
-
-
-
-
-
- subroutine ChangeValve(i, state)
- implicit none
- integer, intent(in) :: i
- logical, intent(in) :: state
-
- if(Manifold%Valve(i)%Status==state) return
- Manifold%Valve(i)%Status = state
- if(i == 41 .or. i == 42) then
- if(Manifold%Valve(41)%Status == .false. .and. Manifold%Valve(42)%Status == .false.) then
- Manifold%Valve(60)%Status = .true.
- else
- Manifold%Valve(60)%Status = .false.
- endif
- endif
- #ifdef deb
- print*, 'Valve(', i, ') = ', state
- #endif
- !call Traverse()
- Manifold%IsPathsDirty = .true.
- end subroutine
-
-
-
-
-
- subroutine DisplayOpenPaths()
- implicit none
- integer :: i
- if(allocated(Manifold%OpenPaths)) then
- do i = 1, size(Manifold%OpenPaths)
- call Manifold%OpenPaths(i)%Display()
- end do
- end if
- end subroutine
-
- subroutine DisplayOpenPathsWrite()
- implicit none
- integer :: i
- if(allocated(Manifold%OpenPaths)) then
- do i = 1, size(Manifold%OpenPaths)
- call Manifold%OpenPaths(i)%DisplayWrite()
- end do
- end if
- end subroutine
-
- end module CManifolds
|