|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- # 1 "/mnt/c/Projects/VSIM/SimulationCore2/Equipments/MudSystem/FillingWell_By_BellNipple.f90"
- subroutine FillingWell_By_BellNipple ! is called in subroutine CirculationCodeSelect
-
- ! this subroutine is for lines: 1) BellNippleToWell-NonFullWell : data%State%MUD(8)%Q
- ! 2) PumpsToWell_KillLine : data%State%MUD(10)%Q
-
- Use GeoElements_FluidModule
- USE CMudPropertiesVariables
- USE MudSystemVARIABLES
- use SimulationVariables !@@@
- use SimulationVariables
- use SimulationVariables !@
- !use CTanks
- !@use ConfigurationVariables, TripTankVolume2 => data%Equipments%DrillingWatch%TripTankVolume, TripTankDensity2 => TripTankDensity
- USE sROP_Other_Variables
- USE sROP_Variables
- use KickVARIABLESModule
-
- implicit none
-
- real(8) deltaV,Xposition,FillingDensity
-
- integer kloc,SectionPosition
-
-
-
-
- ! Well Is Not Full
-
-
-
- if (data%State%MudSystem%Ann_MudOrKick%Last() == 104) then ! Last Element is air we must observe: Ann_Mud_Forehead_X%Last()=0.0
-
- write(*,*) 'FillingWell_By_BellNipple-Last Element is air'
-
- !write(*,*) '*Ann_Mud_Forehead_X%Last()=' , Ann_Mud_Forehead_X%Last()
- !write(*,*) '*Ann_MudOrKick%Last()=' , Ann_MudOrKick%Last()
-
-
-
- FillingDensity= data%State%MudSystem%BellNippleDensity
-
- !****************************
- if ( data%State%MudSystem%Ann_MudDischarged_Volume%Last() > (((data%State%MUD(8)%Q+data%State%MUD(10)%Q)/60.)*data%State%MudSystem%DeltaT_Mudline)) then ! air baghi mimune
-
- kloc= data%State%MudSystem%Ann_MudDischarged_Volume%Length()-1
-
-
-
- deltaV= ((data%State%MUD(8)%Q+data%State%MUD(10)%Q)/60.)*data%State%MudSystem%DeltaT_Mudline
-
- data%State%MudSystem%Ann_MudDischarged_Volume%Array(data%State%MudSystem%Ann_MudDischarged_Volume%Length())= data%State%MudSystem%Ann_MudDischarged_Volume%Array(data%State%MudSystem%Ann_MudDischarged_Volume%Length()) - deltaV
-
-
- !========================ANNULUS ENTRANCE====================
-
- if (ABS(data%State%MudSystem%Ann_Density%Array(kloc) - FillingDensity) >= data%State%MudSystem%DensityMixTol) then ! new mud is pumped
- call data%State%MudSystem%Ann_Density%AddTo (kloc, FillingDensity)
- call data%State%MudSystem%Ann_MudDischarged_Volume%AddTo (kloc, 0.0d0)
- call data%State%MudSystem%Ann_Mud_Forehead_X%AddTo (kloc, 0.0d0)
- call data%State%MudSystem%Ann_Mud_Forehead_section%AddTo (kloc, 1)
- call data%State%MudSystem%Ann_Mud_Backhead_X%AddTo (kloc, 0.0d0)
- call data%State%MudSystem%Ann_Mud_Backhead_section%AddTo (kloc, data%State%MudSystem%NoPipeSections)
- call data%State%MudSystem%Ann_RemainedVolume_in_LastSection%AddTo (kloc, 0.0d0)
- call data%State%MudSystem%Ann_EmptyVolume_inBackheadLocation%AddTo (kloc, 0.0d0)
- call data%State%MudSystem%Ann_MudOrKick%AddTo (kloc, 0)
- call data%State%MudSystem%Ann_CuttingMud%AddTo (kloc,0)
-
- !AnnulusSuctionDensity_Old= Hz_Density_Utube
- endif
-
- !========================ANNULUS====================
-
- data%State%MudSystem%Ann_MudDischarged_Volume%Array(kloc)= data%State%MudSystem%Ann_MudDischarged_Volume%Array(kloc)+ deltaV !(gal)
-
-
-
- else ! ( Ann_MudDischarged_Volume%Last() <= (((data%State%MUD(8)%Q+data%State%MUD(10)%Q)/60.)*DeltaT_Mudline)) then ! air baghi namune
-
-
-
-
- kloc= data%State%MudSystem%Ann_MudDischarged_Volume%Length()-1
-
- deltaV= data%State%MudSystem%Ann_MudDischarged_Volume%Last()
-
-
-
- if (ABS(data%State%MudSystem%Ann_Density%Array(kloc)-FillingDensity)< data%State%MudSystem%DensityMixTol .and. data%State%MudSystem%Ann_CuttingMud%Array(kloc)==0) then ! .OR. (Ann_MudDischarged_Volume%Array(kloc)< 42.) ) then ! 1-Pockets are Merged
- data%State%MudSystem%Ann_Density%Array(kloc)= (data%State%MudSystem%Ann_Density%Array(kloc)*data%State%MudSystem%Ann_MudDischarged_Volume%Array(kloc)+FillingDensity*deltaV)/(data%State%MudSystem%Ann_MudDischarged_Volume%Array(kloc)+deltaV)
- data%State%MudSystem%Ann_MudDischarged_Volume%Array(kloc)= data%State%MudSystem%Ann_MudDischarged_Volume%Array(kloc)+deltaV
- data%State%MudSystem%Ann_Mud_Forehead_X%Array(kloc)= data%State%MudSystem%Xend_PipeSection(data%State%MudSystem%NoPipeSections)
- data%State%MudSystem%Ann_Mud_Forehead_section%Array(kloc)= data%State%MudSystem%NoPipeSections
- !Ann_Mud_Backhead_X%Array(kloc)= no change
- !Ann_Mud_Backhead_section%Array(kloc)= no change
- data%State%MudSystem%Ann_RemainedVolume_in_LastSection%Array(kloc)= (0.0)
- data%State%MudSystem%Ann_EmptyVolume_inBackheadLocation%Array(kloc)= (0.0)
-
- call data%State%MudSystem%Ann_MudDischarged_Volume%Remove (kloc+1)
- call data%State%MudSystem%Ann_Mud_Backhead_X%Remove (kloc+1)
- call data%State%MudSystem%Ann_Mud_Backhead_section%Remove (kloc+1)
- call data%State%MudSystem%Ann_Mud_Forehead_X%Remove (kloc+1)
- call data%State%MudSystem%Ann_Mud_Forehead_section%Remove (kloc+1)
- call data%State%MudSystem%Ann_Density%Remove (kloc+1)
- call data%State%MudSystem%Ann_RemainedVolume_in_LastSection%Remove (kloc+1)
- call data%State%MudSystem%Ann_EmptyVolume_inBackheadLocation%Remove (kloc+1)
- call data%State%MudSystem%Ann_MudOrKick%Remove (kloc+1)
- call data%State%MudSystem%Ann_CuttingMud%Remove (kloc+1)
-
-
- else ! 2-Merging conditions are not meeted, so new pocket== air is replaced with filling mud
- data%State%MudSystem%Ann_Density%Array(kloc+1) =FillingDensity
- data%State%MudSystem%Ann_MudOrKick%Array(kloc+1)= 0
-
- endif
-
-
- endif
-
- ! end condition (Ann_MudOrKick%Last() == 104) ! Last Element is air
-
- !**********************************************************************************************************************************************************
-
-
-
-
- else ! (Ann_MudOrKick%Last() == 0) then ! Last Element is NOT air- so we must observe: Ann_Mud_Forehead_X%Last()/=0.0
-
- !write(*,*) 'FillingWell_By_BellNipple-Last Element is NOT air'
- !
- !write(*,*) '*Ann_Mud_Forehead_X%Last()=' , Ann_Mud_Forehead_X%Last()
- !write(*,*) '*Ann_MudOrKick%Last()=' , Ann_MudOrKick%Last()
-
-
- deltaV= ((data%State%MUD(8)%Q+data%State%MUD(10)%Q)/60.)*data%State%MudSystem%DeltaT_Mudline
-
- kloc= data%State%MudSystem%Ann_MudDischarged_Volume%Length()
-
-
-
-
-
- !========================ANNULUS ENTRANCE====================
-
- if (ABS(data%State%MudSystem%Ann_Density%Last() - FillingDensity) >= data%State%MudSystem%DensityMixTol .or. data%State%MudSystem%Ann_CuttingMud%Last()==1) then ! .OR. (Ann_MudDischarged_Volume%Array(kloc)>42.) ) then ! new mud is pumped
- Xposition= data%State%MudSystem%Ann_Mud_Forehead_X%Last()
- SectionPosition= data%State%MudSystem%Ann_Mud_Forehead_section%Last()
- call data%State%MudSystem%Ann_Density%Add (FillingDensity)
- call data%State%MudSystem%Ann_MudDischarged_Volume%Add (0.0d0)
- call data%State%MudSystem%Ann_Mud_Forehead_X%Add (Xposition)
- call data%State%MudSystem%Ann_Mud_Forehead_section%Add (SectionPosition)
- call data%State%MudSystem%Ann_Mud_Backhead_X%Add (Xposition)
- call data%State%MudSystem%Ann_Mud_Backhead_section%Add (SectionPosition)
- call data%State%MudSystem%Ann_RemainedVolume_in_LastSection%Add (0.0d0)
- call data%State%MudSystem%Ann_EmptyVolume_inBackheadLocation%Add (0.0d0)
- call data%State%MudSystem%Ann_MudOrKick%Add (0)
- call data%State%MudSystem%Ann_CuttingMud%Add (0)
-
- !AnnulusSuctionDensity_Old= Hz_Density_Utube
- !endif
-
- !========================ANNULUS====================
-
- data%State%MudSystem%Ann_MudDischarged_Volume%Array(data%State%MudSystem%Ann_MudDischarged_Volume%Length())= data%State%MudSystem%Ann_MudDischarged_Volume%Array(data%State%MudSystem%Ann_MudDischarged_Volume%Length())+ deltaV !(gal)
-
-
- else ! Merged with last Mud
- data%State%MudSystem%Ann_Density%Array(kloc)= (data%State%MudSystem%Ann_Density%Array(kloc)*data%State%MudSystem%Ann_MudDischarged_Volume%Array(kloc)+FillingDensity*deltaV)/(data%State%MudSystem%Ann_MudDischarged_Volume%Array(kloc)+deltaV)
- data%State%MudSystem%Ann_MudDischarged_Volume%Array(kloc)= data%State%MudSystem%Ann_MudDischarged_Volume%Array(kloc)+deltaV
- !Ann_Mud_Forehead_X%Array(kloc)= Xend_PipeSection(NoPipeSections)
- !Ann_Mud_Forehead_section%Array(kloc)= NoPipeSections
- !Ann_Mud_Backhead_X%Array(kloc)= no change
- !Ann_Mud_Backhead_section%Array(kloc)= no change
- data%State%MudSystem%Ann_RemainedVolume_in_LastSection%Array(kloc)= (0.0)
- data%State%MudSystem%Ann_EmptyVolume_inBackheadLocation%Array(kloc)= (0.0)
- endif
-
-
-
-
-
-
- endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- end subroutine FillingWell_By_BellNipple
|