|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- subroutine TD_WellReadData
-
- Use CPathGenerationVariables
- Use TD_WellGeometry
-
- implicit none
-
- Integer :: i
-
-
-
- TD_WellIntervalsCount = PathGenerationCount + 1 ! +1 is belong to ROP hole
-
- if (Allocated(TD_WellGeo)) deAllocate (TD_WellGeo)
- Allocate (TD_WellGeo(TD_WellIntervalsCount))
-
-
-
-
- !====================================================
- ! Set Well Geometry Data
- !====================================================
-
- TD_WellGeo(1)%HoleType = PathGenerations(1)%HoleType
- TD_WellGeo(1)%StartAngle = 0.d0 ![rad]
- TD_WellGeo(1)%EndAngle = PathGenerations(1)%FinalAngle*(pi/180.d0) ![rad]
- TD_WellGeo(1)%IntervalLength= PathGenerations(1)%TotalLength ![ft]
- !TD_WellGeo(1)%VerticalDepth = PathGenerations(1)%TotalVerticalDepth
- TD_WellGeo(1)%TopDepth = 0.d0
- TD_WellGeo(1)%DownDepth = PathGenerations(1)%MeasuredDepth
-
-
-
- Do i=2,TD_WellIntervalsCount-1
-
- TD_WellGeo(i)%HoleType = PathGenerations(i)%HoleType
- TD_WellGeo(i)%StartAngle = PathGenerations(i-1)%FinalAngle*(pi/180.d0)
- TD_WellGeo(i)%EndAngle = PathGenerations(i)%FinalAngle*(pi/180.d0)
- TD_WellGeo(i)%IntervalLength= PathGenerations(i)%TotalLength
- !TD_WellGeo(i)%VerticalDepth = PathGenerations(i)%TotalVerticalDepth
- TD_WellGeo(i)%TopDepth = PathGenerations(i-1)%MeasuredDepth
- TD_WellGeo(i)%DownDepth = PathGenerations(i)%MeasuredDepth
-
- !=====> Radius Of Curvature Calculation
- if (TD_WellGeo(i)%HoleType/=0) then
- TD_WellGeo(i)%RCurvature = ((TD_WellGeo(i)%IntervalLength)/abs(TD_WellGeo(i)%EndAngle-TD_WellGeo(i)%StartAngle))
- end if
-
- End Do
-
-
-
-
-
- !=====> Set ROP Hole Data
- TD_WellGeo(TD_WellIntervalsCount)%HoleType = 0 !Straight
- TD_WellGeo(TD_WellIntervalsCount)%StartAngle = TD_WellGeo(TD_WellIntervalsCount-1)%EndAngle
- TD_WellGeo(TD_WellIntervalsCount)%EndAngle = TD_WellGeo(TD_WellIntervalsCount)%StartAngle
- TD_WellGeo(TD_WellIntervalsCount)%IntervalLength= 0.d0
- !TD_WellGeo(TD_WellIntervalsCount)%VerticalDepth = TD_WellGeo(TD_WellIntervalsCount-1)%VerticalDepth
- TD_WellGeo(TD_WellIntervalsCount)%TopDepth = TD_WellGeo(TD_WellIntervalsCount-1)%DownDepth
- TD_WellGeo(TD_WellIntervalsCount)%DownDepth = TD_WellGeo(TD_WellIntervalsCount)%TopDepth+TD_WellGeo(TD_WellIntervalsCount)%IntervalLength
-
-
-
-
-
-
- !=====> Vertical Depth Calculation
- if ( TD_WellGeo(1)%HoleType==0 ) then
- TD_WellGeo(1)%VerticalDepth = TD_WellGeo(1)%IntervalLength*cos(TD_WellGeo(1)%StartAngle)
- else if ( TD_WellGeo(1)%HoleType==1 ) then
- TD_WellGeo(1)%VerticalDepth = (TD_WellGeo(1)%RCurvature*sin(abs(TD_WellGeo(1)%EndAngle)-abs(TD_WellGeo(1)%StartAngle))*cos(abs(TD_WellGeo(1)%StartAngle)))-(TD_WellGeo(1)%RCurvature*(1.-cos(abs(TD_WellGeo(1)%EndAngle)-abs(TD_WellGeo(1)%StartAngle)))*sin(abs(TD_WellGeo(1)%StartAngle)))
- else if ( TD_WellGeo(1)%HoleType==2 ) then
- TD_WellGeo(1)%VerticalDepth = (TD_WellGeo(1)%RCurvature*sin(abs(abs(TD_WellGeo(1)%EndAngle)-abs(TD_WellGeo(1)%StartAngle)))*cos(abs(TD_WellGeo(1)%StartAngle)))+(TD_WellGeo(1)%RCurvature*(1.-cos(abs(abs(TD_WellGeo(1)%EndAngle)-abs(TD_WellGeo(1)%StartAngle))))*sin(abs(TD_WellGeo(1)%StartAngle)))
- End if
- Do i= 2,TD_WellIntervalsCount
- if ( TD_WellGeo(i)%HoleType==0 ) then
- TD_WellGeo(i)%VerticalDepth = TD_WellGeo(i-1)%VerticalDepth+TD_WellGeo(i)%IntervalLength*cos(TD_WellGeo(i)%StartAngle)
- else if ( TD_WellGeo(i)%HoleType==1 ) then
- TD_WellGeo(i)%VerticalDepth = TD_WellGeo(i-1)%VerticalDepth+(TD_WellGeo(i)%RCurvature*sin(abs(TD_WellGeo(i)%EndAngle)-abs(TD_WellGeo(i)%StartAngle))*cos(abs(TD_WellGeo(i)%StartAngle)))-(TD_WellGeo(i)%RCurvature*(1.-cos(abs(TD_WellGeo(i)%EndAngle)-abs(TD_WellGeo(i)%StartAngle)))*sin(abs(TD_WellGeo(i)%StartAngle)))
- else if ( TD_WellGeo(i)%HoleType==2 ) then
- TD_WellGeo(i)%VerticalDepth = TD_WellGeo(i-1)%VerticalDepth+(TD_WellGeo(i)%RCurvature*sin(abs(abs(TD_WellGeo(i)%EndAngle)-abs(TD_WellGeo(i)%StartAngle)))*cos(abs(TD_WellGeo(i)%StartAngle)))+(TD_WellGeo(i)%RCurvature*(1.-cos(abs(abs(TD_WellGeo(i)%EndAngle)-abs(TD_WellGeo(i)%StartAngle))))*sin(abs(TD_WellGeo(i)%StartAngle)))
- End if
- End Do
- !Do i=1,TD_WellIntervalsCount
- ! print*, 'TD_WellGeo(i)%TopDepth=' , i , TD_WellGeo(i)%TopDepth
- ! print*, 'TD_WellGeo(i)%DownDepth=' , i , TD_WellGeo(i)%DownDepth
- ! print*, 'TD_WellGeo(i)%HoleType=' , i , TD_WellGeo(i)%HoleType
- ! print*, 'TD_WellGeo(i)%RCurvature=' , i , TD_WellGeo(i)%RCurvature
- ! print*, 'TD_WellGeo(i)%EndAngle=' , i , TD_WellGeo(i)%EndAngle
- ! print*, 'TD_WellGeo(i)%StartAngle=' , i , TD_WellGeo(i)%StartAngle
- ! print*, 'TD_WellGeo(i)%VerticalDepth=' , i , TD_WellGeo(i)%VerticalDepth
- !end do
-
-
-
-
-
-
-
- !=====> Well Total Length Calculation
- TD_WellTotalLength = TD_WellGeo(TD_WellIntervalsCount)%DownDepth
- TD_WellTotalVerticalLength = TD_WellGeo(TD_WellIntervalsCount)%VerticalDepth
-
-
-
-
-
-
- end subroutine
|