home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / oilfield / chokeflo.lzh / CHOKFLO.BAS < prev    next >
BASIC Source File  |  1980-01-01  |  29KB  |  982 lines

  1. 10 ' CHOKFLO IS A MICROCOMPUTER PROGRAM DEVELOPED BY K. M. BARBOT AND
  2. 20 ' M. H. CHU, UNIVERSITY OF NORTH DAKOTA. IT WAS DESIGNED FOR
  3. 30 ' PREDICTION OF FLOW RATE AND CHOKE SIZE SELECTION FOR CONSTANT AND
  4. 40 ' VARIABLE WELLHEAD PRESSURES.
  5. 50 '
  6. 60 '********************************************************************
  7. 70 'MAIN PROGRAM
  8. 80 '
  9. 90 DIM QMAX(40),DD(40),FDD(40),CDD(40),PWH(40),GMF(40),BPPF(40),IABS(40)
  10. 100 DIM XHL(40),YHL(40),XPSI(40),YPSI(40),XHLL(40),XCNL(20),YCNL(20)
  11. 110 DIM XCNLL(20),YCNLL(20),X(15),Y(15),PERC(10),PI(10),STVA(15),STV74(15)
  12. 120 DIM STV280(15),V(40),H(40),F(40),RSWS(10,10),TRSW(10),PRSW(10)
  13. 130 DIM EMW(15),APIEMW(15),XF(50),YF(50),CHK(20),SHO(20),QEST(20)
  14. 140 CLS
  15. 150 PRINT "WHAT TYPE OF PRODUCTION METHOD DO YOU DESIRE ? "
  16. 160 PRINT "ENTER (1 FOR VARIABLE WELLHEAD PRESSURE METHOD) "
  17. 170 PRINT "      (2 FOR CONSTANT WELLHEAD PRESSURE METHOD) "
  18. 180 INPUT "                                                          ";METH
  19. 190 IF METH = 1 THEN 250
  20. 200 IF METH = 2 THEN 220
  21. 210 GOTO 140
  22. 220 INPUT "WHAT IS THE CONSTANT WELLHEAD PRESSURE                    ";PWELL
  23. 230 INPUT "WHAT INCREMENTAL INCREASE FOR THE WELLHEAD PRESSURE       ";DPWELL
  24. 240 GOTO 270
  25. 250 INPUT "WHAT IS THE FLOWLINE LENGTH (FT.)                         ";FL
  26. 260 INPUT "WHAT IS THE FLOWLINE DIAMETER (IN.)                       ";FD
  27. 270 INPUT "WHAT IS THE WELL DEPTH (FT.)                              ";TD
  28. 280 INPUT "WHAT IS THE TUBING DIAMETER (IN.)                         ";DIA
  29. 290 INPUT "WHAT IS THE PIPE ROUGHNESS (FT.)                          ";E
  30. 300 INPUT "WHAT IS THE SEPARATOR PRESSURE (PSIA)                     ";PSEP
  31. 310 INPUT "WHAT IS THE SEPARATOR TEMPERATURE (DEG-F)                 ";TSEP
  32. 320 INPUT "WHAT IS THE WELLHEAD TEMPERATURE (DEF-F)                  ";TOPTEM
  33. 330 INPUT "WHAT IS THE BOTTOMHOLE TEMPERATURE (DEG-F)                ";BOTTEM
  34. 340 INPUT "WHAT IS THE RESERVOIR PRESSURE (PSIA)                     ";PR
  35. 350 INPUT "WHAT IS THE GAS/OIL RATIO (SCF/STB)                       ";GOR
  36. 360 INPUT "WHAT IS THE WATER/OIL RATIO (STB/STB)                     ";WOR
  37. 370 INPUT "WHAT IS THE OIL GRAVITY (API)                             ";API
  38. 380 INPUT "WHAT IS THE GAS SPECIFIC GRAVITY                          ";SGPG
  39. 390 INPUT "WHAT IS THE WATER SPECIFIC GRAVITY                        ";SGW
  40. 400 INPUT "WHAT IS THE PRODUCTIVITY INDEX (BBL/D/PSI)                ";PI
  41. 410 INPUT "ARE THE VALUES CORRECT UP TO THIS POINT (Y/N)             ";A$
  42. 420 IF A$ = "Y" THEN  450
  43. 430 IF A$ = "N" THEN  230
  44. 440 GOTO 410
  45. 450 CLS
  46. 460 KREG = 0
  47. 470 KHL = 0
  48. 480 ANG = 90
  49. 490 PRINT "WAIT WHILE THE JOB IS BEING RUN."
  50. 500 IHL = 0
  51. 510 LPRINT "*********************** INPUT WELL AND RESERVOIR DATA ************************"
  52. 520 LPRINT " "
  53. 530 LPRINT "TUBING DIAMETER        FLOWLINE DIAMETER      PRODUCTIVITY INDEX    WELL DEPTH"
  54. 540 LPRINT "     (IN)                   (IN)                  (BBL/D/PSI)          (FT)    "
  55. 550 LPRINT "  "
  56. 560 LPRINT USING "   ##.###                 ##.###                    ##.#            ######.# ";DIA,FD,PI,TD
  57. 570 LPRINT "  "
  58. 580 LPRINT "  "
  59. 590 LPRINT "FLOWLINE LENGTH       SEPARATOR PRESSURE       OIL GRAVITY      PIPE ROUGHNESS"
  60. 600 LPRINT "      (FT)                  (PSIA)                (API)              (FT)    "
  61. 610 LPRINT "  "
  62. 620 LPRINT USING "  ######.#                 ####.#               ####.#             #.##### ";FL,PSEP,API,E
  63. 630 LPRINT "  "
  64. 640 LPRINT "  "
  65. 650 LPRINT "WELLHEAD TEMP.     B0TTOMHOLE TEMP.     RESERVOIR PRESSURE     SEPARATOR TEMP."
  66. 660 LPRINT "   (DEG-F)             (DEG-F)                (PSIA)               (DEG-F)    "
  67. 670 LPRINT "  "
  68. 680 LPRINT USING "   ####.#              ####.#                #####.#               ####.#";TOPTEM,BOTTEM,PR,TSEP
  69. 690 LPRINT "  "
  70. 700 LPRINT "  "
  71. 710 LPRINT "GAS/OIL RATIO       WATER/OIL RATIO        GAS SP. GRAV.       WATER SP. GRAV."
  72. 720 LPRINT "  (SCF/STB)            (STB/STB)    "
  73. 730 LPRINT "  "
  74. 740 LPRINT USING "   ####.#               ###.##                ##.##                ##.## ";GOR,WOR,SGPG,SGW
  75. 750 LPRINT "  "
  76. 760 LPRINT "  "
  77. 770 LPRINT "******************************************************************************"
  78. 780 LPRINT "  "
  79. 790 LPRINT "  "
  80. 800 LPRINT "  "
  81. 810 LPRINT "****************************** EXAMPLE OUTPUT ********************************"
  82. 820 LPRINT "*                                                                            *"
  83. 830 LPRINT "*              FLOW RATE PREDICTION AND CHOKE SIZE SELECTION FOR             *"
  84. 840 IF METH = 1 THEN  LPRINT "*                   WELLS WITH VARIABLE WELLHEAD PRESSURES                   *"
  85. 850 IF METH = 2 THEN  LPRINT "*                   WELLS WITH CONSTANT WELLHEAD PRESSURE                    *"
  86. 860 LPRINT "*                                                                            *"
  87. 870 LPRINT "******************************************************************************"
  88. 880 LPRINT "  "
  89. 890 LPRINT "  "
  90. 900 LPRINT "  TUBING X       WELL HEAD     WELL       BOTTOM     MAXIMUM    MAXIMUM"
  91. 910 LPRINT "  FLOWLINE         CHOKE       HEAD        HOLE      LIQUID     OIL FLOW "
  92. 920 LPRINT "CONFIGURATION    DIAMETER    PRESSURE    PRESSURE   FLOW RATE     RATE "
  93. 930 LPRINT "   (INCH)         (INCH)      (PSIA)      (PSIA)    (STB/DAY)   (STB/DAY)"
  94. 940 LPRINT "-------------    --------    --------    --------   --------    --------  "
  95. 950 AC=0
  96. 960 WX=0
  97. 970 QEST = 300
  98. 980 NM=0
  99. 990 NM=NM+1
  100. 1000 GOSUB 1280
  101. 1010 GOSUB 2220
  102. 1020 IF AC=1 THEN 1120
  103. 1030 IF NC = 1 THEN 1100
  104. 1040 IF ABS(PRR-PR)-5 <= 0 THEN 1100
  105. 1050 IF PR/PRR >= 1 THEN 1080
  106. 1060 QEST=QEST*(PR/PRR)^1.666
  107. 1070 GOTO 1000
  108. 1080 QEST=QEST*(PR/PRR)
  109. 1090 GOTO 1000
  110. 1100 LPRINT USING "#.### X #.###     ##/64       #####       #####      #####      ##### ";DIA,FD,SHO,PHEAD,PBOTT,QEST,QO
  111. 1110 LPRINT "  "
  112. 1120 AC=0
  113. 1130 NC=0
  114. 1140 WX=WX+1
  115. 1150 QEST = .7*QEST
  116. 1160 IF METH = 1 THEN 1200
  117. 1170 PWELL = PWELL + DPWELL
  118. 1180 IF SHO < 16 THEN 1210
  119. 1190 GOTO 980
  120. 1200 IF DONE <> 1 THEN 980
  121. 1210 LPRINT "  "
  122. 1220 LPRINT "                             CALCULATIONS ARE COMPLETE"
  123. 1230 LPRINT "  "
  124. 1240 LPRINT "******************************************************************************"
  125. 1250 STOP
  126. 1260 END
  127. 1270 '*********************************************************************
  128. 1280 'SUBROUTINE HORIZ
  129. 1290 '
  130. 1300 'THIS SUBROUTINE PERFORMS THE HORIZONTAL FLOW CALCULATIONS
  131. 1310 'THE BEGGS AND BRILL'S CORRELATION IS USED FOR THE HORIZONTAL
  132. 1320 'TWO PHASE FLOW PRESSURE LOSS CALCULATION.
  133. 1330 IF METH = 2 THEN 2100 ELSE 1340
  134. 1340 FD=FD/12
  135. 1350 AL=0
  136. 1360 PRESS=PSEP
  137. 1370 AZO=0
  138. 1380 XL=10
  139. 1390 DELFE=10
  140. 1400 FWS=WOR/(1+WOR)
  141. 1410 QO=(1-FWS)*QEST
  142. 1420 QW=FWS*QEST
  143. 1430 AP=3.1416*FD^2/4
  144. 1440 'RELATIVE ROUGHNESS
  145. 1450 ED=E/FD
  146. 1460 AHO=AZO*3.1416/180
  147. 1470 DELX=FL/XL
  148. 1480 TAVG=TOPTEM
  149. 1490 PAVG=PRESS+DELFE/2
  150. 1500 GOSUB 9160
  151. 1510 IF AC=1 THEN 2180
  152. 1520 BG=.0283*Z*(TAVG+460)/PAVG
  153. 1530 'GAS DENSITY
  154. 1540 DENG=(.0764*SGFG)/BG
  155. 1550 SGO60=141.5/(131.5+API)
  156. 1560 'OIL DENSITY
  157. 1570 DENO=(SGO60*350+SGDG*.0764*RS)/(5.615*BO)
  158. 1580 'WATER CUT
  159. 1590 FW=1-FO
  160. 1600 'LIQUID DENSITY
  161. 1610 DENL=FO*DENO+FW*SGW*62.4
  162. 1620 'NO SLIP HOLD-UP
  163. 1630 HLNS=VSL/VM
  164. 1640 GOSUB 8200
  165. 1650 GOSUB 5680
  166. 1660 VISL=FO*VISO+FW*VISW
  167. 1670 GOSUB 5930
  168. 1680 XNLV=1.938*VSL*((DENL/SURL)^.25)
  169. 1690 '
  170. 1700 'BRILL AND BEGGS CORRELATION
  171. 1710 '
  172. 1720 GOSUB 4330
  173. 1730 IF AC=1 THEN 2180
  174. 1740 DELPC=DPDL*DELX
  175. 1750 'CHECK FOR CONVERGENCE
  176. 1760 IF ABS(DELFE-DELPC) > .1 THEN 1830
  177. 1770 AL=AL+DELX
  178. 1780 PRESS=PRESS-DELPC
  179. 1790 'CHECK IF TOTAL LENGTH EXCEEDED
  180. 1800 IF AL >= FL THEN 1850
  181. 1810 DELFE=DELPC
  182. 1820 GOTO 1490
  183. 1830 DELFE=DELPC
  184. 1840 GOTO 1490
  185. 1850 PDOWN=PRESS
  186. 1860 RHO=(GOR/1000)*FO
  187. 1870 IF WX > 0 THEN 2030
  188. 1880 KB=KB+1
  189. 1890 CHK(KB)= ABS(PRR-PR)
  190. 1900 PHEAD= 2 * PDOWN
  191. 1910 SHOMAX = INT((435*RHO^.546*QEST/(PHEAD-14.7))^(.529))
  192. 1920 SHO=SHOMAX
  193. 1930 QEST(KB+1)= QEST
  194. 1940 SHO(KB+1)= SHOMAX
  195. 1950 IF CHK(KB) < CHK(KB-1) THEN 2020
  196. 1960 IF KB < 10 THEN 2020
  197. 1970 SHO = SHO(KB-1)
  198. 1980 QEST = QEST(KB-1)
  199. 1990 SHOMAX=SHO(KB-1)
  200. 2000 PHEAD=(435*QEST*RHO^.546)/(SHO^1.89)+14.7
  201. 2010 NC = 1
  202. 2020 GOTO 2060
  203. 2030 SHO=SHOMAX-4*(WX)
  204. 2040 IF SHO < 16 THEN DONE=1
  205. 2050 PHEAD=(435*QEST*RHO^.546)/(SHO^1.89)+14.7
  206. 2060 DELCHO=PHEAD-PDOWN
  207. 2070 PDROP=PHEAD-PSEP
  208. 2080 FD=FD*12
  209. 2090 GOTO 2170
  210. 2100 FD = 0
  211. 2110 PSEPAR = 2! * PSEP
  212. 2120 IF PWELL < PSEPAR THEN PWELL = PSEPAR
  213. 2130 PHEAD = PWELL
  214. 2140 RHO = (GOR/1000)*FO
  215. 2150 SHO = INT((435*RHO^.546*QEST/(PHEAD-14.7))^(.529))
  216. 2160 PDROP = PHEAD - PSEP
  217. 2170 RETURN
  218. 2180 SHOMAX = INT((435*RHO^.546*QEST/(PHEAD-14.7))^(.529))-2
  219. 2190 RETURN
  220. 2200 STOP
  221. 2210 '*******************************************************************
  222. 2220 'SUBROUTINE VERTI
  223. 2230 '
  224. 2240 'THIS SUBROUTINE PERFORMS THE VERTICAL WELL FLOW CALCULATIONS.
  225. 2250 'THE HAGEDORN AND BROWN'S CORRELATION IS USED FOR CALCULATION OF
  226. 2260 'THE VERTICAL TWO PHASE FLOW PRESSURE TRAVERSE.
  227. 2270 '
  228. 2280 TL=0
  229. 2290 DIA=DIA/12
  230. 2300 PRESS=PHEAD
  231. 2310 TEM1=TOPTEM
  232. 2320 XN=20
  233. 2330 DELPE=15
  234. 2340 FWS=WOR/(1+WOR)
  235. 2350 QO=(1-FWS)*QEST
  236. 2360 QW=FWS*QEST
  237. 2370 AP=3.142*DIA^2/4
  238. 2380 ED=E/DIA
  239. 2390 'ANGLE IN RADIANS
  240. 2400 AV=ANG*3.1416/180
  241. 2410 DELL=TD/XN
  242. 2420 DELT=((BOTTEM-TOPTEM)/TD)*DELL
  243. 2430 TEM2=TEM1+DELT
  244. 2440 TAVG=(TEM2+TEM1)/2
  245. 2450 'AVERAGE PRESSURE
  246. 2460 PAVG=PRESS+DELPE/2
  247. 2470 GOSUB 9160
  248. 2480 'GAS FORMATION VOLUME FACTOR
  249. 2490 BG=.0283*Z*(TAVG+460)/PAVG
  250. 2500 'GAS DENSITY
  251. 2510 DENG=(.0764*SGFG)/BG
  252. 2520 'OIL GRAVITY AT 60 DEG F
  253. 2530 SGO60=141.5/(131.5+API)
  254. 2540 'OIL DENSITY
  255. 2550 DENO=((SGO60*62.4)+((SGDG*.0764*RS)/5.614#))/BO
  256. 2560 'WATER CUT
  257. 2570 FW=1-FO
  258. 2580 'LIQUID DENSITY
  259. 2590 DENL=FO*DENO+FW*SGW*62.4
  260. 2600 'NO SLIP HOLD-UP
  261. 2610 HLNS=VSL/VM
  262. 2620 'GAS VISCOSITY
  263. 2630 GOSUB 8200
  264. 2640 'LIQUID VISCOSITY
  265. 2650 GOSUB 5680
  266. 2660 VISL=FO*VISO+FW*VISW
  267. 2670 '
  268. 2680 'LIQUID SURFACE TENSION
  269. 2690 GOSUB 5930
  270. 2700 '
  271. 2710 'LIQUID VISCOSITY NUMBER
  272. 2720 XNL=.15726*VISL*(1/(DENL*SURL^3))^.25
  273. 2730 'PIPE DIAMETER NUMBER
  274. 2740 XND=120.872*DIA*((DENL/SURL)^.5)
  275. 2750 'GAS VELOCITY NUMBER
  276. 2760 XNGV=1.938*VSG*((DENL/SURL)^.25)
  277. 2770 'LIQUID VELOCITY NUMBER
  278. 2780 XNLV=1.938*VSL*((DENL/SURL)^.25)
  279. 2790 GOSUB 3180
  280. 2800 IF AC=1 THEN 3140
  281. 2810 'CALCULATE INCREMENTAL PRESSURE
  282. 2820 DELPC=DPDL*DELL
  283. 2830 'CHECK FOR CONVERGENCE
  284. 2840 IF ABS(DELPE-DELPC) > .1 THEN 2930
  285. 2850 TL=TL+DELL
  286. 2860 PRESS=PRESS-DELPC
  287. 2870 '
  288. 2880 'CHECK IF TOTAL LENGTH EXCEEDED
  289. 2890 IF TL >= TD THEN 2950
  290. 2900 DELPE=DELPC
  291. 2910 TEM1=TEM2
  292. 2920 GOTO 2430
  293. 2930 DELPE=DELPC
  294. 2940 GOTO 2460
  295. 2950 PBOTT=PRESS
  296. 2960 IF PR < PB THEN 3050
  297. 2970 QB = (PR-PB)*PI
  298. 2980 QOMAX = QB+(PI*PB/1.8)
  299. 2990 IF QEST > QB THEN 3020
  300. 3000 PIPR = QEST/PI
  301. 3010 GOTO 3070
  302. 3020 PWF=FO*.125*PB*(-1+(81-80*((QEST-QB)/(QOMAX-QB)))^.5)+FW*(PR-QEST/PI)
  303. 3030 PIPR = PR - PWF
  304. 3040 GOTO 3070
  305. 3050 QOMAX = PI*PR/1.8
  306. 3060 PIPR=PR-(FO*.125*PR*(-1+(81-80*QEST/QOMAX)^.5)+FW*(PR-QEST/PI))
  307. 3070 PLOSS=PBOTT-PHEAD
  308. 3080 'TOTAL PRESSURE LOSS = PRESSURE LOSS IN FLOW LINE + LOSS IN TUBING
  309. 3090 '+ PRESSURE LOSS IN FORMATION
  310. 3100 PTLOSS=PDROP+PLOSS+PIPR
  311. 3110 PRR=PTLOSS+PSEP
  312. 3120 DIA=DIA*12
  313. 3130 RETURN
  314. 3140 SHOMAX = INT((435*RHO^.546*QEST/(PHEAD-14.7))^(.529))-2
  315. 3150 RETURN
  316. 3160 STOP
  317. 3170 '****************************************************************
  318. 3180 ' SUBROUTINE HAGBR
  319. 3190 '
  320. 3200 ' SUBROUTINE TO CALCULATE LIQUID HOLDUP AND PRESSURE GRADIENT
  321. 3210 ' USING THE HAGEDORN AND BROWN CORRELATION.  THE ACCELERATION
  322. 3220 ' PRESSURE GRADIENT IS CALCULATED WITH THE DUNS AND ROS EQUATION.
  323. 3230 '
  324. 3240 IF HCOUNT > 0 THEN 3360
  325. 3250 HCOUNT = HCOUNT + 1
  326. 3260 OPEN "HAGBR" FOR INPUT AS #1
  327. 3270 QZ=0
  328. 3280 FOR QZ= 1 TO 12
  329. 3290 INPUT #1,XHL(QZ),YHL(QZ),XPSI(QZ),YPSI(QZ)
  330. 3300 NEXT
  331. 3310 QZ=0
  332. 3320 FOR QZ= 1 TO 10
  333. 3330 INPUT #1, XCNL(QZ),YCNL(QZ)
  334. 3340 NEXT
  335. 3350 CLOSE #1
  336. 3360 '
  337. 3370 ' CONVERT INCLINATION ANGLE TO RADIANS.
  338. 3380 AHA = ANG*3.1416/180
  339. 3390 '
  340. 3400 ' CALCULATE SUPERFICIAL VELOCITIES
  341. 3410 VSL = VM*HLNS
  342. 3420 VSG = VM-VSL
  343. 3430 '
  344. 3440 'CHECK FOR SINGLE PHASE GAS OR LIQUID FLOW
  345. 3450 IF HLNS < 1 THEN 3500
  346. 3460 HL = 1
  347. 3470 DENNS = DENL
  348. 3480 IREG = 1
  349. 3490 GOTO 4110
  350. 3500 IF HLNS > 0 THEN 3570
  351. 3510 HL = 0
  352. 3520 DENNS = DENG
  353. 3530 IREG = 2
  354. 3540 GOTO 4110
  355. 3550 '
  356. 3560 ' CHECK FOR BUBBLE FLOW
  357. 3570 XLB = 1.071-.2281*VM^2/DIA
  358. 3580 IF XLB < .13 THEN XLB = .13
  359. 3590 HGNS = 1-HLNS
  360. 3600 IF HGNS > XLB THEN  3630
  361. 3610 IREG = 3
  362. 3620 ' PREPARE HOLDUP CORRELATION ARRAYS FOR INTERPOLATION.
  363. 3630 FOR KHA= 1 TO 10
  364. 3640 XCNLL(KHA) = LOG(XCNL(KHA))
  365. 3650 YCNLL(KHA) = LOG(YCNL(KHA))
  366. 3660 NEXT
  367. 3670 FOR KHA= 1 TO 12
  368. 3680 XHLL(KHA) = LOG(.00001#*XHL(KHA))
  369. 3690 NEXT
  370. 3700 IREG = 4
  371. 3710 '
  372. 3720 ' CALCULATE LIQUID HOLDUP
  373. 3730 XXHA = LOG(XNL)
  374. 3740 FOR WW= 1 TO 10
  375. 3750 XF(WW)=XCNLL(WW)
  376. 3760 YF(WW)=YCNLL(WW)
  377. 3770 NEXT
  378. 3780 XARG = XXHA
  379. 3790 IDEG = 2
  380. 3800 NPTS = 10
  381. 3810 GOSUB 8390
  382. 3820 CNL = EXP(FLAGR)
  383. 3830 XXHA = LOG(XNLV*CNL/(XNGV^.5750001*XND)*(PAVG/14.7)^.1)
  384. 3840 FOR WW= 1 TO 12
  385. 3850 XF(WW)=XHLL(WW)
  386. 3860 YF(WW)=YHL(WW)
  387. 3870 NEXT
  388. 3880 XARG = XXHA
  389. 3890 IDEG = 2
  390. 3900 NPTS = 12
  391. 3910 GOSUB 8390
  392. 3920 HL = FLAGR
  393. 3930 XXHA = XNGV*XNL^.38/XND^2.14
  394. 3940 FOR WW= 1 TO 12
  395. 3950 XF(WW)=XPSI(WW)
  396. 3960 YF(WW)=YPSI(WW)
  397. 3970 NEXT
  398. 3980 XARG = XXHA
  399. 3990 IDEG = 2
  400. 4000 NPTS = 12
  401. 4010 GOSUB 8390
  402. 4020 PSI = FLAGR
  403. 4030 IF PSI < 1 THEN PSI=1
  404. 4040 HL = HL*PSI
  405. 4050 IF HL < 0 THEN HL=0
  406. 4060 IF HL > 1 THEN HL=1
  407. 4070 IF HL > HLNS THEN 4110
  408. 4080 IF KHL > 0 THEN HL=HLNS
  409. 4090 '
  410. 4100 ' CALCULATE NO-SLIP AND SLIP MIXTURE DENSITIES
  411. 4110 DENNS = DENL*HLNS+DENG*(1-HLNS)
  412. 4120 DENS = DENL*HL+DENG*(1-HL)
  413. 4130 '
  414. 4140 ' CALCULATE FRICTION FACTOR
  415. 4150 VISS = VISL^HL*GVIS^(1-HL)
  416. 4160 REY=1488*DENNS*VM*DIA/VISS
  417. 4170 GOSUB 8940
  418. 4180 '
  419. 4190 ' CALCULATE ELEVATION, FRICTION, ACCELERATION, AND TOTAL PRESSURE
  420. 4200 ' GRADIENTS.
  421. 4210 ELGR = DENS*SIN(AHA)/144
  422. 4220 FRGR = FF*DENNS^2*VM^2/(2*32.2*DIA*DENS*144)
  423. 4230 VSG = VM*(1-HLNS)
  424. 4240 EKK = DENS*VM*VSG/(32.2*PAVG*144)
  425. 4250 IF EKK > .95 THEN 4290
  426. 4260 DPDL = -(ELGR+FRGR)/(1-EKK)
  427. 4270 ACCGR = -DPDL*EKK
  428. 4280 RETURN
  429. 4290 AC=1
  430. 4300 RETURN
  431. 4310 STOP
  432. 4320 '****************************************************************
  433. 4330 'SUBROUTINE BEGBR
  434. 4340 '
  435. 4350 ' SUBROUTINE TO CALCULATE PRESSURE GRADIENT IN PSI/FT USING A
  436. 4360 ' MODIFIED BEGGS AND BRILL CORRELATION.]
  437. 4370 '
  438. 4380 ' CONVERT INCLINATION ANGLE TO RADIANS.
  439. 4390 ABE = AZO * 3.1416/180
  440. 4400 '
  441. 4410 'CALCULATE SUPERFICIAL VELOCITIES AND MIXTURE FROUDE NUMBER
  442. 4420 VSL = VM*HLNS
  443. 4430 VSG = VM-VSL
  444. 4440 XNFR = VM^2/(32.2*FD)
  445. 4450 '
  446. 4460 'CHECK FOR SINGLE PHASE FLOW
  447. 4470 IF HLNS > .99999 THEN IREG = 1
  448. 4480 IF HLNS < .00001# THEN IREG = 2
  449. 4490 IF IREG > 2 THEN 4540
  450. 4500 HL = HLNS
  451. 4510 GOTO 5390
  452. 4520 '
  453. 4530 ' DETERMINE FLOW REGIME USING A REVISED FLOW PATTERN MAP
  454. 4540 ITRAN =0
  455. 4550 XL1BE = 316*HLNS^.302
  456. 4560 XL2BE = .0009252/HLNS^2.46842
  457. 4570 XL3BE = .1/HLNS^1.45155
  458. 4580 XL4BE = .5/HLNS^6.738#
  459. 4590 XDD = XL1BE
  460. 4600 IF HLNS < .01 THEN 4660
  461. 4610 IF HLNS > .4  THEN XDD = XL4BE
  462. 4620 IF XNFR >= XL2BE AND XNFR < XL3BE THEN ITRAN = 1
  463. 4630 IF XNFR >= XL3BE AND XNFR < XDD THEN IREG = 4
  464. 4640 IF XNFR >= XDD THEN IREG = 3
  465. 4650 GOTO 4700
  466. 4660 IF XNFR >= XL1BE THEN IREG = 3
  467. 4670 '
  468. 4680 ' DETERMINE HORIZONTAL FLOW LIQUID HOLDUP AND C-FACTOR COEFFICIENTS
  469. 4690 ' FOR UPHILL FLOW
  470. 4700 IBE = IREG-2
  471. 4710 ON IBE GOTO 4740,4820,4900
  472. 4720 '
  473. 4730 'DISTRIBUTED FLOW
  474. 4740 HLO = 1.065*HLNS^.5824/XNFR^.0609
  475. 4750 DBE = 1
  476. 4760 EBE = 0
  477. 4770 FBE = 0
  478. 4780 GBE = 0
  479. 4790 GOTO 4970
  480. 4800 '
  481. 4810 'INTERMITTENT FLOW
  482. 4820 HLO = .845*HLNS^.5351/XNFR^.0173
  483. 4830 DBE = 2.96
  484. 4840 EBE = .305
  485. 4850 FBE =-.4473
  486. 4860 GBE = .0978#
  487. 4870 GOTO 4970
  488. 4880 '
  489. 4890 'SEGREGATED FLOW
  490. 4900 HLO = .98#*HLNS^.4846/XNFR^.0868#
  491. 4910 DBE = .011
  492. 4920 EBE = -3.768
  493. 4930 FBE = 3.539
  494. 4940 GBE = -1.614
  495. 4950 '
  496. 4960 ' RESTRICT MINIMUM VALUE OF HLO
  497. 4970 IF HLO < HLNS THEN HLO = HLNS
  498. 4980 '
  499. 4990 ' CHECK FOR HORIZONTAL FLOW
  500. 5000 IF ABE <> 0 THEN 5050
  501. 5010 HL = HLO
  502. 5020 GOTO 5280
  503. 5030 '
  504. 5040 ' FLOW IS INCLINED. CALCULATE C-FACTOR
  505. 5050 IF ABE > 0 THEN 5130
  506. 5060 ' DOWNHILL C-FACTOR COEFFICIENTS
  507. 5070 DBE = 4.7
  508. 5080 EBE = -.3692
  509. 5090 FBE = .1244
  510. 5100 GBE = -.5056
  511. 5110 '
  512. 5120 ' CALCULATE THE C-FACTOR
  513. 5130 CBE = (1-HLNS)*LOG(DBE*HLNS^EBE*XNLV^FBE*XNFR^GBE)
  514. 5140 IF CBE < 0 THEN CBE = 0
  515. 5150 '
  516. 5160 ' CALCULATE THE ANGLE CORRECTION FACTOR AND THE CORRECTED LIQUID
  517. 5170 ' HOLDUP FRACTION
  518. 5180 XXBE = SIN(1.8*ABE)
  519. 5190 FAC = 1+CBE*(XXBE-.333*XXBE^3)
  520. 5200 ' CHECK TO BE SURE THAT FAC IS NOT NEGATIVE
  521. 5210 IF FAC < 0 THEN FAC = 0
  522. 5220 HL = HLO * FAC
  523. 5230 IF HL > 1 THEN HL = 1
  524. 5240 ' CHECK TO BE SURE HOLDUP IS GREATER THAN 0
  525. 5250 IF HL < 0 THEN HL=.00001#
  526. 5260 '
  527. 5270 ' CHECK FOR TRANSITION FLOW
  528. 5280 IF ITRAN < 1 THEN 5390
  529. 5290 IF IREG < 5 THEN 5330
  530. 5300 HLS = HL
  531. 5310 IREG = 4
  532. 5320 GOTO 4700
  533. 5330 HLI = HL
  534. 5340 AA = (XL3BE-XNFR)/(XL3BE-XL2BE)
  535. 5350 BBE =1-AA
  536. 5360 HL = HLS*AA+HLI*BBE
  537. 5370 IREG = 6
  538. 5380 ' CALCULATE MIXTURE FLUID PROPERTIES
  539. 5390 DENNS = DENL*HLNS+DENG*(1-HLNS)
  540. 5400 DENS = DENL*HL+DENG*(1-HL)
  541. 5410 VISNS = VISL*HLNS+GVIS*(1-HLNS)
  542. 5420 '
  543. 5430 ' CALCULATE MOODY DIAGRAM FRICTION FACTOR
  544. 5440 REY = 1488*DENNS*VM*FD/VISNS
  545. 5450 GOSUB 8940
  546. 5460 IF IREG <=2 THEN 5570
  547. 5470 '
  548. 5480 ' CALCULATE TWO PHASE FRICTION FACTOR
  549. 5490 YBE = HLNS/(HL^2)
  550. 5500 XBE = LOG(YBE)
  551. 5510 SBE = XBE/(-.0523+3.182*XBE-.8724999*XBE^2+.01853*XBE^4)
  552. 5520 IF YBE > 1 AND YBE < 1.2 THEN SBE = LOG(2.2*YBE-1.2)
  553. 5530 FF = FF * EXP(SBE)
  554. 5540 '
  555. 5550 ' CALCULATE FRICTION, ELEVATION, ACCELERATION, AND TOTAL PRESSURE
  556. 5560 ' GRADIENTS
  557. 5570 FRGR = FF*DENNS*VM^2/(2*32.2*FD*144)
  558. 5580 ELGR = DENS*SIN(ABE)/144
  559. 5590 EKK = DENS*VM*VSG/(32.2*PAVG*144)
  560. 5600 IF EKK >.95 THEN 5640
  561. 5610 DPDL = -(FRGR+ELGR)/(1-EKK)
  562. 5620 ACCGR = -EKK*DPDL
  563. 5630 RETURN
  564. 5640 AC=1
  565. 5650 RETURN
  566. 5660 STOP
  567. 5670 '******************************************************************
  568. 5680 'SUBROUTINE LIQVIS
  569. 5690 '
  570. 5700 'CALCULATE DEAD OIL VISCOSITY AND LIVE OIL VISCOSITY BELOW
  571. 5710 'THE BUBBLE POINT PRESSURE USING THE BEGGS AND ROBINSON CORRELATIONS.
  572. 5720 'CALCULATE THE DEAD OIL VISCOSITY, CP
  573. 5730 ZLI=3.0324-.02023*API
  574. 5740 YLI=10^ZLI
  575. 5750 XLI=YLI/TAVG^1.163
  576. 5760 VISD=10^XLI-1
  577. 5770 '
  578. 5780 'CALCULATE LIVE OIL VISCOSITY, CP
  579. 5790 ALI=10.715/(RS+100)^.515#
  580. 5800 BLI=5.44/(RS+150)^.338
  581. 5810 VISO=ALI*VISD^BLI
  582. 5820 IF PAVG <= PB THEN 5890
  583. 5830 '
  584. 5840 'CALCULATE VISCOSITY OF OIL ABOVE THE BUBBLE POINT PRESSURE, CP
  585. 5850 VM=2.6*PAVG^1.187*10^(-.039*PAVG*.001-5)
  586. 5860 VISO=VISO*(PAVG/PB)^VM
  587. 5870 '
  588. 5880 'CALCULATE VISCOSITY OF WATER, CP
  589. 5890 VISW=EXP(1.003-.01479*TAVG+1.982E-05*TAVG^2)
  590. 5900 RETURN
  591. 5910 STOP
  592. 5920 '******************************************************************
  593. 5930 'SUBROUTINE SURFT
  594. 5940 '
  595. 5950 'CALCULATE GAS-OIL SURFACE TENSION USING THE BAKER AND
  596. 5960 'SWERDLOFF CORRELATION.
  597. 5970 IF SCOUNT > 0 THEN 6090
  598. 5980 SCOUNT = SCOUNT + 1
  599. 5990 OPEN "SURFT" FOR INPUT AS #2
  600. 6000 QZ=0
  601. 6010 FOR QZ= 1 TO 8
  602. 6020 INPUT #2, PERC(QZ), PI(QZ)
  603. 6030 NEXT
  604. 6040 QZ=0
  605. 6050 FOR QZ= 1 TO 10
  606. 6060 INPUT #2, STVA(QZ), STV74(QZ), STV280(QZ)
  607. 6070 NEXT
  608. 6080 CLOSE #2
  609. 6090 IF FO = 0 THEN 6280
  610. 6100 'CALCULATE DEAD OIL SURFACE TENSION, DYNES/CM
  611. 6110 SUR68=39-.2571*API
  612. 6120 SUR100=37.5-.2571*API
  613. 6130 SUR1=SUR68-(TAVG-68)*(SUR68-SUR100)/32
  614. 6140 IF TAVG <= 68 THEN SUR1 = SUR68
  615. 6150 IF TAVG >= 100 THEN SUR1 = SUR100
  616. 6160 FOR WW= 1 TO 8
  617. 6170 XF(WW)=PI(WW)
  618. 6180 YF(WW)=PERC(WW)
  619. 6190 NEXT
  620. 6200 XARG = PAVG
  621. 6210 IDEG = 2
  622. 6220 NPTS = 8
  623. 6230 GOSUB 8390
  624. 6240 SUR2=FLAGR
  625. 6250 '
  626. 6260 'CALCULATE GAS-OIL SURFACE TENSION AT A P & T, DYNES/CM
  627. 6270 SURO=SUR1*SUR2/100
  628. 6280 IF FW=0 THEN 6540
  629. 6290 'CALCULATE GAS WATER SURFACE TENSIONS AT 74 AND 280 DEG-F
  630. 6300 'DYNES/CM
  631. 6310 FOR WW= 1 TO 10
  632. 6320 XF(WW)=STVA(WW)
  633. 6330 YF(WW)=STV74(WW)
  634. 6340 NEXT
  635. 6350 XARG = PAVG
  636. 6360 IDEG = 2
  637. 6370 NPTS = 10
  638. 6380 GOSUB 8390
  639. 6390 STW74=FLAGR
  640. 6400 FOR WW= 1 TO 10
  641. 6410 XF(WW)=STVA(WW)
  642. 6420 YF(WW)=STV280(WW)
  643. 6430 NEXT
  644. 6440 XARG = PAVG
  645. 6450 IDEG = 2
  646. 6460 NPTS = 10
  647. 6470 GOSUB 8390
  648. 6480 STW280=FLAGR
  649. 6490 SURW=(STW74-STW280)/(280-74)*(TAVG-74)*(-1)+STW74
  650. 6500 IF TAVG<74 THEN SURW = STW74
  651. 6510 IF TAVG>280 THEN SURW = STW280
  652. 6520 '
  653. 6530 'CALCULATE VOLUME AVERAGED GAS LIQUID SURFACE TENSION, DYNES/CM
  654. 6540 SURL=SURO*FO+SURW*FW
  655. 6550 RETURN
  656. 6560 STOP
  657. 6570 '******************************************************************
  658. 6580 'SUBROUTINE CALRS
  659. 6590 '
  660. 6600 'CALCULATE SOLUTION GAS-OIL RATIO (SCF/STBO), SOLUTION GAS-WATER
  661. 6610 'RATIO (SCF/STBW), SPECIFIC GRAVITY OF DISSOLVED AND FREE GAS,
  662. 6620 'AND BUBBLE POINT PRESSURE (PSIA).
  663. 6630 '
  664. 6640 IF CCOUNT > 0 THEN 6960
  665. 6650 CCOUNT = CCOUNT + 1
  666. 6660 OPEN "CALRS" FOR INPUT AS #3
  667. 6670 QZ=0
  668. 6680 FOR QZ = 1 TO 10
  669. 6690 INPUT #3, EMW(QZ), APIEMW(QZ)
  670. 6700 NEXT
  671. 6710 '
  672. 6720 'ENTER BUBBLE POINT PRESSURE VS GAS MOLE FRACTION DATA.
  673. 6730 QZ=0
  674. 6740 FOR QZ = 1 TO 17
  675. 6750 INPUT #3, BPPF(QZ), GMF(QZ)
  676. 6760 NEXT
  677. 6770 '
  678. 6780 'ENTER DATA ARRAYS FOR INTERPOLATION. SOLUTION GAS-WATER RATIO VS
  679. 6790 'PRESSURE AND TEMPERATURE
  680. 6800 QZ=0
  681. 6810 FOR QZ = 1 TO 4
  682. 6820 INPUT #3, TRSW(QZ)
  683. 6830 NEXT
  684. 6840 QZ=0
  685. 6850 FOR QZ = 1 TO 5
  686. 6860 INPUT #3, PRSW(QZ)
  687. 6870 NEXT
  688. 6880 QZ=0
  689. 6890 ZQ=0
  690. 6900 FOR QZ = 1 TO 4
  691. 6910 FOR ZQ = 1 TO 5
  692. 6920 INPUT #3, RSWS(QZ,ZQ)
  693. 6930 NEXT
  694. 6940 NEXT
  695. 6950 CLOSE #3
  696. 6960 IF SGPG < .56 THEN SGPG = .7
  697. 6970 SG100=SGPG
  698. 6980 IF GOR <= 0 THEN 7720
  699. 6990 TEMR = TAVG+460
  700. 7000 SGO=141.5/(131.5+API)
  701. 7010 '****STANDING CORRELATION****
  702. 7020 X1CA=.0125*API-9.099999E-04*TAVG
  703. 7030 X2CA=10^X1CA
  704. 7040 '
  705. 7050 'CALCULATE SOLUTION GAS-OIL RATIO, SCF/STBO
  706. 7060 IF PAVG < 0 THEN 7790
  707. 7070 RS=SGPG*(PAVG*X2CA/18)^1.205
  708. 7080 '
  709. 7090 'DETERMINE BUBBLE POINT PRESSURE ASSUMING NEGLIGIBLE GAS IN
  710. 7100 'SOLUTION IN WATER, PSIA
  711. 7110 PB=(18/X2CA)*(GOR/SGPG)^.83
  712. 7120 GOTO 7130
  713. 7130 IF RS < 0 THEN RS=0
  714. 7140 IF RS<GOR THEN 7250
  715. 7150 RS=GOR
  716. 7160 '
  717. 7170 'IF ALL GAS IS IN SOLUTION, SET THE FREE AND DISSOLVED
  718. 7180 'GRAVITIES EQUAL TO THE PRODUCING GAS GRAVITY
  719. 7190 SGFG=SGPG
  720. 7200 SGDG=SGPG
  721. 7210 RSW=0
  722. 7220 GOTO 7690
  723. 7230 '
  724. 7240 'CALCULATE SOLUTION GAS-WATER RATIO, SCF/STBW.
  725. 7250 FOR II = 1 TO 5
  726. 7260 FOR J = 1 TO 4
  727. 7270 X(J)=RSWS(J,II)
  728. 7280 NEXT
  729. 7290 FOR WW= 1 TO 4
  730. 7300 YF(WW)=X(WW)
  731. 7310 XF(WW)=TRSW(WW)
  732. 7320 NEXT
  733. 7330 XARG = TAVG
  734. 7340 IDEG = 2
  735. 7350 NPTS = 4
  736. 7360 GOSUB 8390
  737. 7370 Y(II)=FLAGR
  738. 7380 NEXT
  739. 7390 FOR WW= 1 TO 5
  740. 7400 XF(WW)=PRSW(WW)
  741. 7410 YF(WW)=Y(WW)
  742. 7420 NEXT
  743. 7430 XARG = PAVG
  744. 7440 IDEG = 2
  745. 7450 NPTS = 5
  746. 7460 GOSUB 8390
  747. 7470 RSW=FLAGR
  748. 7480 QG=QO*GOR
  749. 7490 QGS=QO*RS+QW*RSW
  750. 7500 IF QG >= QGS THEN 7550
  751. 7510 RSW=(QG-QO*RS)/QW
  752. 7520 '
  753. 7530 'DETERMINE DISSOLVED GAS GRAVITY AND RESTRICT TO VALUES GREATER THAN
  754. 7540 '0.56 (METHANE) AND THE PRODUCING GAS GRAVITY.
  755. 7550 SGDG=(API+12.5)/50-3.5715E-06*API*RS
  756. 7560 IF SGDG < .56 THEN SGDG=.56
  757. 7570 IF SGDG < SGPG THEN SGDG=SGPG
  758. 7580 '
  759. 7590 'PERFORM MASS BALANCE ON GAS TO CALCULATE FREE GAS GRAVITY.
  760. 7600 WTGAST=QO*GOR*.0764*SGPG
  761. 7610 WTGASD=.0764*SGDG*(RS*QO+RSW*QW)
  762. 7620 WTGASF=WTGAST-WTGASD
  763. 7630 SGFG=WTGASF/(.0764*(QO*(GOR-RS)-QW*RSW))
  764. 7640 '
  765. 7650 'RESTRICT FREE GAS GRAVITY TO VALUES BETWEEN 0.56 (METHANE)
  766. 7660 'AND THE PRODUCING GAS GRAVITY.
  767. 7670 IF SGFG < .56 THEN SGFG=.56
  768. 7680 IF SGFG > SGPG THEN SGFG=SGPG
  769. 7690 RETURN
  770. 7700 '
  771. 7710 'SINGLE PHASE LIQUID
  772. 7720 RS=0
  773. 7730 RSW=0
  774. 7740 SGDG=SGPG
  775. 7750 SGFG=SGPG
  776. 7760 SG100=SGPG
  777. 7770 PB=14.7
  778. 7780 RETURN
  779. 7790 AC=1
  780. 7800 RETURN
  781. 7810 STOP
  782. 7820 '******************************************************************
  783. 7830 'SUBROUTINE CALFVF
  784. 7840 '
  785. 7850 'VAZQUEZ AND BEGGS CORRELATION IS USED BELOW THE BUBBLE POINT PRESSURE.
  786. 7860 '
  787. 7870 SGO=141.5/(131.5+API)
  788. 7880 DCF=(TAVG-60)*API/SG100
  789. 7890 IF API<= 30 THEN 7930
  790. 7900 ACF=.11
  791. 7910 BCF=.1337
  792. 7920 GOTO 7950
  793. 7930 ACF=.1751
  794. 7940 BCF=-1.8106
  795. 7950 IF PAVG < PB THEN 8030
  796. 7960 'CALCULATE OIL FORMATION VOLUME FACTOR AT THE BUBBLE POINT
  797. 7970 'PRESSURE, BBL/STBO.
  798. 7980 BOB=1+.000467*GOR+ACF*DCF*.0001+BCF*GOR*DCF*1E-08
  799. 7990 GOTO 8070
  800. 8000 '
  801. 8010 'CALCULATE OIL FORMATION VOLUME FACTOR BELOW THE BUBBLE POINT
  802. 8020 'PRESSURE, BBL/STBO.
  803. 8030 BO=1+.000467*RS+ACF*DCF*.0001+BCF*RS*DCF*1E-08
  804. 8040 GOTO 8130
  805. 8050 '
  806. 8060 'CALCULATE OIL COMPRESSIBILITY, PSI^-1
  807. 8070 CO=(-1433+5*RS+17.2*TAVG-1180*SG100+12.61*API)/(PAVG*1000*100)
  808. 8080 'CALCULATE OIL FORMATION VOLUME FACTOR ABOVE THE BUBBLE POINT
  809. 8090 'PRESSURE, BBL/STBO.
  810. 8100 BO=BOB*EXP(CO*(PB-PAVG))
  811. 8110 '
  812. 8120 'RESTRICT OIL FORMATION VOLUME FACTOR TO VALUES ABOVE 1
  813. 8130 IF BO<1 THEN BO=1
  814. 8140 '
  815. 8150 'CALCULATE WATER FORMATION VOLUME FACTOR, BBB/STBW
  816. 8160 BW=1+.00012*(TAVG-60)+.000001*(TAVG-60)^2-3.33E-06*PAVG
  817. 8170 RETURN
  818. 8180 STOP
  819. 8190 '******************************************************************
  820. 8200 'SUBROUTINE GASVIS
  821. 8210 '
  822. 8220 'CALCULATE VISCOSITY OF HYDROCARBON GASES USING THE LEE CORRELATION.
  823. 8230 '
  824. 8240 TABS=TAVG+460
  825. 8250 WGA=SGFG*29
  826. 8260 AK=(9.4# +.02*WGA)*(TABS^1.5)/(209+19*WGA+TABS)
  827. 8270 XGA=3.5+(986/TABS)+.01*WGA
  828. 8280 YGA=2.4-.2*XGA
  829. 8290 '
  830. 8300 'CALCULATE GAS DENSITY, GM/CC
  831. 8310 GOSUB 9380
  832. 8320 RHOG=PAVG*WGA/(10.72*Z*TABS*62.4)
  833. 8330 '
  834. 8340 'CALCULATE GAS VISCOSITY, CP.
  835. 8350 GVIS=AK*EXP(XGA*RHOG^YGA)/10000
  836. 8360 RETURN
  837. 8370 STOP
  838. 8380 '******************************************************************
  839. 8390 'FUNCTION FLAGR
  840. 8400 '
  841. 8410 NFL=INT(ABS(NPTS))
  842. 8420 N1FL=IDEG+1
  843. 8430 LFL=1
  844. 8440 IF XF(2) > XF(1) THEN 8460
  845. 8450 LFL=2
  846. 8460 ON LFL GOTO 8470,8500
  847. 8470 IF XARG <= XF(1) THEN 8530
  848. 8480 IF XARG >= XF(NFL) THEN 8550
  849. 8490 GOTO 8590
  850. 8500 IF XARG >= XF(1) THEN 8530
  851. 8510 IF XARG <= XF(NFL) THEN 8550
  852. 8520 GOTO 8590
  853. 8530 FLAGR=YF(1)
  854. 8540 RETURN
  855. 8550 FLAGR=YF(NFL)
  856. 8560 RETURN
  857. 8570 '
  858. 8580 'DETERMINE VALUE OF MAX
  859. 8590 ON LFL GOTO 8620,8670
  860. 8600 '
  861. 8610 'DATA ARE IN ORDER OF INCREASING VALUES OF X.
  862. 8620 FOR MAX = N1FL TO NFL
  863. 8630 IF XARG < XF(MAX) THEN 8720
  864. 8640 NEXT
  865. 8650 '
  866. 8660 'DATA ARE IN ORDER OF DECREASING VALUES OF X.
  867. 8670 FOR MAX = N1FL TO NFL
  868. 8680 IF XARG > XF(MAX) THEN 8720
  869. 8690 NEXT
  870. 8700 '
  871. 8710 'COMPUTE VALUE OF FACTOR.
  872. 8720 MIN=MAX-IDEG
  873. 8730 FACTOR=1
  874. 8740 FOR I = MIN TO MAX
  875. 8750 IF XARG <> XF(I) THEN 8780
  876. 8760 FLAGR = YF(I)
  877. 8770 RETURN
  878. 8780 FACTOR=FACTOR*(XARG-XF(I))
  879. 8790 NEXT
  880. 8800 '
  881. 8810 'EVALUATE INTERPOLATING POLYNOMIAL.
  882. 8820 YEST=0
  883. 8830 FOR I = MIN TO MAX
  884. 8840 TERM=YF(I)*FACTOR/(XARG-XF(I))
  885. 8850 FOR J = MIN TO MAX
  886. 8860 IF I <> J THEN TERM=TERM/(XF(I)-XF(J))
  887. 8870 NEXT
  888. 8880 YEST=YEST + TERM
  889. 8890 NEXT
  890. 8900 FLAGR=YEST
  891. 8910 RETURN
  892. 8920 STOP
  893. 8930 '******************************************************************
  894. 8940 'SUBROUTINE FRFACT
  895. 8950 '
  896. 8960 'CALCULATE THE MOODY FRICTION FACTOR USING EITHER THE LAMINAR
  897. 8970 'FLOW OR THE COLEBROOK EQUATIONS.
  898. 8980 '
  899. 8990 IF REY > 2000 THEN 9030
  900. 9000 'LAMINAR FLOW FRICTION FACTOR
  901. 9010 FF=64/REY
  902. 9020 GOTO 9130
  903. 9030 FGI=.0056+.5/REY^.32
  904. 9040 IFR=1
  905. 9050 DEN=1.14-2*LOG(ED+9.34/(REY*FGI^.5))/LOG(10)
  906. 9060 FF=(1/DEN)^2
  907. 9070 DIFF=ABS(FGI-FF)
  908. 9080 IF DIFF <= .0001 THEN 9130
  909. 9090 FGI=(FGI+FF)/2
  910. 9100 IFR=IFR+1
  911. 9110 IF IFR < 10 THEN 9050
  912. 9120 FF=FGI
  913. 9130 RETURN
  914. 9140 STOP
  915. 9150 '*****************************************************************
  916. 9160 'SUBROUTINE VELOCITY
  917. 9170 '
  918. 9180 GOSUB 6580
  919. 9190 GOSUB 7830
  920. 9200 GOSUB 9380
  921. 9210 '
  922. 9220 'CALCULATE IN SITU VOLUME FLOW RATES OF OIL, WATER, GAS & LIQUID.
  923. 9230 QOPT=QO*BO*5.614#/86400#
  924. 9240 QWPT=QW*BW*5.614#/86400#
  925. 9250 QGPT=(QO*(GOR-RS)-QW*RSW)*Z/100*(TAVG+460)/520*14.7/(864*PAVG)
  926. 9260 QLPT=QOPT+QWPT
  927. 9270 '
  928. 9280 'CALCULATE SUPERFICIAL LIQUID, GAS, AND MIXTURE VELOCITIES.
  929. 9290 VSL=QLPT/AP
  930. 9300 VSG=QGPT/AP
  931. 9310 VM=VSL+VSG
  932. 9320 '
  933. 9330 'CALCULATE IN SITU FRACTION OF OIL IN LIQUID PHASE.
  934. 9340 FO=QOPT/QLPT
  935. 9350 RETURN
  936. 9360 STOP
  937. 9370 '*****************************************************************
  938. 9380 'SUBROUTINE ZFACHY
  939. 9390 '
  940. 9400 'CALCULATE GAS COMPRESSIBILITY FACTOR USING THE HALL AND
  941. 9410 'YARBOROUGH CORRELATION FOR CURVE FITTING THE STANDING-
  942. 9420 'KATZ REDUCED PRESSURE-REDUCED TEMPERATURE Z-FACTOR CHART.
  943. 9430 '
  944. 9440 'CALCULATE CRITICAL AND REDUCED TEMPERATURE AND PRESSURE.
  945. 9450 TC=169+314*SGFG
  946. 9460 PC=708.75-57.5*SGFG
  947. 9470 TR=(TAVG+460)/TC
  948. 9480 PRZF=PAVG/PC
  949. 9490 '
  950. 9500 'IF REDUCED TEMPERATURE IS LESS THAN 1.01, CALCULATE A Z-FACTOR
  951. 9510 'FOR A REDUCED TEMPERATURE VALUE OF 1.0.
  952. 9520 IF TR > 1.01 THEN 9550
  953. 9530 RT=1
  954. 9540 GOTO 9580
  955. 9550 RT=1/TR
  956. 9560 '
  957. 9570 'CALCULATE TEMPERATURE DEPENDENT TERMS
  958. 9580 AZF=.06125*RT*EXP(-1.2*(1-RT)^2)
  959. 9590 BZF=RT*(14.76-9.76*RT+4.58*RT^2)
  960. 9600 CZF=RT*(90.7-242.2*RT+42.4*RT^2)
  961. 9610 DZF=2.18+2.82*RT
  962. 9620 '
  963. 9630 'CALCULATE REDUCED DENSITY, Y, USING THE NEWTON-RAPHSON METHOD.
  964. 9640 YZF=.001
  965. 9650 FOR J = 1 TO 25
  966. 9660 IF YZF > 1 THEN YZF=.6
  967. 9670 FZF=-AZF*PRZF+(YZF+YZF^2+YZF^3-YZF^4)/(1-YZF)^3-BZF*YZF^2+CZF*YZF^DZF
  968. 9680 IF ABS(FZF) <=.0001 THEN 9790
  969. 9690 '
  970. 9700 'IF CONVERGENCE IS NOT OBTAINED IN 25 ITERATIONS, SET Z=1 AND
  971. 9710 'RETURN.
  972. 9720 IF J < 25 THEN 9750
  973. 9730 Z=1
  974. 9740 RETURN
  975. 9750 DFDY=(1+4*YZF+4*YZF^2-4*YZF^3+4*YZF^4)/(1-YZF)^4-2*BZF*YZF+DZF*CZF*YZF^(DZF-1)
  976. 9760 YZF=YZF-FZF/DFDY
  977. 9770 NEXT
  978. 9780 'CALCULATE Z-FACTOR
  979. 9790 Z=AZF*PRZF/YZF
  980. 9800 RETURN
  981. 9810 STOP
  982.