|
- subroutine TD_BOPDiamCalculation
-
- Use TD_DrillStemComponents
- Use TD_WellElements
- Use TD_WellGeometry
- Use TD_GeneralData
- Use TD_StringConnectionData
- Use CBopStackVariables
- Use VARIABLES
-
-
- 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)
-
-
-
-
-
- !TD_String%ToolJointRange = 0.4005d0*3.28 ! [ft]
-
- !====================================================
- ! Read BOP Data
- !====================================================
-
- TD_BOP%BOPHeight(5) = BopStackSpecification%AboveAnnularHeight
- TD_BOP%BOPHeight(1) = BopStackSpecification%AnnularPreventerHeight
- TD_BOP%BOPHeight(2) = BopStackSpecification%UpperRamHeight
- TD_BOP%BOPHeight(3) = BopStackSpecification%BlindRamHeight
- TD_BOP%BOPHeight(6) = BopStackSpecification%KillHeight
- TD_BOP%BOPHeight(4) = BopStackSpecification%LowerRamHeight
-
-
- TD_BOP%BOPRamDiam(1) = ShearRam%IDAnnularfinal
- TD_BOP%BOPRamDiam(2) = ShearRam%IDPipeRam1final
- TD_BOP%BOPRamDiam(3) = ShearRam%IDshearBopfinal
- TD_BOP%BOPRamDiam(4) = ShearRam%IDPipeRam2final
-
-
-
-
-
-
- !====================================================
- ! Element Counts in BOPStack Domain
- !====================================================
-
- !if (TD_String%DrillStemComponentsNumbs>5) then
- TD_Numbs = TD_String%DrillStemComponentsNumbs-7 ! 7 Elements from the Top of DrillStem
- !else
- ! TD_Numbs = 1
- !end if
-
-
-
-
-
-
-
-
-
- !====================================================
- ! Determination of Elements Diameter in BOPStack Domain
- !====================================================
-
- TD_BOP%BOPDiam = 0.d0
- TD_OldFillingValue = 0.d0
- Do i = TD_String%DrillStemComponentsNumbs,TD_Numbs,-1
-
- TD_LimitUp = TD_DrillStems(i)%TopDepth+TD_DrillStems(i)%ToolJointRange
- TD_LimitDown = TD_DrillStems(i)%DownDepth-TD_DrillStems(i)%ToolJointRange
- TD_ElToolJoints(1,1) = 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) = 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),(TD_BOP%BOPHeight(1)+TD_BOP%BOPThickness))-max(TD_ElToolJoints(m,1),(TD_BOP%BOPHeight(1)-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/(TD_BOP%BOPThickness*2.d0)) ! 0=<TD_AnnularFilling<=1
- TD_OldFillingValue = TD_AnnularFilling
- End Do
-
-
- do j = 1,6
- if ( (TD_BOP%BOPHeight(j)-TD_BOP%BOPThickness)>TD_LimitUp .and. (TD_BOP%BOPHeight(j)+TD_BOP%BOPThickness)<TD_LimitDown ) then
- TD_BOP%BOPDiam(j) = TD_DrillStems(i)%Od
- TD_BOP%BOPElementNo(j) = i
- if ( TD_DrillStems(i)%ComponentType==3 .and. j/=1 .and. TD_String%DrillStemRotVelocity==0. ) then
- TD_BOP%BOPConnectionPossibility(j) = 1
- else if ( j==1 ) then
- TD_BOP%BOPConnectionPossibility(j) = 1
- else
- TD_BOP%BOPConnectionPossibility(j) = 0
- end if
- !print* , 'T.DP. , B.DP. 1=' , TD_DrillStems(i)%TopDepth , TD_DrillStems(i)%DownDepth
- !print* , 'T.R. , B.R. , LimitUp , LimitDown 1=' , (TD_BOP%BOPHeight(j)-TD_BOP%BOPThickness) , (TD_BOP%BOPHeight(j)+TD_BOP%BOPThickness) , TD_LimitUp , TD_LimitDown
- !print* , 'stringNo , ramsNo , Possibility , BOPDiam 1=' , i , j , TD_BOP%BOPConnectionPossibility(j) , TD_BOP%BOPDiam(j)
- else if ( (TD_BOP%BOPHeight(j)+TD_BOP%BOPThickness)>=TD_DrillStems(i)%TopDepth .and. (TD_BOP%BOPHeight(j)-TD_BOP%BOPThickness)<=TD_DrillStems(i)%DownDepth ) then
- TD_BOP%BOPDiam(j) = TD_DrillStems(i)%RtoolJoint*2.d0
- TD_BOP%BOPElementNo(j) = i
- if ( j==1 ) then
- TD_BOP%BOPConnectionPossibility(j) = 1
- else
- TD_BOP%BOPConnectionPossibility(j) = 0
- end if
- !print* , 'T.DP. , B.DP. 2=' , TD_DrillStems(i)%TopDepth , TD_DrillStems(i)%DownDepth
- !print* , 'T.R. , B.R. , LimitUp , LimitDown 2=' , (TD_BOP%BOPHeight(j)-TD_BOP%BOPThickness) , (TD_BOP%BOPHeight(j)+TD_BOP%BOPThickness) , TD_LimitUp , TD_LimitDown
- !print* , 'stringNo , ramsNo , Possibility , BOPDiam 2=' , i , j , TD_BOP%BOPConnectionPossibility(j) , TD_BOP%BOPDiam(j)
- end if
- end do
-
- End Do
- TD_BOP%AnnularFillingFinal = TD_AnnularFilling
-
- TD_BOP%AboveAnnularDiam = TD_BOP%BOPDiam(5)
- TD_BOP%AnnularPreventerDiam = TD_BOP%BOPDiam(1)
- TD_BOP%UpperRamDiam = TD_BOP%BOPDiam(2)
- TD_BOP%BlindRamDiam = TD_BOP%BOPDiam(3)
- TD_BOP%KillDiam = TD_BOP%BOPDiam(6)
- TD_BOP%LowerRamDiam = TD_BOP%BOPDiam(4)
-
-
- !print* , 'TD_BOP%BOPElementNo=' , TD_BOP%BOPElementNo
- !print* , 'TD_BOP%BOPConnectionPossibility=' , TD_BOP%BOPConnectionPossibility
- !print* , 'TD_BOP%BOPDiam=' , TD_BOP%BOPDiam
-
-
-
-
- !!===> BOP RAMs Condition *** TD_BOP%BOPCondition: 0=open , 1=close
- !do j = 1,4
- ! if ( TD_BOP%BOPDiam(j)>=TD_BOP%BOPRamDiam(j) ) then
- ! TD_BOP%BOPCondition(j) = 1
- ! else
- ! TD_BOP%BOPCondition(j) = 0
- ! end if
- !end do
-
-
-
-
-
-
-
-
- !====================================================
- ! String Elements Configuration in BOPStack Domain
- !====================================================
-
- !if ( allocated(TD_BOPElement) ) deallocate (TD_BOPElement)
- !allocate(TD_BOPElement())
- n = 0
- TD_BOPElement%ElementType = 0.d0
- TD_BOPElement%ElementStart = 0.d0
- TD_BOPElement%ElementEnd = 0.d0
- do k = TD_String%DrillStemComponentsNumbs,TD_Numbs,-1
- if( ((TD_DrillStems(k)%TopDepth>=TD_BOP%BOPHeight(5)).and.(TD_DrillStems(k)%TopDepth<=TD_BOP%BOPHeight(4))) .or. ((TD_DrillStems(k)%DownDepth>=TD_BOP%BOPHeight(5)).and.(TD_DrillStems(k)%DownDepth<=TD_BOP%BOPHeight(4))) ) then
- n = n+1
- TD_BOPElement(n)%ElementType = TD_DrillStems(k)%ComponentType
- TD_BOPElement(n)%ElementStart = TD_DrillStems(k)%TopDepth
- TD_BOPElement(n)%ElementEnd = TD_DrillStems(k)%DownDepth
- else if ( TD_DrillStems(k)%TopDepth<=TD_BOP%BOPHeight(5) .and. TD_DrillStems(k)%DownDepth>=TD_BOP%BOPHeight(4) ) then
- n = n+1
- TD_BOPElement(n)%ElementType = TD_DrillStems(k)%ComponentType
- TD_BOPElement(n)%ElementStart = TD_DrillStems(k)%TopDepth
- TD_BOPElement(n)%ElementEnd = TD_DrillStems(k)%DownDepth
- end if
- end do
-
- Call SetBopElements(TD_BOPElement)
-
-
-
-
- end subroutine
|