home *** CD-ROM | disk | FTP | other *** search
Wrap
5 PRINT" *********** LEVEL 1 PROGRAM - DONATED TO SPE ************ " 10 PRINT" BY JOE CLEGG; JUNE 1984; PROGRAM LUFKINROD OR APIROD2" 20 PRINT" FOR 5 PUMP SPM RATES AND FOR CONVENTIONAL,AIR BALANCED AND MARK II" 30 PRINT" API RP 11L: CONVENTIONAL SUCKER ROD PUMPING DESIGN" 35 PRINT" See SPE Microcomp News, Sept. 1984, pp.7,8,9" 40 PRINT "--------------------------------------------------------------------" 50 DIM D(99) 60 DIM SPS(10,6) 70 DIM F1(11,7) 80 DIM TFF(11,6) 90 DIM HP(11,7) 100 DIM TA(11,7) 110 INPUT "WELL ";W$ 120 INPUT "DESIGNED BY ";XN$ 130 INPUT "DATE ";ZD$ 140 INPUT "1 TO 5. N: PUMP SPEED(ENTER 5;SEPARATE W/COMMA):";D(1),D(2),D(3),D(4),D(5) 150 INPUT "6. S: LENGTH OF STROKE IN INCHES = ";D(6) 160 INPUT "7. D: PLUNGER DIAMETER IN INCHES = ";D(7) 170 INPUT "8. EFF: EFFICIENCY OF PUMP, A RATIO= ";D(8) 180 INPUT "9. IF TUBING ANCHORED TYPE 0; IF NOT TYPE 1 ";D(9) 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" 200 INPUT "10. AT: TUBING WALL AREA IN SQ.IN.= ";D(10) 210 INPUT "11. G: SPECIFIC GRAVITY OF FLUID= ";D(11) 220 INPUT "12. L: PUMP DEPTH IN FEET= ";D(12) 230 INPUT "13. H: FLUID LEVEL IN FEET FROM SURFACE = ";D(13) 240 INPUT "TO INPUT ROD IN % TYPE 0 ;TO INPUT RODS IN FEET TYPE 1";IR 250 IF IR=0 GOTO 400 260 PRINT "INPUT FEET OF EACH ROD SIZE STARTING WITH LARGEST SIZE" 270 INPUT "19. ROD LENGTH OF 9/8 IN. RODS IN FEET ";D(19) 280 INPUT "20. ROD LENGTH OF 8/8 IN. RODS IN FEET ";D(20) 290 INPUT "21. ROD LENGTH OF 7/8 IN. RODS IN FEET ";D(21) 300 INPUT "22. ROD LENGTH OF 6/8 IN. RODS IN FEET ";D(22) 310 INPUT "23. ROD LENGTH OF 5/8 IN. RODS IN FEET ";D(23) 320 DT= D(19)+D(20)+D(21)+D(22)+D(23) 330 IF DT>D(12)+50 GOTO 360 340 IF DT<D(12)-50 GOTO 380 350 GOTO 590 360 PRINT "SUCKER ROD TOTAL DEPTH EXCEEDS PUMP DEPTH BY 50 FT" 370 GOTO 260 380 PRINT "SUCKER ROD TOTAL DEPTH LESS THAN PUMP DEPTH BY 50 FT" 390 GOTO 260 400 PRINT "INPUT % RATIO(%/100) OF EACH ROD SIZE STARTING WITH LARGEST SIZE" 410 INPUT "14. % RATIO OF 9/8 IN. RODS ";D(14) 420 INPUT "15. % RATIO OF 8/8 IN. RODS ";D(15) 430 INPUT "16. % RATIO OF 7/8 IN. RODS ";D(16) 440 INPUT "17. % RATIO OF 6/8 IN. RODS ";D(17) 450 INPUT "18. % RATIO OF 5/8 IN. RODS ";D(18) 460 DRT = D(14)+D(15)+D(16)+D(17)+D(18) 470 IF DRT <.99 GOTO 500 480 IF DRT >1.01 GOTO 500 490 GOTO 520 500 PRINT "ROD PERCENTAGE INCORRECT. INPUT NEW VALUES" 510 GOTO 400 520 D(19) =D(14)*D(12) 530 D(20)=D(15)*D(12) 540 D(21)=D(16)*D(12) 550 D(22)=D(17)*D(12) 560 D(23)=D(18)*D(12) 570 DT=D(19)+D(20)+D(21)+D(22)+D(23) 580 GOTO 640 590 D(14)=D(19)/D(12) 600 D(15)=D(20)/D(12) 610 D(16)=D(21)/D(12) 620 D(17)=D(22)/D(12) 630 D(18)=D(23)/D(12) 640 REM : PERMIT CHANGES IN INPUT DATA 650 INPUT "IF OK, TYPE 0; TO CHANGE ANY INPUT ITEM; TYPE INPUT DATA NO.";NE 660 IF NE=0 GOTO 700 670 INPUT "INPUT DATA VALUE CHANGE (FOR INPUT DATA NO.):";D(NE) 680 IF IR = 0 GOTO 460 690 IF IR > 0 GOTO 320 700 PRINT "CALCULATE FACTORS AND CONSTANTS" 710 PRINT "-------------------------------" 720 WR=(3.676*D(19)+2.904*D(20)+2.224*D(21)+1.634*D(22)+1.135*D(23))/DT 730 ER=12*(D(19)/994+D(20)/785+D(21)/601+D(22)/442+D(23)/307)/30750/DT 740 IF D(10) = 0 THEN ET = 0 ELSE ET = 12/D(10)/30000000# 750 GOSUB 4100 760 REM :A SHORT PROGRAM TO FIND FC 770 PRINT "Er =";ER;" IN/LB-FT";TAB(30);"Et =";ET;"IN/LB-FT" 780 PRINT "Wr =";WR;" LB/FT";TAB(30);"Fc =";FC 790 PRINT "CALCULATE NON-DIMENSIONAL VARIABLES" 800 PRINT "-----------------------------------" 810 FO = .34*D(11)*D(7)^2*D(13) 820 RKR=ER*DT 830 PRINT "FO =";FO;" LBS";TAB(30);"1/Kr =";RKR;" IN/LB" 840 SKR = D(6)/RKR 850 FOSKR=FO/SKR 860 RFOSKR =FOSKR 870 PRINT "SKr =";SKR;" LBS";TAB(30);"FO/SKR =";FOSKR;" MUST NOT EXCEED .6" 880 PRINT "------------------------------------------------------------------" 890 IF FOSKR >.6 THEN FOSKR=.599 900 REM : HOW MANY PUMP SPEEDS? 910 NPS = 5 920 FOR NN = 1 TO NPS 930 DN(NN)=D(NN) 940 NONO(NN) =DN(NN)*D(12)/245000! 950 NONO(NN) =CINT(NONO(NN)*1000)/1000 960 NNO(NN) = NONO(NN)/FC 970 NNO(NN) = CINT(NNO(NN)*1000)/1000 980 NEXT 990 PRINT "NO/NO =";TAB(10);NONO(1);TAB(24);NONO(2);TAB(38);NONO(3);TAB(52);NONO(4);TAB(66);NONO(5) 1000 PRINT "IF NO/NO OR N/No'IS > THAN .5; THEN PROGRAM CHANGES VALUE TO .499" 1010 FOR NN = 1 TO NPS 1020 IF NONO(NN) > .5 THEN NONO(NN)= .499 1030 IF NNO(NN) > .5 THEN NNO(NN) = .499 1040 NEXT 1050 RKT=ET*D(12) 1060 SPT = FO * RKT 1070 PRINT "1/Kt =";RKT;" IN/LB";TAB(30)"TUBING STRETCH IF UNANCHORED =";SPT;"INCHES" 1080 IF D(9)=0 THEN RKT=0 1090 PRINT "SOLVE FOR SP AND PR" 1100 PRINT "-------------------------------------------------------------------" 1110 FOR J=0 TO 10 1120 FOR K=0 TO 6 1130 READ SPS(J,K) 1140 DATA .40,.50,.60,.70,.80,.90,1.0 1150 DATA .42,.52,.62,.72,.82,.91,1.01 1160 DATA .43,.53,.63,.73,.83,.92,1.02 1170 DATA .46,.56,.65,.75,.85,.93,1.03 1180 DATA .48,.58,.69,.80,.88,.96,1.05 1190 DATA .47,.57,.68,.80,.93,1.03,1.10 1200 DATA .56,.66,.72,.78,.90,1.06,1.13 1210 DATA .66,.76,.82,.87,.93,1.02,1.10 1220 DATA .76,.86,.92,.98,1.03,1.10,1.18 1230 DATA .86,.96,1.03,1.09,1.15,1.22,1.34 1240 DATA .95,1.05,1.13,1.21,1.28,1.36,1.48 1250 NEXT K 1260 NEXT J 1270 FOR NN = 1 TO NPS 1280 R1(NN)=FIX(NNO(NN)/.05) 1290 R2(NN)=R1(NN)+1 1300 RN(NN)=.05*R1(NN) 1310 C2=6-FIX(FOSKR/.1) 1320 C1=C2-1 1330 CN=.1*FIX(FOSKR/.1) 1340 SA(NN)=(SPS(R2(NN),C1)-SPS(R1(NN),C1))*(NNO(NN)-RN(NN))/.05+SPS(R1(NN),C1) 1350 SB(NN)=(SPS(R2(NN),C2)-SPS(R1(NN),C2))*(NNO(NN)-RN(NN))/.05+SPS(R1(NN),C2) 1360 SPX(NN)=SB(NN)-(SB(NN)-SA(NN))*(FOSKR-CN)/.1 1370 SPX(NN) = CINT(SPX(NN)*1000)/1000 1380 SP(NN)= CINT(SPX(NN)*D(6)- FO*RKT) 1390 PD(NN) = CINT(.1166*SP(NN)*DN(NN)*D(7)^2 *D(8)) 1400 NEXT 1410 PRINT "ITEM";TAB(10);" N(1)";TAB(24);" N(2)";TAB(38);" N(3)";TAB(52);" N(4)";TAB(66);" N(5)" 1420 PRINT "SPM =";TAB(10);DN(1);TAB(24);DN(2);TAB(38);DN(3);TAB(52);DN(4);TAB(66);DN(5) 1430 PRINT "NO/NO =";TAB(10);NONO(1);TAB(24);NONO(2);TAB(38);NONO(3);TAB(52);NONO(4);TAB(66);NONO(5) 1440 PRINT "N/NO' =";TAB(10);NNO(1);TAB(24);NNO(2);TAB(38);NNO(3);TAB(52);NNO(4);TAB(66);NNO(5) 1450 PRINT "SP/S =";TAB(10);SPX(1);TAB(24);SPX(2);TAB(38);SPX(3);TAB(52);SPX(4);TAB(66);SPX(5) 1460 PRINT "SP (IN.)=";TAB(10);SP(1);TAB(24);SP(2);TAB(38);SP(3);TAB(52);SP(4);TAB(66);SP(5) 1470 PRINT "PD (BPD)=";TAB(10);PD(1);TAB(24);PD(2);TAB(38);PD(3);TAB(52);PD(4);TAB(66);PD(5) 1480 PRINT "-------------------------------------------------------------------" 1490 PRINT "IF PUMP DISPLACEMENT NOT APPROPRIATE, CHANGE INPUT VALUES" 1500 INPUT "TYPE 0 TO CONTINUE; OTHERWISE TYPE 1";ID 1510 IF ID = 0 GOTO 1540 1520 RESTORE 1530 GOTO 650 1540 PRINT "CALCULATE NON-DIMENSIONAL PARAMETERS AND MAKE TABLE LOOK-UP" 1550 PRINT "------------------------------------------------------------------" 1560 W=WR * D(12) 1570 WRF = W*(1-(.128*D(11))) 1580 WRFS = WRF/SKR 1590 PRINT "W =";W;" LBS";TAB(25);"Wrf =";WRF;" LBS";TAB(50);"Wrf/SKr =";WRFS 1600 PRINT "-----------------------------------------------------------------" 1610 FOR M=1 TO 11 1620 FOR N = 1 TO 7 1630 READ F1(M,N) 1640 DATA .00,.10,.20,.30,.40,.50,.60 1650 DATA .02,.12,.23,.33,.43,.53,.63 1660 DATA .05,.15,.26,.36,.46,.56,.67 1670 DATA .08,.18,.29,.39,.49,.59,.69 1680 DATA .12,.22,.33,.43,.52,.62,.73 1690 DATA .17,.27,.37,.46,.55,.65,.75 1700 DATA .21,.31,.41,.51,.59,.68,.78 1710 DATA .26,.36,.46,.55,.63,.70,.80 1720 DATA .32,.42,.51,.61,.69,.78,.88 1730 DATA .40,.50,.58,.69,.75,.83,.93 1740 DATA .52,.62,.69,.79,.84,.91,1.0 1750 NEXT N 1760 NEXT M 1770 FOR NN=1 TO NPS 1780 RR1(NN)= FIX(NONO(NN)/.05)+1 1790 RR2(NN)=RR1(NN)+1 1800 RRN(NN) =.05*(RR1(NN)-1) 1810 CC1=FIX(FOSKR/.1)+1 1820 CC2=CC1+1 1830 CCN=.1*FIX(FOSKR/.1) 1840 SA(NN) =(F1(RR2(NN),CC1)-F1(RR1(NN),CC1))*(NONO(NN)-RRN(NN))/.05 +F1(RR1(NN),CC1) 1850 SB(NN)=(F1(RR2(NN),CC2)-F1(RR1(NN),CC2))*(NONO(NN)-RRN(NN))/.05+ F1(RR1(NN),CC2) 1860 FX(NN)=SA(NN) + (SB(NN)-SA(NN))*(FOSKR-CCN)/.1 1870 FX(NN) = CINT(FX(NN)*1000)/1000 1880 NEXT 1890 FOR NN = 1 TO NPS 1900 F2(NN)=.347*NONO(NN)+ 1.55*NONO(NN)^2 -1.71*NONO(NN)^3 1910 F2(NN) = CINT(F2(NN)*1000)/1000 1920 NEXT 1930 REM: NOW TO FIND THE PEAK TORQUE FACTOR 1940 FOR KT=1 TO 11 1950 FOR NT=1 TO 6 1960 READ TFF(KT,NT) 1970 DATA .040,.090,.140,.190,.220,.250 1980 DATA .040,.100,.162,.213,.250,.276 1990 DATA .040,.113,.187,.240,.281,.300 2000 DATA .060,.139,.220,.270,.309,.321 2010 DATA .098,.177,.258,.300,.330,.340 2020 DATA .140,.220,.298,.334,.350,.356 2030 DATA .190,.263,.338,.370,.375,.380 2040 DATA .230,.308,.380,.410,.415,.425 2050 DATA .290,.350,.422,.450,.470,.500 2060 DATA .340,.400,.464,.490,.508,.520 2070 DATA .390,.450,.505,.532,.559,.560 2080 NEXT NT 2090 NEXT KT 2100 FOR NN = 1 TO NPS 2110 RT1(NN) = FIX(NONO(NN)/.05)+1 2120 RT2(NN) =RT1(NN) +1 2130 RTN(NN) =.05*(RT1(NN)-1) 2140 CT1=FIX(FSKR/.1)+1 2150 FSKR = FOSKR 2160 IF FSKR > .5 THEN FSKR =.499 2170 CT1=FIX(FSKR/.1)+1 2180 CT2=CT1+1 2190 CTN=.1*FIX(FSKR/.1) 2200 STA(NN) =(TFF(RT2(NN),CT1)-TFF(RT1(NN),CT1))*(NONO(NN)-RTN(NN))/.05+TFF(RT1(NN),CT1) 2210 STB(NN) =(TFF(RT2(NN),CT2)-TFF(RT1(NN),CT2))*(NONO(NN)-RTN(NN))/.05+TFF(RT1(NN),CT2) 2220 TFX(NN) =STA(NN) + (STB(NN)-STA(NN))*(FSKR-CTN)/.1 2230 TFX(NN) = CINT(TFX(NN)*1000)/1000 2240 NEXT 2250 REM: NOW TO FIND HPFACTOR 2260 FOR KP=1 TO 11 2270 FOR NP=1 TO 7 2280 READ HP(KP,NP) 2290 DATA .015,.090,.160,.210,.235,.250,.235 2300 DATA .025,.095,.165,.220,.245,.255,.245 2310 DATA .040,.110,.175,.230,.255,.265,.255 2320 DATA .060,.125,.190,.245,.270,.280,.270 2330 DATA .080,.145,.210,.260,.285,.300,.285 2340 DATA .095,.165,.230,.280,.310,.320,.320 2350 DATA .115,.190,.260,.305,.245,.370,.380 2360 DATA .140,.210,.290,.345,.390,.425,.450 2370 DATA .170,.250,.335,.400,.465,.505,.530 2380 DATA .210,.290,.390,.470,.545,.590,.610 2390 DATA .255,.350,.450,.550,.630,.660,.700 2400 NEXT NP 2410 NEXT KP 2420 FOR NN = 1 TO NPS 2430 RP1(NN) =FIX(NONO(NN)/.05)+1 2440 RP2(NN) =RP1(NN) + 1 2450 RPN(NN) = .05*(RP1(NN)-1) 2460 CP1=FIX(FOSKR/.1) + 1 2470 CP2=CP1 + 1 2480 CPN = .1*FIX(FOSKR/.1) 2490 SPA(NN) = (HP(RP2(NN),CP1)-HP(RP1(NN),CP1))*(NONO(NN)-RPN(NN))/.05 + HP(RP1(NN),CP1) 2500 SPB(NN) = (HP(RP2(NN),CP2)-HP(RP1(NN),CP2))*(NONO(NN)-RPN(NN))/.05 + HP(RP1(NN),CP2) 2510 HPF(NN) = SPA(NN) +(SPB(NN)-SPA(NN))*(FOSKR-CPN)/.1 2520 HPF(NN) = CINT(HPF(NN)*1000)/1000 2530 NEXT 2540 REM: NOW TO FIND TA 2550 FOR KA=1 TO 11 2560 FOR NA=1 TO 7 2570 READ TA(KA,NA) 2580 DATA 0.200,0.160,0.078,0.055,0.028,0.005,-.015 2590 DATA 0.180,0.113,0.065,0.042,0.015,-.005,-.016 2600 DATA 0.160,0.080,0.053,0.029,0.005,-.016,-.006 2610 DATA 0.110,0.065,0.040,0.015,-.006,-.017,0.003 2620 DATA 0.077,0.052,0.028,0.004,-.017,-.006,.011 2630 DATA 0.062,0.039,0.015,-.006,-.016,0.005,.012 2640 DATA 0.052,0.027,0.004,-.017,-.006,0.011,.013 2650 DATA 0.040,0.018,-.002,-.016,0.003,0.012,.014 2660 DATA 0.032,0.014,-.004,-.007,0.008,0.013,.015 2670 DATA 0.028,0.013,0.001,0.006,0.011,0.014,.016 2680 DATA 0.026,0.015,0.008,0.011,0.013,0.015,.017 2690 NEXT NA 2700 NEXT KA 2710 FOR NN = 1 TO NPS 2720 RA1(NN)=FIX(NNO(NN)/.05)+1 2730 RA2(NN) =RA1(NN) +1 2740 RAN(NN) = .05*(RA1(NN)-1) 2750 CA1=FIX(FOSKR/.1)+1 2760 CA2=CA1+1 2770 CAN= .1*FIX(FOSKR/.1) 2780 SAA(NN) = (TA(RA2(NN),CA1)-TA(RA1(NN),CA1))*(NNO(NN)-RAN(NN))/.05 +TA(RA1(NN),CA1) 2790 SAB(NN)= (TA(RA2(NN),CA2)-TA(RA1(NN),CA2))*(NNO(NN)-RAN(NN))/.05 +TA(RA1(NN),CA2) 2800 TAA(NN)=SAA(NN) + (SAB(NN)-SAA(NN))*(FOSKR-CAN)/.1 2810 TAX(NN) = (WRFS-.3)*10*TAA(NN) + 1 2820 TAX(NN) = CINT(TAX(NN)*1000)/1000 2830 NEXT 2840 PRINT "ITEM";TAB(10);" N(1)";TAB(24);" N(2)";TAB(38);" N(3)";TAB(52);" N(4)";TAB(66);" N(5)" 2850 PRINT "F1/SKr =";TAB(10);FX(1);TAB(24);FX(2);TAB(38);FX(3);TAB(52);FX(4);TAB(66);FX(5) 2860 PRINT "F2/SKR =";TAB(10);F2(1);TAB(24);F2(2);TAB(38);F2(3);TAB(52);F2(4);TAB(66);F2(5) 2870 PRINT "2T/S2Kr=";TAB(10);TFX(1);TAB(24);TFX(2);TAB(38);TFX(3);TAB(52);TFX(4);TAB(66);TFX(5) 2880 PRINT "F3/SKr =";TAB(10);HPF(1);TAB(24);HPF(2);TAB(38);HPF(3);TAB(52);HPF(4);TAB(66);HPF(5) 2890 PRINT "Ta =";TAB(10);TAX(1);TAB(24);TAX(2);TAB(38);TAX(3);TAB(52);TAX(4);TAB(66);TAX(5) 2900 PRINT "------------------------------------------------------------------" 2910 PRINT 2920 PRINT "API RP 11L: CONVENTIONAL SUCKER ROD PUMPING DESIGN" 2930 PRINT "WELL:";W$;TAB(25);"BY:";XN$;TAB(50);"DATE :";ZD$ 2940 PRINT "------------------------------------------------------------------" 2950 PRINT "CALCULATE OPERATING CHARACTERISTICS FOR CONVENTIONAL UNITS" 2960 FOR NN = 1 TO NPS 2970 PPRL(NN)= CINT(WRF/10 + FX(NN)*SKR/10)*10 2980 MPRL(NN) = CINT(WRF/10- F2(NN)*SKR/10)*10 2990 PT(NN) = CINT(TFX(NN)*SKR*.5*D(6)*TAX(NN)/100)*100 3000 PRHP(NN) = CINT(100*HPF(NN)*SKR*D(6)*DN(NN)*2.53E-06)/100 3010 CBE(NN) = CINT(1.06*(WRF +.5*FO)/10)*10 3020 LPT(NN) = CINT(.5*D(6)*(PPRL(NN)-CBE(NN))/100!)*110 3030 NEXT 3040 PRINT "-----------------------------------------------------------------" 3050 PRINT "ITEM";TAB(10);" N(1)";TAB(24);" N(2)";TAB(38);" N(3)";TAB(52);" N(4)";TAB(66);" N(5)" 3060 PRINT "------------------------------------------------------------------" 3070 PRINT "SPM =";TAB(10);DN(1);TAB(24);DN(2);TAB(38);DN(3);TAB(52);DN(4);TAB(66);DN(5) 3080 PRINT "PPRL =";TAB(10);PPRL(1);TAB(24);PPRL(2);TAB(38);PPRL(3);TAB(52);PPRL(4);TAB(66);PPRL(5);" LBS" 3090 PRINT "MPRL =";TAB(10);MPRL(1);TAB(24);MPRL(2);TAB(38);MPRL(3);TAB(52);MPRL(4);TAB(66);MPRL(5);" LBS" 3100 PRINT "CBC =";TAB(10);CBE(1);TAB(24);CBE(2);TAB(38);CBE(3);TAB(52);CBE(4);TAB(66);CBE(5);" LBS" 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" 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" 3130 PRINT "PRHP =";TAB(10);PRHP(1);TAB(24);PRHP(2);TAB(38);PRHP(3);TAB(52);PRHP(4);TAB(66);PRHP(5);" HP" 3140 PRINT "------------------------------------------------------------------" 3150 FOR NS = 19 TO 23 3160 IF D(NS) >25 GOTO 3180 3170 NEXT NS 3180 DR= 28-NS 3190 AR =3.14*(DR/8)^2/4 3200 FOR NN = 1 TO NPS 3210 SMAX(NN) = CINT(PPRL(NN)/(AR*10!))*10 3220 SMIN(NN) = CINT(MPRL(NN)/(AR*10!))*10 3230 NEXT 3240 INPUT "INPUT ROD TYPE: K, C, D, or E (IN CAPS):";R$ 3250 K$="K" 3260 C$="C" 3270 D$="D" 3280 E$="E" 3290 FOR NN = 1 TO NPS 3300 IF R$=K$ THEN SAL(NN)= 82000!/4 +.5625*SMIN(NN) 3310 IF R$=C$ THEN SAL(NN)= 90000!/4 +.5625*SMIN(NN) 3320 IF R$=D$ THEN SAL(NN)= 115000!/4 +.5625*SMIN(NN) 3330 IF R$=E$ THEN SAL(NN) = 50000! 3340 SAL(NN) = CINT(SAL(NN)/10)*10 3350 IF SAL(NN) > 0 GOTO 3380 3360 PRINT "MUST ENTER ROD TYPE IN CAP LETTERS: TRY AGAIN" 3370 GOTO 3240 3380 LR(NN) = SMAX(NN)/SAL(NN) 3390 NEXT 3400 PRINT "------------------------------------------------------------------" 3410 PRINT "ROD STRESS TABLE" 3420 PRINT "------------------------------------------------------------------" 3430 PRINT "ITEM";TAB(10);" N(1)";TAB(24);" N(2)";TAB(38);" N(3)";TAB(52);" N(4)";TAB(66);" N(5)" 3440 PRINT "------------------------------------------------------------------" 3450 PRINT "SMAX =";TAB(10);SMAX(1);TAB(24);SMAX(2);TAB(38);SMAX(3);TAB(52);SMAX(4);TAB(66);SMAX(5);" PSI" 3460 PRINT "SMIN =";TAB(10);SMIN(1);TAB(24);SMIN(2);TAB(38);SMIN(3);TAB(52);SMIN(4);TAB(66);SMIN(5);" PSI" 3470 PRINT "ALLOWED=";TAB(10);SAL(1);TAB(24);SAL(2);TAB(38);SAL(3);TAB(52);SAL(4);TAB(66);SAL(5);" PSI" 3480 PRINT "LOAD R =";TAB(10);LR(1);TAB(24);LR(2);TAB(38);LR(3);TAB(52);LR(4);TAB(66);LR(5) 3490 PRINT "------------------------------------------------------------------" 3500 PRINT "ROD SIZE AND LENGTH TABLE" 3510 PRINT "--------------------------" 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." 3530 PRINT "% RATIO =";TAB(13);D(14);TAB(25);D(15);TAB(37);D(16);TAB(50);D(17);TAB(63);D(18) 3540 PRINT "LENGTH =";TAB(13);D(19);TAB(25);D(20);TAB(37);D(21);TAB(50);D(22);TAB(63);D(23);" FT." 3550 PRINT "------------------------------------------------------------------" 3560 INPUT "FOR AIR BALANCED UNIT CALCULATION TYPE 1; TO SKIP TYPE 0:";LAB 3570 IF LAB = 0 GOTO 3750 3580 PRINT "OPERATING CHARACTERISTICS FOR AIR BALANCED UNITS" 3590 PRINT "------------------------------------------------------------------" 3600 FOR NN = 1 TO 5 3610 PPRLA(NN) = CINT(WRF/10+FO/10+.085*(FX(NN)*SKR-FO))*10 3620 MPRLA(NN) = CINT(PPRLA(NN)/10-(FX(NN)+F2(NN))*SKR/10)*10! 3630 CBA(NN) = CINT(1.06*(PPRLA(NN)+MPRLA(NN))/20)*10 3640 PTA(NN) = 100*CINT(TFX(NN)*SKR*.5*D(6)*TAX(NN)*.96/100) 3650 SMAXA(NN)= 10*CINT(PPRLA(NN)/(AR*10)) 3660 NEXT 3670 PRINT "ITEM";TAB(10);" N(1)";TAB(24);" N(2)";TAB(38);" N(3)";TAB(52);" N(4)";TAB(66);" N(5)" 3680 PRINT "------------------------------------------------------------------" 3690 PRINT "PPRLA =";TAB(10);PPRLA(1);TAB(24);PPRLA(2);TAB(38);PPRLA(3);TAB(52);PPRLA(4);TAB(66);PPRLA(5);" LBS" 3700 PRINT "MPRLA =";TAB(10);MPRLA(1);TAB(24);MPRLA(2);TAB(38);MPRLA(3);TAB(52);MPRLA(4);TAB(66);MPRLA(5);" LBS" 3710 PRINT "CBA =";TAB(10);CBA(1);TAB(24);CBA(2);TAB(38);CBA(3);TAB(52);CBA(4);TAB(66);CBA(5);" LBS" 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" 3730 PRINT "SMAXA =";TAB(10);SMAXA(1);TAB(24);SMAXA(2);TAB(38);SMAXA(3);TAB(52);SMAXA(4);TAB(66);SMAXA(5);" PSI" 3740 PRINT "------------------------------------------------------------------" 3750 INPUT "FOR MARK II UNIT CALCULATION TYPE 1; TO SKIP TYPE 0:";LM 3760 IF LM = 0 GOTO 3960 3770 PRINT "OPERATING CHARACTERISTICS FOR MARK II UNITS" 3780 PRINT "------------------------------------------------------------------" 3790 FOR NN = 1 TO 5 3800 PPRLM(NN) = CINT(WRF/10+FO/10+.075*(FX(NN)*SKR-FO))*10 3810 MPRLM(NN) = CINT(PPRLM(NN)/10-(FX(NN)+F2(NN))*SKR/10)*10! 3820 CBM(NN) = CINT(1.04*(PPRLM(NN)+1.25*MPRLM(NN))/20)*10 3830 PTM(NN) = 100*CINT((PPRLM(NN)*.93-MPRLM(NN)*1.2)*D(6)/400) 3840 SMAXM(NN)= 10*CINT(PPRLM(NN)/(AR*10)) 3850 NEXT 3860 PRINT "ITEM";TAB(10);" N(1)";TAB(24);" N(2)";TAB(38);" N(3)";TAB(52);" N(4)";TAB(66);" N(5)" 3870 PRINT "------------------------------------------------------------------" 3880 PRINT "PPRLM =";TAB(10);PPRLM(1);TAB(24);PPRLM(2);TAB(38);PPRLM(3);TAB(52);PPRLM(4);TAB(66);PPRLM(5);" LBS" 3890 PRINT "MPRLM =";TAB(10);MPRLM(1);TAB(24);MPRLM(2);TAB(38);MPRLM(3);TAB(52);MPRLM(4);TAB(66);MPRLM(5);" LBS" 3900 PRINT "CBM =";TAB(10);CBM(1);TAB(24);CBM(2);TAB(38);CBM(3);TAB(52);CBM(4);TAB(66);CBM(5);" LBS" 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" 3920 PRINT "SMAXM =";TAB(10);SMAXM(1);TAB(24);SMAXM(2);TAB(38);SMAXM(3);TAB(52);SMAXM(4);TAB(66);SMAXM(5);" PSI" 3930 PRINT "------------------------------------------------------------------" 3940 PRINT "DO NOT USE LESS THAN ONE SIZE SMALLER REDUCER THAN FOR CONVENTIONAL UNIT" 3950 PRINT "------------------------------------------------------------------" 3960 INPUT "FOR INPUT DATA LIST TYPE 1; IF NOT TYPE 0:";IL 3970 IF IL = 0 GOTO 4010 3980 FOR NL = 1 TO 23 3990 PRINT "DATA NO.";NL;TAB(25);"INPUT VALUE ";D(NL) 4000 NEXT 4010 INPUT "TO RERUN WITH DATA CHANGE, TYPE 1; TO END PROGRAM TYPE 0 ";YD 4020 RESTORE 4030 IF YD = 1 GOTO 4050 4040 GOTO 4760 4050 PRINT 4060 PRINT 4070 PRINT "API RP 11L: CONVENTIONAL SUCKER ROD PUMPING DESIGN" 4080 PRINT "WELL:";W$;TAB(25);"BY:";XN$;TAB(50);"DATE :";ZD$ 4090 GOTO 650 4100 REM :A SHORT PROGRAM TO CALCULATE FCF 4110 REM :HOW MANY TAPERS? 4120 NRT = 0 4130 FOR NX = 19 TO 23 4140 IF D(NX) >100 THEN NRT = NRT + 1 4150 NEXT 4160 FC = 1 4170 FCF = 1 4180 J=1 4190 IF NRT = 1 GOTO 4730 4200 REM : FIND THE AR FOR RODS USED 4210 FOR NAR = 19 TO 23 4220 IF D(NAR)>100 GOTO 4240 4230 NEXT 4240 AR(1) = ((28-NAR)/8)^2*3.14/4 4250 IF D(NAR+1)>100 THEN AR(2)=((27-NAR)/8)^2*3.14/4 4260 IF D(NAR+2)>100 THEN AR(3)=((26-NAR)/8)^2*3.14/4 4270 IF D(NAR+3)>100 THEN AR(4)=((25-NAR)/8)^2*3.14/4 4280 R(1) = D(NAR)/D(12) 4290 R(2) = D(NAR+1)/D(12) 4300 R(3) = D(NAR+2)/D(12) 4310 R(4) =D(NAR+3)/D(12) 4320 IF NRT = 2 GOTO 4350 4330 IF NRT = 3 GOTO 4420 4340 IF NRT = 4 GOTO 4490 4350 REM : FOR NRT = 2 FIND FCF 4360 F1 = TAN(.5*3.14*FCF*R(2))*TAN(.5*3.14*FCF*R(1))-AR(1)/AR(2) 4370 FOR IR= 1 TO 25 4380 F = TAN(.5*3.14*FCF*R(2))*TAN(.5*3.14*FCF*R(1))-AR(1)/AR(2) 4390 GOSUB 4580 4400 NEXT 4410 GOTO 4750 4420 REM : FIND FCF FOR NRT = 3 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)) 4440 FOR IJ = 1 TO 25 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)) 4460 GOSUB 4580 4470 NEXT 4480 GOTO 4750 4490 REM : NOW TO FIND FCF FOR FOUR TAPERS 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)) 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)) 4520 FOR IM = 1 TO 30 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)) 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)) 4550 GOSUB 4580 4560 NEXT 4570 GOTO 4750 4580 REM : A SUB TO SPEED UP FCF 4590 IF J=1 GOTO 4630 4600 IF J=2 GOTO 4670 4610 IF (J=3) AND (F*F1 >0 ) THEN FCF = FCF +.001: GOTO 4720 4620 IF (J=3) AND (F*F1) =< 0 GOTO 4740 4630 REM : FOR J=1 4640 IF F*F1 > 0 THEN FCF = FCF +.05: GOTO 4720 4650 IF F*F1 = < 0 THEN J=2 4660 FCF = FCF-.06:GOTO 4730 4670 REM : FOR J=2 4680 IF F*F1 > 0 THEN FCF = FCF +.01: GOTO 4720 4690 IF F*F1 = < 0 THEN J=3 4700 FCF = FCF -.011: GOTO 4730 4710 GOTO 4730 4720 F1=F 4730 RETURN 4740 FC=FCF-.001 4750 RETURN 4760 END 0 THEN J=3 4700 FCF = FCF -.011: GOTO 4730 4710 GOTO 4730 4720