home *** CD-ROM | disk | FTP | other *** search
/ RBBS in a Box Volume 1 #3.1 / RBBSIABOX31.cdr / apit / apirod.bas < prev    next >
Encoding:
BASIC Source File  |  1990-09-29  |  22.3 KB  |  482 lines

  1. 5  PRINT"  *********** LEVEL 1 PROGRAM - DONATED TO SPE ************ "
  2. 10 PRINT"  BY JOE CLEGG; JUNE 1984; PROGRAM LUFKINROD OR APIROD2"
  3. 20 PRINT"  FOR 5 PUMP SPM RATES AND FOR CONVENTIONAL,AIR BALANCED AND MARK II"
  4. 30 PRINT"  API RP 11L: CONVENTIONAL SUCKER ROD PUMPING DESIGN"
  5. 35 PRINT"  See SPE Microcomp News, Sept. 1984, pp.7,8,9"
  6. 40 PRINT "--------------------------------------------------------------------"
  7. 50 DIM D(99)
  8. 60 DIM SPS(10,6)
  9. 70 DIM F1(11,7)
  10. 80 DIM TFF(11,6)
  11. 90 DIM HP(11,7)
  12. 100 DIM TA(11,7)
  13. 110 INPUT "WELL                                            ";W$
  14. 120 INPUT "DESIGNED BY                                     ";XN$
  15. 130 INPUT "DATE                                            ";ZD$
  16. 140 INPUT "1 TO 5. N: PUMP SPEED(ENTER 5;SEPARATE W/COMMA):";D(1),D(2),D(3),D(4),D(5)
  17. 150 INPUT "6. S: LENGTH OF STROKE IN INCHES =              ";D(6)
  18. 160 INPUT "7. D: PLUNGER DIAMETER IN INCHES =              ";D(7)
  19. 170 INPUT "8. EFF: EFFICIENCY OF PUMP, A RATIO=            ";D(8)
  20. 180 INPUT "9. IF TUBING ANCHORED TYPE 0; IF NOT TYPE 1     ";D(9)
  21. 190 PRINT "   TBG OD/AREA :1.9/.8; 2.375/1.304; 2.875/1.812; 3.5/2.59; 4.0/3.077; 4.5/3.601"
  22. 200 INPUT "10. AT: TUBING WALL AREA IN SQ.IN.=             ";D(10)
  23. 210 INPUT "11. G: SPECIFIC GRAVITY OF FLUID=               ";D(11)
  24. 220 INPUT "12. L: PUMP DEPTH IN FEET=                      ";D(12)
  25. 230 INPUT "13. H: FLUID LEVEL IN FEET FROM SURFACE =       ";D(13)
  26. 240 INPUT "TO INPUT ROD IN % TYPE 0 ;TO INPUT RODS IN FEET TYPE 1";IR
  27. 250 IF IR=0 GOTO 400
  28. 260 PRINT "INPUT FEET OF EACH ROD SIZE STARTING WITH LARGEST SIZE"
  29. 270 INPUT "19. ROD LENGTH OF 9/8 IN. RODS IN FEET          ";D(19)
  30. 280 INPUT "20. ROD LENGTH OF 8/8 IN. RODS IN FEET          ";D(20)
  31. 290 INPUT "21. ROD LENGTH OF 7/8 IN. RODS IN FEET          ";D(21)
  32. 300 INPUT "22. ROD LENGTH OF 6/8 IN. RODS IN FEET          ";D(22)
  33. 310 INPUT "23. ROD LENGTH OF 5/8 IN. RODS IN FEET          ";D(23)
  34. 320 DT= D(19)+D(20)+D(21)+D(22)+D(23)
  35. 330 IF DT>D(12)+50 GOTO 360
  36. 340 IF DT<D(12)-50 GOTO 380
  37. 350 GOTO 590
  38. 360 PRINT "SUCKER ROD TOTAL DEPTH EXCEEDS PUMP DEPTH BY 50 FT"
  39. 370 GOTO 260
  40. 380 PRINT "SUCKER ROD TOTAL DEPTH LESS THAN PUMP DEPTH BY 50 FT"
  41. 390 GOTO 260
  42. 400 PRINT "INPUT % RATIO(%/100) OF EACH ROD SIZE STARTING WITH LARGEST SIZE"
  43. 410 INPUT "14.  % RATIO OF 9/8 IN. RODS                    ";D(14)
  44. 420 INPUT "15.  % RATIO OF 8/8 IN. RODS                    ";D(15)
  45. 430 INPUT "16.  % RATIO OF 7/8 IN. RODS                    ";D(16)
  46. 440 INPUT "17.  % RATIO OF 6/8 IN. RODS                    ";D(17)
  47. 450 INPUT "18.  % RATIO OF 5/8 IN. RODS                    ";D(18)
  48. 460 DRT = D(14)+D(15)+D(16)+D(17)+D(18)
  49. 470 IF DRT <.99 GOTO 500
  50. 480 IF DRT >1.01 GOTO 500
  51. 490 GOTO 520
  52. 500 PRINT "ROD PERCENTAGE INCORRECT. INPUT NEW VALUES"
  53. 510 GOTO 400
  54. 520 D(19) =D(14)*D(12)
  55. 530 D(20)=D(15)*D(12)
  56. 540 D(21)=D(16)*D(12)
  57. 550 D(22)=D(17)*D(12)
  58. 560 D(23)=D(18)*D(12)
  59. 570 DT=D(19)+D(20)+D(21)+D(22)+D(23)
  60. 580 GOTO 640
  61. 590 D(14)=D(19)/D(12)
  62. 600 D(15)=D(20)/D(12)
  63. 610 D(16)=D(21)/D(12)
  64. 620 D(17)=D(22)/D(12)
  65. 630 D(18)=D(23)/D(12)
  66. 640 REM : PERMIT CHANGES IN INPUT DATA
  67. 650 INPUT "IF OK, TYPE 0; TO CHANGE ANY INPUT ITEM; TYPE INPUT DATA NO.";NE
  68. 660 IF NE=0 GOTO 700
  69. 670 INPUT "INPUT DATA VALUE CHANGE (FOR INPUT DATA NO.):";D(NE)
  70. 680 IF IR = 0 GOTO 460
  71. 690 IF IR > 0 GOTO 320
  72. 700 PRINT "CALCULATE FACTORS AND CONSTANTS"
  73. 710 PRINT "-------------------------------"
  74. 720 WR=(3.676*D(19)+2.904*D(20)+2.224*D(21)+1.634*D(22)+1.135*D(23))/DT
  75. 730 ER=12*(D(19)/994+D(20)/785+D(21)/601+D(22)/442+D(23)/307)/30750/DT
  76. 740 IF D(10) = 0 THEN ET = 0 ELSE ET = 12/D(10)/30000000#
  77. 750 GOSUB 4100
  78. 760 REM :A SHORT PROGRAM TO FIND FC
  79. 770 PRINT "Er =";ER;" IN/LB-FT";TAB(30);"Et =";ET;"IN/LB-FT"
  80. 780 PRINT "Wr =";WR;" LB/FT";TAB(30);"Fc =";FC
  81. 790 PRINT "CALCULATE NON-DIMENSIONAL VARIABLES"
  82. 800 PRINT "-----------------------------------"
  83. 810 FO = .34*D(11)*D(7)^2*D(13)
  84. 820 RKR=ER*DT
  85. 830 PRINT "FO =";FO;" LBS";TAB(30);"1/Kr =";RKR;" IN/LB"
  86. 840 SKR = D(6)/RKR
  87. 850 FOSKR=FO/SKR
  88. 860 RFOSKR =FOSKR
  89. 870 PRINT "SKr =";SKR;" LBS";TAB(30);"FO/SKR =";FOSKR;" MUST NOT EXCEED .6"
  90. 880 PRINT "------------------------------------------------------------------"
  91. 890 IF FOSKR >.6 THEN FOSKR=.599
  92. 900 REM : HOW MANY PUMP SPEEDS?
  93. 910 NPS = 5
  94. 920 FOR NN = 1 TO NPS
  95. 930 DN(NN)=D(NN)
  96. 940 NONO(NN) =DN(NN)*D(12)/245000!
  97. 950 NONO(NN) =CINT(NONO(NN)*1000)/1000
  98. 960 NNO(NN) = NONO(NN)/FC
  99. 970 NNO(NN) = CINT(NNO(NN)*1000)/1000
  100. 980 NEXT
  101. 990 PRINT "NO/NO   =";TAB(10);NONO(1);TAB(24);NONO(2);TAB(38);NONO(3);TAB(52);NONO(4);TAB(66);NONO(5)
  102. 1000  PRINT "IF NO/NO OR N/No'IS > THAN .5; THEN PROGRAM CHANGES VALUE TO .499"
  103. 1010 FOR NN = 1 TO NPS
  104. 1020 IF NONO(NN) > .5 THEN NONO(NN)= .499
  105. 1030 IF NNO(NN) > .5 THEN NNO(NN) = .499
  106. 1040 NEXT
  107. 1050 RKT=ET*D(12)
  108. 1060 SPT = FO * RKT
  109. 1070 PRINT "1/Kt =";RKT;" IN/LB";TAB(30)"TUBING STRETCH IF UNANCHORED =";SPT;"INCHES"
  110. 1080 IF D(9)=0 THEN RKT=0
  111. 1090 PRINT "SOLVE FOR SP AND PR"
  112. 1100 PRINT "-------------------------------------------------------------------"
  113. 1110 FOR J=0 TO 10
  114. 1120 FOR K=0 TO 6
  115. 1130 READ SPS(J,K)
  116. 1140 DATA .40,.50,.60,.70,.80,.90,1.0
  117. 1150 DATA .42,.52,.62,.72,.82,.91,1.01
  118. 1160 DATA .43,.53,.63,.73,.83,.92,1.02
  119. 1170 DATA .46,.56,.65,.75,.85,.93,1.03
  120. 1180 DATA .48,.58,.69,.80,.88,.96,1.05
  121. 1190 DATA .47,.57,.68,.80,.93,1.03,1.10
  122. 1200 DATA .56,.66,.72,.78,.90,1.06,1.13
  123. 1210 DATA .66,.76,.82,.87,.93,1.02,1.10
  124. 1220 DATA .76,.86,.92,.98,1.03,1.10,1.18
  125. 1230 DATA .86,.96,1.03,1.09,1.15,1.22,1.34
  126. 1240 DATA .95,1.05,1.13,1.21,1.28,1.36,1.48
  127. 1250 NEXT K
  128. 1260 NEXT J
  129. 1270 FOR NN = 1 TO NPS
  130. 1280 R1(NN)=FIX(NNO(NN)/.05)
  131. 1290 R2(NN)=R1(NN)+1
  132. 1300 RN(NN)=.05*R1(NN)
  133. 1310 C2=6-FIX(FOSKR/.1)
  134. 1320 C1=C2-1
  135. 1330 CN=.1*FIX(FOSKR/.1)
  136. 1340 SA(NN)=(SPS(R2(NN),C1)-SPS(R1(NN),C1))*(NNO(NN)-RN(NN))/.05+SPS(R1(NN),C1)
  137. 1350 SB(NN)=(SPS(R2(NN),C2)-SPS(R1(NN),C2))*(NNO(NN)-RN(NN))/.05+SPS(R1(NN),C2)
  138. 1360 SPX(NN)=SB(NN)-(SB(NN)-SA(NN))*(FOSKR-CN)/.1
  139. 1370 SPX(NN) = CINT(SPX(NN)*1000)/1000
  140. 1380 SP(NN)= CINT(SPX(NN)*D(6)- FO*RKT)
  141. 1390 PD(NN) = CINT(.1166*SP(NN)*DN(NN)*D(7)^2 *D(8))
  142. 1400 NEXT
  143. 1410 PRINT "ITEM";TAB(10);" N(1)";TAB(24);" N(2)";TAB(38);" N(3)";TAB(52);" N(4)";TAB(66);" N(5)"
  144. 1420 PRINT "SPM     =";TAB(10);DN(1);TAB(24);DN(2);TAB(38);DN(3);TAB(52);DN(4);TAB(66);DN(5)
  145. 1430 PRINT "NO/NO   =";TAB(10);NONO(1);TAB(24);NONO(2);TAB(38);NONO(3);TAB(52);NONO(4);TAB(66);NONO(5)
  146. 1440 PRINT "N/NO'   =";TAB(10);NNO(1);TAB(24);NNO(2);TAB(38);NNO(3);TAB(52);NNO(4);TAB(66);NNO(5)
  147. 1450 PRINT "SP/S    =";TAB(10);SPX(1);TAB(24);SPX(2);TAB(38);SPX(3);TAB(52);SPX(4);TAB(66);SPX(5)
  148. 1460 PRINT "SP (IN.)=";TAB(10);SP(1);TAB(24);SP(2);TAB(38);SP(3);TAB(52);SP(4);TAB(66);SP(5)
  149. 1470 PRINT "PD (BPD)=";TAB(10);PD(1);TAB(24);PD(2);TAB(38);PD(3);TAB(52);PD(4);TAB(66);PD(5)
  150. 1480 PRINT "-------------------------------------------------------------------"
  151. 1490 PRINT "IF PUMP DISPLACEMENT NOT APPROPRIATE, CHANGE INPUT VALUES"
  152. 1500 INPUT "TYPE 0 TO CONTINUE; OTHERWISE TYPE 1";ID
  153. 1510 IF ID = 0 GOTO 1540
  154. 1520 RESTORE
  155. 1530 GOTO 650
  156. 1540 PRINT "CALCULATE NON-DIMENSIONAL PARAMETERS AND MAKE TABLE LOOK-UP"
  157. 1550 PRINT "------------------------------------------------------------------"
  158. 1560 W=WR * D(12)
  159. 1570 WRF = W*(1-(.128*D(11)))
  160. 1580 WRFS = WRF/SKR
  161. 1590 PRINT "W =";W;" LBS";TAB(25);"Wrf =";WRF;" LBS";TAB(50);"Wrf/SKr =";WRFS
  162. 1600 PRINT "-----------------------------------------------------------------"
  163. 1610 FOR M=1 TO 11
  164. 1620 FOR N = 1 TO 7
  165. 1630 READ F1(M,N)
  166. 1640 DATA .00,.10,.20,.30,.40,.50,.60
  167. 1650 DATA .02,.12,.23,.33,.43,.53,.63
  168. 1660 DATA .05,.15,.26,.36,.46,.56,.67
  169. 1670 DATA .08,.18,.29,.39,.49,.59,.69
  170. 1680 DATA .12,.22,.33,.43,.52,.62,.73
  171. 1690 DATA .17,.27,.37,.46,.55,.65,.75
  172. 1700 DATA .21,.31,.41,.51,.59,.68,.78
  173. 1710 DATA .26,.36,.46,.55,.63,.70,.80
  174. 1720 DATA .32,.42,.51,.61,.69,.78,.88
  175. 1730 DATA .40,.50,.58,.69,.75,.83,.93
  176. 1740 DATA .52,.62,.69,.79,.84,.91,1.0
  177. 1750 NEXT N
  178. 1760 NEXT M
  179. 1770 FOR NN=1 TO NPS
  180. 1780 RR1(NN)= FIX(NONO(NN)/.05)+1
  181. 1790 RR2(NN)=RR1(NN)+1
  182. 1800 RRN(NN) =.05*(RR1(NN)-1)
  183. 1810 CC1=FIX(FOSKR/.1)+1
  184. 1820 CC2=CC1+1
  185. 1830 CCN=.1*FIX(FOSKR/.1)
  186. 1840 SA(NN) =(F1(RR2(NN),CC1)-F1(RR1(NN),CC1))*(NONO(NN)-RRN(NN))/.05 +F1(RR1(NN),CC1)
  187. 1850 SB(NN)=(F1(RR2(NN),CC2)-F1(RR1(NN),CC2))*(NONO(NN)-RRN(NN))/.05+ F1(RR1(NN),CC2)
  188. 1860 FX(NN)=SA(NN) + (SB(NN)-SA(NN))*(FOSKR-CCN)/.1
  189. 1870 FX(NN) = CINT(FX(NN)*1000)/1000
  190. 1880 NEXT
  191. 1890 FOR NN = 1 TO NPS
  192. 1900 F2(NN)=.347*NONO(NN)+ 1.55*NONO(NN)^2 -1.71*NONO(NN)^3
  193. 1910 F2(NN) = CINT(F2(NN)*1000)/1000
  194. 1920 NEXT
  195. 1930 REM: NOW TO FIND THE PEAK TORQUE FACTOR
  196. 1940 FOR KT=1 TO 11
  197. 1950 FOR NT=1 TO 6
  198. 1960 READ TFF(KT,NT)
  199. 1970 DATA .040,.090,.140,.190,.220,.250
  200. 1980 DATA .040,.100,.162,.213,.250,.276
  201. 1990 DATA .040,.113,.187,.240,.281,.300
  202. 2000 DATA .060,.139,.220,.270,.309,.321
  203. 2010 DATA .098,.177,.258,.300,.330,.340
  204. 2020 DATA .140,.220,.298,.334,.350,.356
  205. 2030 DATA .190,.263,.338,.370,.375,.380
  206. 2040 DATA .230,.308,.380,.410,.415,.425
  207. 2050 DATA .290,.350,.422,.450,.470,.500
  208. 2060 DATA .340,.400,.464,.490,.508,.520
  209. 2070 DATA .390,.450,.505,.532,.559,.560
  210. 2080 NEXT NT
  211. 2090 NEXT KT
  212. 2100 FOR NN = 1 TO NPS
  213. 2110 RT1(NN) = FIX(NONO(NN)/.05)+1
  214. 2120 RT2(NN) =RT1(NN) +1
  215. 2130 RTN(NN) =.05*(RT1(NN)-1)
  216. 2140 CT1=FIX(FSKR/.1)+1
  217. 2150 FSKR = FOSKR
  218. 2160 IF FSKR > .5 THEN FSKR =.499
  219. 2170 CT1=FIX(FSKR/.1)+1
  220. 2180 CT2=CT1+1
  221. 2190 CTN=.1*FIX(FSKR/.1)
  222. 2200 STA(NN) =(TFF(RT2(NN),CT1)-TFF(RT1(NN),CT1))*(NONO(NN)-RTN(NN))/.05+TFF(RT1(NN),CT1)
  223. 2210 STB(NN) =(TFF(RT2(NN),CT2)-TFF(RT1(NN),CT2))*(NONO(NN)-RTN(NN))/.05+TFF(RT1(NN),CT2)
  224. 2220 TFX(NN) =STA(NN) + (STB(NN)-STA(NN))*(FSKR-CTN)/.1
  225. 2230 TFX(NN) = CINT(TFX(NN)*1000)/1000
  226. 2240 NEXT
  227. 2250 REM: NOW TO FIND HPFACTOR
  228. 2260 FOR KP=1 TO 11
  229. 2270 FOR NP=1 TO 7
  230. 2280 READ HP(KP,NP)
  231. 2290 DATA .015,.090,.160,.210,.235,.250,.235
  232. 2300 DATA .025,.095,.165,.220,.245,.255,.245
  233. 2310 DATA .040,.110,.175,.230,.255,.265,.255
  234. 2320 DATA .060,.125,.190,.245,.270,.280,.270
  235. 2330 DATA .080,.145,.210,.260,.285,.300,.285
  236. 2340 DATA .095,.165,.230,.280,.310,.320,.320
  237. 2350 DATA .115,.190,.260,.305,.245,.370,.380
  238. 2360 DATA .140,.210,.290,.345,.390,.425,.450
  239. 2370 DATA .170,.250,.335,.400,.465,.505,.530
  240. 2380 DATA .210,.290,.390,.470,.545,.590,.610
  241. 2390 DATA .255,.350,.450,.550,.630,.660,.700
  242. 2400 NEXT NP
  243. 2410 NEXT KP
  244. 2420 FOR NN = 1 TO NPS
  245. 2430 RP1(NN) =FIX(NONO(NN)/.05)+1
  246. 2440 RP2(NN) =RP1(NN) + 1
  247. 2450 RPN(NN) = .05*(RP1(NN)-1)
  248. 2460 CP1=FIX(FOSKR/.1) + 1
  249. 2470 CP2=CP1 + 1
  250. 2480 CPN = .1*FIX(FOSKR/.1)
  251. 2490 SPA(NN) = (HP(RP2(NN),CP1)-HP(RP1(NN),CP1))*(NONO(NN)-RPN(NN))/.05 + HP(RP1(NN),CP1)
  252. 2500 SPB(NN) = (HP(RP2(NN),CP2)-HP(RP1(NN),CP2))*(NONO(NN)-RPN(NN))/.05 + HP(RP1(NN),CP2)
  253. 2510 HPF(NN) = SPA(NN) +(SPB(NN)-SPA(NN))*(FOSKR-CPN)/.1
  254. 2520 HPF(NN) = CINT(HPF(NN)*1000)/1000
  255. 2530 NEXT
  256. 2540 REM: NOW TO FIND TA
  257. 2550 FOR KA=1 TO 11
  258. 2560 FOR NA=1 TO 7
  259. 2570 READ TA(KA,NA)
  260. 2580 DATA 0.200,0.160,0.078,0.055,0.028,0.005,-.015
  261. 2590 DATA 0.180,0.113,0.065,0.042,0.015,-.005,-.016
  262. 2600 DATA 0.160,0.080,0.053,0.029,0.005,-.016,-.006
  263. 2610 DATA 0.110,0.065,0.040,0.015,-.006,-.017,0.003
  264. 2620 DATA 0.077,0.052,0.028,0.004,-.017,-.006,.011
  265. 2630 DATA 0.062,0.039,0.015,-.006,-.016,0.005,.012
  266. 2640 DATA 0.052,0.027,0.004,-.017,-.006,0.011,.013
  267. 2650 DATA 0.040,0.018,-.002,-.016,0.003,0.012,.014
  268. 2660 DATA 0.032,0.014,-.004,-.007,0.008,0.013,.015
  269. 2670 DATA 0.028,0.013,0.001,0.006,0.011,0.014,.016
  270. 2680 DATA 0.026,0.015,0.008,0.011,0.013,0.015,.017
  271. 2690 NEXT NA
  272. 2700 NEXT KA
  273. 2710 FOR NN = 1 TO NPS
  274. 2720 RA1(NN)=FIX(NNO(NN)/.05)+1
  275. 2730 RA2(NN) =RA1(NN) +1
  276. 2740 RAN(NN) = .05*(RA1(NN)-1)
  277. 2750 CA1=FIX(FOSKR/.1)+1
  278. 2760 CA2=CA1+1
  279. 2770 CAN= .1*FIX(FOSKR/.1)
  280. 2780 SAA(NN) = (TA(RA2(NN),CA1)-TA(RA1(NN),CA1))*(NNO(NN)-RAN(NN))/.05 +TA(RA1(NN),CA1)
  281. 2790 SAB(NN)= (TA(RA2(NN),CA2)-TA(RA1(NN),CA2))*(NNO(NN)-RAN(NN))/.05 +TA(RA1(NN),CA2)
  282. 2800 TAA(NN)=SAA(NN) + (SAB(NN)-SAA(NN))*(FOSKR-CAN)/.1
  283. 2810 TAX(NN) = (WRFS-.3)*10*TAA(NN) + 1
  284. 2820 TAX(NN) = CINT(TAX(NN)*1000)/1000
  285. 2830 NEXT
  286. 2840 PRINT "ITEM";TAB(10);" N(1)";TAB(24);" N(2)";TAB(38);" N(3)";TAB(52);" N(4)";TAB(66);" N(5)"
  287. 2850 PRINT "F1/SKr =";TAB(10);FX(1);TAB(24);FX(2);TAB(38);FX(3);TAB(52);FX(4);TAB(66);FX(5)
  288. 2860 PRINT "F2/SKR =";TAB(10);F2(1);TAB(24);F2(2);TAB(38);F2(3);TAB(52);F2(4);TAB(66);F2(5)
  289. 2870 PRINT "2T/S2Kr=";TAB(10);TFX(1);TAB(24);TFX(2);TAB(38);TFX(3);TAB(52);TFX(4);TAB(66);TFX(5)
  290. 2880 PRINT "F3/SKr =";TAB(10);HPF(1);TAB(24);HPF(2);TAB(38);HPF(3);TAB(52);HPF(4);TAB(66);HPF(5)
  291. 2890 PRINT "Ta     =";TAB(10);TAX(1);TAB(24);TAX(2);TAB(38);TAX(3);TAB(52);TAX(4);TAB(66);TAX(5)
  292. 2900 PRINT "------------------------------------------------------------------"
  293. 2910 PRINT
  294. 2920 PRINT "API RP 11L: CONVENTIONAL SUCKER ROD PUMPING DESIGN"
  295. 2930 PRINT "WELL:";W$;TAB(25);"BY:";XN$;TAB(50);"DATE :";ZD$
  296. 2940 PRINT "------------------------------------------------------------------"
  297. 2950 PRINT "CALCULATE OPERATING CHARACTERISTICS FOR CONVENTIONAL UNITS"
  298. 2960 FOR NN = 1 TO NPS
  299. 2970 PPRL(NN)= CINT(WRF/10 + FX(NN)*SKR/10)*10
  300. 2980 MPRL(NN) = CINT(WRF/10- F2(NN)*SKR/10)*10
  301. 2990 PT(NN) = CINT(TFX(NN)*SKR*.5*D(6)*TAX(NN)/100)*100
  302. 3000 PRHP(NN) = CINT(100*HPF(NN)*SKR*D(6)*DN(NN)*2.53E-06)/100
  303. 3010 CBE(NN) = CINT(1.06*(WRF +.5*FO)/10)*10
  304. 3020 LPT(NN) = CINT(.5*D(6)*(PPRL(NN)-CBE(NN))/100!)*110
  305. 3030 NEXT
  306. 3040 PRINT "-----------------------------------------------------------------"
  307. 3050 PRINT "ITEM";TAB(10);" N(1)";TAB(24);" N(2)";TAB(38);" N(3)";TAB(52);" N(4)";TAB(66);" N(5)"
  308. 3060 PRINT "------------------------------------------------------------------"
  309. 3070 PRINT "SPM     =";TAB(10);DN(1);TAB(24);DN(2);TAB(38);DN(3);TAB(52);DN(4);TAB(66);DN(5)
  310. 3080 PRINT "PPRL   =";TAB(10);PPRL(1);TAB(24);PPRL(2);TAB(38);PPRL(3);TAB(52);PPRL(4);TAB(66);PPRL(5);" LBS"
  311. 3090 PRINT "MPRL   =";TAB(10);MPRL(1);TAB(24);MPRL(2);TAB(38);MPRL(3);TAB(52);MPRL(4);TAB(66);MPRL(5);" LBS"
  312. 3100 PRINT "CBC    =";TAB(10);CBE(1);TAB(24);CBE(2);TAB(38);CBE(3);TAB(52);CBE(4);TAB(66);CBE(5);" LBS"
  313. 3110 PRINT "PTC    =";TAB(10);PT(1);TAB(24);PT(2);TAB(38);PT(3);TAB(52);PT(4);TAB(66);PT(5);"IN-LB"
  314. 3120 PRINT "LPT    =";TAB(10);LPT(1);TAB(24);LPT(2);TAB(38);LPT(3);TAB(52);LPT(4);TAB(66);LPT(5);"IN-LB"
  315. 3130 PRINT "PRHP   =";TAB(10);PRHP(1);TAB(24);PRHP(2);TAB(38);PRHP(3);TAB(52);PRHP(4);TAB(66);PRHP(5);" HP"
  316. 3140 PRINT "------------------------------------------------------------------"
  317. 3150 FOR NS = 19 TO 23
  318. 3160 IF D(NS) >25 GOTO 3180
  319. 3170 NEXT NS
  320. 3180 DR= 28-NS
  321. 3190 AR =3.14*(DR/8)^2/4
  322. 3200 FOR NN = 1 TO NPS
  323. 3210 SMAX(NN) = CINT(PPRL(NN)/(AR*10!))*10
  324. 3220 SMIN(NN) = CINT(MPRL(NN)/(AR*10!))*10
  325. 3230 NEXT
  326. 3240 INPUT "INPUT ROD TYPE: K, C, D, or E (IN CAPS):";R$
  327. 3250 K$="K"
  328. 3260 C$="C"
  329. 3270 D$="D"
  330. 3280 E$="E"
  331. 3290 FOR NN = 1 TO NPS
  332. 3300 IF R$=K$ THEN SAL(NN)= 82000!/4 +.5625*SMIN(NN)
  333. 3310 IF R$=C$ THEN SAL(NN)= 90000!/4 +.5625*SMIN(NN)
  334. 3320 IF R$=D$ THEN SAL(NN)= 115000!/4 +.5625*SMIN(NN)
  335. 3330 IF R$=E$ THEN SAL(NN) = 50000!
  336. 3340 SAL(NN) = CINT(SAL(NN)/10)*10
  337. 3350 IF SAL(NN) > 0 GOTO 3380
  338. 3360 PRINT "MUST ENTER ROD TYPE IN CAP LETTERS: TRY AGAIN"
  339. 3370 GOTO 3240
  340. 3380 LR(NN) = SMAX(NN)/SAL(NN)
  341. 3390 NEXT
  342. 3400 PRINT "------------------------------------------------------------------"
  343. 3410 PRINT "ROD STRESS TABLE"
  344. 3420 PRINT "------------------------------------------------------------------"
  345. 3430 PRINT "ITEM";TAB(10);" N(1)";TAB(24);" N(2)";TAB(38);" N(3)";TAB(52);" N(4)";TAB(66);" N(5)"
  346. 3440 PRINT "------------------------------------------------------------------"
  347. 3450 PRINT "SMAX   =";TAB(10);SMAX(1);TAB(24);SMAX(2);TAB(38);SMAX(3);TAB(52);SMAX(4);TAB(66);SMAX(5);" PSI"
  348. 3460 PRINT "SMIN   =";TAB(10);SMIN(1);TAB(24);SMIN(2);TAB(38);SMIN(3);TAB(52);SMIN(4);TAB(66);SMIN(5);" PSI"
  349. 3470 PRINT "ALLOWED=";TAB(10);SAL(1);TAB(24);SAL(2);TAB(38);SAL(3);TAB(52);SAL(4);TAB(66);SAL(5);" PSI"
  350. 3480 PRINT "LOAD R =";TAB(10);LR(1);TAB(24);LR(2);TAB(38);LR(3);TAB(52);LR(4);TAB(66);LR(5)
  351. 3490 PRINT "------------------------------------------------------------------"
  352. 3500 PRINT "ROD  SIZE AND LENGTH TABLE"
  353. 3510 PRINT "--------------------------"
  354. 3520 PRINT "SIZE (1/8)=";TAB(13);"9/8";TAB(25);"8/8";TAB(37);"7/8";TAB(50);"6/8";TAB(63);"5/8";" IN."
  355. 3530 PRINT "% RATIO =";TAB(13);D(14);TAB(25);D(15);TAB(37);D(16);TAB(50);D(17);TAB(63);D(18)
  356. 3540 PRINT "LENGTH =";TAB(13);D(19);TAB(25);D(20);TAB(37);D(21);TAB(50);D(22);TAB(63);D(23);" FT."
  357. 3550 PRINT "------------------------------------------------------------------"
  358. 3560 INPUT "FOR AIR BALANCED UNIT CALCULATION TYPE 1; TO SKIP TYPE 0:";LAB
  359. 3570 IF LAB = 0 GOTO 3750
  360. 3580 PRINT "OPERATING CHARACTERISTICS FOR AIR BALANCED UNITS"
  361. 3590 PRINT "------------------------------------------------------------------"
  362. 3600 FOR NN = 1 TO 5
  363. 3610 PPRLA(NN) = CINT(WRF/10+FO/10+.085*(FX(NN)*SKR-FO))*10
  364. 3620 MPRLA(NN) = CINT(PPRLA(NN)/10-(FX(NN)+F2(NN))*SKR/10)*10!
  365. 3630 CBA(NN) = CINT(1.06*(PPRLA(NN)+MPRLA(NN))/20)*10
  366. 3640 PTA(NN) = 100*CINT(TFX(NN)*SKR*.5*D(6)*TAX(NN)*.96/100)
  367. 3650 SMAXA(NN)= 10*CINT(PPRLA(NN)/(AR*10))
  368. 3660 NEXT
  369. 3670 PRINT "ITEM";TAB(10);" N(1)";TAB(24);" N(2)";TAB(38);" N(3)";TAB(52);" N(4)";TAB(66);" N(5)"
  370. 3680 PRINT "------------------------------------------------------------------"
  371. 3690 PRINT "PPRLA  =";TAB(10);PPRLA(1);TAB(24);PPRLA(2);TAB(38);PPRLA(3);TAB(52);PPRLA(4);TAB(66);PPRLA(5);" LBS"
  372. 3700 PRINT "MPRLA  =";TAB(10);MPRLA(1);TAB(24);MPRLA(2);TAB(38);MPRLA(3);TAB(52);MPRLA(4);TAB(66);MPRLA(5);" LBS"
  373. 3710 PRINT "CBA    =";TAB(10);CBA(1);TAB(24);CBA(2);TAB(38);CBA(3);TAB(52);CBA(4);TAB(66);CBA(5);" LBS"
  374. 3720 PRINT "PTA    =";TAB(10);PTA(1);TAB(24);PTA(2);TAB(38);PTA(3);TAB(52);PTA(4);TAB(66);PTA(5);"IN-LB"
  375. 3730 PRINT "SMAXA  =";TAB(10);SMAXA(1);TAB(24);SMAXA(2);TAB(38);SMAXA(3);TAB(52);SMAXA(4);TAB(66);SMAXA(5);" PSI"
  376. 3740 PRINT "------------------------------------------------------------------"
  377. 3750 INPUT "FOR MARK II UNIT CALCULATION TYPE 1; TO SKIP TYPE 0:";LM
  378. 3760 IF LM = 0 GOTO 3960
  379. 3770 PRINT "OPERATING CHARACTERISTICS FOR MARK II UNITS"
  380. 3780 PRINT "------------------------------------------------------------------"
  381. 3790 FOR NN = 1 TO 5
  382. 3800 PPRLM(NN) = CINT(WRF/10+FO/10+.075*(FX(NN)*SKR-FO))*10
  383. 3810 MPRLM(NN) = CINT(PPRLM(NN)/10-(FX(NN)+F2(NN))*SKR/10)*10!
  384. 3820 CBM(NN) = CINT(1.04*(PPRLM(NN)+1.25*MPRLM(NN))/20)*10
  385. 3830 PTM(NN) = 100*CINT((PPRLM(NN)*.93-MPRLM(NN)*1.2)*D(6)/400)
  386. 3840 SMAXM(NN)= 10*CINT(PPRLM(NN)/(AR*10))
  387. 3850 NEXT
  388. 3860 PRINT "ITEM";TAB(10);" N(1)";TAB(24);" N(2)";TAB(38);" N(3)";TAB(52);" N(4)";TAB(66);" N(5)"
  389. 3870 PRINT "------------------------------------------------------------------"
  390. 3880 PRINT "PPRLM  =";TAB(10);PPRLM(1);TAB(24);PPRLM(2);TAB(38);PPRLM(3);TAB(52);PPRLM(4);TAB(66);PPRLM(5);" LBS"
  391. 3890 PRINT "MPRLM  =";TAB(10);MPRLM(1);TAB(24);MPRLM(2);TAB(38);MPRLM(3);TAB(52);MPRLM(4);TAB(66);MPRLM(5);" LBS"
  392. 3900 PRINT "CBM    =";TAB(10);CBM(1);TAB(24);CBM(2);TAB(38);CBM(3);TAB(52);CBM(4);TAB(66);CBM(5);" LBS"
  393. 3910 PRINT "PTM    =";TAB(10);PTM(1);TAB(24);PTM(2);TAB(38);PTM(3);TAB(52);PTM(4);TAB(66);PTM(5);"IN-LB"
  394. 3920 PRINT "SMAXM  =";TAB(10);SMAXM(1);TAB(24);SMAXM(2);TAB(38);SMAXM(3);TAB(52);SMAXM(4);TAB(66);SMAXM(5);" PSI"
  395. 3930 PRINT "------------------------------------------------------------------"
  396. 3940 PRINT "DO NOT USE LESS THAN ONE SIZE SMALLER REDUCER THAN FOR CONVENTIONAL UNIT"
  397. 3950 PRINT "------------------------------------------------------------------"
  398. 3960 INPUT "FOR INPUT DATA LIST TYPE 1; IF NOT TYPE 0:";IL
  399. 3970 IF IL = 0 GOTO 4010
  400. 3980 FOR NL = 1 TO 23
  401. 3990 PRINT "DATA NO.";NL;TAB(25);"INPUT VALUE  ";D(NL)
  402. 4000 NEXT
  403. 4010 INPUT "TO RERUN WITH DATA CHANGE, TYPE 1; TO END PROGRAM TYPE 0 ";YD
  404. 4020 RESTORE
  405. 4030 IF YD = 1 GOTO 4050
  406. 4040 GOTO 4760
  407. 4050 PRINT
  408. 4060 PRINT
  409. 4070 PRINT "API RP 11L: CONVENTIONAL SUCKER ROD PUMPING DESIGN"
  410. 4080 PRINT "WELL:";W$;TAB(25);"BY:";XN$;TAB(50);"DATE :";ZD$
  411. 4090 GOTO 650
  412. 4100 REM :A SHORT PROGRAM TO CALCULATE FCF
  413. 4110 REM :HOW MANY TAPERS?
  414. 4120 NRT = 0
  415. 4130 FOR NX = 19 TO 23
  416. 4140 IF D(NX) >100 THEN NRT = NRT + 1
  417. 4150 NEXT
  418. 4160 FC = 1
  419. 4170 FCF = 1
  420. 4180 J=1
  421. 4190 IF NRT = 1 GOTO 4730
  422. 4200 REM : FIND THE AR FOR RODS USED
  423. 4210 FOR NAR = 19 TO 23
  424. 4220 IF D(NAR)>100 GOTO 4240
  425. 4230 NEXT
  426. 4240 AR(1) = ((28-NAR)/8)^2*3.14/4
  427. 4250 IF D(NAR+1)>100 THEN AR(2)=((27-NAR)/8)^2*3.14/4
  428. 4260 IF D(NAR+2)>100 THEN AR(3)=((26-NAR)/8)^2*3.14/4
  429. 4270 IF D(NAR+3)>100 THEN AR(4)=((25-NAR)/8)^2*3.14/4
  430. 4280 R(1) = D(NAR)/D(12)
  431. 4290 R(2) = D(NAR+1)/D(12)
  432. 4300 R(3) = D(NAR+2)/D(12)
  433. 4310 R(4) =D(NAR+3)/D(12)
  434. 4320 IF NRT = 2 GOTO 4350
  435. 4330 IF NRT = 3 GOTO 4420
  436. 4340 IF NRT = 4 GOTO 4490
  437. 4350 REM : FOR NRT = 2 FIND FCF
  438. 4360 F1 = TAN(.5*3.14*FCF*R(2))*TAN(.5*3.14*FCF*R(1))-AR(1)/AR(2)
  439. 4370 FOR IR= 1 TO 25
  440. 4380 F = TAN(.5*3.14*FCF*R(2))*TAN(.5*3.14*FCF*R(1))-AR(1)/AR(2)
  441. 4390 GOSUB 4580
  442. 4400 NEXT
  443. 4410 GOTO 4750
  444. 4420 REM : FIND FCF FOR NRT = 3
  445. 4430 F1 =(AR(1)/AR(2)*TAN(.5*3.14*FCF*R(2))+TAN(.5*3.14*FCF*R(1)))/(AR(1)/AR(2)-TAN(.5*3.14*FCF*R(1))*TAN(.5*3.14*FCF*R(2)))-AR(2)/AR(3)/TAN(.5*3.14*FCF*R(3))
  446. 4440 FOR IJ = 1 TO 25
  447. 4450 F = (AR(1)/AR(2)*TAN(.5*3.14*FCF*R(2))+TAN(.5*3.14*FCF*R(1)))/(AR(1)/AR(2)-TAN(.5*3.14*FCF*R(1))*TAN(.5*3.14*FCF*R(2)))-AR(2)/AR(3)/TAN(.5*3.14*FCF*R(3))
  448. 4460 GOSUB 4580
  449. 4470 NEXT
  450. 4480 GOTO 4750
  451. 4490 REM : NOW TO FIND FCF FOR FOUR TAPERS
  452. 4500 E =1-(AR(2)/AR(1))*TAN(.5*3.14*FCF*R(1))*TAN(.5*3.14*FCF*R(2))-(AR(3)/AR(1))*TAN(.5*3.14*FCF*R(1))*TAN(.5*3.14*FCF*R(3))-(AR(3)/AR(2))*TAN(.5*3.14*FCF*R(2))*TAN(.5*3.14*FCF*R(3))
  453. 4510 F1=E -(AR(4)/AR(1))*(TAN(.5*3.14*FCF*R(1))+(AR(1)/AR(2))*TAN(.5*3.14*FCF*R(2))+(AR(1)/AR(3))*TAN(.5*3.14*FCF*R(3))-(AR(2)/AR(3))*TAN(.5*3.14*FCF*R(1))*TAN(.5*3.14*FCF*R(2))*TAN(.5*3.14*FCF*R(3)))*TAN(.5*3.14*FCF*R(4))
  454. 4520 FOR IM = 1 TO 30
  455. 4530 E =1-(AR(2)/AR(1))*TAN(.5*3.14*FCF*R(1))*TAN(.5*3.14*FCF*R(2))-(AR(3)/AR(1))*TAN(.5*3.14*FCF*R(1))*TAN(.5*3.14*FCF*R(3))-(AR(3)/AR(2))*TAN(.5*3.14*FCF*R(2))*TAN(.5*3.14*FCF*R(3))
  456. 4540 F =E -(AR(4)/AR(1))*(TAN(.5*3.14*FCF*R(1))+(AR(1)/AR(2))*TAN(.5*3.14*FCF*R(2))+(AR(1)/AR(3))*TAN(.5*3.14*FCF*R(3))-(AR(2)/AR(3))*TAN(.5*3.14*FCF*R(1))*TAN(.5*3.14*FCF*R(2))*TAN(.5*3.14*FCF*R(3)))*TAN(.5*3.14*FCF*R(4))
  457. 4550 GOSUB 4580
  458. 4560 NEXT
  459. 4570 GOTO 4750
  460. 4580 REM : A SUB TO SPEED UP FCF
  461. 4590 IF J=1 GOTO 4630
  462. 4600 IF J=2 GOTO 4670
  463. 4610 IF (J=3) AND (F*F1 >0 ) THEN FCF = FCF +.001: GOTO 4720
  464. 4620 IF (J=3) AND (F*F1) =< 0 GOTO 4740
  465. 4630 REM : FOR J=1
  466. 4640 IF F*F1 > 0 THEN FCF = FCF +.05: GOTO 4720
  467. 4650 IF F*F1 = < 0 THEN J=2
  468. 4660 FCF = FCF-.06:GOTO 4730
  469. 4670 REM : FOR J=2
  470. 4680 IF F*F1 > 0 THEN FCF = FCF +.01: GOTO 4720
  471. 4690 IF F*F1 = < 0 THEN J=3
  472. 4700 FCF = FCF -.011: GOTO 4730
  473. 4710 GOTO 4730
  474. 4720 F1=F
  475. 4730 RETURN
  476. 4740 FC=FCF-.001
  477. 4750 RETURN
  478. 4760 END
  479.  0 THEN J=3
  480. 4700 FCF = FCF -.011: GOTO 4730
  481. 4710 GOTO 4730
  482. 4720