10 KEY OFF :SCREEN 0,0,0:CLS 20 COLOR 10:PRINT:PRINT " P R O G R A M F O R C O N T R O L V A L V E C A L C U L A T I O N S" 30 LOCATE 3,20:PRINT "Date developed : 20/12/96" 40 LOCATE 4,20:PRINT "Revision : 00" 50 LOCATE 5,20:PRINT "Reference : Masonielan Literature " 60 LOCATE 6,20:PRINT "Developed by : AJ" 70 LOCATE 7,20:PRINT "Contributed by : AJ" 80 LOCATE 8,20:PRINT "Validated by : SS,NA" 90 LOCATE 15,10:COLOR 27:PRINT "Please make sure that this is the latest revision of the program" 100 COLOR 10:LOCATE 20,20:PRINT "Press any key to move into the program" 110 IF INKEY$= "" THEN 110 120 KEY 15,CHR$(4)+CHR$(46) 130 ON KEY(15) GOSUB 7380 140 KEY (15) ON 150 TIMER ON 160 KEY OFF 170 DIM CD$(38),PC(38),TC(38) 180 DIM FLOW$(37),CF$(37),SS$(37),TRIM$(37) 190 FOR CTR=1 TO 38 :READ CD$(CTR):NEXT 200 FOR CTR=1 TO 38 :READ PC(CTR):NEXT 210 FOR CTR=1 TO 38 :READ TC(CTR):NEXT 220 FOR CTR=1 TO 37 :READ FLOW$(CTR):NEXT 230 FOR CTR=1 TO 37 :READ CF$(CTR):NEXT 240 FOR CTR=1 TO 37 :READ SS$(CTR):NEXT 250 FOR CTR=1 TO 37 :READ TRIM$(CTR):NEXT 260 SCREEN 0,0,0:CLS 270 LOCATE 5,20 280 COLOR 10 290 FOR I=1 TO 160 300 IF I=41 THEN LOCATE 6,20 310 IF I=81 THEN LOCATE 7,20 320 IF I=121 THEN LOCATE 8,20 330 PRINT CHR$(177); 340 NEXT 350 COLOR 12 360 LOCATE 6,30:PRINT "Valve Coefficient(Cv)" 370 LOCATE 7,30:PRINT "calculation Programme" 380 COLOR 25:LOCATE 20,25:PRINT "Press any KEY to step ahead" 390 IF INKEY$="" THEN 390 400 SCREEN 0,0,0:CLS 410 COLOR 14 420 PRINT "Date :";DATE$,,,"Time :";TIME$ 430 PRINT:PRINT,"Specify the type of calculation you want to perform":PRINT :PRINT 440 COLOR 10 450 PRINT," Given data Data to be Calcualated":PRINT 460 PRINT,"1. Pressure drop, flow rate Cv 470 PRINT,"2. Cv, Flow rate Pressure drop 480 PRINT,"3. Cv, Pressure drop Flow rate 490 LOCATE 15,10:INPUT "Enter your case choice here(0 to quit) :";CC 500 IF CC=0 THEN 510 ELSE 550 510 CLS 520 LOCATE 10,20:PRINT "Please wait..." 530 FOR I=1 TO 10000:NEXT 540 SYSTEM 'end 550 IF CC=1 THEN GOSUB 590 560 IF CC=2 THEN GOSUB 2800 570 IF CC=3 THEN GOSUB 4870 580 GOTO 490 590 GOSUB 7050 600 IF SER=1 THEN GOSUB 650 610 IF SER=2 THEN GOSUB 1290 620 IF SER=3 THEN GOSUB 2120 630 IF SER=4 THEN GOSUB 2330 640 GOTO 590 650 'routine to cal. Cv for Liquid service 660 'Cv=1.16*Q*û(Gf/Del P) 670 CLS:PRINT :PRINT 680 INPUT "Enter the Liquid flow rate(Nm3/Hr) :";FL 690 INPUT "Enter the Pressure drop (bars abs) :";DELP 700 INPUT "Enter the specific gravity of the liquid:";GF 710 INPUT "Enter the upstream pressure :";P1 720 LOCATE 7,1 :INPUT "Do you know the factor Cf (y/Y/n/N) :";ANS$ 730 IF ANS$="y" OR ANS$="Y" THEN 760 740 IF ANS$="n" OR ANS$="N" THEN 770 750 GOTO 720 760 INPUT "Enter the factor Cf here :";CF:GOTO 850 770 LOCATE 15,10:PRINT ,"Press any key to see the list for Cf" 780 IF INKEY$="" THEN 780 790 GOSUB 6820 800 PRINT "Enter the Liquid flow rate(Nm3/Hr) :";FL 810 PRINT "Enter the Pressure drop (bars abs) :";DELP 820 PRINT "Enter the specific gravity of the liquid:";GF 830 PRINT "Enter the upstream pressure :";P1 840 INPUT "Now enter the factor Cf :";CF 850 GOSUB 6670 'CRITICALITY check 860 CLS 870 LOCATE 1,15:PRINT "Routine to calculate Cv for Liquid service" 880 LOCATE 3,35:PRINT "Data Given" 890 LOCATE 5,15:PRINT "1. Liquid flow rate :";FL;"Nm3/hr" 900 LOCATE 6,15:PRINT "2. Pressure drop :";DELP;"bars" 910 LOCATE 7,15:PRINT "3. Specific gravity :";GF 920 LOCATE 8,15:PRINT "4. Upstream pressure :";P1;"bars a" 930 LOCATE 9,15:PRINT "5. Factor Cf :";CF 940 IF CCH=2 THEN 950 ELSE 970 950 LOCATE 10,15:PRINT "6. Line size :";LS;"in." 960 LOCATE 11,15:PRINT "7. Valve size :";VS;"in." 970 LOCATE 13,35:PRINT "Results" 980 IF CR=1 THEN LOCATE 15,10:PRINT"The flow is sub-critical":GOTO 1000 990 IF CR=2 THEN LOCATE 15,10:PRINT"The flow is critical":GOTO 1040 1000 CV=1.16*FL*((GF/DELP)^(1/2)) 1010 IF CCH=1 THEN 1050 1020 R=(1-(1.5*(1-(VS/LS)^2)*(CV/(30*VS^2))^2))^(1/2) 1030 CV=CV/R:GOTO 1050 1040 CV=(1.16*FL/CF)*((GF/DELPS)^(1/2)) 1050 LOCATE 16,10:PRINT"Calculated Cv is :";CV 1060 LOCATE 18,10:INPUT "Want to print(p/P) the results on printer or continue(c/C)";ANS$ 1070 IF ANS$="P" OR ANS$="p" THEN 1100 1080 IF ANS$="c" OR ANS$="C" THEN 1280 1090 GOTO 1060 1100 LOCATE 20,26:PRINT "Printing...." 1110 LPRINT "Date :";DATE$ 1120 LPRINT "Time :";TIME$:LPRINT 1130 LPRINT " Routine to calculate Cv for Liquid service":LPRINT:LPRINT 1140 LPRINT " Data Given":LPRINT 1150 LPRINT "1. Liquid flow rate :";FL;"Nm3/hr" 1160 LPRINT "2. Pressure drop :";DELP;"bars" 1170 LPRINT "3. Specific gravity :";GF 1180 LPRINT "4. Upstream pressure :";P1;"bars a" 1190 LPRINT "5. Factor Cf :";CF 1200 IF CCH=2 THEN 1210 ELSE 1230 1210 LPRINT "6. Line size :";LS;"in." 1220 LPRINT "7. Valve size :";VS;"in." 1230 LPRINT :LPRINT " Results":LPRINT 1240 IF CR=1 THEN LPRINT"The flow is sub-critical":GOTO 1260 1250 IF CR=2 THEN LPRINT"The flow is critical" 1260 LPRINT"Calculated Cv is :";CV 1270 FOR I=1 TO 20000:NEXT 1280 RETURN 400 1290 'Routine to cal Cv for Gas service 1300 CLS:PRINT :PRINT 1310 PRINT "Enter the following data :":PRINT 1320 INPUT "1. Flow Rate(Nm3/hr) :";FLG 1330 INPUT "2. Upstream Pressure (bars abs) :";P1 1340 INPUT "3. Downstream Pressure (bars abs) :";P2 1350 INPUT "4. Delta P (bars) :";DELPG 1360 INPUT "5. Specific gravity of the vapour/gas:";GFG 1370 INPUT "6. Operating temperature(Deg C) :";T 1380 PRINT " Compressibility factor Z :" 1390 LOCATE 15,15:INPUT "Do U 'no Z(y/Y or n/N)";ANS$ 1400 IF ANS$="y" OR ANS$="Y" THEN 1410 ELSE 1420 1410 LOCATE 11,1:INPUT "7. Enter Comressibility factor here :";Z:GOTO 1530 1420 IF ANS$="n" OR ANS$="N" THEN 1430 ELSE 1390 1430 GOSUB 2560 'help for Z 1440 CLS:PRINT :PRINT 1450 PRINT "Enter the following data :":PRINT 1460 PRINT "1. Flow Rate(Nm3/hr) :";FLG 1470 PRINT "2. Upstream Pressure (bars abs) :";P1 1480 PRINT "3. Downstream Pressure (bars abs) :";P2 1490 PRINT "4. Delta P (bars) :";DELPG 1500 PRINT "5. Specific gravity of the vapour/gas:";GFG 1510 PRINT "6. Operating temperature(Deg C) :";T 1520 LOCATE 11,1:INPUT "7. Now enter Z :";Z 1530 LOCATE 15,15:INPUT " Do you know the factor Cf (y/Y/n/N) :";ANS$ 1540 IF ANS$="y" OR ANS$="Y" THEN 1570 1550 IF ANS$="n" OR ANS$="N" THEN 1580 1560 GOTO 1530 1570 LOCATE 12,1:INPUT "8. Enter the factor Cf here :";CF:GOTO 1620 1580 LOCATE 21,12:PRINT ,"Press any key to see the list for Cf" 1590 IF INKEY$="" THEN 1590 1600 GOSUB 6820 'for factor Cf 1610 INPUT "Now enter the factor Cf :";CF 1620 GOSUB 6970 'criticality check 1630 CLS 1640 LOCATE 1,15:PRINT "Routine to calculate Cv for Gas service" 1650 LOCATE 3,35:PRINT "Data Given" 1660 LOCATE 5,15:PRINT "1. Gas flow rate :";FLG;"Nm3/hr" 1670 LOCATE 6,15:PRINT "2. Upstream pressure :";P1;"bars a" 1680 LOCATE 7,15:PRINT "3. Downstream pressure :";P2;"bars a" 1690 LOCATE 8,15:PRINT "4. Pressure drop :";DELPG;"bars" 1700 LOCATE 9,15:PRINT "5. Specific gravity :";GFG 1710 LOCATE 10,15:PRINT "6. Operating Temp. :";T;"deg C" 1720 LOCATE 11,15:PRINT "7. Factor Cf :";CF 1730 LOCATE 12,15:PRINT "8. Compressibility factor :";Z 1740 IF CCH=2 THEN 1750 ELSE 1770 1750 LOCATE 13,15:PRINT "9. Line size :";LS;"in." 1760 LOCATE 14,15:PRINT "10.Valve size :";VS;"in." 1770 LOCATE 16,35:PRINT "Results" 1780 IF CR=1 THEN LOCATE 18,15:PRINT"The flow is sub-critical":GOTO 1800 1790 IF CR=2 THEN LOCATE 18,15:PRINT"The flow is critical":GOTO 1840 1800 CV=(FLG/295)*((GFG*(T+273)*Z/(DELPG*(P1+P2)))^(1/2)) 1810 IF CCH=1 THEN 1850 1820 R=(1-(1.5*(1-(VS/LS)^2)*(CV/(30*VS^2))^2))^(1/2) 1830 CV=CV/R:GOTO 1850 1840 CV=(FLG/(257*CF*P1))*((GFG*(T+273)*Z)^(1/2)):GOTO 1850 1850 LOCATE 19,15:PRINT"Calculated Cv is :";CV 1860 LOCATE 21,10:INPUT "Want to print(p/P) the results or continue(c/C):";ANS$ 1870 IF ANS$="p" OR ANS$="P" THEN 1900 1880 IF ANS$="c" OR ANS$="C" THEN 2110 1890 GOTO 1860 1900 LOCATE 22,26:PRINT "Printing...." 1910 LPRINT "Date :";DATE$ 1920 LPRINT "Time :";TIME$:LPRINT 1930 LPRINT " Routine to calculate Cv for Gas service":LPRINT 1940 LPRINT " Data Given":LPRINT 1950 LPRINT "1. Gas flow rate :";FLG;"Nm3/hr" 1960 LPRINT "2. Upstream pressure :";P1;"bars a" 1970 LPRINT "3. Downstream pressure :";P2;"bars a" 1980 LPRINT "4. Pressure drop :";DELPG;"bars" 1990 LPRINT "5. Specific gravity :";GFG 2000 LPRINT "6. Operating Temp. :";T;"deg C" 2010 LPRINT "7. Factor Cf :";CF 2020 LPRINT "8. Compressibility factor :";Z 2030 IF CCH=2 THEN 2030 ELSE 2060 2040 LPRINT "9. Line size :";LS;"in." 2050 LPRINT "10.Valve size :";VS;"in." 2060 LPRINT:LPRINT " Results" :LPRINT 2070 IF CR=1 THEN LPRINT"The flow is sub-critical":GOTO 2090 2080 IF CR=2 THEN LPRINT"The flow is critical" 2090 LPRINT"Calculated Cv is :";CV 2100 FOR I=1 TO 20000:NEXT 2110 RETURN 400 2120 'subroutine for Saturated steam Cv 2130 CLS 2140 PRINT " Subroutine to calculate Cv for saturated steam" 2150 PRINT :PRINT:PRINT 2160 PRINT "Enter the following data :":PRINT 2170 INPUT "1. Flow Rate( Kg/hr) :";W:W=W/1000 2180 INPUT "2. Upstream Pressure (bars abs) :";P1 2190 INPUT "3. Downstream Pressure (bars abs) :";P2 2200 DELPG=P1-P2 'INPUT "4. Delta P (bars) :";DELPG 2210 'INPUT "5. Specific gravity of the vapour/gas:";GFG 2220 'INPUT "4. Operating temperature(Deg C) :";T 2230 CV=72.4*W/SQR(DELPG*(P1+P2)) 2240 CLS:PRINT " Subroutine to calculate Cv for saturated steam" 2250 PRINT :PRINT:PRINT 2260 PRINT "1. Flow Rate( Kg/hr) :";W 2270 PRINT "2. Upstream Pressure (bars abs) :";P1 2280 PRINT "3. Downstream Pressure (bars abs) :";P2 2290 PRINT :PRINT 2300 PRINT "Calculated Cv is : ";CV 2310 IF INKEY$="" THEN 2310 2320 RETURN 400 2330 'subroutine to calculate Cv for superheated steam 2340 CLS 2350 PRINT " Subroutine to calculate Cv for superheated steam" 2360 PRINT :PRINT:PRINT 2370 PRINT "Enter the following data :":PRINT 2380 INPUT "1. Flow Rate( Kg/hr) :";W:W=W/1000 2390 INPUT "2. Upstream Pressure (bars abs) :";P1 2400 INPUT "3. Downstream Pressure (bars abs) :";P2 2410 INPUT "4. Degree of superheat (øC) :";TSH 2420 DELPG=P1-P2 'INPUT "4. Delta P (bars) :";DELPG 2430 CV=72.4*(1+.00126*TSH)*W/SQR(DELPG*(P1+P2)) 2440 CLS 2450 PRINT " Subroutine to calculate Cv for superheated steam" 2460 PRINT :PRINT:PRINT 2470 PRINT "1. Flow Rate( Kg/hr) :";W 2480 PRINT "2. Upstream Pressure (bars abs) :";P1 2490 PRINT "3. Downstream Pressure (bars abs) :";P2 2500 PRINT "4. Degree of superheat (øC) :";TSH 2510 PRINT :PRINT 2520 PRINT "Calculated Cv is :";CV 2530 IF INKEY$="" THEN 2530 2540 RETURN 400 2550 'Pc and Tc rotine 2560 SCREEN 0,0,0:CLS 2570 LOCATE 1,1:PRINT "Identify your fluid from this list and remember its serial #" 2580 PRINT :PRINT ,"SERIAL #","COMPOUND" 2590 FOR I=1 TO 38 STEP 1 2600 PRINT ,I,CD$(I) 2610 IF I=20 THEN 2620 ELSE 2660 2620 IF INKEY$="" THEN 2620 2630 CLS 2640 LOCATE 1,1:PRINT "Identify your fluid from this list and remember its serial #" 2650 PRINT :PRINT ,"SERIAL #","COMPOUND" 2660 NEXT 2670 IF INKEY$="" THEN 2670 2680 LOCATE 23,10:INPUT "Enter the serial # of your compound(0 for unidentified):";NO 2690 IF NO>=1 AND NO =<38 THEN 2710 2700 IF NO=0 THEN 2790 ELSE 2680 2710 PC=PC(NO):TC=TC(NO) 2720 CLS 2730 LOCATE 5,10:INPUT "Enter the inlet temperature(Deg C) :";TI 2740 LOCATE 6,10:INPUT "Enter the inlet pressure (bars a) :";PI 2750 TR=(TI+273)/(TC+273):PR=PI/PC 2760 LOCATE 10,25:PRINT "The reduced temperature is :"TR 2770 LOCATE 12,25 :PRINT "The reduced pressure is :"PR 2780 IF INKEY$="" THEN 2780 2790 RETURN 2800 'routine to calculate delta P for cc=2 2810 GOSUB 7050 2820 IF SER=1 THEN GOSUB 2870 2830 IF SER=2 THEN GOSUB 3480 2840 IF SER=3 THEN GOSUB 4230 2850 IF SER=4 THEN GOSUB 4540 2860 GOTO 2810 2870 'routine to cal. delta P for Liquid service 2880 'Cv=1.16*Q*û(Gf/Del P):Del P=(1.16*Q/Cv)^2*Gf 2890 CLS:PRINT :INPUT "Enter the Liquid flow rate(Nm3/Hr) :";FL 2900 INPUT "Enter the Valve Coefficient(Cv) :";CV 2910 INPUT "Enter the specific gravity of the liquid:";GF 2920 INPUT "Enter the upstream pressre :";P1 2930 LOCATE 6,1:INPUT "Do you know the factor Cf (y/Y/n/N) :";ANS$ 2940 IF ANS$="y" OR ANS$="Y" THEN 2970 2950 IF ANS$="n" OR ANS$="N" THEN 2980 2960 GOTO 2930 2970 INPUT "Enter the factor Cf here :";CF:GOTO 3050 2980 LOCATE 15,10:PRINT ,"Press any key to see the list for Cf" 2990 IF INKEY$="" THEN 2990 3000 GOSUB 6820 3010 PRINT "Enter the Valve Coefficient(Cv) :";CV 3020 PRINT "Enter the specific gravity of the liquid:";GF 3030 PRINT "Enter the upstream pressre :";P1 3040 INPUT "Enter the factor Cf here :";CF 3050 DELP=((1.16*FL/CV)^2)*GF 3060 GOSUB 6670 'Criticality 3070 CLS 3080 LOCATE 1,15:PRINT "Routine to calculate Cv for Liquid service" 3090 LOCATE 3,35:PRINT "Data Given" 3100 LOCATE 5,15:PRINT "1. Liquid flow rate :";FL;"Nm3/hr" 3110 LOCATE 6,15:PRINT "2. Valve coefficient(Cv) :";CV 3120 LOCATE 7,15:PRINT "3. Specific gravity :";GF 3130 LOCATE 8,15:PRINT "4. Upstream pressure :";P1;"bars a" 3140 LOCATE 9,15:PRINT "5. Factor Cf :";CF 3150 IF CCH=2 THEN 3160 ELSE 3180 3160 LOCATE 10,15:PRINT "6. Line size :";LS;"in." 3170 LOCATE 11,15:PRINT "7. Valve size :";VS;"in." 3180 LOCATE 13,35:PRINT "Results" 3190 IF CR=1 THEN 3220 ELSE 3200 3200 DUMMY=(CF^2)*DELPS 3210 LOCATE 15,1:PRINT "Delta P is ";DELP;"bars, whereas Cf2*delta Ps is ";DUMMY;"bars":PRINT "SO, THE FLOW IS CRITICAL AND HENCE THE PRESSURE DROP CAN NOT BE CALCULATED":GOTO 3240 3220 DELP=((1.16*FL/CV)^2)*GF 3230 LOCATE 15,10:PRINT "The flow is sub-critical":LOCATE 16,10:PRINT"Calculated pressure drop is :";DELP 3240 LOCATE 18,10:INPUT "Want to print(p/P) the results on printer or continue(c/C)";ANS$ 3250 IF ANS$="P" OR ANS$="p" THEN 3280 3260 IF ANS$="c" OR ANS$="C" THEN 3470 3270 GOTO 3240 3280 LOCATE 20,26:PRINT "Printing...." 3290 LPRINT "Date :";DATE$ 3300 LPRINT "Time :";TIME$:LPRINT 3310 LPRINT " Routine to calculate Pressure Drop for Liquid service":LPRINT:LPRINT 3320 LPRINT " Data Given":LPRINT 3330 LPRINT "1. Liquid flow rate :";FL;"Nm3/hr" 3340 LPRINT "2. Valve coefficient(Cv) :";CV 3350 LPRINT "3. Specific gravity :";GF 3360 LPRINT "4. Upstream pressure :";P1;"bars a" 3370 LPRINT "5. Factor Cf :";CF 3380 IF CCH=2 THEN 3390 ELSE 3410 3390 LPRINT "6. Line size :";LS;"in." 3400 LPRINT "7. Valve size :";VS;"in." 3410 LPRINT :LPRINT " Results":LPRINT 3420 IF CR=1 THEN 3450 ELSE 3430 3430 LPRINT "Delta P is ";DELP;"bars, whereas Cf2*delta Ps is ";DUMMY;"bars":LPRINT "SO, THE FLOW IS CRITICAL AND HENCE THE PRESSURE DROP CAN NOT BE CALCULATED":GOTO 3460 3440 LOCATE 9,15:PRINT "5. Factor Cf :";CF 3450 LPRINT "The flow is sub-critical":LPRINT"Calculated pressure drop is :";DELP 3460 FOR I=1 TO 20000:NEXT 3470 RETURN 400 3480 'Routine to cal delta P for Gas service 3490 CLS:'CV=(Q/295)*(Gf*(T+273)*Z/(DELPG*(2*P1-delpg)))^1/2 3500 PRINT "Enter the following data :" 3510 INPUT "1. Flow Rate(Nm3/hr) :";FLG 3520 INPUT "2. Upstream Pressure (bars abs) :";P1 3530 INPUT "3. Valve coefficient (Cv) :";CV 3540 INPUT "5. Specific gravity of the vapour/gas:";GFG 3550 INPUT "6. Operating temperature(Deg C) :";T 3560 LOCATE 7,1 :INPUT "Do you know the factor Cf (y/Y/n/N) :";ANS$ 3570 IF ANS$="y" OR ANS$="Y" THEN 3600 3580 IF ANS$="n" OR ANS$="N" THEN 3610 3590 GOTO 3560 3600 INPUT "7. Enter the factor Cf here :";CF:GOTO 3700 3610 LOCATE 15,10:PRINT ,"Press any key to see the list for Cf" 3620 IF INKEY$="" THEN 3620 3630 GOSUB 6820 3640 PRINT "1. Flow Rate(Nm3/hr) :";FLG 3650 PRINT "2. Upstream Pressure (bars abs) :";P1 3660 PRINT "3. Valve coefficient (Cv) :";CV 3670 PRINT "5. Specific gravity of the vapour/gas:";GFG 3680 PRINT "6. Operating temperature(Deg C) :";T 3690 INPUT "7. Enter the factor Cf here :";CF 3700 PRINT "8. Compressibility factor Z :" 3710 LOCATE 15,5:INPUT "Do U 'no Z(y/Y or n/N)";ANS$ 3720 IF ANS$="y" OR ANS$="Y" THEN 3730 ELSE 3740 3730 INPUT "Enter Comressibility factor here :";Z:GOTO 3770 3740 IF ANS$="n" OR ANS$="N" THEN 3750 ELSE 3710 3750 GOSUB 2560 3760 INPUT "Enter your Z here :";Z 3770 A=1 3780 B=-2*P1 3790 C=GFG*(273+T)*Z*(FLG/295/CV)^2 3800 D=((B^2)-4*A*C)^(1/2) 3810 IF D<0 THEN PRINT"Data fed not appropriate - Re-enter the correct data":WAIT 10,1:GOTO 400 3820 DELPG1=(-B+D)/(2*A) 3830 DELPG2=(-B-D)/(2*A) 3840 IF DELPG1<0 THEN 3850 ELSE 3860 3850 PRINT "Data fed not appropriate - The pressure drop is coming as negative":WAIT 10,1:GOTO 400 3860 IF DELPG1>P1 AND DELPG2>P1 THEN 3870 ELSE 3880 3870 LOCATE 20,20:PRINT "Data fed is absurd":IF INKEY$="" THEN 3870 ELSE 4220 3880 IF DELPG1<0 AND DELPG2<0 THEN 3890 ELSE 3900 3890 LOCATE 20,20:PRINT "Data fed is absurd":IF INKEY$="" THEN 3890 ELSE 4220 3900 IF DELPG1>0 AND DELPG2>0 AND DELPG1P1 THEN 3920 ELSE 3950 3920 DELPG=DELPG2:TAG=1 3930 IF DELPG2<0 THEN 3940 ELSE 3980 3940 PRINT "Data fed is absurd":SOUND 32767,90:GOTO 4220 3950 IF DELPG2>P1 THEN DELPG=DELPG1:TAG=2 3960 IF DELPG1<0 THEN 3970 ELSE 3980 3970 PRINT "Absurd data":GOTO 4220 3980 GOSUB 6970:GOTO 4060 'criticality 3990 STAT=1:DELPG=DELPG1 4000 PRINT "The two roots of the pressure drop equation are:" 4010 PRINT "Delta P1 :";DELPG1 4020 PRINT"Delta P2 :";DELPG2 4030 GOTO 4060 4040 STAT=2:DELG=DELPG2 4050 GOSUB 6970:STAT=3 4060 IF CR=1 THEN PRINT "The flow is sub-critical":GOTO 4130 4070 IF CR=2 THEN PRINT "The flow is critical":GOTO 4080 4080 DUMMY=.5*P1*(CF^2) 4090 IF STAT=1 OR STAT=2 THEN PRINT "Delta P for delta P1 is ";DELPG;"bars, whereas .5*(Cf^)2*P1 is ";DUMMY;"bars":PRINT "SO, THE FLOW IS CRITICAL AND HENCE THE PRESSURE DROP CAN NOT BE CALCULATED":GOTO 4200 4100 IF TAG=1 THEN PRINT "Delta P is ";DELPG2;"bars, whereas .5*(Cf^)2*P1 is ";DUMMY;"bars":PRINT "SO, THE FLOW IS CRITICAL AND HENCE THE PRESSURE DROP CAN NOT BE CALCULATED":GOTO 4210 4110 IF TAG=2 THEN PRINT "Delta P is ";DELPG1;"bars, whereas .5*(Cf^)2*P1 is ";DUMMY;"bars":PRINT "SO, THE FLOW IS CRITICAL AND HENCE THE PRESSURE DROP CAN NOT BE CALCULATED":GOTO 4210 4120 PRINT "Delta P is ";DELPG;"bars, whereas .5*(Cf^)2*P1 is ";DUMMY;"bars":PRINT "SO, THE FLOW IS CRITICAL AND HENCE THE PRESSURE DROP CAN NOT BE CALCULATED":GOTO 4210 4130 C=((FLG/(295*CV))^2)*GFG*(T+273)*Z 4140 DELPG1=(-B+D)/(2*A) 4150 DELPG2=(-B-D)/(2*A) 4160 IF STAT=1 OR STAT=2 THEN PRINT "Calculated pressure drop for Delta P2 is :";DELPG1;"bars & ";DELPG2;"bars":GOTO 4200 4170 IF TAG=1 THEN PRINT "Pressure drop is :"DELPG2:GOTO 4200 4180 IF TAG=2 THEN PRINT "Pressure drop is :"DELPG1:GOTO 4200 4190 PRINT "Calculated pressure drop :";DELPG1;"bars & ";DELPG2;"bars" 4200 IF STAT =1 THEN 4040 4210 IF INKEY$="" THEN 4210 ELSE 4220 4220 RETURN 400 4230 'routine for deltaP for sat steam 4240 CLS 4250 PRINT " Subroutine to calculate Pressure Drop for saturated steam" 4260 PRINT :PRINT:PRINT 4270 PRINT "Enter the following data :":PRINT 4280 INPUT "1. Flow Rate( Kg/hr) :";W:W=W/1000 4290 INPUT "2. Upstream Pressure (bars abs) :";P1 4300 INPUT "3. Control Valve coefficient, Cv :";CV 4310 INPUT "4. Factor Cf :";CF 4320 K1=83.7*W/(CV*CF*P1):K2=1/.148:K3=K1/.148 4330 GOSUB 7390 'bisection method 4340 Y=ROOT 4350 IF ROOT < 0 THEN 4360 ELSE 4390 4360 PRINT :PRINT "The root is coming as negative, hence the data fed is wrong" 4370 IF INKEY$="" THEN 4370 4380 RETURN 400 4390 INPUT "Does your valve belong to any of 77000 or LO-DB cartridges or 2-stages 41000 or 72000 series (Y/N) :";ANS$ 4400 IF ANS$="y" OR ANS$="Y" THEN 4410 ELSE 4420 4410 DELP=((Y*CF)^2)*P1/(1.4*1.4):GOTO 4430 4420 DELP=((Y*CF)^2)*P1/(1.63*1.63) 4430 CLS 4440 PRINT " Subroutine to calculate Pressure Drop for saturated steam" 4450 PRINT :PRINT:PRINT 4460 PRINT "1. Flow Rate( Kg/hr) :";W*1000 4470 PRINT "2. Upstream Pressure (bars abs) :";P1 4480 PRINT "3. Control Valve coefficient, Cv :";CV 4490 PRINT "4. Factor Cf :";CF 4500 PRINT :PRINT 4510 PRINT " Calculated Pressure drop is :";DELP;"bars" 4520 IF INKEY$="" THEN 4520 4530 RETURN 4540 'routine for deltaP for superheated steam 4550 CLS 4560 PRINT " Subroutine to calculate Pressure Drop for superheated steam" 4570 PRINT :PRINT:PRINT 4580 PRINT "Enter the following data :":PRINT 4590 INPUT "1. Flow Rate( Kg/hr) :";W:W=W/1000 4600 INPUT "2. Upstream Pressure (bars abs) :";P1 4610 INPUT "3. Control Valve coefficient, Cv :";CV 4620 INPUT "4. Factor Cf :";CF 4630 INPUT "5. Degree of Superheat (øC) :";TSH 4640 K1=83.7*W*(1+.00126*TSH)/(CV*CF*P1):K2=1/.148:K3=K1/.148 4650 GOSUB 7390 4660 Y=ROOT 4670 IF ROOT < 0 THEN 4680 ELSE 4710 4680 PRINT :PRINT "The root is coming as negative, hence the data fed is wrong" 4690 IF INKEY$="" THEN 4690 4700 RETURN 400 4710 INPUT "Does your valve belong to any of 77000 or LO-DB cartridges or 2-stages 41000 or 72000 series (Y/N) :";ANS$ 4720 IF ANS$="y" OR ANS$="Y" THEN 4730 ELSE 4740 4730 DELP=((Y*CF)^2)*P1/(1.4*1.4):GOTO 4750 4740 DELP=((Y*CF)^2)*P1/(1.63*1.63) 4750 CLS 4760 PRINT " Subroutine to calculate Pressure Drop for superheated steam" 4770 PRINT :PRINT:PRINT 4780 PRINT "1. Flow Rate( Kg/hr) :";W 4790 PRINT "2. Upstream Pressure (bars abs) :";P1 4800 PRINT "3. Control Valve coefficient, Cv :";CV 4810 PRINT "4. Factor Cf :";CF 4820 PRINT "5. Degree of Superheat (øC) :";TSH 4830 PRINT 4840 PRINT " Calculated Pressure drop is :";DELP;"bars" 4850 IF INKEY$="" THEN 4850 4860 RETURN 4870 'routine to calcualte Flow rate for cc=3 4880 GOSUB 7050 4890 IF SER=1 THEN GOSUB 4940 4900 IF SER=2 THEN GOSUB 5510 4910 IF SER=3 THEN GOSUB 6280 4920 IF SER=4 THEN GOSUB 6460 4930 GOTO 590 4940 CLS:INPUT "Enter the valve coefficient Cv :";CV 4950 INPUT "Enter the Pressure drop here :";DELP 4960 INPUT "Enter the Specific gravity Gf :";GF 4970 INPUT "Enter the upstream pressure :";P1 4980 LOCATE 7,1 :INPUT "Do you know the factor Cf (y/Y/n/N) :";ANS$ 4990 IF ANS$="y" OR ANS$="Y" THEN 5020 5000 IF ANS$="n" OR ANS$="N" THEN 5030 5010 GOTO 4980 5020 INPUT "Enter the factor Cf here :";CF:GOTO 5100 5030 LOCATE 15,10:PRINT ,"Press any key to see the list for Cf" 5040 IF INKEY$="" THEN 5040 5050 GOSUB 6820 'cf routine 5060 PRINT "Enter the Pressure drop here :";DELP 5070 PRINT "Enter the Specific gravity Gf :";GF 5080 PRINT "Enter the upstream pressure :";P1 5090 INPUT "Enter the factor cf :";CF 5100 GOSUB 6670 'criticality 5110 CLS 5120 LOCATE 1,15:PRINT "Routine to calculate Cv for Liquid service" 5130 LOCATE 3,35:PRINT "Data Given" 5140 LOCATE 5,15:PRINT "1. Valve coefficient(Cv) :";CV 5150 LOCATE 6,15:PRINT "2. Pressure drop :";DELP;"bars" 5160 LOCATE 7,15:PRINT "3. Specific gravity :";GF 5170 LOCATE 8,15:PRINT "4. Upstream pressure :";P1;"bars a" 5180 LOCATE 9,15:PRINT "5. Factor Cf :";CF 5190 IF CCH=2 THEN 5200 ELSE 5220 5200 LOCATE 10,15:PRINT "6. Line size :";LS;"in." 5210 LOCATE 11,15:PRINT "7. Valve size :";VS;"in." 5220 LOCATE 13,35:PRINT "Results" 5230 IF CR=1 THEN LOCATE 15,15:PRINT "The flow is sub-critical":GOTO 5250 5240 IF CR=2 THEN LOCATE 15,15:PRINT "The flow is critical":GOTO 5260 5250 Q=(CV/1.16)*((DELP/GF)^(1/2)):GOTO 5270 5260 Q=(CV*CF/1.16)*((DELPS/GF)^(1/2)) 5270 LOCATE 16,15:PRINT"Calculated flow rate is :";Q;"Nm3/hr" 5280 LOCATE 18,10:INPUT "Want to print(p/P) the results on printer or continue(c/C)";ANS$ 5290 IF ANS$="P" OR ANS$="p" THEN 5320 5300 IF ANS$="c" OR ANS$="C" THEN 5500 5310 GOTO 5280 5320 LOCATE 20,26:PRINT "Printing...." 5330 LPRINT "Date :";DATE$ 5340 LPRINT "Time :";TIME$ 5350 LPRINT " Routine to calculate Pressure Drop for Liquid service":LPRINT:LPRINT 5360 LPRINT " Data Given":LPRINT 5370 LPRINT "1. Valve coefficient(Cv) :";CV 5380 LPRINT "2. Pressure drop :";DELP;"bars" 5390 LPRINT "3. Specific gravity :";GF 5400 LPRINT "4. Upstream pressure :";P1;"bars a" 5410 LPRINT "5. Factor Cf :";CF 5420 IF CCH=2 THEN 5430 ELSE 5450 5430 LPRINT "6. Line size :";LS;"in." 5440 LPRINT "7. Valve size :";VS;"in." 5450 LPRINT :LPRINT " Results":LPRINT 5460 IF CR=1 THEN LPRINT "The flow is sub-critical":GOTO 5480 5470 IF CR=2 THEN LPRINT "The flow is critical" 5480 LPRINT"Calculated flow rate is :";Q;"Nm3/hr" 5490 FOR I=1 TO 20000:NEXT 5500 RETURN 400 5510 'routine to calcualte flow rate for gas service 5520 CLS:'GOSUB 2060 'Cf routine 5530 INPUT "1. Enter the valve coefficient cv :";CV 5540 INPUT "2. Upstream Pressure (bars abs) :";P1 5550 INPUT "3. Downstream Pressure (bars abs) :";P2 5560 INPUT "4. Delta P (bars) :";DELPG 5570 INPUT "5. Specific gravity of the vapour/gas:";GFG 5580 INPUT "6. Operating temperature(Deg C) :";T 5590 LOCATE 7,1 :INPUT "Do you know the factor Cf (y/Y/n/N) :";ANS$ 5600 IF ANS$="y" OR ANS$="Y" THEN 5630 5610 IF ANS$="n" OR ANS$="N" THEN 5640 5620 GOTO 5590 5630 INPUT "7. Enter the factor Cf here :";CF:GOTO 5740 5640 LOCATE 20,14:PRINT ,"Press any key to see the list for Cf" 5650 IF INKEY$="" THEN 5650 5660 GOSUB 6820 5670 PRINT "1. Enter the valve coefficient cv :";CV 5680 PRINT "2. Upstream Pressure (bars abs) :";P1 5690 PRINT "3. Downstream Pressure (bars abs) :";P2 5700 PRINT "4. Delta P (bars) :";DELPG 5710 PRINT "5. Specific gravity of the vapour/gas:";GFG 5720 PRINT "6. Operating temperature(Deg C) :";T 5730 INPUT "7. Now, Enter the factor Cf here :";CF 5740 PRINT "8. Compressibility factor Z :" 5750 LOCATE 13,20:INPUT "Do U 'no Z(y/Y or n/N)";ANS$ 5760 IF ANS$="y" OR ANS$="Y" THEN 5770 ELSE 5780 5770 LOCATE 9,1:INPUT "8. Enter Comressibility factor here :";Z:GOTO 5810 5780 IF ANS$="n" OR ANS$="N" THEN 5790 ELSE 5750 5790 GOSUB 2560 5800 INPUT "ENTER Z HERE :";Z 5810 GOSUB 6970 'criticality 5820 CLS 5830 LOCATE 1,15:PRINT "Routine to calculate Flow rate for Gas service" 5840 LOCATE 3,35:PRINT "Data Given" 5850 LOCATE 5,15:PRINT "1. Valve coefficient(Cv) :";CV 5860 LOCATE 6,15:PRINT "2. Upstream pressure :";P1;"bars a" 5870 LOCATE 7,15:PRINT "3. Downstream pressure :";P2;"bars a" 5880 LOCATE 8,15:PRINT "4. Pressure drop :";DELPG;"bars" 5890 LOCATE 9,15:PRINT "5. Specific gravity :";GFG 5900 LOCATE 10,15:PRINT "6. Operating Temp. :";T;"deg C" 5910 LOCATE 11,15:PRINT "7. Factor Cf :";CF 5920 LOCATE 12,15:PRINT "8. Compressibility factor :";Z 5930 IF CCH=2 THEN 5940 ELSE 5960 5940 LOCATE 13,15:PRINT "9. Line size :";LS;"in." 5950 LOCATE 14,15:PRINT "10.Valve size :";VS;"in." 5960 LOCATE 16,35:PRINT "Results" 5970 IF CR=1 THEN LOCATE 18,15:PRINT "The flow is sub-critical":GOTO 5990 5980 IF CR=2 THEN LOCATE 18,15:PRINT "The flow is critical":GOTO 6000 5990 Q=CV*295*(DELPG*(P1+P2)/(GFG*(T+273)*Z))^(1/2):GOTO 6010 6000 Q=257*CV*CF*P1/(GFG*(T+273)*Z)^(1/2) 6010 LOCATE 19,15:PRINT "Calculated flow rate is :";Q;"Nm3/hr" 6020 LOCATE 21,10:INPUT "Want to print(p/P) the results or continue(c/C):";ANS$ 6030 IF ANS$="p" OR ANS$="P" THEN 6060 6040 IF ANS$="c" OR ANS$="C" THEN 6270 6050 GOTO 6020 6060 LOCATE 22,26:PRINT "Printing...." 6070 LPRINT "Date :";DATE$ 6080 LPRINT "Time :";TIME$:LPRINT 6090 LPRINT " Routine to calculate Flow Rate for Gas service":LPRINT 6100 LPRINT " Data Given":LPRINT 6110 LPRINT "1. Valve coefficient(Cv) :";CV 6120 LPRINT "2. Upstream pressure :";P1;"bars a" 6130 LPRINT "3. Downstream pressure :";P2;"bars a" 6140 LPRINT "4. Pressure drop :";DELPG;"bars" 6150 LPRINT "5. Specific gravity :";GFG 6160 LPRINT "6. Operating Temp. :";T;"deg C" 6170 LPRINT "7. Factor Cf :";CF 6180 LPRINT "8. Compressibility factor :";Z 6190 IF CCH=2 THEN 6200 ELSE 6220 6200 LPRINT "9. Line size :";LS;"in." 6210 LPRINT "10.Valve size :";VS;"in." 6220 LPRINT:LPRINT " Results" :LPRINT 6230 IF CR=1 THEN LPRINT "The flow is sub-critical":GOTO 6250 6240 IF CR=2 THEN LPRINT "The flow is critical" 6250 LPRINT "Calculated flow rate is :";Q;"Nm3/hr" 6260 FOR I=1 TO 20000:NEXT 6270 RETURN 400 6280 'routine to calculate flow for sat. steam 6290 CLS 6300 PRINT " Subroutine to calculate Flow Rate for saturated steam" 6310 PRINT :PRINT :PRINT 6320 INPUT "1. Enter the Cv of the Valve :";CV 6330 INPUT "2. Upstream Pressure (bars abs) :";P1 6340 INPUT "3. Downstream Pressure (bars abs) :";P2 6350 DELPG=P1-P2 'INPUT "4. Delta P (bars) :";DELPG 6360 W=CV*SQR(DELPG*(P1+P2))/72.4 6370 CLS 6380 PRINT :PRINT :PRINT 6390 PRINT "1. Enter the Cv of the Valve :";CV 6400 PRINT "2. Upstream Pressure (bars abs) :";P1 6410 PRINT "3. Downstream Pressure (bars abs) :";P2 6420 PRINT :PRINT :PRINT 6430 PRINT "Calculated flow rate is (Kg/hr) :";W*1000 6440 IF INKEY$="" THEN 6440 6450 RETURN 400 6460 'routine to cal flow for superheated steam 6470 CLS 6480 PRINT " Subroutine to calculate Flow Rate for superheated steam" 6490 PRINT :PRINT :PRINT 6500 INPUT "1. Enter the Cv of the Valve :";CV 6510 INPUT "2. Upstream Pressure (bars abs) :";P1 6520 INPUT "3. Downstream Pressure (bars abs) :";P2 6530 INPUT "4. Enter the degree of superheat (øC):";TSH 6540 DELPG=P1-P2 'INPUT "4. Delta P (bars) :";DELPG 6550 W=CV*SQR(DELPG*(P1+P2))/(72.4*(1+.00126*TSH)) 6560 CLS 6570 PRINT " Subroutine to calculate Flow Rate for superheated steam" 6580 PRINT :PRINT :PRINT 6590 PRINT "1. Enter the Cv of the Valve :";CV 6600 PRINT "2. Upstream Pressure (bars abs) :";P1 6610 PRINT "3. Downstream Pressure (bars abs) :";P2 6620 PRINT "4. Degree of superheat (øC) :";TSH 6630 PRINT :PRINT :PRINT 6640 PRINT "Calculated flow rate is (Kg/hr) :";W*1000 6650 IF INKEY$="" THEN 6440 6660 RETURN 400 6670 'routine for liquid flow criticality check 6680 INPUT "Enter the vapour pressure at the operating temperature :";VP 6690 INPUT "Enter the critical pressure for the operating fluid :";PC 6700 DELPS=P1-((.96-(.28*(VP/PC)^(1/2))))*VP 6710 IF DELPS <=0 THEN 6720 ELSE 6760 6720 CLS:LOCATE 10,30:PRINT "The data fed is absurd" 6730 LOCATE 20,15:PRINT "P R E S S A N Y K E Y T O M O V E A H E A D" 6740 IF INKEY$="" THEN 6740 6750 RETURN 400 6760 DUMMY=CF^2*DELPS 6770 IF DELP >=DUMMY THEN CR=2 ELSE CR=1 6780 LOCATE 20,20:PRINT "Press any KEY to move ahead" 6790 IF INKEY$="" THEN 6790 6800 GOSUB 7120 'Reducer 6810 RETURN 6820 'Cf routine 6830 CLS:SCREEN 0,0,0 6840 PRINT ," Table for identifying the factor Cf":PRINT 6850 PRINT ,"SERIES","TRIM","FLOW TO"," ";"Cf" 6860 FOR I=1 TO 37 STEP 1 6870 PRINT ,SS$(I),TRIM$(I),FLOW$(I)," ";CF$(I) 6880 IF I=20 THEN 6890 ELSE 6930 6890 IF INKEY$="" THEN 6890 6900 CLS 6910 PRINT ," Table for identifying the factor Cf (contd.) ":PRINT 6920 PRINT ,"SERIES","TRIM","FLOW TO"," ";"Cf" 6930 NEXT 6940 IF INKEY$="" THEN 6940 6950 CLS 6960 RETURN 6970 'routine for gas flow criticality check 6980 DUMMY=.5*((CF)^2)*P1 6990 IF DELPG>=DUMMY THEN CR=2 ELSE CR=1 7000 LOCATE 20,20:PRINT "Press any KEY to move ahead" 7010 IF INKEY$="" THEN 7010 7020 GOSUB 7120 'Reducer 7030 RETURN 7040 'routine for Sevice selection 7050 CLS:SCREEN 0,0,0:PRINT :PRINT 7060 PRINT,"Whether the service is : 1. Liquid" 7070 PRINT," : 2. Gas or Vapor" 7080 PRINT," : 3. Saturated Steam " 7090 PRINT," : 4. Superheated Steam" 7100 LOCATE 15,10:INPUT "Enter the Service Code :";SER 7110 RETURN 7120 'routine for reducer correction 7130 CLS 7140 LOCATE 2,15:PRINT "Your valve installation could be of the following types:" 7150 LOCATE 4,10:PRINT "1. Line size installation" 7160 LOCATE 5,10:PRINT "2. Using inlet and outlet reducers" 7170 LOCATE 10,15:INPUT "Indicate your installation type :";CCH 7180 IF CCH=1 THEN RETURN 7190 IF CCH=2 THEN 7210 7200 GOTO 7170 7210 LOCATE 12,10:INPUT "Enter the Line size(in.) :";LS 7220 LOCATE 13,10 :INPUT "Enter the valve size(In.):";VS 7230 IF CR=1 THEN 7250 7240 IF CR=2 THEN 7270 7250 R=(1-(1.5*(1-(VS/LS)^2)*(CV/(30*VS^2))^2))^(1/2) 7260 CV=CV/R:GOTO 7290 7270 CFR=((1/CF^2)+((CV/(30*VS^2))^2)*(1-(VS/LS)^4))^(-1/2) 7280 CF=CFR 7290 RETURN 7300 DATA Acetic acid,Acetone,Acetylene,Air,Ammonia,Argon,Benzene,Butane,Carbon dioxide,Carbon Monoxide,Carbon Tetrachloride,Chlorine,Ethane,Ethyl alcohol,Ethylene,Ethyl ether,Fluorine,Helium,Heptane,Hydrogen,Hydrogen chloride,Isobutane,Isopropyl alcohol 7310 DATA Methane,Methyl alcohol,Nitrogen,Nitrous oxide,Octane,Oxygen,Pentane,Phenol,Phosgene,Propane,Propylene,refrigerant12,Refrigerant 22,Sulfur dioxide,Water 7320 DATA 58.0,47.6,62.9,37.8,113.0,48.6,48.4,36.5,74.0,35.5,45.6,77.0,49.5,64.0,51.2,36.0,25.3,2.29,27.2,13.0,82.6,37.5,53.7,46.4,79.6,34.0,72.7,25.0,50.4,33.5,61.3,56.7,42.6,45.6,40.1,49.2,78.8,221.0 7330 DATA 322,235,36,-141,132,-122,289,153,31,-139,283,144,32,243,10,195,-155,-268,267,-240,51,134,235,-83,240,-147,37,296,-119,197,419,182,97,92,112,97,157,374 7340 DATA Contoured,V-port,contoured,V-port, ,close,open,close,open, ,close,open,close,open, ,open,open, ,close,open,close,open, ,open, ,flow in,either direction, ,flow in,either direction, ,close,open,close,open, ,open 7350 DATA 0.90,0.98,0.80,0.95, ,0.85,0.90,0.80,0.90, ,0.80,0.75,0.80,0.80, ,0.87,0.87, ,0.68,0.85,0.70,0.88, ,0.60, ,0.65, , ,0.65, , ,0.90,0.90,0.94,0.94, ,0.94 7360 DATA 10000, , , , ,21000, , , , ,2600, , , , ,28000, , ,35002, ,35002, , ,36002, ,37002, , ,39002, , ,41000, , , , ,72000 7370 DATA A, ,B, , ,A, ,B, , ,A, ,B, , ,A,B, ,A, ,B, , ,A, ,A, , ,A, , ,1 1/2"-16",1 1/2"-16",1 1/2"-16",LO - DB, ,A 7380 KEY(15) ON:RETURN 7390 'Bisection Method 7400 DEF FNA(X)=(X^3)-K2*X+K3 7410 A=0:B=100: CTR=0 7420 FUNA=FNA(A):FUNB=FNA(B) 7430 IF FUNA=0 THEN ROOT=A:GOTO 7530 7440 IF FUNB=0 THEN ROOT=B:GOTO 7530 7450 IF FUNA >0 AND FUNB>0 THEN 7470 ELSE 7460 7460 IF FUNA<0 AND FUNB<0 THEN 7470 ELSE 7480 7470 B=B-1:GOTO 7420 7480 X1=(A+B)/2 7490 CTR=CTR+1 7500 FUNX1=FNA(X1) 7510 IF FUNX1<.01 AND FUNX1>-.01 THEN 7520 ELSE 7540 7520 ROOT=X1 7530 RETURN 7540 IF FUNA >0 AND FUNX1>0 THEN A=X1 7550 IF FUNA <0 AND FUNX1<0 THEN A=X1 7560 IF FUNB >0 AND FUNX1>0 THEN B=X1 7570 IF FUNB <0 AND FUNX1<0 THEN B=X1 7580 FUNA=FNA(A):FUNB=FNA(B):GOTO 7480