|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- # 1 "/home/admin/SimulationCore2/Equipments/BopStack/BOPstartup.f90"
-
- SUBROUTINE BOP_StartUp()
- use SimulationVariables
- USE CAccumulatorVariables
- USE CBopStackVariables
- use CBopControlPanel
- use SimulationVariables
- USE CEquipmentsConstants
- implicit none
-
- integer i
-
-
- !UpperRamsFailureMalf=0
- !AnnularFailureMalf=0
- !LowerRamsFailureMalf=0
- !MiddleRamsFailureMalf=0
- !UpperRamsLeakMalf=0
- !LowerRamsLeakMalf=0
- !MiddleRamsLeakMalf=0
- !AnnularLeakMalf=0
- !AccPupmsFailMalf=0
- !AirSupplyPressureGauge=0
- !======================= SETTING VARIABLES
-
- data%State%BopStackInput%BOP_timeCounter= 0
-
- !============== FOR MANIFOLD VALVES CODE=====================
- CALL OpenAnnular
- CALL OpenUpperRams
- CALL OpenMiddleRams
- CALL CloseKillLine
- CALL CloseChokeLine
- CALL OpenLowerRams
-
- data%State%Annular%Annular_Situation_forTD= 0 ! open - for TD code
- data%State%RamLine%ShearBop_Situation_forTD= 0 ! open - for TD code
- data%State%PipeRam1%Situation_forTD= 0 ! open - for TD code
- data%State%PipeRam2%Situation_forTD= 0 ! open - for TD code
- !======================================================================
-
- CALL LOSS_INPUTS()
- !
- !OPEN(50,FILE='AIRPUMP_OUTPUTS.DAT')
- !OPEN(60,FILE='RAMS_OUTPUTS.DAT')
- !======================================================================
- ! GET INPUTS
- !======================================================================
-
- data%State%RAM%SuccessionCounter = 0
- data%State%RAM%SuccessionCounterOld = 0
-
- data%State%RAM%First_CloseTimecheck= 0
- data%State%RAM%First_OpenTimecheck= 0
-
-
-
- data%State%BopStackAcc%Cumulative_AirVolume= 0.0
-
-
- data%State%BopStackAcc%BOTTLE_CAPACITY=10 !(GALON)
- data%State%BopStackAcc%NOBOTTLES=data%Configuration%Accumulator%NumberOfBottels
-
-
-
-
-
-
-
- !fvr_tot=40 !(GALON) IN CHARGED POSITION
- data%State%BopStackAcc%PRAMS_REGSET=1500 !RamsReglatorSet !=1500 DEFAULT regulator set pressure (PSI)
- data%State%BopStackAcc%acc_ChargedPressure=3000 !charged(PSI)
- data%State%BopStackAcc%acc_MinPressure=data%Configuration%Accumulator%AccumulatorMinimumOperatingPressure !1200 !discharged(PSI)
- !acc_precharge=1000
-
-
- data%State%BopStackAcc%FVR_TOT=(-2451*(data%State%BopStackAcc%acc_ChargedPressure**(-0.8202))+8.435)*data%State%BopStackAcc%NOBOTTLES ! IT IS WRRITEN FOR PRECHARGE 1000 PSI FROM ITS CURVE
-
- !write(*,*) 'fvr_tot=',fvr_tot
-
- !ELECTRIC_PUMPON=2800
- data%State%Pumps%ELECTRIC_ON=data%Configuration%Accumulator%StartPressure
- !ELECTRIC_PUMPOFF=acc_ChargedPressure !=3000 psi
- data%State%Pumps%ELECTRIC_OFF=data%Configuration%Accumulator%StopPressure
- !QELECTRIC_PUMP=12 !(gpm)
- data%State%Pumps%QELECTRIC=data%Configuration%Accumulator%ElectricPumpOutput
-
-
-
- !AIR_PUMPON=2600
- data%State%Pumps%AIR_ON=data%Configuration%Accumulator%StartPressure2
- !AIR_PUMPOFF=2900
- data%State%Pumps%AIR_OFF=data%Configuration%Accumulator%StopPressure2
-
-
-
- data%State%RAM%tol=0.0037 !%=(2700-2600)/2700
- data%State%RAM%tolzero=data%State%RAM%tol
-
- data%State%Annular%tolAnnular=0.0018 !=(2900-2895)/2900
- data%State%Annular%tolzeroAnnular=data%State%Annular%tolAnnular
- !======================OTHER INPUTS(CONSTANTS)===========================
- data%State%ShearRAM%PA=300 !(PSI)
- data%State%ShearRAM%P_SHEAR=1200 !(PSI)
- !p_shear=2423.1 !(PSI)
- data%State%ShearRAM%PB=data%State%ShearRAM%P_SHEAR-data%State%ShearRAM%PA
- data%State%AnnularComputational%pa_annular=100 !(psi)
-
-
-
-
- data%State%Annular%IDAnnularBase=13.625 !(inch)
- data%State%Annular%IDAnnular=data%State%Annular%IDAnnularBase
- data%State%Annular%ODDrillpipe_inAnnularBase=5. ! so 18 gal is for complete closing of annular
- data%State%Annular%ODDrillpipe_inAnnular=5. ! initial
- data%State%AnnularComputational%AnnularMovingPressure=360. !(psi)
- data%State%ShearRAM%IDAnnularFinal= data%State%Annular%IDAnnular
-
-
- data%State%ShearRAM%IDshearBopBase=13.625 !(inch)
- data%State%ShearRAM%IDshearBop=data%State%ShearRAM%IDshearBopBase
- data%State%ShearRAM%ODDrillpipe_inShearRamBase=5 !initial
- data%State%ShearRAM%ODDrillpipe_inShearRam=5 !initial
- data%State%ShearRAM%IDshearBopFinal= data%State%ShearRAM%IDshearBop
-
- data%State%PipeRam1%IDBase=13.625 !(inch)
- data%State%PipeRam1%ID=data%State%PipeRam1%IDBase
- data%State%PipeRam1%ODDrillpipe_inBase=5 !initial
- data%State%PipeRam1%ODDrillpipe_in=5 !initial
- data%State%ShearRAM%IDPipeRam1Final= data%State%PipeRam1%ID
-
-
- data%State%PipeRam2%ID=data%State%PipeRam1%IDBase !(inch)
- data%State%PipeRam2%ODDrillpipe_inBase=5 !initial
- data%State%PipeRam2%ODDrillpipe_in=5 !initial
- data%State%ShearRAM%IDPipeRam2Final= data%State%PipeRam2%ID
-
- data%State%ChokeLine%IDBase=8.6 !(inch)
- data%State%ChokeLine%ID=data%State%ChokeLine%IDBase
- data%State%ChokeLine%ODDrillpipe_inBase=5
- data%State%ChokeLine%ODDrillpipe_in=5
-
- data%State%KillLine%IDBase=8.6 !(inch)
- data%State%KillLine%ID=data%State%KillLine%IDBase
- data%State%KillLine%ODDrillpipe_inBase=5
- data%State%KillLine%ODDrillpipe_in=5
-
-
- !va=4 !(liter)
- !vb=8 !(liter)
-
- !cv=2; !flow coefficinet of regulator
-
- data%State%ShearRAM%RAM_COURSE=320.2 !milimeter
- data%State%ShearRAM%H_REGRAM=0 !(m)<<<<<<<<<<<<<<<<<<<<<<<<
- data%State%ShearRAM%H_ShearRamBop=(data%Configuration%BopStack%GroundLevel-data%Configuration%BopStack%BlindRamHeight)*0.3048 ! foot to meter
- data%State%PipeRam1%H=(data%Configuration%BopStack%GroundLevel-data%Configuration%BopStack%UpperRamHeight)*0.3048 ! foot to meter
- data%State%PipeRam2%H_Bop=(data%Configuration%BopStack%GroundLevel-data%Configuration%BopStack%LowerRamHeight)*0.3048 ! foot to meter
- data%State%Annular%H_AnnularBop=(data%Configuration%BopStack%GroundLevel-data%Configuration%BopStack%AnnularPreventerHeight)*0.3048 ! foot to meter
- data%State%ChokeLine%H_Bop=(data%Configuration%BopStack%GroundLevel-data%Configuration%BopStack%KillHeight)*0.3048 ! foot to meter
- data%State%KillLine%H_Bop=(data%Configuration%BopStack%GroundLevel-data%Configuration%BopStack%KillHeight)*0.3048 ! foot to meter
-
-
- data%State%RamLine%P_ACC=data%State%BopStackAcc%acc_ChargedPressure
- data%State%RAM%vdis_bottles=0 !initial discharged volume
- data%State%RamLine%FVR=data%State%BopStackAcc%FVR_TOT
- data%State%RAMS%minloss=0.
-
- !======================AIRPUMP INPUTS(CONSTANTS)===========================
-
- data%State%RAM%FVR_AIR=0
- data%State%Pumps%P_AIRP=0
-
- data%State%RamLine%BA1=1003; data%State%RamLine%BA2=.03375; data%State%RamLine%BA3=4.014; data%State%RamLine%BA4=.2458
- data%State%RamLine%BBA1 =31.8; data%State%RamLine%BBA2 =-725.7 ; data%State%RamLine%BBA3 =4154
-
- data%State%Pumps%Qiter=7 !(gpm)
-
- ! Q=0.0003585; true
-
-
- data%State%RamLine%DeltaT_BOP=0.1 !second
- data%State%Pumps%TOL_AIR=.08
-
- data%State%Pumps%alpha_Qair=0
- data%State%Pumps%alpha_timeair=0
- data%State%Pumps%alpha_paccair=data%State%RamLine%P_ACC
- data%State%Pumps%alpha_pairp=data%State%RamLine%P_ACC
- data%State%Pumps%alpha_diffpair=0
- data%State%Pumps%alpha_lossesair=0
- data%State%Pumps%alpha_fvrair=0
-
- data%State%RamLine%counter_airp=1
-
- !======================BOP INPUTS(CONSTANTS)===========================
-
- if (data%Configuration%Accumulator%PrechargePressure == 1400.) then
- data%State%RamLine%B1=1396; data%State%RamLine%B2=0.17; data%State%RamLine%B3=3.873; data%State%RamLine%B4=1.101
- elseif (data%Configuration%Accumulator%PrechargePressure == 2000.) then
- data%State%RamLine%B1=1980; data%State%RamLine%B2=0.1237; data%State%RamLine%B3=15.69; data%State%RamLine%B4=1.029
- elseif (data%Configuration%Accumulator%PrechargePressure == 600.) then
- data%State%RamLine%B1=591.9; data%State%RamLine%B2=0.1968; data%State%RamLine%B3=2.887; data%State%RamLine%B4=0.9757
- else !(PrechargePressure == 1000.) then ! this is for precharge=1000 psi
- data%State%RamLine%B1=993.7; data%State%RamLine%B2=0.164; data%State%RamLine%B3=5.492; data%State%RamLine%B4=0.9796
- endif
-
- data%State%BopStackAcc%ByPassOld= 1.0
-
- data%State%RAM%p_bop=data%State%ShearRAM%PA
- data%State%AnnularComputational%p_annular=data%State%AnnularComputational%pa_annular
- !Q=0.0055; !initial flow rate (m^3/s)
- data%State%RAM%flow=60 !(gpm) initial value
- data%State%RAM%Qzero=70 !for DP code, increasing Q after shear
- data%State%RAM%vdis_tot=0
- data%State%RamLine%AIRP_SWITCH=0 !off position
- data%State%RamLine%ELECP_SWITCH=0 !off position
- data%State%RamLine%ShearBop_closed=1
- data%State%PipeRam1%closed=1
- data%State%PipeRam2%closed=1
- data%State%ChokeLine%closed=1
- data%State%KillLine%closed=1
- data%State%Annular%Annular_closed=1
- data%State%RamLine%FINISHED_shear=0
- data%State%PipeRam1%finished=0
- data%State%PipeRam2%finished=0
- data%State%ChokeLine%finished=0
- data%State%KillLine%finished=0
- data%State%Annular%finished_Annular=0
- data%State%Pumps%DELTAV_ELECP=0
- data%State%RAM%vdis_elecp=0
- !==================================================================
- data%State%RAM%timecounter_ram=0
- data%State%RAM%Q=0
- data%State%BopStackAcc%pram_reg=data%State%BopStackAcc%PRAMS_REGSET !psi !RamsReglatorSet
- data%State%Annular%Pannular_reg=min(data%Equipments%BopControlPanel%AnnularRegulatorSetControl,1700.)
-
-
-
-
- data%Equipments%BopControlPanel%MiddleRamsStatus= data%State%ShearRAM%IDshearBop
- data%Equipments%BopControlPanel%UpperRamsStatus= data%State%PipeRam1%ID
- data%Equipments%BopControlPanel%LowerRamsStatus= data%State%PipeRam2%ID
- data%Equipments%BopControlPanel%AnnularStatus = data%State%Annular%IDAnnular
-
-
- data%Equipments%BopControlPanel%AccumulatorPressureGauge = data%State%RamLine%P_ACC
-
-
- data%State%RAM%time=0
-
- ! WRITE(60,10) ' Overal Time','Q Ram Line','Vdis Ram Line','P Accumulator','Preg Ram Line','Preg Annular',' P BOP','ID Shear Ram', &
- ! 'ID Pipe Ram1','ID Pipe Ram2','ID Annular'
- !10 FORMAT(11(A18))
- !
- !
- !
- ! WRITE(60,60) data%State%RAM(2)%time,data%State%RAM(2)%Q,data%State%RAM(2)%vdis_tot,p_acc, &
- ! pram_reg,Pannular_reg,data%State%RAM(2)%p_bop,IDshearBop, &
- ! IDPipeRam1,IDPipeRam2,IDAnnular
- !60 FORMAT(11(f18.5))
-
-
- data%Equipments%BopControlPanel%MiddleRamsOpenLED = LedOn
- data%State%BopStackInput%MiddleRamsOpenLEDMine = LedOn
- data%Equipments%BopControlPanel%MiddleRamsCloseLED = LedOff
- data%State%BopStackInput%MiddleRamsCloseLEDMine = LedOff
- data%State%RamLine%ShearRamIsOpening = .false.
- data%State%RamLine%ShearRamIsClosing = .false.
-
- data%Equipments%BopControlPanel%UpperRamsOpenLED = LedOn
- data%State%BopStackInput%UpperRamsOpenLEDMine = LedOn
- data%Equipments%BopControlPanel%UpperRamsCloseLED = LedOff
- data%State%BopStackInput%UpperRamsCloseLEDMine = LedOff
- data%State%PipeRam1%IsOpening = .false.
- data%State%PipeRam1%IsClosing = .false.
-
- data%Equipments%BopControlPanel%LowerRamsOpenLED = LedOn
- data%State%BopStackInput%LowerRamsOpenLEDMine = LedOn
- data%Equipments%BopControlPanel%LowerRamsCloseLED = LedOff
- data%State%BopStackInput%LowerRamsCloseLEDMine = LedOff
- data%State%PipeRam2%IsOpening = .false.
- data%State%PipeRam2%IsClosing = .false.
-
- data%Equipments%BopControlPanel%ChokeLineOpenLED = LedOff
- data%State%BopStackInput%ChokeLineOpenLEDMine = LedOff
- data%Equipments%BopControlPanel%ChokeLineCloseLED = LedOn
- data%State%BopStackInput%ChokeLineCloseLEDMine = LedOn
- data%State%ChokeLine%IsOpening = .false.
- data%State%ChokeLine%IsClosing = .false.
-
-
- data%Equipments%BopControlPanel%KillLineOpenLED = LedOff
- data%State%BopStackInput%KillLineOpenLedMine = LedOff
- data%Equipments%BopControlPanel%KillLineCloseLED = LedOn
- data%State%BopStackInput%KillLineCloseLedMine = LedOn
- data%State%KillLine%IsOpening = .false.
- data%State%KillLine%IsClosing = .false.
-
-
- data%Equipments%BopControlPanel%AnnularOpenLED = LedOn
- data%State%BopStackInput%AnnularOpenLedMine = LedOn
-
- data%Equipments%BopControlPanel%AnnularCloseLED = LedOff
- data%State%BopStackInput%AnnularCloseLedMine = LedOff
-
- data%State%Annular%AnnularIsOpening = .false.
- data%State%Annular%AnnularIsClosing = .false.
-
-
- data%State%Annular%FirstSet=1
- data%State%AnnularComputational%RamsFirstSet=1
- data%Equipments%BopControlPanel%ManifoldPressureGauge=data%State%BopStackAcc%PRAMS_REGSET !RamsReglatorSet
- data%Equipments%BopControlPanel%AnnularPressureGauge= (1 - data%State%Annular%AnnularPressureGaugeMalf) * min(data%Equipments%BopControlPanel%AnnularRegulatorSetControl,1700.)
-
-
- data%State%AnnularComputational%PannularTimeStepDelay = int(1./data%State%RamLine%DeltaT_BOP) ! 1/0.1 : for 1 sec delay in AnnRegulator shot time
-
- DO i = 1 , data%State%AnnularComputational%PannularTimeStepDelay
- CALL data%State%AnnularComputational%Pannular_regDelay%AddToFirst(data%Equipments%BopControlPanel%AnnularPressureGauge)
- END DO
-
-
-
- end
-
|