|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- # 1 "/mnt/c/Projects/VSIM/SimulationCore2/TorqueDrag/TD_DrillingSubs/TD_BOPDiamCalculation.f90"
- subroutine TD_BOPDiamCalculation
-
- Use TD_DrillStemComponents
- use SimulationVariables !@
- use SimulationVariables !@
- use SimulationVariables !@
- Use TD_StringConnectionData
- Use CBopStackVariables
- use SimulationVariables
- use DownHoleModule
-
-
- Integer :: i , j , n , m , TD_Numbs
- Real(8) :: TD_LimitUp , TD_LimitDown , TD_OldFillingValue , TD_AnnTjDiff , TD_AnnularFilling
- Real(8) :: TD_ElToolJoints(2,2)
-
-
-
-
-
- !data%State%TD_String%ToolJointRange = 0.4005d0*3.28 ! [ft]
-
- !====================================================
- ! Read BOP Data
- !====================================================
-
- data%State%TD_BOP%BOPHeight(5) = data%Configuration%BopStack%AboveAnnularHeight
- data%State%TD_BOP%BOPHeight(1) = data%Configuration%BopStack%AnnularPreventerHeight
- data%State%TD_BOP%BOPHeight(2) = data%Configuration%BopStack%UpperRamHeight
- data%State%TD_BOP%BOPHeight(3) = data%Configuration%BopStack%BlindRamHeight
- data%State%TD_BOP%BOPHeight(6) = data%Configuration%BopStack%KillHeight
- data%State%TD_BOP%BOPHeight(4) = data%Configuration%BopStack%LowerRamHeight
-
-
- data%State%TD_BOP%BOPRamDiam(1) = data%State%ShearRAM%IDAnnularfinal
- data%State%TD_BOP%BOPRamDiam(2) = data%State%ShearRAM%IDPipeRam1final
- data%State%TD_BOP%BOPRamDiam(3) = data%State%ShearRAM%IDshearBopfinal
- data%State%TD_BOP%BOPRamDiam(4) = data%State%ShearRAM%IDPipeRam2final
-
-
-
-
-
-
- !====================================================
- ! Element Counts in BOPStack Domain
- !====================================================
-
- !if (data%State%TD_String%DrillStemComponentsNumbs>5) then
- TD_Numbs = data%State%TD_String%DrillStemComponentsNumbs-7 ! 7 Elements from the Top of DrillStem
- !else
- ! TD_Numbs = 1
- !end if
-
-
-
-
-
-
-
-
-
- !====================================================
- ! Determination of Elements Diameter in BOPStack Domain
- !====================================================
-
- data%State%TD_BOP%BOPDiam = 0.d0
- TD_OldFillingValue = 0.d0
- Do i = data%State%TD_String%DrillStemComponentsNumbs,TD_Numbs,-1
-
- TD_LimitUp = data%State%TD_DrillStems(i)%TopDepth+data%State%TD_DrillStems(i)%ToolJointRange
- TD_LimitDown = data%State%TD_DrillStems(i)%DownDepth-data%State%TD_DrillStems(i)%ToolJointRange
- TD_ElToolJoints(1,1) = data%State%TD_DrillStems(i)%TopDepth ! TD_ElToolJoints(i,j) , i=top & down tooljoints of element , j=top & down tooljoints Depth
- TD_ElToolJoints(1,2) = TD_LimitUp
- TD_ElToolJoints(2,1) = TD_LimitDown
- TD_ElToolJoints(2,2) = data%State%TD_DrillStems(i)%DownDepth
-
-
- !===> che meghdar az fazaye annular ba tooljoint por mishavad (for BOP Module)
- Do m = 1,2
- TD_AnnTjDiff = min(TD_ElToolJoints(m,2),(data%State%TD_BOP%BOPHeight(1)+data%State%TD_BOP%BOPThickness))-max(TD_ElToolJoints(m,1),(data%State%TD_BOP%BOPHeight(1)-data%State%TD_BOP%BOPThickness))
- if (TD_AnnTjDiff<0.) then ! tooljoint is not in the annular range
- TD_AnnTjDiff = 0.d0
- end if
- TD_AnnularFilling = TD_OldFillingValue+(TD_AnnTjDiff/(data%State%TD_BOP%BOPThickness*2.d0)) ! 0=<TD_AnnularFilling<=1
- TD_OldFillingValue = TD_AnnularFilling
- End Do
-
-
- do j = 1,6
- if ( (data%State%TD_BOP%BOPHeight(j)-data%State%TD_BOP%BOPThickness)>TD_LimitUp .and. (data%State%TD_BOP%BOPHeight(j)+data%State%TD_BOP%BOPThickness)<TD_LimitDown ) then
- data%State%TD_BOP%BOPDiam(j) = data%State%TD_DrillStems(i)%Od
- data%State%TD_BOP%BOPElementNo(j) = i
- if ( data%State%TD_DrillStems(i)%ComponentType==3 .and. j/=1 .and. data%State%TD_String%DrillStemRotVelocity==0. ) then
- data%State%TD_BOP%BOPConnectionPossibility(j) = 1
- else if ( j==1 ) then
- data%State%TD_BOP%BOPConnectionPossibility(j) = 1
- else
- data%State%TD_BOP%BOPConnectionPossibility(j) = 0
- end if
- !print* , 'T.DP. , B.DP. 1=' , data%State%TD_DrillStems(i)%TopDepth , data%State%TD_DrillStems(i)%DownDepth
- !print* , 'T.R. , B.R. , LimitUp , LimitDown 1=' , (data%State%TD_BOP%BOPHeight(j)-data%State%TD_BOP%BOPThickness) , (data%State%TD_BOP%BOPHeight(j)+data%State%TD_BOP%BOPThickness) , TD_LimitUp , TD_LimitDown
- !print* , 'stringNo , ramsNo , Possibility , BOPDiam 1=' , i , j , data%State%TD_BOP%BOPConnectionPossibility(j) , data%State%TD_BOP%BOPDiam(j)
- else if ( (data%State%TD_BOP%BOPHeight(j)+data%State%TD_BOP%BOPThickness)>=data%State%TD_DrillStems(i)%TopDepth .and. (data%State%TD_BOP%BOPHeight(j)-data%State%TD_BOP%BOPThickness)<=data%State%TD_DrillStems(i)%DownDepth ) then
- data%State%TD_BOP%BOPDiam(j) = data%State%TD_DrillStems(i)%RtoolJoint*2.d0
- data%State%TD_BOP%BOPElementNo(j) = i
- if ( j==1 ) then
- data%State%TD_BOP%BOPConnectionPossibility(j) = 1
- else
- data%State%TD_BOP%BOPConnectionPossibility(j) = 0
- end if
- !print* , 'T.DP. , B.DP. 2=' , data%State%TD_DrillStems(i)%TopDepth , data%State%TD_DrillStems(i)%DownDepth
- !print* , 'T.R. , B.R. , LimitUp , LimitDown 2=' , (data%State%TD_BOP%BOPHeight(j)-data%State%TD_BOP%BOPThickness) , (data%State%TD_BOP%BOPHeight(j)+data%State%TD_BOP%BOPThickness) , TD_LimitUp , TD_LimitDown
- !print* , 'stringNo , ramsNo , Possibility , BOPDiam 2=' , i , j , data%State%TD_BOP%BOPConnectionPossibility(j) , data%State%TD_BOP%BOPDiam(j)
- end if
- end do
-
- End Do
- data%State%TD_BOP%AnnularFillingFinal = TD_AnnularFilling
-
- data%State%TD_BOP%AboveAnnularDiam = data%State%TD_BOP%BOPDiam(5)
- data%State%TD_BOP%AnnularPreventerDiam = data%State%TD_BOP%BOPDiam(1)
- data%State%TD_BOP%UpperRamDiam = data%State%TD_BOP%BOPDiam(2)
- data%State%TD_BOP%BlindRamDiam = data%State%TD_BOP%BOPDiam(3)
- data%State%TD_BOP%KillDiam = data%State%TD_BOP%BOPDiam(6)
- data%State%TD_BOP%LowerRamDiam = data%State%TD_BOP%BOPDiam(4)
-
-
- !print* , 'data%State%TD_BOP%BOPElementNo=' , data%State%TD_BOP%BOPElementNo
- !print* , 'data%State%TD_BOP%BOPConnectionPossibility=' , data%State%TD_BOP%BOPConnectionPossibility
- !print* , 'data%State%TD_BOP%BOPDiam=' , data%State%TD_BOP%BOPDiam
-
-
-
-
- !!===> BOP RAMs Condition *** data%State%TD_BOP%BOPCondition: 0=open , 1=close
- !do j = 1,4
- ! if ( data%State%TD_BOP%BOPDiam(j)>=data%State%TD_BOP%BOPRamDiam(j) ) then
- ! data%State%TD_BOP%BOPCondition(j) = 1
- ! else
- ! data%State%TD_BOP%BOPCondition(j) = 0
- ! end if
- !end do
-
-
-
-
-
-
-
-
- !====================================================
- ! String Elements Configuration in BOPStack Domain
- !====================================================
-
- !if ( allocated(data%State%TD_BOPElement) ) deallocate (data%State%TD_BOPElement)
- !allocate(data%State%TD_BOPElement())
- n = 0
- data%State%TD_BOPElement%ElementType = 0.d0
- data%State%TD_BOPElement%ElementStart = 0.d0
- data%State%TD_BOPElement%ElementEnd = 0.d0
- do k = data%State%TD_String%DrillStemComponentsNumbs,TD_Numbs,-1
- if( ((data%State%TD_DrillStems(k)%TopDepth>=data%State%TD_BOP%BOPHeight(5)).and.(data%State%TD_DrillStems(k)%TopDepth<=data%State%TD_BOP%BOPHeight(4))) .or. ((data%State%TD_DrillStems(k)%DownDepth>=data%State%TD_BOP%BOPHeight(5)).and.(data%State%TD_DrillStems(k)%DownDepth<=data%State%TD_BOP%BOPHeight(4))) ) then
- n = n+1
- data%State%TD_BOPElement(n)%ElementType = data%State%TD_DrillStems(k)%ComponentType
- data%State%TD_BOPElement(n)%ElementStart = data%State%TD_DrillStems(k)%TopDepth
- data%State%TD_BOPElement(n)%ElementEnd = data%State%TD_DrillStems(k)%DownDepth
- else if ( data%State%TD_DrillStems(k)%TopDepth<=data%State%TD_BOP%BOPHeight(5) .and. data%State%TD_DrillStems(k)%DownDepth>=data%State%TD_BOP%BOPHeight(4) ) then
- n = n+1
- data%State%TD_BOPElement(n)%ElementType = data%State%TD_DrillStems(k)%ComponentType
- data%State%TD_BOPElement(n)%ElementStart = data%State%TD_DrillStems(k)%TopDepth
- data%State%TD_BOPElement(n)%ElementEnd = data%State%TD_DrillStems(k)%DownDepth
- end if
- end do
-
- Call SetBopElements(data%State%TD_BOPElement)
-
-
-
-
- end subroutine
|