# 1 "/mnt/c/Projects/VSIM/SimulationCore2/Equipments/BopStack/KILL_LINE.f90" SUBROUTINE KILL_LINE use SimulationVariables USE CAccumulatorVariables USE CBopStackVariables use CBopControlPanel use SimulationVariables USE CEquipmentsConstants ! use CSimulationVariables implicit none !===================================================================== ! KILL LINE 1- BOP CAMERON Type U 5000 ! START CONDITIONS FOR KILL LINE 1 !===================================================================== data%State%RAM(6)%SuccessionCounter = data%State%RAM(6)%SuccessionCounter + 1 if (data%Equipments%BopControlPanel%KillLineValve == -1.0 .and. data%State%BopStackAcc%RigAirMalf==0 .and. data%Equipments%BopControlPanel%AirMasterValve==1 .and. data%State%RamLine%P_ACC>data%State%BopStackAcc%acc_MinPressure) then if ( data%State%RAM(6)%SuccessionCounter /= data%State%RAM(6)%SuccessionCounterOld+1 ) then data%State%RAM(6)%SuccessionCounter = 0 ! also in starup data%State%RAM(6)%SuccessionCounterOld = 0 ! also in starup return else data%State%RAM(6)%SuccessionCounterOld= data%State%RAM(6)%SuccessionCounter endif if ( data%State%RAM(6)%SuccessionCounter < int(2.5/data%State%RamLine%DeltaT_BOP) ) then return endif data%State%RAM(6)%First_CloseTimecheck= 1 if (data%State%BopStackInput%KillLineOpenLedMine == LedOn) then RETURN end if data%State%KillLine%closed=0 data%State%RAM(6)%vdis_tot=0 data%State%RAM(6)%vdis_bottles=0. data%State%RAM(6)%fvr_air=0. data%State%RAM(6)%vdis_elecp=0. data%State%Pumps%Qiter=7 data%State%RAM(6)%Qzero=70 data%State%RAM(6)%Q=data%State%RAM(6)%Qzero data%State%RAM(6)%flow=70 data%State%RAM(6)%tol=0.0037 if (data%State%KillLine%finished==1) then data%State%KillLine%LeverOld= 1.0 else data%State%KillLine%LeverOld=data%Equipments%BopControlPanel%KillLineValve endif data%State%KillLine%finished=0 data%State%KillLine%IsOpening = .true. data%Equipments%BopControlPanel%KillLineCloseLED = LedOff data%State%BopStackInput%KillLineCloseLedMine = LedOff data%Equipments%BopControlPanel%KillLineOpenLED = LedOn !LedBlinking data%State%RAM(6)%bop_type = 3 !AbopKillLine=196.67 data%State%KillLine%Abop=(data%Configuration%BopStack%KillClose*231)/((data%State%KillLine%IDBase-data%State%KillLine%ODDrillpipe_inBase)/2.) data%State%KillLine%NeededVolume=data%State%KillLine%Abop*(data%State%KillLine%IDBase-max(data%State%KillLine%ODDrillpipe_in,data%State%KillLine%ODDrillpipe_inBase))/(2.*231) !1.5 galon for each BOP endif if (data%Equipments%BopControlPanel%KillLineValve == 1.0 .and. data%State%BopStackAcc%RigAirMalf==0 .and. data%Equipments%BopControlPanel%AirMasterValve==1 .and. data%State%RamLine%P_ACC>data%State%BopStackAcc%acc_MinPressure) then if ( data%State%RAM(6)%SuccessionCounter /= data%State%RAM(6)%SuccessionCounterOld+1 ) then data%State%RAM(6)%SuccessionCounter = 0 ! also in starup data%State%RAM(6)%SuccessionCounterOld = 0 ! also in starup return else data%State%RAM(6)%SuccessionCounterOld= data%State%RAM(6)%SuccessionCounter endif if ( data%State%RAM(6)%SuccessionCounter < int(2.5/data%State%RamLine%DeltaT_BOP) ) then return endif data%State%RAM(6)%First_OpenTimecheck= 1 if (data%State%BopStackInput%KillLineCloseLedMine == LedOn) then RETURN end if data%State%KillLine%closed=0 data%State%RAM(6)%vdis_tot=0 data%State%RAM(6)%vdis_bottles=0. data%State%RAM(6)%fvr_air=0. data%State%RAM(6)%vdis_elecp=0. data%State%Pumps%Qiter=7 data%State%RAM(6)%Qzero=70 data%State%RAM(6)%Q=data%State%RAM(6)%Qzero data%State%RAM(6)%flow=70 data%State%RAM(6)%tol=0.0037 if (data%State%KillLine%finished==1) then data%State%KillLine%LeverOld= -1.0 else data%State%KillLine%LeverOld=data%Equipments%BopControlPanel%KillLineValve endif data%State%KillLine%finished=0 data%State%KillLine%IsClosing = .true. !if (KillLineCloseLed == LedOn) then ! RETURN !end if data%Equipments%BopControlPanel%KillLineCloseLED = LedOff !new data%State%BopStackInput%KillLineCloseLedMine = LedOff !new data%Equipments%BopControlPanel%KillLineCloseLED = LedOn !LedBlinking data%State%RAM(6)%bop_type = 3 !AbopKillLine=196.67 data%State%KillLine%Abop=(data%Configuration%BopStack%KillOpen*231)/((data%State%KillLine%IDBase-data%State%KillLine%ODDrillpipe_inBase)/2.) data%State%KillLine%NeededVolume=data%State%KillLine%Abop*(data%State%KillLine%IDBase-max(data%State%KillLine%ODDrillpipe_in,data%State%KillLine%ODDrillpipe_inBase))/(2.*231) !1.5 galon for each BOP endif !========================================================================== if (data%State%KillLine%IsOpening .or. data%State%KillLine%IsClosing) then CALL KILL_LINE_SUB end if END SUBROUTINE KILL_LINE SUBROUTINE KILL_LINE_SUB use SimulationVariables USE CAccumulatorVariables USE CBopStackVariables use CBopControlPanel use SimulationVariables USE CEquipmentsConstants ! use CSimulationVariables implicit none data%State%Annular%FirstSet= 0 data%State%AnnularComputational%RamsFirstSet= 0 ! loop6: do while (finished_KillLine==0) data%State%RAM(6)%SuccessionCounter = data%State%RAM(6)%SuccessionCounter + 1 if (data%Equipments%BopControlPanel%KillLineValve == 1.0 .and. data%State%KillLine%LeverOld == -1.0 .and. data%State%BopStackAcc%RigAirMalf==0 .and. data%Equipments%BopControlPanel%AirMasterValve==1 .and. data%State%RamLine%P_ACC>data%State%BopStackAcc%acc_MinPressure) then if ( data%State%RAM(6)%First_CloseTimecheck == 0 ) then if ( data%State%RAM(6)%SuccessionCounter /= data%State%RAM(6)%SuccessionCounterOld+1 ) then data%State%RAM(6)%SuccessionCounter = 0 ! also in starup data%State%RAM(6)%SuccessionCounterOld = 0 ! also in starup return else data%State%RAM(6)%SuccessionCounterOld= data%State%RAM(6)%SuccessionCounter endif if ( data%State%RAM(6)%SuccessionCounter < int(2.5/data%State%RamLine%DeltaT_BOP) ) then return endif endif data%State%KillLine%closed=0 data%State%RAM(6)%p_bop=data%State%ShearRAM%PA data%State%KillLine%LeverOld = data%Equipments%BopControlPanel%KillLineValve data%Equipments%BopControlPanel%KillLineOpenLED = LedOff data%State%BopStackInput%KillLineOpenLedMine = LedOff data%Equipments%BopControlPanel%KillLineCloseLED = LedOn !LedBlinking CALL OpenKillLine data%State%RAM(6)%bop_type = 3 !AbopKillLine=196.67 data%State%KillLine%Abop=(data%Configuration%BopStack%KillClose*231)/((data%State%KillLine%IDBase-data%State%KillLine%ODDrillpipe_inBase)/2.) data%State%KillLine%NeededVolume=data%State%KillLine%Abop*(data%State%KillLine%ID-max(data%State%KillLine%ODDrillpipe_in,data%State%KillLine%ODDrillpipe_inBase))/(2.*231) data%State%RAM(6)%vdis_bottles=0. data%State%RAM(6)%fvr_air=0. data%State%RAM(6)%vdis_elecp=0. data%State%KillLine%IsClosing = .true. data%State%KillLine%IsOpening = .false. endif if (data%Equipments%BopControlPanel%KillLineValve == -1.0 .and. data%State%KillLine%LeverOld == 1.0 .and. data%State%RamLine%P_ACC>data%State%BopStackAcc%acc_MinPressure .and. data%State%BopStackAcc%RigAirMalf==0 .and. data%Equipments%BopControlPanel%AirMasterValve==1) then if ( data%State%RAM(6)%First_OpenTimecheck == 0 ) then if ( data%State%RAM(6)%SuccessionCounter /= data%State%RAM(6)%SuccessionCounterOld+1 ) then data%State%RAM(6)%SuccessionCounter = 0 ! also in starup data%State%RAM(6)%SuccessionCounterOld = 0 ! also in starup return else data%State%RAM(6)%SuccessionCounterOld= data%State%RAM(6)%SuccessionCounter endif if ( data%State%RAM(6)%SuccessionCounter < int(2.5/data%State%RamLine%DeltaT_BOP) ) then return endif endif data%State%KillLine%closed=0 data%State%RAM(6)%p_bop=data%State%ShearRAM%PA data%State%KillLine%LeverOld = data%Equipments%BopControlPanel%KillLineValve data%Equipments%BopControlPanel%KillLineCloseLED = LedOff data%State%BopStackInput%KillLineCloseLedMine = LedOff data%Equipments%BopControlPanel%KillLineOpenLED = LedOn !LedBlinking CALL OpenKillLine data%State%RAM(6)%bop_type = 3 !AbopKillLine=196.67 data%State%KillLine%Abop=(data%Configuration%BopStack%KillOpen*231)/((data%State%KillLine%IDBase-data%State%KillLine%ODDrillpipe_inBase)/2.) data%State%KillLine%NeededVolume=data%State%KillLine%Abop*(data%State%KillLine%IDBase-data%State%KillLine%ID)/(2.*231) data%State%RAM(6)%vdis_bottles=0. data%State%RAM(6)%fvr_air=0. data%State%RAM(6)%vdis_elecp=0. data%State%KillLine%IsOpening = .true. data%State%KillLine%IsClosing = .false. endif data%State%RAM(6)%First_CloseTimecheck = 0 data%State%RAM(6)%First_OpenTimecheck = 0 data%State%RAM(6)%time=data%State%RAM(6)%time+data%State%RamLine%DeltaT_BOP !overal time (s) !=================================================== ! BOP !=================================================== if (data%State%KillLine%closed==0) then !bop closing call bop_code(5,data%State%KillLine%H_Bop,6) !ramtype=5 6=RNUMBER endif !bop is closing !================================================================ if (data%State%KillLine%closed==1) then data%State%RAM(6)%Q=0 !p_bop=pram_reg data%State%RAM(6)%p_bop=data%State%ShearRAM%PA data%State%RAMS%minloss(6,17)=0. !RNUMBER=6 endif data%State%RAM(6)%timecounter_ram=data%State%RAM(6)%timecounter_ram+1 ! MiddleRamsStatus = IDshearBop ! UpperRamsStatus = IDPipeRam1 ! LowerRamsStatus = IDPipeRam2 ! AnnularStatus = IDAnnular ! AccumulatorPressureGauge = p_acc ! ManifoldPressureGauge= pram_reg ! AnnularPressureGauge=Pannular_reg ! ! ! ! WRITE(60,60) data%State%RAM(6)%time,data%State%RAM(6)%Q,data%State%RAM(6)%vdis_tot,p_acc, & ! pram_reg,Pannular_reg,data%State%RAM(6)%p_bop,IDshearBop, & ! IDPipeRam1,IDPipeRam2,IDAnnular !60 FORMAT(11(f18.5)) ! call sleepqq(100) if (data%State%KillLine%closed==1) then ! if ((UpperRamsValve==1. .and. UpperRamsFailureMalf==0) .or. (UpperRamsValve==-1.0 .and. UpperRamsFailureMalf==0) .or. (MiddleRamsValve==1. .and. MiddleRamsFailureMalf==0) .or. (MiddleRamsValve==-1.0 .and. MiddleRamsFailureMalf==0) .or. (LowerRamsValve==1. .and. LowerRamsFailureMalf==0) .or. (LowerRamsValve==-1.0 .and. LowerRamsFailureMalf==0) .or. (AnnularValve==1. .and. AnnularFailureMalf==0) .or. (AnnularValve==-1.0 .and. AnnularFailureMalf==0) .or. ChokeLineValve==1. .or. ChokeLineValve==-1.0) then data%State%KillLine%finished=1 ! endif endif ! if (IsStopped == .true.) return ! end do loop6 !while finished_KillLine==0 END SUBROUTINE KILL_LINE_SUB