1 REM ===================================== 2 REM OILRECOV.BAS 3 REM 4 REM By H. D. Cowan 5 REM Commercial Rights Reserved 6 REM 7 REM Translated into Microsoft GWBASIC and 8 REM Edited for COGS Disk by J Phillips 9 REM 28 May 1984 10 REM ===================================== 11 REM Last Modified: 1 Oct 1984 15 BKG=15: REM Inverse background color for IBM-PC 20 KEY OFF 40 REM ********************** 42 REM TITLE PAGE 44 REM ********************** 50 CLS: LOCATE 2,1 52 PRINT " __ _ __ __ __ __ _ " 54 PRINT "| | | | |_) |_ | | | | | |_ |_) |_| _ o " 56 PRINT "|__| | |__ | \ |__ |__ |__| \/ |__ | \ | | \| " 58 PRINT " _ ____ | | " 59 PRINT " | |___________|____|__________| | " 60 PRINT " B y H . D . C o w a n | / /___________[]____________| | " 62 PRINT " ,,,/ / | __ | | | " 64 PRINT " ,'' / /', / / \ \ | /| " 66 PRINT " \ /_/ / / / \ \ |/ | " 68 PRINT " _[]___\ / / / \ \ | " 70 PRINT " |.......\ / / / \ \ | " 72 PRINT " |........\__/ / / \ \ | " 74 PRINT " ______|___________|______/_/____________\_\__ | " 76 PRINT " |/////////////////////////////////////////////| | " 78 PRINT "=======================================================================[|]=====" 80 PRINT " | | | " 82 PRINT " For Water Drive or Calculates: | | | " 84 PRINT " Solution Drive. Oil In Place | | | " 86 PRINT " Recovery Factor | | | " 88 PRINT " Recovery Efficiency | | | " 90 PRINT " | | | " 95 LOCATE 25,1,1,0,13 100 PRINT " to continue; to exit; for help.........."; 105 Q$=INKEY$: IF Q$="" THEN 105 110 IF Q$=CHR$(27) THEN 20000 115 IF Q$="H" OR Q$="h" THEN 1500 120 IF Q$<>" " THEN 105 140 REM ********************** 142 REM DATA ENTRY 144 REM ********************** 150 CLS 155 PRINT TAB(15)"O I L R E C O V E R Y - D A T A E N T R Y" 160 PRINT: PRINT 165 INPUT "Effective Porosity (.24, etc.)....................",PHI 170 INPUT "Water Saturation (.45, etc.)......................",SW 175 SOI = 1 - SW 180 INPUT "Gas/Oil Ratio (1300, etc).........................",GOR 185 INPUT "Permeability in Darcies (1.2, etc)................",K 190 INPUT "Oil Gravity in API Degrees (45, etc.).............",API 195 INPUT "Formation Temperature in Degrees F................",TF 200 PRINT "For pressure data select Formation Pressure" 205 INPUT " or Mud Wt Equivalent Pressure (P/M).............",A$ 210 IF A$="p" THEN A$="P" 215 IF A$="m" THEN A$="M" 220 IF A$<>"P" AND A$<>"M" THEN LOCATE CSRLINE-1,1: GOTO 205 225 IF A$="P" THEN INPUT "Initial Formation Pressure in PSIG (4100, etc)....",PI 230 IF A$="M" THEN INPUT "Mud Weight in pounds at Formation (10.3, etc).....",MUDWEIGHT 235 IF A$="M" THEN INPUT "Depth of Formation in feet (8500, etc)............",DEPTH 240 IF A$="M" THEN PI = MUDWEIGHT*DEPTH*.052 245 PB = PI*.9 250 INPUT "Abandonment Pressure in PSIG (1000, etc)..........",PA 255 PRINT 260 INPUT "Solution Drive or Water Drive (S/W)...............",DRIVE$ 265 IF DRIVE$="S" OR DRIVE$="s" THEN DRIVE$="S": GOTO 500 270 IF DRIVE$<>"W" AND DRIVE$<>"w" THEN LOCATE CSRLINE-1,1: GOTO 260 275 DRIVE$="W": REM Assure cap-W 290 REM ********************** 292 REM WATER DRIVE 294 REM ********************** 300 C1=4.941791E-04 :C2=1.065199 :C3=.95014 :C4=.00723 302 C5=.5555555 :C6=7.07597 :C7=.074636 :C8=.01506 304 C9=.46064 :C10=.171755 :C11=2.8156E-04 :C12=1.0422 306 C13=.077 :C14=-.1903 :C15=-.2159 :C16=4259! 308 C17=.0422 :C18=54.898 310 TC=C5*(TF-32) 315 BOI = (C1*GOR) + C2 320 VISWATER = C3 - (C4*TC) 325 VISDEAD = C6 - (C7*API) - (C8*TF) 330 VISCOIL = C9 + (C10*VISDEAD) - (C11*GOR) 335 A = ((PHI*SOI)/BOI)^C12 340 B = ((K*VISWATER)/VISCOIL)^C13 345 C = SW^C14 350 D = (PI/PA)^C15 355 BAF = C16*A*B*C*D 360 E = ((PHI*SOI)/BOI)^C17 365 RE = C18*E*B*C*D 370 INPLACE = BAF/(RE/100) 380 GOTO 800 490 REM ********************** 492 REM SOLUTION DRIVE 494 REM ********************** 500 C1=3244! :C2=1.1611 :C3=9.790001E-02 :C4=.3722 502 C5=.1741 :C6=41.815 :C7=.1611 :C8=.000515 504 C9=.0004 :C10=.171755 :C11=2.8156E-04 506 REM Constants C10 and C11 were not given in the original listing. 507 ' They have been set to the same values used in the water dirve routine. 510 TC=C5*(TF-32) 515 SH1 = (C8*GOR) + 1 520 SH2 = (C9*TF) + 1 525 BOB = SH1*SH2 530 VISWATER = C3 - (C4*TC) 535 A = ((SW*SOI)/BOB)^C2 540 B = (K/VISCOIL)^C3 545 C = SW^C4 550 D = (PB/PA)^C5 555 BAF = C1*A*B*C*D 560 E = ((PHI*SOI)/BOB)^C7 565 RE = C6*E*B*C*D 570 INPLACE = BAF/(RE/100) 790 REM ********************** 792 REM SCREEN OR PRINTER 794 REM ********************** 800 CLS: LOCATE 12,1,1,0,13 805 PRINT "Send results to screen or printer (S/P)........."; 810 P$=INKEY$: IF P$="" THEN 810 815 IF P$="s" THEN P$="S" 820 IF P$="p" THEN P$="P" 825 IF P$<>"S" AND P$<>"P" THEN 810 830 PRINT P$ 835 IF P$ = "S" THEN OPEN "SCRN: " FOR OUTPUT AS #1: GOTO 900 840 REM --- PRINTER PROMPT --------- 845 CLS: PRINT "READY TO PRINT.": PRINT " Adjust Paper." 850 PRINT " Turn on Printer.": PRINT " Press a Key to Continue....."; 855 Q$ = INKEY$: IF Q$ = "" THEN 855 860 PRINT Q$ 865 OPEN "LPT1:" FOR OUTPUT AS #1 870 PRINT #1, CHR$(27);"E";: REM EPSON command for emphasized type 890 REM ********************** 892 REM DISPLAY RESULTS 894 REM ********************** 900 IF P$ = "S" THEN CLS 910 PRINT #1, "=============================================" 915 PRINT #1, "O I L R E C O V E R Y F A C T O R " 920 PRINT #1, "Using the Arps equations. " 922 IF DRIVE$="W" THEN PRINT #1, "Assumes no gravity drainage. " 925 PRINT #1, "=============================================" 930 PRINT #1, " " 935 PRINT #1, "DATA ENTERED" 940 PRINT #1, " Porosity................................";PHI 945 PRINT #1, " Water Saturation........................";SW 950 PRINT #1, " Gas-Oil Ratio...........................";GOR 955 PRINT #1, " Permeability (Darcies)..................";K 960 PRINT #1, " Oil Gravity (API Degrees)...............";API 962 PRINT #1, " Formation Temperature (Deg F)...........";TF 964 IF A$="P" THEN PRINT #1, " Initial Formation Pressure (PSIG).......";PI 966 IF A$="M" THEN PRINT #1, " Mud Weight at Formation (pounds)........";MUDWEIGHT 968 IF A$="M" THEN PRINT #1, " Depth of Formation (feet)...............";DEPTH 970 PRINT #1, " Abandonment Pressure (PSIG).............";PA 980 PRINT #1, " Drive Mechanism........................."; 982 IF DRIVE$="W" THEN PRINT " Water Drive" 984 IF DRIVE$="S" THEN PRINT " Solution Drive" 990 PRINT #1, " " 1000 PRINT #1, "CALCULATED RESULTS" 1002 IF A$="M" THEN PRINT #1, " Initial Formation Pressure (PSIG) = ";PI 1010 PRINT #1, " Recovery Factor (BBL/Acre Ft) = ";BAF 1020 PRINT #1, " In Place Oil Factor (BBL/Acre Ft) = ";INPLACE 1030 PRINT #1, " Recovery Efficiency in percent = ";RE 1040 IF DRIVE$="S" THEN PRINT #1, " Est. Bubble Point Pressure (=90% Init Pressure) = ";PB 1050 CLOSE #1 1060 IF P$="S" THEN GOSUB 2100 1070 GOTO 50 1490 REM ********************** 1492 REM HELP SCREENS 1494 REM ********************** 1496 REM --- Page 1 ----- 1500 CLS: PRINT TAB(21)"O I L R E C O V E R Y F A C T O R" 1505 PRINT 1510 PRINT "This program estimates OIL IN PLACE, and OIL RECOVERY." 1512 PRINT 1515 PRINT "It can be used with both Water Drive and Gas Solution Drive systems." 1520 PRINT 1525 PRINT " --- NOTE --------------------------------------------------------------- " 1530 PRINT " | |" 1535 PRINT " | The program as submitted lacks the definition of two constants used |" 1540 PRINT " | in the GAS SOLUTION method. There is a good chance that the program |" 1545 PRINT " | therefore produces incorrect results for solution drive. |" 1550 PRINT " | |" 1555 PRINT " | You shouldn't use the GAS SOLUTION method unless you can independently|" 1560 PRINT " | verify that the program is computing correctly. |" 1565 PRINT " |________________________________________________________________________|" 1570 PRINT 1575 PRINT 1580 PRINT "The HELP SCREENS for this program have not yet been completed." 1585 PRINT 1590 PRINT "If you would like to assist COGS contact the program disk editor about " 1595 PRINT "verifying the accuracy of this program, and writing some help screens to" 1600 PRINT "finish it off." 1980 GOSUB 2100 1990 REM --- RETURN TO PROGRAM ----- 2000 GOTO 50 2090 REM --- PAUSE SUBROUTINE ----- 2100 LOCATE 24,1,1,0,13 2105 PRINT "Press a key to continue....."; 2110 Q$ = INKEY$: IF Q$ = "" THEN 2110 2120 RETURN 19990 REM ********************** 19992 REM EXIT ROUTINE 19994 REM ********************** 20000 CLS: PRINT TAB(28) "E X I T P R O G R A M" 20005 LOCATE 8,20: PRINT "EXIT TO:" 20010 M$(1) = " 1. MENU, to run another program. " 20015 M$(2) = " 2. BASIC " 20020 M$(3) = " 3. MS-DOS System level " 20025 M$(4) = " 4. CANCEL Exit Command " 20030 FOR Y = 1 TO 4: LOCATE 2*Y + 8, 20: PRINT M$(Y): NEXT Y 20035 LOCATE 23,1: PRINT "Enter number or use arrows to make selection; then press " 20037 LOCATE ,,0: REM Cursor OFF 20040 Y=1: MVE=NO: X=1 20045 WHILE Q$ <> CHR$(13) 20050 LOCATE 2*Y + 8, 20: COLOR 0,BKG: PRINT M$(Y): COLOR 7,0 20055 Q$=INKEY$: IF Q$="" THEN 20055 20060 IF LEN(Q$) = 2 AND ASC(RIGHT$(Q$,1)) = 72 THEN MVE=YES: X=Y-1: IF X<1 THEN X=4 20065 IF LEN(Q$) = 2 AND ASC(RIGHT$(Q$,1)) = 80 THEN MVE=YES: X=Y+1: IF X>4 THEN X=1 20067 IF Q$ >="1" AND Q$ <= "4" THEN X=VAL(Q$): MVE=YES 20070 IF MVE=YES THEN LOCATE 2*Y + 8, 20: PRINT M$(Y): Y=X: MVE=NO 20075 WEND 20080 LOCATE ,,1: REM Cursor ON 20085 CLS 20100 IF Y = 1 THEN LOCATE 12,1: PRINT "Loading.....MENU": RUN "MENU" 20110 IF Y = 2 THEN END 20120 IF Y = 3 THEN SYSTEM 20130 IF Y = 4 THEN 50: REM Title Page 30000 CLS: END