home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / oilfield / spe-14.lzh / PSP2.ASK < prev    next >
Text File  |  1985-09-06  |  31KB  |  683 lines

  1. 10 REM filename: PSP1.BAS  program: COMPUPROP1
  2. 20 REM Program COMPUPROP1 --- Proppant Selection Program
  3. 30 REM Version 1.2.0  April 30, 1984
  4. 40 CLS
  5. 50 WIDTH "LPT1:",132
  6. 60 PRINT :PRINT
  7. 70 REM Carborundum Company, Proppants Division, Dallas, Texas
  8. 80 REM Programmer --- M. C. Aaron Cheng  Update by S. Cobb  (214) 659-1010
  9. 90 REM Copyright  by M. C. Aaron Cheng  April 30, 1984  Dallas ,Texas U. S. A.
  10. 95 CLS
  11. 100 CLEAR
  12. 110 DIM B(20),C(20),CP(20),D(20),PP(20),X(20),XX(20),Y(20),YI(20),YY(10,20),ZK(20),ZZ(20)
  13. 120 PRINT DATE$:PRINT
  14. 130 PRINT "COMPUPROP1 --- Proppant Selection Program "
  15. 140 PRINT "Version 1.2.0 ":PRINT
  16. 150 PRINT "Courtesy of Carborundum Company "
  17. 160 PRINT "Proppants Division "
  18. 170 PRINT "Dallas, Texas ":PRINT :PRINT
  19. 180 C$="n"
  20. 190 PA$="n"
  21. 200 PRINT "Is this a new run (y), or do you wish to use a previously":INPUT"saved answer file (n) (enter y or n)";PRUN$
  22. 210 IF PRUN$="n" THEN 1820 ELSE 220
  23. 220 LINE INPUT "Enter file name for input data to be saved:  ";F$
  24. 230 PRINT "File name = ";F$
  25. 250 OPEN "O",#1,F$
  26. 260 CLS:PRINT "Enter input data --- Groups A, B, C, D, E ":PRINT:PRINT
  27. 270 LINE INPUT "Press enter to continue ";ENT$
  28. 280 CLS:PRINT "Enter Group A data --- Well Data ":PRINT
  29. 300 PRINT:INPUT "Well identification (RID$) ";RID$:REM PRINT
  30. 320 IF AN$="y" THEN 2070
  31. 330 PRINT:PRINT "Well type (WTP) ":INPUT "Enter 1 for gas well, 2 for oil well ";WTP
  32. 360 IF AN$="y" THEN 2070
  33. 370 PRINT:INPUT "Total depth, ft (TD) ";TD:PRINT
  34. 390 IF AN$="y" THEN 2070
  35. 400 INPUT "Net pay, ft (H) ";H
  36. 420 IF AN$="y" THEN 2070
  37. 430 PRINT:INPUT "Formation porosity, % (PHI) ";PHI:PRINT
  38. 450 IF AN$="y" THEN 2070
  39. 460 INPUT "Formation permeability, md (FORMK) ";FORMK:PRINT
  40. 480 IF AN$="y" THEN 2070
  41. 490 INPUT "Initial reservoir pressure, psi (RPI) ";RPI:PRINT
  42. 510 IF AN$="y" THEN 2070
  43. 520 INPUT "Reservoir temperature, deg F (RTI) ";RTI:PRINT
  44. 540 IF AN$="y" THEN 2070
  45. 550 IF WTP=1 THEN 560 ELSE 620
  46. 560 PRINT "Gas type (GASI) ":INPUT "Enter 1 for miscellaneous gases, 2 for condensate gases ";GASI:PRINT
  47. 580 IF AN$="y" THEN 2240
  48. 590 INPUT "Gas gravity (GG) ";GG:PRINT
  49. 610 IF AN$="y" THEN 2240
  50. 620 IF WTP=2 THEN 630 ELSE 660
  51. 630 INPUT "Oil gravity, deg API (OG) ";OG:PRINT
  52. 650 IF AN$="y" THEN 2240
  53. 660 INPUT "Water saturation, % (SW) ";SW:PRINT
  54. 680 IF AN$="y" THEN 2240
  55. 690 IF WTP=2 THEN 700 ELSE 740
  56. 700 INPUT "Oil saturation, % (SO) ";SO:PRINT
  57. 720 IF AN$="y" THEN 2240
  58. 730 GOTO 770
  59. 740 INPUT "Gas saturation, % (SG) ";SG:PRINT
  60. 760 IF AN$="y" THEN 2240
  61. 770  IF WTP=2 THEN 780 ELSE 810
  62. 780 INPUT "Initial gas-oil ratio, SCF/BBL (RSB) ";RSB:PRINT
  63. 800 IF AN$="y" THEN 2240
  64. 810 INPUT "Bottom-hole flowing pressure, psi (BHFP) ";BHFP:PRINT
  65. 830 IF AN$="y" THEN 2240
  66. 840 CLS:PRINT:PRINT "Enter Group B Data --- Fracture Geometry Data ":PRINT
  67. 860 PRINT:PRINT:INPUT "Fracture gradient, psi/ft (FG) ";FG:PRINT
  68. 880 IF AN$="y" THEN 2410
  69. 890 INPUT "Fracture half-length, ft (LF) ";LF:PRINT
  70. 910 IF AN$="y" THEN 2410
  71. 920 INPUT "Fracture height, ft (FH) ";FH:PRINT
  72. 940 IF AN$="y" THEN 2410
  73. 950 PRINT "If you use proppant concentration ( lb/sq ft ) and proppant conductivity        ( md-ft ) data ( in Group D ), enter -1 for fracture width "
  74. 960 PRINT :PRINT "If you use proppant permeability ( md ) data ( in Group D ), enter the          appropriate fracture width ( in )"
  75. 970 PRINT :PRINT :INPUT "Fracture width, in (WFI) ";WFI
  76. 990 IF AN$="y" THEN 2410
  77. 1000 IF WFI<0 THEN 1010 ELSE 1040
  78. 1010 CLS:IF WFI<0 THEN INPUT "Proppant concentration, lb/sq ft (PCON) ";PCON:PRINT "Proppant concentration, lb/sq ft (PCON) =";PCON
  79. 1030 IF AN$="y" THEN 2410
  80. 1040 CLS:PRINT "Enter Group C Data --- Economic Data ":PRINT:PRINT
  81. 1060 IF WTP=1 THEN 1070 ELSE 1100
  82. 1070 INPUT "Gas price, $/MSCF (PRI) ";PRI:PRINT
  83. 1090 IF AN$="y" THEN 2550 ELSE 1130
  84. 1100 IF WTP=2 THEN INPUT "Oil price, $/BBL (PRI) ";PRI:PRINT
  85. 1120 IF AN$="y" THEN 2550
  86. 1130 PRINT:INPUT "Proppant price, $/lb (PRP) ";PRP:PRINT
  87. 1150 IF AN$="y" THEN 2550
  88. 1160 IF WFI=-99.9 THEN PRINT "Proppant price (PRP) becomes the total investment of the well ( well cost, fracturing cost, etc. ) and output net present value = gross revenue - PRP "
  89. 1170 PRINT :IF WFI=-99.9 THEN PRINT "In this case, you must use proppant concentration (lb/sq ft) and proppant conductivity (md-ft) data ( in Group D )"
  90. 1180 INPUT "Discount rate, % (I1) ";I1:PRINT
  91. 1200 IF AN$="y" THEN 2550
  92. 1210 CLS:PRINT "Enter Group D Data --- Proppant Data ":PRINT:PRINT
  93. 1230 IF WFI>0 THEN INPUT "Do you want to use the program built-in proppant data ( 20/40 sintered bauxite, 20/40 Carbo-Prop HC, 20/40 resin coated sand, 20/40 sand (excellent quality )   or 16/20 Carbo-Prop)   (y/n) ";PA$
  94. 1240 IF PA$="n" THEN 1310 ELSE 1250
  95. 1250 PRINT :PRINT "1 = 20/40 sintered bauxite":PRINT"2 = 20/40 Carbo-Prop HC":PRINT"3 = 20/40 resin coated sand":PRINT"4 = 20/40 sand ( excellent quality )":PRINT"5 = 16/20 Carbo-Prop "
  96. 1260 PRINT :INPUT "Proppant selected ( 1,2,3,4 or 5 ) (PBI) ";PBI:PRINT
  97. 1290 ON PBI GOSUB 6290,6370,6440,6450,6505
  98. 1300 GOTO 1420
  99. 1310 INPUT "Proppant identification (BRAND$) ";BRAND$:PRINT
  100. 1330 IF AN$="y" THEN 2660
  101. 1340 CLS:IF WFI>0 THEN 1350 ELSE 1380
  102. 1350 INPUT "Proppant bulk density, lb/cu ft (BULKD) ";BULKD:PRINT
  103. 1370 IF AN$="y" THEN 2660
  104. 1380 INPUT "Number of proppant data points (NP) ";NP:PRINT
  105. 1400 IF AN$="y" THEN 2660
  106. 1410 IF PA$<>"n" THEN 1700
  107. 1420 INPUT "Proppant factor (PF) ";PF:PRINT
  108. 1440 IF AN$="y" THEN 2660
  109. 1450 WRITE #1,RID$,WTP,TD,H,PHI,FORMK,RPI,RTI,GASI,OG,GG,SW,SG,SO,RSB,BHFP,FG,LF,FH,WFI,PCON,PRI,I1,PRP,BRAND$,BULKD,NP,PF
  110. 1460 IF PA$<>"n" THEN 1700
  111. 1470 CLS:IF WFI>0 THEN PRINT "Enter ";NP;" pairs of proppant permeability (md) data next "
  112. 1480 IF WFI<0 THEN PRINT "Enter ";NP;" pairs of proppant conductivity (md-ft) data next "
  113. 1490 LINE INPUT "Press enter to continue ";ENT$
  114. 1500 IF WFI>0 THEN 1510 ELSE 1610
  115. 1510 FOR I=1 TO NP
  116. 1520 CLS:PRINT "Closure stress, psi (CP(";I"))":INPUT CP(I)
  117. 1550 PRINT "Proppant permeability, md (PP(";I"))":INPUT PP(I)
  118. 1580 NEXT I
  119. 1590 IF AN$="y" THEN 2660
  120. 1600 GOTO 1700
  121. 1610 FOR I=1 TO NP
  122. 1620 CLS:PRINT "Closure stress, psi (CP(";I;"))":INPUT CP(I)
  123. 1630 PRINT "Closure stress, psi (CP(";I;")) =";CP(I)
  124. 1650 PRINT "Proppant conductivity, md-ft (PP(";I;"))":INPUT PP(I)
  125. 1660 PRINT "Proppant conductivity, md-ft (PP(";I;")) =";PP(I)
  126. 1680 NEXT I
  127. 1690 IF AN$="y" THEN 2660
  128. 1700 FOR KP=1 TO NP:WRITE #1,CP(KP),PP(KP):NEXT KP
  129. 1710 CLS:PRINT "Enter Group E Data --- Run Data "
  130. 1720 PRINT :PRINT
  131. 1730 INPUT "Final run time, years (TF) ";TF:PRINT:PRINT
  132. 1750 IF AN$="y" THEN 2930
  133. 1760 INPUT "Time step, years (DT) ";DT:PRINT
  134. 1780 IF AN$="y" THEN 2930
  135. 1790 WRITE #1,TF,DT,PA$
  136. 1800 CLOSE #1
  137. 1810 GOTO 1960
  138. 1820 PRINT:INPUT "Do you have saved input data file to be run (y/n) ";AN$
  139. 1830 IF AN$="n" THEN 220 ELSE 1840
  140. 1840 LINE INPUT "Enter file name to be run:  ";F$:PRINT "File name to be run = ";F$
  141. 1860 OPEN "I",#1,F$
  142. 1862 INPUT #1,RID$,WTP,TD,H,PHI,FORMK,RPI,RTI,GASI,OG,GG,SW,SG,SO,RSB,BHFP,FG,LF,FH,WFI,PCON,PRI,I1,PRP,BRAND$,BULKD,NP,PF
  143. 1864  FOR KP=1 TO NP:INPUT #1,CP(KP),PP(KP):NEXT KP
  144. 1866  INPUT #1,TF,DT,PA$
  145. 1868 CLOSE #1
  146. 1870 PRINT :INPUT "Do you want to create a new data file (y/n) ";C$
  147. 1880 IF C$<>"n" THEN LINE INPUT "Enter file name for new input data to be saved:  ";F2$:ELSE 1960
  148. 1890 PRINT "New file name = ";F2$
  149. 1910 OPEN "O",#2,F2$
  150. 1920 REM INPUT #1,RID$,WTP,TD,H,PHI,FORMK,RPI,RTI,GASI,OG,GG,SW,SG,SO,RSB,BHFP,FG,LF,FH,WFI,PCON,PRI,I1,PRP,BRAND$,BULKD,NP,PF
  151. 1960 CLS:PRINT :PRINT :PRINT "COMPUPROP1 --- Proppant Selection Program "
  152. 1970 PRINT "Version 1.1.0 "
  153. 1980 PRINT :PRINT "Carborundum Company "
  154. 1990 PRINT "Proppants Division "
  155. 2000 PRINT "Dallas, Texas "
  156. 2010 PRINT :PRINT :LINE INPUT "Press enter to continue ";ENT$
  157. 2020 IF C$<>"n" THEN 2050
  158. 2030 REM CLS:IF C$="n" THEN INPUT "Do you want to look at or edit the input (y/n) ";AN$
  159. 2031 INPUT "Do you want to look at or edit the input (y/n) ";AN$
  160. 2040 IF AN$="n" THEN 3060 ELSE 2050
  161. 2050 CLS:PRINT "Input Data --- Groups A, B, C, D, E ":PRINT
  162. 2060 LINE INPUT "Press enter to continue ";ENT$
  163. 2070 CLS:PRINT "Group A Data --- Well Data":PRINT
  164. 2080 PRINT "(1) Well idenfication (RID$) =  ";RID$
  165. 2090 PRINT "(2) Well type (WTP) =          ";WTP
  166. 2100 PRINT "  1 for gas well, 2 for oil well "
  167. 2110 PRINT "(3) Total depth, ft (TD) =     ";TD
  168. 2120 PRINT "(4) Net pay, ft (H) =          ";H
  169. 2130 PRINT "(5) Formation porosity, % (PHI) =           ";PHI
  170. 2140 PRINT "(6) Formation permeability, md (FORMK) =    ";FORMK
  171. 2150 PRINT "(7) Initial reservoir pressure, psi (RPI) = ";RPI
  172. 2160 PRINT "(8) Reservoir temperature, deg F (RTI) =    ";RTI
  173. 2170 PRINT :PRINT "Change data ?  Enter the number ( enclosed in parenthesis ) of the variable  to be changed "
  174. 2180 PRINT "Example:  Enter 3 for the variable total depth shown above "
  175. 2190 PRINT :PRINT "Enter -1 for finish change "
  176. 2200 INPUT VN:CLS
  177. 2210 IF VN<0 THEN 2240
  178. 2220 ON VN GOTO 300,330,370,400,430,460,490,520
  179. 2230 PRINT :PRINT :LINE INPUT "Press enter to continue ";ENT$
  180. 2240 CLS:PRINT "Group A Data --- Well Data ( continued ) ":PRINT :IF WTP=2 THEN 2250 ELSE 2260
  181. 2250 PRINT "(9) Oil gravity, deg API (OG) = ";OG:GOTO 2290
  182. 2260 PRINT "(10) Gas type (GASI) =  ";GASI
  183. 2270 PRINT "    1 for miscellaneous gases, 2 for condensate gases"
  184. 2280 PRINT "(11) Gas gravity (GG) = ";GG
  185. 2290 PRINT "(12) Water saturation, % (SW) = ";SW
  186. 2300 IF WTP=2 THEN PRINT "(13) Oil saturation, % (SO) =   ";SO
  187. 2310 IF WTP=1 THEN PRINT "(14) Gas saturation, % (SG) =   ";SG
  188. 2320 IF WTP=2 THEN PRINT "(15) Initial gas-oil ratio, SCF/BBL (RSB) = ";RSB
  189. 2330 PRINT "(16) Bottom-hole flowing pressure, psi (BHFP) = ";BHFP
  190. 2340 PRINT :PRINT "Change data ?  Enter the number ( enclosed in parenthesis ) of the variable  to be changed "
  191. 2360 PRINT :PRINT "Enter -1 for finish change "
  192. 2370 INPUT VN:CLS
  193. 2380 IF VN<0 THEN 2410
  194. 2390 ON VN-8 GOTO 630,560,590,660,700,740,770,810
  195. 2400 PRINT:PRINT:LINE INPUT "Press enter to continue ";ENT$:CLS
  196. 2410 CLS:PRINT "Group B Data --- Fracture Geometry Data ":PRINT:PRINT
  197. 2420 PRINT "(17) Fracture gradient, psi/ft (FG) =  ";FG
  198. 2430 PRINT "(18) Fracture half-length, ft (LF) =   ";LF
  199. 2440 PRINT "(19) Fracture height, ft (FH) =        ";FH
  200. 2450 PRINT "(20) Fracture width, in (WFI) =        ";WFI
  201. 2460 IF WFI<0 THEN PRINT "If fracture width = -1, it means proppant concentration (lb/sq ft) data is used "
  202. 2470 IF WFI<0 THEN PRINT "(21) Proppant concentration, lb/sq ft (PCON) = ";PCON
  203. 2480 PRINT :PRINT "Change data ?  Enter the number ( enclosed in parenthesis ) of the variable  to be changed "
  204. 2500 PRINT :PRINT "enter -1 to finish change "
  205. 2510 INPUT VN:CLS
  206. 2520 IF VN<0 THEN 2550
  207. 2530 ON VN-16 GOTO 860,890,920,950,1010
  208. 2540 PRINT :PRINT :LINE INPUT "Press enter to continue ";ENT$:CLS
  209. 2550 CLS:PRINT "Group C Data --- Economic Data ":PRINT
  210. 2560 IF WTP=1 THEN PRINT "(22) Gas price, $/MSCF (PRI) =    ";PRI ELSE PRINT "(22) Oil price, $/BBL (PRI) =     ";PRI
  211. 2570 PRINT "(23) Proppant price, $/lb (PRP) = ";PRP
  212. 2580 PRINT "(24) Discount rate, % (I1) =      ";I1
  213. 2590 PRINT :PRINT "Change data ?  Enter the number ( enclosed in parenthesis ) of the variable  to be changed "
  214. 2610 PRINT :PRINT "Enter -1 for finish change "
  215. 2620 INPUT VN:CLS
  216. 2630 IF VN<0 THEN 2660
  217. 2640 ON VN-21 GOTO 1070,1130,1180
  218. 2650 PRINT :PRINT :LINE INPUT "Press enter to continue ";ENT$:CLS
  219. 2660 CLS:IF PA$="n" THEN PRINT "Group D Data --- Proppant Data ":PRINT
  220. 2670 IF PA$<>"n" THEN PRINT "Group D Data --- Proppant Data ( program built-in data, proppant factor (PF)     defined by user )":PRINT
  221. 2680 IF WFI<0 THEN PRINT "You must use proppant conductivity (md-ft) data":PRINT
  222. 2690 PRINT "(25) Proppant idenfication (BRAND$) = ";BRAND$
  223. 2700 IF WFI>0 THEN PRINT "(26) Proppant bulk density, lb/cu ft (BULKD) = ";BULKD
  224. 2710 PRINT "(27) Number of proppant data points = ";NP
  225. 2720 PRINT "(28) Proppant factor = ";PF
  226. 2730 IF WFI>0 THEN 2740 ELSE 2760
  227. 2740 PRINT "(29) I   Closure stress, psi (CP(I))   Proppant permeability, md (PP(I))"
  228. 2750 GOTO 2770
  229. 2760 PRINT "(30) I   Closure stress, psi (CP(I))   Proppant conductivity, md-ft (PP(I))"
  230. 2770 IF PA$="n" THEN 2830 ELSE 2780
  231. 2780 PRINT "( To save screen editing space, only ";INT(NP/2);" data points are shown below )"
  232. 2790 FOR I=2 TO NP STEP 2
  233. 2800 PRINT TAB(5);I;TAB(16);CP(I);TAB(51);PP(I)
  234. 2810 NEXT I
  235. 2820 GOTO 2860
  236. 2830 FOR I=1 TO NP
  237. 2840 PRINT TAB(5);I;TAB(16);CP(I);TAB(51);PP(I)
  238. 2850 NEXT I
  239. 2860 PRINT :PRINT "Change data ?  Enter the number ( enclosed in parenthesis ) of the variable  to be changed "
  240. 2880 PRINT :PRINT "Enter -1 for finish change "
  241. 2890 INPUT VN:CLS
  242. 2900 IF VN<0 THEN 2930
  243. 2910 ON VN-24 GOTO 1230,1340,1380,1420,1470,1470
  244. 2920 PRINT:PRINT:LINE INPUT "Press enter to continue ";ENT$:CLS
  245. 2930 CLS:PRINT "Group E Data --- Run Data ":PRINT
  246. 2940 PRINT "(31) Final run time, years (TF) ";TF
  247. 2950 PRINT "(32) Time step, years (DT)      ";DT
  248. 2960 PRINT:PRINT  "Change data ?  Enter the number ( enclosed in parenthesis ) of the variable  to be changed "
  249. 2980 PRINT :PRINT "Enter -1 for finish change "
  250. 2990 INPUT VN:CLS
  251. 3000 IF VN<0 THEN 3020
  252. 3010 ON VN-30 GOTO 1730,1760
  253. 3020 IF C$="n" THEN GOTO 3060
  254. 3025 WRITE #2,RID$,WTP,TD,H,PHI,FORMK,RPI,RTI,GASI,OG,GG,SW,SG,SO,RSB,BHFP,FG,LF,FH,WFI,PCON,PRI,I1,PRP,BRAND$,BULKD,NP,PF
  255. 3030 FOR KP=1 TO NP:WRITE #2,CP(KP),PP(KP):NEXT KP
  256. 3040 WRITE #2,TF,DT,PA$
  257. 3050 CLOSE #2
  258. 3060 PRINT :PRINT :PRINT "Have you turned on your printer ?":PRINT
  259. 3062 LINE INPUT"Do you want the input data printed out (y/n) ?";INPRNT$
  260. 3064 IF INPRNT$="n" THEN GOTO 3700
  261. 3070 PRINT: PRINT "Printing input data on the printer"
  262. 3080 LPRINT DATE$
  263. 3090 LPRINT :LPRINT "Carborundum Company":LPRINT "Proppants Division":LPRINT "Dallas, Texas":LPRINT :LPRINT :LPRINT "COMPUPROP1  --- Proppant Selection Program "
  264. 3100 LPRINT "Version 1.1.0"
  265. 3110 LPRINT :LPRINT "Input Data":LPRINT
  266. 3120 LPRINT RID$
  267. 3130 LPRINT "Proppant: ";BRAND$:LPRINT:LPRINT
  268. 3140 LPRINT "Group A Data --- Well Data ":LPRINT
  269. 3150 LPRINT "Well identification (RID$) = ";RID$
  270. 3160 LPRINT "Well type (WTP) = ";WTP
  271. 3170 LPRINT "1 for gas well, 2 for oil well"
  272. 3180 LPRINT "Total depth, ft (TD) = ";TD
  273. 3190 LPRINT "Net pay, ft (H) = ";H
  274. 3200 LPRINT "Formation porosity, % (PHI) = ";PHI
  275. 3210 LPRINT "Formation permeability, md (FORMK) = ";FORMK
  276. 3220 LPRINT "Initial reservoir pressure, psi (RPI) = ";RPI
  277. 3230 LPRINT "Reservoir temperature, deg F (RTI) = ";RTI
  278. 3240 IF WTP=2 THEN LPRINT "oil gravity, deg API (OG) = ";OG
  279. 3250 IF WTP=1 THEN LPRINT "GAS TYPE (GASI) = ";GASI
  280. 3260 IF WTP=1 THEN LPRINT "1 for miscellaneous gases, 2 for condensate gases "
  281. 3270 IF WTP=1 THEN LPRINT "Gas gravity (GG) = ";GG
  282. 3280 LPRINT "Water saturation, % (SW) = ";SW
  283. 3290 IF WTP=2 THEN LPRINT "Oil saturation, % (SO) = ";SO
  284. 3300 IF WTP=1 THEN LPRINT "Gas saturation, % (SG) = ";SG ELSE LPRINT "Initial gas-oil ratio, SCF/BBL (RSB) = ";RSB
  285. 3310 LPRINT "Bottom-hole flowing pressure, psi (BHFP) = ";BHFP
  286. 3320 LPRINT :LPRINT
  287. 3330 LPRINT "Group B Data --- Fracture Geometry Data ":LPRINT
  288. 3340 LPRINT "Fracture gradient, psi/ft (FG) = ";FG
  289. 3350 LPRINT "Fracture half-length, ft (LF) = ";LF
  290. 3360 LPRINT "Fracture height, ft (FH) = ";FH
  291. 3370 LPRINT "Fracture width, in (WFI) = ";WFI
  292. 3380 IF WFI<0 THEN LPRINT "If fracture width, in (WFI) = -1, it means proppant concentration"
  293. 3390 IF WFI<0 THEN LPRINT "  (lb/sq ft) and proppant conductivity (md-ft) data ( in Group D )"
  294. 3400 IF WFI<0 THEN LPRINT "  are used"
  295. 3410 IF WFI<0 THEN LPRINT "Proppant concentration, lb/sq ft (PCON) = ";PCON
  296. 3420 LPRINT :LPRINT
  297. 3430 LPRINT "Group C Data --- Economic Data ":LPRINT
  298. 3440 IF WTP=1 THEN LPRINT "Gas price, $/MSCF (PRI) = ";PRI
  299. 3450 IF WTP=2 THEN LPRINT "Oil price, $/BBL (PRI) = ";PRI
  300. 3460 LPRINT "Proppant price, $/lb (PRP) = ";PRP
  301. 3470 LPRINT "Discount rate, % (I1) = ";I1
  302. 3480 LPRINT CHR$(12);
  303. 3490 LPRINT :IF PA$="n" THEN LPRINT "Group D Data --- Proppant Data ":LPRINT
  304. 3500 LPRINT :IF PA$<>"n" THEN LPRINT "Group D Data --- Proppant Data ( program built-in data, proppant factor (PF) defined by user )":LPRINT
  305. 3510 LPRINT "Proppant identification (BRAND$) = ";BRAND$
  306. 3520 IF WFI>0 THEN LPRINT "Proppant bulk density, lb/cu ft (BULKD) = ";BULKD
  307. 3530 LPRINT "Number of proppant data points (NP) = ";NP
  308. 3540 LPRINT "Proppant factor (PF) = ";PF
  309. 3550 IF WFI>0 THEN 3560 ELSE 3580
  310. 3560 LPRINT " I   Closure stress, psi (CP(I))   Proppant permeability, md (PP(I))":LPRINT
  311. 3570 GOTO 3590
  312. 3580 LPRINT " I   Closure stress, psi (CP(I))   Proppant conductivity, md-ft (PP(I))":LPRINT
  313. 3590 FOR LI=1 TO NP
  314. 3600 LPRINT LI;TAB(16);CP(LI);TAB(51);PP(LI)
  315. 3610 NEXT LI
  316. 3620 LPRINT :LPRINT
  317. 3630 LPRINT "Group E Data --- Run Data ":LPRINT
  318. 3640 LPRINT "Final run time, years (TF) = ";TF
  319. 3650 LPRINT "Time step, years (DT) = ";DT
  320. 3660 LPRINT :LPRINT :LPRINT
  321. 3670 IF C$="n" THEN LPRINT "Input data saved on file name: ";F$
  322. 3680 IF C$<>"n" THEN LPRINT "Input data saved on file name: ";F2$
  323. 3690 LPRINT CHR$(12)
  324. 3700 CLS:TT=TF/DT*.25:PRINT "Computing results --- the whole run takes approximately ";TT;" minutes on the IBM PC"
  325. 3715 IF RERUN <>1 THEN GOSUB 6520
  326. 3720 IF WTP=1 THEN 3880
  327. 3730 P=RPI:TEMP=RTI:T=TEMP+460
  328. 3740 GOSUB 6180
  329. 3750 UO1=UOB
  330. 3760 GOSUB 5100
  331. 3770 GOSUB 5220
  332. 3780 GOSUB 5150
  333. 3790 GOSUB 5180
  334. 3800 P2=(RPI+BHFP)/2
  335. 3810 P=P2
  336. 3820 GOSUB 6180
  337. 3830 UO2=UOB
  338. 3840 GOSUB 6040
  339. 3850 BOIL=BOB
  340. 3860 REM Oil PVT data completed
  341. 3870 GOTO 4050
  342. 3880 P=RPI:TEMP=RTI:T=TEMP+460
  343. 3890 GOSUB 6680
  344. 3900 GOSUB 6760
  345. 3910 Z1=Z
  346. 3920 GOSUB 5330
  347. 3930 UG1=UG
  348. 3940 GOSUB 5220
  349. 3950 GOSUB 5030
  350. 3960 GOSUB 5150
  351. 3970 GOSUB 5180
  352. 3980 P2=(RPI+BHFP)/2
  353. 3990 P=P2
  354. 4000 GOSUB 6760
  355. 4010 Z2=Z
  356. 4020 GOSUB 5330
  357. 4030 UG2=UG
  358. 4040 REM Gas PVT data computed
  359. 4050 BHTP=TD*FG
  360. 4060 CPI=BHTP-BHFP
  361. 4070 N=NP:U=CPI
  362. 4080 FOR I=1 TO NP:X(I)=CP(I):Y(I)=PP(I):NEXT I
  363. 4090 GOSUB 5420:GOSUB 5890
  364. 4100 PPI=VVV
  365. 4110 PRINT "CPI PPI ";CPI;PPI
  366. 4120 PPI=PPI*PF
  367. 4130 WF=WFI/12:PHIF=PHI/100
  368. 4140 W=FORMK*LF:IF WFI>0 THEN FCDI=WF*PPI/W
  369. 4150 IF WFI<0 THEN FCDI=PPI/W
  370. 4160 PRINT "W=FORMK*LF PPI*PF  FCDI ";W;PPI;FCDI
  371. 4170 IF FCDI>500 THEN FCDI=500:PRINT "FCDI>500; assume FCDI=500 in program"
  372. 4180 IF FCDI>=.1 THEN 4190 ELSE PRINT "FCDI<0.1; program stop":STOP
  373. 4190 IF WFI>0 THEN PWT=2*LF*FH*WF*BULKD
  374. 4200 IF WFI>0 THEN INV=PWT*PRP
  375. 4210 IF WFI<0 THEN PWT=2*LF*FH*PCON
  376. 4220 IF WFI<0 THEN INV=PWT*PRP
  377. 4230 IF WFI=-99.9 THEN INV=PRP
  378. 4240 IF WTP=1 THEN LH=FORMK/PHIF/UG1/CT/LF^2
  379. 4250 IF WTP=2 THEN LH=FORMK/PHIF/UO1/CT/LF^2
  380. 4260 TL=4.34E-06/LH
  381. 4270 TH=173/LH
  382. 4280 PRINT "ti (minimum), years ";TL
  383. 4290 PRINT "ti (maximum), years ";TH
  384. 4300 IF TF<TH THEN 4360 ELSE 4310
  385. 4310 CLS:PRINT "Final run time (TF) must be less than ";TH;" years "
  386. 4320 PRINT "Rerun your program using a new final run time "
  387. 4330 LPRINT "Rerun your program using a new final run time "
  388. 4340 PRINT "Program stop ":STOP
  389. 4360 LPRINT :LPRINT "COMPUPROP1 --- Proppant Selection Program "
  390. 4370 LPRINT "Version 1.1.0"
  391. 4380 LPRINT :LPRINT "Output Results "
  392. 4390 LPRINT :LPRINT RID$
  393. 4400 LPRINT "Proppant: ";BRAND$
  394. 4410 LPRINT
  395. 4420 LPRINT "Closure pressure, psi (CPI) = ";CPI
  396. 4430 LPRINT "Proppant factor (PF) = ";PF
  397. 4440 IF WFI>0 THEN LPRINT "Proppant permeability ( adjusted ), md (PPI) = ";PPI
  398. 4450 IF WFI<0 THEN LPRINT "Proppant conductivity ( adjusted ), md-ft (PPI) = ";PPI
  399. 4460 LPRINT "Dimensionless fracture flow capacity (FCDI) = ";FCDI
  400. 4470 IF WFI=-99.9 THEN 4510 ELSE 4480
  401. 4480 LPRINT "Pounds of ";BRAND$;" used (PWT) = ";PWT
  402. 4490 LPRINT "Total cost of ";BRAND$;", $ (INV) = ";INV
  403. 4500 GOTO 4520
  404. 4510 LPRINT "Well cost, $ (INV) = ";INV
  405. 4520 LPRINT :LPRINT :LPRINT "Post-fracture production and discounted cash flow analysis ":LPRINT:LPRINT
  406. 4530 LPRINT "Run No.   Time   Flow Rate   Production   Cum Production   Income   Cum Income   Income   Cum Income   Cum Net Pre Val"
  407. 4540 IF WTP=1 THEN LPRINT "          Year     MSCFD        MMSCF          MMSCF      ( 0% )$M   ( 0% )$M  (";I1;"%)$M   (";I1;"%)$M      (";I1;"%)$M ":LPRINT
  408. 4550 IF WTP=2 THEN LPRINT "          Year     BBL/D         MBBL           MBBL      ( 0% )$M   ( 0% )$M  (";I1;"%)$M   (";I1;"%)$M      (";I1;"%)$M ":LPRINT
  409. 4560 IF WTP=1 THEN TDF=2.3074*FORMK/PHIF/UG1/CT/LF^2
  410. 4570 IF WTP=1 THEN QF=FORMK*H*(RPI^2-BHFP^2)/1424/UG2/Z2/(RTI+460)
  411. 4580 IF WTP=2 THEN TDF=2.3074*FORMK/PHIF/UO1/CT/LF^2
  412. 4590 IF WTP=2 THEN QF=FORMK*H*(RPI-BHFP)/141.2/BOIL/UO2
  413. 4600 RN=RN+1
  414. 4610 TI=TI+DT
  415. 4620 IF TI>TF THEN 4630 ELSE 4670
  416. 4630 LPRINT :LPRINT :LPRINT :LPRINT DATE$:LPRINT :LPRINT "Courtesy of Carborundum Company"
  417. 4640 LPRINT "Proppants Division":LPRINT "Dallas, Texas":LPRINT
  418. 4650 LPRINT "Tel: 214/659-1010 ":LPRINT
  419. 4651 LPRINT CHR$(15):LPRINT"Notice: The information, recommendations and opinions set forth":LPRINT"herein are offered solely for your consideration, inquiry and verification"
  420. 4652 LPRINT"and are not, in part or total, to be construed as constituting a":LPRINT"warrenty or representation for which we assume legal responsibility.":LPRINT"Nothing contained herein is to be interpreted as authorization to "
  421. 4653 LPRINT"practice a patented invention without a license.":LPRINT CHR$(18)
  422. 4654 LPRINT CHR$(12)
  423. 4655 CLS:PRINT:PRINT:PRINT"Input the number cooresponding to the action you wish to take next:"
  424. 4657 PRINT:PRINT
  425. 4658 PRINT"  (1) Run again using an edited version of the data currently in memory;":PRINT
  426. 4659 PRINT"  (2) Run again using a previously stored data file;":PRINT
  427. 4660 PRINT"  (3) Run again using data yet to be input; or,":PRINT
  428. 4662 PRINT"  (4) End the program.":PRINT
  429. 4664 INPUT NEWRN :CLS:RN=0:TI=0:T1=0:Q=0:QQ=0
  430. 4665 QQ1=0:QQ2=0:D0=0:CD0=0:D1=0:CD1=0:NPV1=0:RERUN=1
  431. 4666 IF NEWRN > 3 THEN PRINT"Bye!":END ELSE ON NEWRN GOTO 1870, 1840, 220
  432. 4670 IF TI>=TL AND TI<=TH THEN 4700
  433. 4680 PRINT "ti out of range, program stop"
  434. 4690 LPRINT "ti out of range, program stop":STOP
  435. 4700 TDI=TDF*TI
  436. 4710 IF TDI>=.01 AND FCDI>=50 THEN FCDI=500
  437. 4720 IF TDI>=.4 AND FCDI>=25 THEN FCDI=500
  438. 4730 FOR IA=1 TO NFCD
  439. 4740 IF FCDI<>ZZ(IA) THEN 4770 ELSE PRINT "Case 1"
  440. 4750 FOR JA=1 TO NTDX:X(JA)=LOG(XX(JA)):Y(JA)=LOG(YY(IA,JA)):NEXT JA
  441. 4760 N=NTDX:U=LOG(TDI):GOSUB 5420:GOSUB 5890:QDI=EXP(VVV):GOTO 4930
  442. 4770 NEXT IA
  443. 4780 IF FCDI<ZZ(NFCD-2)THEN 4850 ELSE PRINT "case 2"
  444. 4790 FOR KA=1 TO 3:ZK(KA)=LOG(ZZ(NFCD+KA-3))
  445. 4800 FOR JA=1 TO NTDX:X(JA)=LOG(XX(JA)):Y(JA)=LOG(YY(NFCD+KA-3,JA)):NEXT JA
  446. 4810 N=NTDX:U=LOG(TDI):GOSUB 5420:GOSUB 5890:YI(KA)=VVV
  447. 4820 NEXT KA
  448. 4830 FOR IA=1 TO 3:X(IA)=ZK(IA):Y(IA)=YI(IA):NEXT IA
  449. 4840 N=3:U=LOG(FCDI):GOSUB 5420:GOSUB 5890:QDI=EXP(VVV):GOTO 4930
  450. 4850 PRINT "case 3":FOR IA= 1 TO NFCD:IF ZZ(IA)<FCDI THEN 4920
  451. 4860 FOR KA=1 TO 3:ZK(KA)=LOG(ZZ(IA+KA-2))
  452. 4870 FOR JA=1 TO NTDX:X(JA)=LOG(XX(JA)):Y(JA)=LOG(YY(IA+KA-2,JA)):NEXT JA
  453. 4880 N=NTDX:U=LOG(TDI):GOSUB 5420:GOSUB 5890:YI(KA)=VVV
  454. 4890 NEXT KA
  455. 4900 FOR IA2=1 TO 3:X(IA2)=ZK(IA2):Y(IA2)=YI(IA2):NEXT IA2
  456. 4910 N=3:U=LOG(FCDI):GOSUB 5420:GOSUB 5890:QDI=EXP(VVV):GOTO 4930
  457. 4920 NEXT IA
  458. 4930 Q=QF/QDI:IF QQ1=0 THEN Q1=Q
  459. 4940 QQ=(Q+Q1)/2*(TI-T1)*365/1000:QQ1=QQ1+QQ:D0=QQ*1000*PRI:CD0=CD0+D0:Q1=Q:T1=TI
  460. 4950 D0M=D0/1000:CD0M=CD0/1000
  461. 4960 REM PRINT "FCDI TDI QDI ";FCDI;TDI;QDI
  462. 4970 IF INT(TI)<.99*TI OR INT(TI)>1.01*TI THEN 5000
  463. 4980 D1=(QQ1-QQ2)*1000*PRI*(1+I1/100)^-(TI-.5):CD1=CD1+D1:NPV1=CD1-INV:QQ2=QQ1
  464. 4990 D1M=D1/1000:CD1M=CD1/1000:NPV1M=NPV1/1000
  465. 5000 IF INT(TI)>=1.01*TI OR INT(TI)<=.99*TI THEN LPRINT USING " ###     ##.##   ######.#    #####.##      ######.##      #######    ########   #######    ########      ########";RN;TI;Q;QQ;QQ1;D0M;CD0M
  466. 5010 IF INT(TI)<1.01*TI AND INT(TI)>.99*TI THEN LPRINT USING " ###     ##.##   ######.#    #####.##      ######.##      #######    ########   #######    ########      ########";RN;TI;Q;QQ;QQ1;D0M;CD0M;D1M;CD1M;NPV1M
  467. 5020 GOTO 4600
  468. 5030 REM Subroutine CGAS
  469. 5040 DR=DR2
  470. 5050 DZ=1/DR/TR*(5*A*DR^5+2*B*DR^2+C*DR+2*E*DR^2*(1+F*DR^2-F^2*DR^4)*EXP(-F*DR^2))
  471. 5060 CR=1/PR/(1+DR/Z*DZ)
  472. 5070 CG=CR/PC
  473. 5080 REM PRINT "CG = ";CG
  474. 5090 RETURN
  475. 5100 REM Subroutine COIL
  476. 5110 REM Assume GG = 0.7
  477. 5120 GG=.7
  478. 5130 CO=(-1433+5*RSB+17.2*TEMP-1180*GG+12.61*OG)/100000!/P
  479. 5140 RETURN
  480. 5150 REM Subroutine CROK
  481. 5160 CFR=1.87E-06*(PHI/100)^-.415
  482. 5170 RETURN
  483. 5180 REM Subroutine CTOT
  484. 5190 CT=SO/100*CO+SG/100*CG+SW/100*CWB+CFR
  485. 5200 REM PRINT "CT = ";CT
  486. 5210 RETURN
  487. 5220 REM Subroutine CWAT
  488. 5230 REM Assume RSW = 20 cu ft/BBL, NACL = 2% ( by weight )
  489. 5240 RSW=20: NACL=2
  490. 5250 AR=3.8546-.000134*P
  491. 5260 BR=-.01052+4.77E-07*P
  492. 5270 CR=3.9267E-05-8.8E-10*P
  493. 5280 CWW=(AR+BR*TEMP+CR*TEMP^2)/1000000!
  494. 5290 CWG=CWW*(1+.0089*RSW)
  495. 5300 CWB=CWG*((-.052+.00027*TEMP-1.14E-06*TEMP^2+1.121E-09*TEMP^3)*NACL^.7+1)
  496. 5310 REM PRINT "CWB = ";CWB
  497. 5320 RETURN
  498. 5330 REM Subroutine GVIS
  499. 5340 MW=28.97*GG
  500. 5350 AG=((9.399999+.02*MW)*T^1.5)/((209+19*MW+T)*10000!)
  501. 5360 BG=3.5+986/T+.01*MW
  502. 5370 CG=2.4-.2*BG
  503. 5380 RHO=P*MW/Z/669.8/T
  504. 5390 UG=AG*EXP(BG*RHO^CG)
  505. 5400 REM PRINT "UG = ";UG
  506. 5410 RETURN
  507. 5420 REM Subroutine INTC
  508. 5430 NM1=N-1
  509. 5440 IF N<2 THEN RETURN
  510. 5450 IF N<3 THEN 5820
  511. 5460 D(1)=X(2)-X(1)
  512. 5470 C(2)=(Y(2)-Y(1))/D(1)
  513. 5480 FOR I=2 TO NM1
  514. 5490 D(I)=X(I+1)-X(I)
  515. 5500 B(I)=2*(D(I-1)+D(I))
  516. 5510 C(I+1)=(Y(I+1)-Y(I))/D(I)
  517. 5520 C(I)=C(I+1)-C(I)
  518. 5530 NEXT I
  519. 5540 B(1)=-D(1)
  520. 5550 B(N)=-D(N-1)
  521. 5560 C(1)=0
  522. 5570 C(N)=0
  523. 5580 IF N=3 THEN 5630
  524. 5590 C(1)=C(3)/(X(4)-X(2))-C(2)/(X(3)-X(1))
  525. 5600 C(N)=C(N-1)/(X(N)-X(N-2))-C(N-2)/(X(N-1)-X(N-3))
  526. 5610 C(1)=C(1)*D(1)^2/(X(4)-X(1))
  527. 5620 C(N)=-C(N)*D(N-1)^2/(X(N)-X(N-3))
  528. 5630 FOR I= 2 TO N
  529. 5640 T=D(I-1)/B(I-1)
  530. 5650 B(I)=B(I)-T*D(I-1)
  531. 5660 C(I)=C(I)-T*C(I-1)
  532. 5670 NEXT I
  533. 5680 C(N)=C(N)/B(N)
  534. 5690 FOR IB=1 TO NM1
  535. 5700 I=N-IB
  536. 5710 C(I)=(C(I)-D(I)*C(I+1))/B(I)
  537. 5720 NEXT IB
  538. 5730 B(N)=(Y(N)-Y(NM1))/D(NM1)+D(NM1)*(C(NM1)+2*C(N))
  539. 5740 FOR I=1 TO NM1
  540. 5750 B(I)=(Y(I+1)-Y(I))/D(I)-D(I)*(C(I+1)+2*C(I))
  541. 5760 D(I)=(C(I+1)-C(I))/D(I)
  542. 5770 C(I)=3*C(I)
  543. 5780 NEXT I
  544. 5790 C(N)=3*C(N)
  545. 5800 D(N)=D(N-1)
  546. 5810 RETURN
  547. 5820 B(1)=(Y(2)-Y(1))/(X(2)-X(1))
  548. 5830 C(1)=0
  549. 5840 D(1)=0
  550. 5850 B(2)=B(1)
  551. 5860 C(2)=0
  552. 5870 D(2)=0
  553. 5880 RETURN
  554. 5890 REM Subroutine INTV
  555. 5900 I=1
  556. 5910 IF I>=N THEN I=1
  557. 5920 IF U<X(I) THEN 5940
  558. 5930 IF U<=X(I+1) THEN 6000
  559. 5940 I=1
  560. 5950 J=N+1
  561. 5960 K=INT((I+J)/2)
  562. 5970 IF U<X(K) THEN J=K
  563. 5980 IF U>=X(K) THEN I=K
  564. 5990 IF J>I+1 THEN 5960
  565. 6000 DX=U-X(I)
  566. 6010 VVV=Y(I)+DX*(B(I)+DX*(C(I)+DX*D(I)))
  567. 6030 RETURN
  568. 6040 REM Subroutine OILB
  569. 6050 REM Assume GG = 0.7
  570. 6060 GG=.7
  571. 6070 IF OG<=30 THEN 6080 ELSE 6120
  572. 6080 A2=1.751E-05
  573. 6090 B2=.0004667
  574. 6100 C2=-1.811E-08
  575. 6110 GOTO 6150
  576. 6120 A2=.000011
  577. 6130 B2=.000467
  578. 6140 C2=1.337E-09
  579. 6150 BOB=1+A2*(TEMP-60)*(OG/GG)+(B2+C2*(TEMP-60)*OG/GG)*RSB
  580. 6160 REM PRINT "BOB = ";BOB
  581. 6170 RETURN
  582. 6180 REM Subroutine OVIS
  583. 6190 C1=3.0324-.02023*OG
  584. 6200 B1=10^C1
  585. 6210 A1=B1*TEMP^-1.163
  586. 6220 UOD=10^A1-1
  587. 6230 AO=10.715*(RSB+100)^-.515
  588. 6240 BO=5.44*(RSB+150)^-.338
  589. 6250 UOB=AO*UOD^BO
  590. 6260 REM PRINT "UOD = ";UOD
  591. 6270 REM PRINT "UOB = ";UOB
  592. 6280 RETURN
  593. 6290 REM Subroutine PRO1
  594. 6300 BRAND$="20/40 Sintered Bauxite":BULKD=136:NP=14
  595. 6310 CP(1)=1000:PP(1)=510000!:CP(2)=2000:PP(2)=500000!:CP(3)=3000:PP(3)=480000!
  596. 6320 CP(4)=4000:PP(4)=460000!:CP(5)=5000:PP(5)=425000!:CP(6)=6000:PP(6)=400000!
  597. 6330 CP(7)=7000:PP(7)=370000!:CP(8)=8000:PP(8)=330000!:CP(9)=9000:PP(9)=300000!
  598. 6340 CP(10)=10000:PP(10)=275000!:CP(11)=11000:PP(11)=250000!:CP(12)=12000:PP(12)=225000!
  599. 6350 CP(13)=13000:PP(13)=195000!:CP(14)=14000:PP(14)=175000!
  600. 6360 RETURN
  601. 6370 REM Subroutine PRO2
  602. 6380 BRAND$="20/40 Carbo-Prop HC":BULKD=112:NP=14
  603. 6390 CP(1)=1000:PP(1)=820000!:CP(2)=2000:PP(2)=740000!:CP(3)=3000:PP(3)=680000!
  604. 6400 CP(4)=4000:PP(4)=610000!:CP(5)=5000:PP(5)=530000!:CP(6)=6000:PP(6)=480000!
  605. 6410 CP(7)=7000:PP(7)=400000!:CP(8)=8000:PP(8)=340000!:CP(9)=9000:PP(9)=280000!
  606. 6420 CP(10)=10000:PP(10)=230000!:CP(11)=11000:PP(11)=200000!:CP(12)=12000:PP(12)=180000!
  607. 6430 CP(13)=13000:PP(13)=170000!:CP(14)=14000:PP(14)=150000!
  608. 6431 RETURN
  609. 6440 REM Subroutine PRO4
  610. 6441 BRAND$="20/40 Resin Coated Sand":BULKD=100:NP=12
  611. 6442 CP(1)=1000:PP(1)=290000!:CP(2)=2000:PP(2)=265000!:CP(3)=3000:PP(3)=252000!
  612. 6444 CP(4)=4000:PP(4)=238000!:CP(5)=5000:PP(5)=222000!:CP(6)=6000:PP(6)=205000!
  613. 6445 CP(7)=7000:PP(7)=186000!:CP(8)=8000:PP(8)=170000!:CP(9)=9000:PP(9)=152000!
  614. 6447 CP(10)=10000:PP(10)=113500!:CP(11)=11000:PP(11)=112000!:CP(12)=12000:PP(12)=89000!
  615. 6448 RETURN
  616. 6450 REM Subroutine PRO5
  617. 6460 BRAND$="20/40 sand ( excellent quality )":BULKD=102.7:NP=10
  618. 6470 CP(1)=1000:PP(1)=230000!:CP(2)=2000:PP(2)=220000!:CP(3)=3000:PP(3)=200000!
  619. 6480 CP(4)=4000:PP(4)=180000!:CP(5)=5000:PP(5)=150000!:CP(6)=6000:PP(6)=100000!
  620. 6490 CP(7)=7000:PP(7)=70000!:CP(8)=8000:PP(8)=49000!:CP(9)=9000:PP(9)=36000!
  621. 6500 CP(10)=10000:PP(10)=27000!
  622. 6502 RETURN
  623. 6505 REM Subroutine PRO6
  624. 6507 BRAND$="16/20 Carbo-Prop":BULKD=117.8:NP=13
  625. 6509 CP(1)=1000:PP(1)=1850000!:CP(2)=2000:PP(2)=1710000!:CP(3)=3000:PP(3)=1550000!
  626. 6511 CP(4)=4000:PP(4)=1384000!:CP(5)=5000:PP(5)=1110000!:CP(6)=6000:PP(6)=863000!
  627. 6513 CP(7)=7000:PP(7)=720000!:CP(8)=8000:PP(8)=564000!:CP(9)=9000:PP(9)=490000!
  628. 6515 CP(10)=10000:PP(10)=406000!:CP(11)=11000:PP(11)=350000!
  629. 6516 CP(12)=12000:PP(12)=297000!:CP(13)=14000:PP(13)=234000!
  630. 6517 RETURN
  631. 6520 REM SUBROUTINE TYPD
  632. 6530 NTDX=16:NFCD=9:FOR I=1 TO NTDX:READ XX(I):NEXT I
  633. 6540 FOR I=1 TO NFCD:READ ZZ(I):NEXT I
  634. 6550 FOR I=1 TO NFCD:FOR J=1 TO NTDX:READ YY(I,J):NEXT J:NEXT I
  635. 6560 DATA 1e-05,4e-05,1e-04,4e-04,1e-03,4e-03,1e-02,4e-02,1e-01,4e-01,1,4,10,40,100,400
  636. 6570 DATA .1,.5,1,5,10,25,50,100,500
  637. 6580 DATA .44,.635,.799,1.09,1.299,1.71,2.08,2.6,2.99,3.6,4.0,4.7,5.2,6.2,6.9,8.2
  638. 6590 DATA .2,.276,.365,.506,.62,.87,1.09,1.46,1.76,2.29,2.7,3.45,4.1,5.3,6.1,7.5
  639. 6600 DATA .141,.205,.255,.36,.448,.62,.79,1.1,1.37,1.82,2.21,3,3.6,5.1,5.9,7.5
  640. 6610 DATA .065,.092,.113,.162,.21,.293,.385,.61,.83,1.28,1.68,2.5,3.3,4.9,5.85,7.45
  641. 6620 DATA .045,.065,.081,.118,.15,.222,.31,.52,.73,1.19,1.6,2.4,3.2,4.6,5.7,7.3
  642. 6630 DATA .029,.0406,.0526,.077,.105,.173,.265,.48,.7,1.12,1.5,2.2,2.85,4.3,5.4,6.9
  643. 6640 DATA .0205,.0295,.039,.063,.09,.161,.248,.46,.68,1.12,1.5,2.2,2.85,4.3,5.4,6.9
  644. 6650 DATA .015,.0225,.033,.055,.083,.154,.248,.46,.68,1.12,1.5,2.2,2.85,4.3,5.4,6.9
  645. 6660 DATA .0082,.0172,.0265,.051,.08,.152,.248,.46,.68,1.12,1.5,2.2,2.85,4.3,5.4,6.9
  646. 6670 RETURN
  647. 6680 REM Subroutine TCPC
  648. 6690 IF GASI=1 THEN 6700 ELSE 6730
  649. 6700 TC=168+325*GG-12.5*GG^2
  650. 6710 PC=677+15*GG-37.5*GG^2
  651. 6720 RETURN
  652. 6730 TC=187+330*GG-71.5*GG^2
  653. 6740 PC=706-51.7*GG-11.1*GG^2
  654. 6750 RETURN
  655. 6760 REM Subroutine ZFAC
  656. 6770 TR=T/TC
  657. 6780 PR=P/PC
  658. 6790 REM PRINT "TC PC ";TC;PC
  659. 6800 REM PRINT "TR PR ";TR;PR
  660. 6810 A=.06423
  661. 6820 B=.5353*TR-.6123
  662. 6830 C=.3151*TR-1.0467-.5783/TR^2
  663. 6840 D=TR
  664. 6850 E=.6816/TR^2
  665. 6860 F=.6845
  666. 6870 G=.27*PR
  667. 6880 DEF FNFD(DR)=A*DR^6+B*DR^3+C*DR^2+D*DR+E*DR^3*(1+F*DR^2)*EXP(-F*DR^2)-G
  668. 6890 DEF FNFDP(DR)=6*A*DR^5+3*B*DR^2+2*C*DR+D+E*DR^2*(3+F*DR^2*(3-2*F*DR^2))*EXP(-F*DR^2)
  669. 6900 DR1=.27*PR/TR
  670. 6910 FOR I=1 TO 100
  671. 6920 DR2=DR1-FNFD(DR1)/FNFDP(DR1)
  672. 6930 IF ABS(FNFD(DR2))<=.000001 THEN 6970
  673. 6940 DR1=DR2
  674. 6950 NEXT I
  675. 6960 REM PRINT "Subroutine ZFAC diverges"
  676. 6970 Z=.27*PR/DR2/TR
  677. 6980 PRINT "no. of iterations ";I
  678. 6990 REM PRINT "Z = ";Z
  679. 7000 RETURN
  680. INT "Subroutine ZFAC diverges"
  681. 6970 Z=.27*PR/DR2/TR
  682. 6980 PRINT "no. of iterations ";I
  683. 6990 REM PR