home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-387-Vol-3of3.iso
/
c
/
civil-ab.zip
/
MNDOTHYD.ZIP
/
TRAP.BAS
< prev
next >
Wrap
BASIC Source File
|
1985-09-18
|
9KB
|
258 lines
1 REM WRITTEN BY JOE LINN MODIFIED 11/24/80 MODIFIED FOR IBM PC 8/84
2 REM HYDRAULICS BY WALLY MARUSENKO
10 DIM A,A6,A7,A8,A9,B,C,D,D1,D2,D3,D4,D5,D6,E,E1,E2,E3,ET
20 DIM K,K1,K2,N,P,Q,Q2,R,R1,S,S1,S2,S3,S4,V,W,W5,X1,X2,X3,X4
30 DIM Y1,Y2,Y3,Y4,Z,Z0,Z1,Z2
40 PI=3.14159
50 DEF FNCOMM(ARG)=65535!-ARG
70 FORMFEED$=CHR$(12):WIDTH "lpt1:",120
80 PI=3.14159
90 FORMAT1$="DISCHARGE = ####### CFS MANNING'S N = ##.###"
91 FORMAT2$="SLOPE = ##.##### BASE WIDTH =#####.# FT"
92 FORMAT3$="LEFT SIDE SLOPE = ####.# RIGHT SIDE SLOPE =####.#"
93 FORMAT4$="NORMAL DEPTH = ####.## FT NORMAL VELOCITY = ####.## FPS"
94 FORMAT5$="STABLE D50 = #######.###"
95 FORMAT6$="CRITICAL DEPTH = ####.## FEET CRITICAL VELOCITY = ####.## FPS"
96 FORMAT7$="WET HYD STABLE"
97 FORMAT8$="PER RAD D50"
98 FORMAT9$="####.## #####.## #######.# #####.# ###.# ##.## ###.####"
99 FORMAT0$="####.## #####.## +######.# +#######.# ######.# #####.# ###.# ##.## ###.####"
110 ON ERROR GOTO 55000
120 CLS
130 CLOSE #1:INPUT "DO YOU WANT PRINTOUT ON (SCREEN=0 PRINTER=1 BOTH=2) ",Q9:IF Q9<>0 AND Q9<>1 AND Q9<>2 THEN 170
131 CLOSE #2:
135 NA$="scrn:":IF Q9=1 THEN NA$="Lpt1:":OPEN "O",#1,NA$:ELSE OPEN "O",#1,NA$
136 IF Q9=2 THEN OPEN "O",#2,"LPT1:"
140 PRINT #1,FORMFEED$
150 PRINT #1," "
155 IF Q9=2 THEN PRINT #2," "
160 PRINT #1," "
165 IF Q9=2 THEN PRINT #2," "
170 PRINT #1,TAB(14);"==================================================="
175 IF Q9=2 THEN PRINT #2,TAB(14);"==================================================="
180 PRINT #1,"############ NORMAL & CRITICAL DEPTHS FOR A TRAPAZOIDAL CHANNEL";
185 IF Q9=2 THEN PRINT #2,"############ NORMAL & CRITICAL DEPTHS FOR A TRAPAZOIDAL CHANNEL";
190 PRINT #1," #############"
195 IF Q9=2 THEN PRINT #2," #############"
200 PRINT #1,TAB(14);"=================================================="
205 IF Q9=2 THEN PRINT #2,TAB(14);"=================================================="
210 PRINT #1," "
215 IF Q9=2 THEN PRINT #2," "
230 PRINT #1," RUN DATE ";DATE$
235 IF Q9=2 THEN PRINT #2," "
240 PRINT #1," "
245 IF Q9=2 THEN PRINT #2," "
250 ON ERROR GOTO 55000
260 CLS
270 PRINT "NORMAL AND CRITICAL DEPTHS FOR A TRAPAZOIDAL CHANNEL"
280 PRINT
310 PRINT
320 PRINT "ENTER DISCHARGE,Q, IN CFS";
330 INPUT Q
340 PRINT "ENTER MANNINGS N";
350 INPUT N
360 PRINT "ENTER CHANNEL SLOPE, FEET/FEET.";
370 INPUT S
380 PRINT "ENTER BOTTOM WIDTH IN FEET";
390 INPUT B
400 PRINT "ENTER LEFT SIDE SLOPE, (X1):1";
410 INPUT X1
420 PRINT "ENTER RIGHT SIDE SLOPE, (X2):1";
430 INPUT X2
440 PRINT "IS DATA CORRECT? YES=0 NO=1";
450 INPUT A9
460 IF A9<1 THEN 480
470 GOTO 260
480 PRINT #1,"$$$$ INPUT DATA $$$$"
485 IF Q9=2 THEN PRINT #2,"$$$$ INPUT DATA $$$$"
490 PRINT #1,USING FORMAT1$;Q,N
495 IF Q9=2 THEN PRINT #2,USING FORMAT1$;Q,N
500 PRINT #1,USING FORMAT2$;S,B
505 IF Q9=2 THEN PRINT #2,USING FORMAT2$;S,B
510 PRINT #1,USING FORMAT3$;X1,X2
515 IF Q9=2 THEN PRINT #2,USING FORMAT3$;X1,X2
520 PRINT #1," "
525 IF Q9=2 THEN PRINT #2," "
530 Y1=8
540 Z=0
550 Z1=0
560 C=(1+X1^2)^.5+(1+X2^2)^.5
570 K2=1.486*S^.5/N
580 D=B+(X1+X2)*Y1/2
590 A=D*Y1
600 P=B+C*Y1
610 V=K2*(A/P)^.66667
620 Q2=V*A
630 Y2=Y1*(Q/Q2)^.55
640 Z=Z+1
650 IF ABS(Y1-Y2) <= .004 THEN 680
660 Y1=Y2
670 GOTO 580
680 PRINT #1,"///// OUTPUT /////"
690 GOTO 710
700 PRINT "ITERATIONS =";Z
710 PRINT #1,USING FORMAT4$;Y2,V
715 IF Q9=2 THEN PRINT #2,USING FORMAT4$;Y2,V
730 R=A/P
740 PRINT #1,USING FORMAT5$;(118*Q*(S^(13/6))*R/P)^(2/5)
745 IF Q9=2 THEN PRINT #2," "
750 K=Q^2/32.2
760 Z2=0
770 Y3=Y2
780 D=B+(X1+X2)*Y3/2
790 E=B+(X1+X2)*Y3
800 A=D*Y3
810 K1=A^3/E
820 Y4=Y3*(K/K1)^.25
830 Z2=Z2+1
840 IF ABS(Y4-Y3)<.004 THEN 870
850 Y3=Y4
860 GOTO 780
870 V=Q/A
880 PRINT #1," "
885 IF Q9=2 THEN PRINT #2," "
890 PRINT #1,USING FORMAT6$;Y4;V
895 IF Q9=2 THEN PRINT #2,USING FORMAT6$;Y4;V
900 R=A/P
910 PRINT #1,USING FORMAT5$;(118*Q*(S^(13/6))*R/P)^(2/5)
915 IF Q9=2 THEN PRINT #2," "
920 PRINT
940 PRINT "NEED WATER PROFILE? YES=0 NO=1";
950 INPUT A8
960 IF A8=1 THEN 2000
970 PRINT #1," "
975 IF Q9=2 THEN PRINT #2," "
980 PRINT #1,"####### WATER SURFACE PROFILE ####################### "
985 IF Q9=2 THEN PRINT #2,"####### WATER SURFACE PROFILE ####################### "
990 PRINT "ENTER INITIAL DEPTH";
1000 INPUT D1
1010 PRINT "ENTER FINAL DEPTH";
1020 INPUT D2
1030 PRINT "ENTER INCREMENT";
1040 INPUT D3
1050 PRINT "IS DATA CORRECT? YES=0 NO=1";
1060 INPUT A7
1070 IF A7<1 THEN 1090
1080 GOTO 990
1090 PRINT #1," "
1095 IF Q9=2 THEN PRINT #2," "
1100 PRINT #1,"$$$$ INPUT DATA $$$$"
1105 IF Q9=2 THEN PRINT #2,"$$$$ INPUT DATA $$$$"
1110 PRINT #1,TAB(4);"INITIAL DEPTH=";D1;"FINAL DEPTH=";D2;"INCREMENT=";D3
1115 IF Q9=2 THEN PRINT #2,TAB(4);"INITIAL DEPTH=";D1;"FINAL DEPTH=";D2;"INCREMENT=";D3
1120 PRINT #1," "
1125 IF Q9=2 THEN PRINT #2," "
1130 PRINT #1,"///// OUTPUT /////"
1135 IF Q9=2 THEN PRINT #2,"///// OUTPUT /////"
1140 D6=D2
1150 IF D1<D2 THEN 1180
1160 D4=-D3
1170 GOTO 1190
1180 D4=D3
1190 IF Y4>Y2 THEN 1390
1200 IF D1<Y2 THEN 1280
1210 IF D1>D2 THEN 1240
1220 PRINT "INTL-FINAL DEPTHS IN WRONG ORDER"
1230 GOTO 990
1240 PRINT #1,"AN M-1 CURVE, CONTROL IS DOWNSTREAM"
1245 IF Q9=2 THEN PRINT #2,"AN M-1 CURVE, CONTROL IS DOWNSTREAM"
1250 IF D2 >= Y2 THEN 1550
1260 D6=Y2
1270 GOTO 1550
1280 IF D1<Y4 THEN 1340
1290 IF D1>D2 THEN 1220
1300 PRINT #1,"AN M-2 CURVE, CONTROL IS DOWNSTREAM"
1305 IF Q9=2 THEN PRINT #2,"AN M-2 CURVE, CONTROL IS DOWNSTREAM"
1310 IF D2 <= Y2 THEN 1550
1320 D6=Y2
1330 GOTO 1550
1340 IF D1>D2 THEN 1220
1350 PRINT #1,"AN M-3 CURVE, CONTROL IS UPSTREAM"
1355 IF Q9=2 THEN PRINT #2,"AN M-3 CURVE, CONTROL IS UPSTREAM"
1360 IF D2 <= Y4 THEN 1550
1370 D6=Y4
1380 GOTO 1550
1390 IF D1<Y4 THEN 1450
1400 IF D1<D2 THEN 1220
1410 PRINT #1,"AN S-1 CURVE, CONTROL IS DOWNSTREAM"
1415 IF Q9=2 THEN PRINT #2,"AN S-1 CURVE, CONTROL IS DOWNSTREAM"
1420 IF D2 >= Y4 THEN 1550
1430 D6=Y4
1440 GOTO 1550
1450 IF D1<Y2 THEN 1510
1460 IF D1<D2 THEN 1220
1470 PRINT #1,"AN S-2 CURVE, CONTROL IS UPSTREAM"
1475 IF Q9=2 THEN PRINT #2,"AN S-2 CURVE, CONTROL IS UPSTREAM"
1480 IF D2 >= Y2 THEN 1550
1490 D6=Y2
1500 GOTO 1550
1510 IF D1>D2 THEN 1220
1520 PRINT #1,"AN S-3 CURVE, CONTROL IS UPSTREAM"
1525 IF Q9=2 THEN PRINT #2,"AN S-3 CURVE, CONTROL IS UPSTREAM"
1530 IF D2 <= Y2 THEN 1550
1540 D6=Y2
1550 PRINT #1," "
1555 IF Q9=2 THEN PRINT #2," "
1570 PRINT #1, " DEPTH VEL DELTA SUM OF WAT AREA WET HYD STABLE"
1575 IF Q9=2 THEN PRINT #2," DEPTH VEL DELTA SUM OF WAT AREA WET HYD STABLE"
1590 PRINT #1, " FEET FPS X FT X'S,FT SURF SQ FT PER RAD D50"
1595 IF Q9=2 THEN PRINT #2," FEET FPS X FT X'S,FT SURF SQ FT PER RAD D50"
1600 Z0=0
1610 X4=0
1620 D5=D1
1630 W5=B+(X1+X2)*D5
1640 A=(B+W5)/2*D5
1650 P=B+D5*C
1660 V=Q/A
1670 W=V^2/64.4
1680 E3=D5+W
1690 R=A/P
1700 S1=(V*N/1.486/R^.66667)^2
1710 Z0=Z0+1
1720 IF Z0>1 THEN 1820
1730 PRINT #1,USING FORMAT9$;D5;V,W5,A,P,R,(118*Q*(S^(13/6))*R/P)^(2/5)
1735 IF Q9=2 THEN PRINT #2,USING FORMAT9$;D5;V,W5,A,P,R,(118*Q*(S^(13/6))*R/P)^(2/5)
1740 S2=S1
1750 E1=E3
1760 D5=D5+D4
1770 IF D4<0 THEN 1800
1780 IF D5>D6 THEN 1890
1790 GOTO 1630
1800 IF D5<D6 THEN 1890
1810 GOTO 1630
1820 S3=(S2+S1)/2
1830 E2=E3-E1
1840 S4=S-S3
1850 X3=E2/S4
1860 X4=X4+X3
1870 PRINT #1,USING FORMAT0$;D5;V,X3,X4,W5,A,P,R,(118*Q*(S^(13/6))*R/P)^(2/5)
1875 IF Q9=2 THEN PRINT #2,USING FORMAT0$;D5;V,X3,X4,W5,A,P,R,(118*Q*(S^(13/6))*R/P)^(2/5)
1880 GOTO 1740
1890 IF D2=D6 THEN 1920
1900 PRINT #1,TAB(4);"DEPTH HAS INCREMENTED ACROSS NORMAL OR CRITICAL DEPTH"
1905 IF Q9=2 THEN PRINT #2,TAB(4);"DEPTH HAS INCREMENTED ACROSS NORMAL OR CRITICAL DEPTH"
1910 PRINT #1," "
1915 IF Q9=2 THEN PRINT #2," "
1920 PRINT #1," "
1925 IF Q9=2 THEN PRINT #2," "
1930 PRINT "TRY ANOTHER CURVE ? YES=0 NO=1";
1940 INPUT A6
1950 IF A6=0 THEN 990
1960 PRINT
1970 PRINT "COMPUTE ANOTHER CHANNEL? YES=0 NO=1";
1980 INPUT A6
1990 IF A6=0 THEN 130
2000 CHAIN "MENU"
55000 REM ************** ERROR TRAPING ROUTINE ****************************************************************************** '
55010 ET=ERR :EL=ERL
55020 PRINT:PRINT:PRINT
55030 IF ET=25 THEN PRINT"PRINTER IS NOT READY":GOTO 55070
55040 IF ET=24 THEN PRINT "PRINTER IS OUT OF PAPER. REPLACE PAPER ":GOTO 55070
55050 IF ET>=70 AND ET<=72 THEN PRINT"DISK ERROR < not ready , media error , etc. > ":PRINT"PRESS ANY KEY TO CONTINUE":GOTO 55080
55060 IF ET=53 THEN PRINT"MENU NOT ON DEFAULT DRIVE DISK":RESUME 55110:ELSE PRINT"ERROR # " ET " ON LINE # " EL:RESUME 55110
55070 PRINT "Turn on printer. Make sure 'ON LINE ' light is on.":PRINT:PRINT:PRINT "PRESS ANY KEY TO CONTINUE"
55080 AA$=INKEY$:IF AA$="" THEN 55080
55090 RESUME
55100 REM **********************************************************************
55110 ON ERROR GOTO 0:END