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 >
BASIC Source File  |  1985-09-18  |  9KB  |  258 lines

  1. 1    REM  WRITTEN BY JOE LINN MODIFIED 11/24/80 MODIFIED FOR IBM PC 8/84
  2. 2    REM  HYDRAULICS BY WALLY MARUSENKO
  3. 10   DIM A,A6,A7,A8,A9,B,C,D,D1,D2,D3,D4,D5,D6,E,E1,E2,E3,ET
  4. 20   DIM K,K1,K2,N,P,Q,Q2,R,R1,S,S1,S2,S3,S4,V,W,W5,X1,X2,X3,X4
  5. 30   DIM Y1,Y2,Y3,Y4,Z,Z0,Z1,Z2
  6. 40   PI=3.14159
  7. 50   DEF FNCOMM(ARG)=65535!-ARG
  8. 70   FORMFEED$=CHR$(12):WIDTH "lpt1:",120
  9. 80   PI=3.14159
  10. 90   FORMAT1$="DISCHARGE       =  ####### CFS   MANNING'S N      = ##.###"
  11. 91   FORMAT2$="SLOPE           = ##.#####       BASE WIDTH       =#####.# FT"
  12. 92   FORMAT3$="LEFT SIDE SLOPE = ####.#         RIGHT SIDE SLOPE =####.#"
  13. 93   FORMAT4$="NORMAL DEPTH    = ####.## FT         NORMAL VELOCITY   = ####.## FPS"
  14. 94   FORMAT5$="STABLE D50      =  #######.###"
  15. 95   FORMAT6$="CRITICAL DEPTH  = ####.## FEET       CRITICAL VELOCITY = ####.## FPS"
  16. 96   FORMAT7$="WET   HYD   STABLE"
  17. 97   FORMAT8$="PER   RAD      D50"
  18. 98   FORMAT9$="####.## #####.##                     #######.# #####.#  ###.# ##.## ###.####"
  19. 99   FORMAT0$="####.## #####.## +######.# +#######.# ######.# #####.#  ###.# ##.## ###.####"
  20. 110  ON ERROR GOTO 55000
  21. 120  CLS
  22. 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
  23. 131 CLOSE #2:
  24. 135 NA$="scrn:":IF Q9=1 THEN NA$="Lpt1:":OPEN "O",#1,NA$:ELSE OPEN "O",#1,NA$
  25. 136 IF Q9=2 THEN OPEN "O",#2,"LPT1:"
  26. 140 PRINT #1,FORMFEED$
  27. 150  PRINT #1," "
  28. 155 IF Q9=2 THEN PRINT #2," "
  29. 160  PRINT #1," "
  30. 165 IF Q9=2 THEN PRINT #2," "
  31. 170  PRINT #1,TAB(14);"==================================================="
  32. 175 IF Q9=2 THEN PRINT #2,TAB(14);"==================================================="
  33. 180  PRINT #1,"############ NORMAL  & CRITICAL DEPTHS FOR A TRAPAZOIDAL CHANNEL";
  34. 185 IF Q9=2 THEN PRINT #2,"############ NORMAL  & CRITICAL DEPTHS FOR A TRAPAZOIDAL CHANNEL";
  35. 190  PRINT #1," #############"
  36. 195 IF Q9=2 THEN PRINT #2," #############"
  37. 200  PRINT #1,TAB(14);"=================================================="
  38. 205 IF Q9=2 THEN PRINT #2,TAB(14);"=================================================="
  39. 210  PRINT #1," "
  40. 215 IF Q9=2 THEN PRINT #2," "
  41. 230  PRINT #1,"          RUN  DATE  ";DATE$
  42. 235 IF Q9=2 THEN PRINT #2," "
  43. 240  PRINT #1," "
  44. 245 IF Q9=2 THEN PRINT #2," "
  45. 250  ON ERROR GOTO 55000
  46. 260  CLS
  47. 270  PRINT "NORMAL AND CRITICAL DEPTHS FOR A TRAPAZOIDAL CHANNEL"
  48. 280  PRINT 
  49. 310  PRINT
  50. 320  PRINT "ENTER DISCHARGE,Q, IN CFS";
  51. 330  INPUT Q
  52. 340  PRINT "ENTER MANNINGS N";
  53. 350  INPUT N
  54. 360  PRINT "ENTER CHANNEL SLOPE, FEET/FEET.";
  55. 370  INPUT S
  56. 380  PRINT "ENTER BOTTOM WIDTH IN FEET";
  57. 390  INPUT B
  58. 400  PRINT "ENTER LEFT SIDE SLOPE, (X1):1";
  59. 410  INPUT X1
  60. 420  PRINT "ENTER RIGHT SIDE SLOPE, (X2):1";
  61. 430  INPUT X2
  62. 440  PRINT "IS DATA CORRECT?   YES=0 NO=1";
  63. 450  INPUT A9
  64. 460  IF A9<1 THEN 480
  65. 470  GOTO 260
  66. 480 PRINT #1,"$$$$ INPUT DATA $$$$"
  67. 485 IF Q9=2 THEN PRINT #2,"$$$$ INPUT DATA $$$$"
  68. 490  PRINT #1,USING FORMAT1$;Q,N
  69. 495 IF Q9=2 THEN PRINT #2,USING FORMAT1$;Q,N
  70. 500  PRINT #1,USING FORMAT2$;S,B
  71. 505 IF Q9=2 THEN PRINT #2,USING FORMAT2$;S,B
  72. 510  PRINT #1,USING FORMAT3$;X1,X2
  73. 515 IF Q9=2 THEN PRINT #2,USING FORMAT3$;X1,X2
  74. 520  PRINT #1," "
  75. 525 IF Q9=2 THEN PRINT #2," "
  76. 530  Y1=8
  77. 540  Z=0
  78. 550  Z1=0
  79. 560  C=(1+X1^2)^.5+(1+X2^2)^.5
  80. 570  K2=1.486*S^.5/N
  81. 580  D=B+(X1+X2)*Y1/2
  82. 590  A=D*Y1
  83. 600  P=B+C*Y1
  84. 610  V=K2*(A/P)^.66667
  85. 620  Q2=V*A
  86. 630  Y2=Y1*(Q/Q2)^.55
  87. 640  Z=Z+1
  88. 650  IF ABS(Y1-Y2) <= .004 THEN 680
  89. 660  Y1=Y2
  90. 670  GOTO 580
  91. 680  PRINT #1,"///// OUTPUT /////"
  92. 690  GOTO 710
  93. 700  PRINT "ITERATIONS      =";Z
  94. 710  PRINT #1,USING FORMAT4$;Y2,V
  95. 715 IF Q9=2 THEN PRINT #2,USING FORMAT4$;Y2,V
  96. 730  R=A/P
  97. 740  PRINT #1,USING FORMAT5$;(118*Q*(S^(13/6))*R/P)^(2/5)
  98. 745 IF Q9=2 THEN PRINT #2," "
  99. 750  K=Q^2/32.2
  100. 760  Z2=0
  101. 770  Y3=Y2
  102. 780  D=B+(X1+X2)*Y3/2
  103. 790  E=B+(X1+X2)*Y3
  104. 800  A=D*Y3
  105. 810  K1=A^3/E
  106. 820  Y4=Y3*(K/K1)^.25
  107. 830  Z2=Z2+1
  108. 840  IF ABS(Y4-Y3)<.004 THEN 870
  109. 850  Y3=Y4
  110. 860  GOTO 780
  111. 870  V=Q/A
  112. 880  PRINT #1," "
  113. 885 IF Q9=2 THEN PRINT #2," "
  114. 890  PRINT #1,USING FORMAT6$;Y4;V
  115. 895 IF Q9=2 THEN PRINT #2,USING FORMAT6$;Y4;V
  116. 900  R=A/P
  117. 910  PRINT #1,USING FORMAT5$;(118*Q*(S^(13/6))*R/P)^(2/5)
  118. 915 IF Q9=2 THEN PRINT #2," "
  119. 920  PRINT 
  120. 940  PRINT "NEED WATER PROFILE? YES=0 NO=1";
  121. 950  INPUT A8
  122. 960  IF A8=1 THEN 2000
  123. 970  PRINT #1," "
  124. 975 IF Q9=2 THEN PRINT #2," "
  125. 980  PRINT #1,"####### WATER SURFACE PROFILE #######################    "
  126. 985 IF Q9=2 THEN PRINT #2,"####### WATER SURFACE PROFILE #######################    "
  127. 990  PRINT "ENTER INITIAL  DEPTH";
  128. 1000 INPUT D1
  129. 1010 PRINT "ENTER FINAL DEPTH";
  130. 1020 INPUT D2
  131. 1030 PRINT "ENTER INCREMENT";
  132. 1040 INPUT D3
  133. 1050 PRINT "IS DATA CORRECT?  YES=0 NO=1";
  134. 1060 INPUT A7
  135. 1070 IF A7<1 THEN 1090
  136. 1080 GOTO 990
  137. 1090 PRINT #1," " 
  138. 1095 IF Q9=2 THEN PRINT #2," "
  139. 1100 PRINT #1,"$$$$ INPUT DATA $$$$"
  140. 1105 IF Q9=2 THEN PRINT #2,"$$$$ INPUT DATA $$$$"
  141. 1110 PRINT #1,TAB(4);"INITIAL DEPTH=";D1;"FINAL DEPTH=";D2;"INCREMENT=";D3
  142. 1115 IF Q9=2 THEN PRINT #2,TAB(4);"INITIAL DEPTH=";D1;"FINAL DEPTH=";D2;"INCREMENT=";D3
  143. 1120 PRINT #1," " 
  144. 1125 IF Q9=2 THEN PRINT #2," "
  145. 1130 PRINT #1,"///// OUTPUT /////"
  146. 1135 IF Q9=2 THEN PRINT #2,"///// OUTPUT /////"
  147. 1140 D6=D2
  148. 1150 IF D1<D2 THEN 1180
  149. 1160 D4=-D3
  150. 1170 GOTO 1190
  151. 1180 D4=D3
  152. 1190 IF Y4>Y2 THEN 1390
  153. 1200 IF D1<Y2 THEN 1280
  154. 1210 IF D1>D2 THEN 1240
  155. 1220 PRINT "INTL-FINAL DEPTHS IN WRONG ORDER"
  156. 1230 GOTO 990
  157. 1240 PRINT #1,"AN M-1 CURVE, CONTROL IS DOWNSTREAM"
  158. 1245 IF Q9=2 THEN PRINT #2,"AN M-1 CURVE, CONTROL IS DOWNSTREAM"
  159. 1250 IF D2 >= Y2 THEN 1550
  160. 1260 D6=Y2
  161. 1270 GOTO 1550
  162. 1280 IF D1<Y4 THEN 1340
  163. 1290 IF D1>D2 THEN 1220
  164. 1300 PRINT #1,"AN M-2 CURVE, CONTROL IS DOWNSTREAM"
  165. 1305 IF Q9=2 THEN PRINT #2,"AN M-2 CURVE, CONTROL IS DOWNSTREAM"
  166. 1310 IF D2 <= Y2 THEN 1550
  167. 1320 D6=Y2
  168. 1330 GOTO 1550
  169. 1340 IF D1>D2 THEN 1220
  170. 1350 PRINT #1,"AN M-3 CURVE, CONTROL IS UPSTREAM"
  171. 1355 IF Q9=2 THEN PRINT #2,"AN M-3 CURVE, CONTROL IS UPSTREAM"
  172. 1360 IF D2 <= Y4 THEN 1550
  173. 1370 D6=Y4
  174. 1380 GOTO 1550
  175. 1390 IF D1<Y4 THEN 1450
  176. 1400 IF D1<D2 THEN 1220
  177. 1410 PRINT #1,"AN S-1 CURVE, CONTROL IS DOWNSTREAM"
  178. 1415 IF Q9=2 THEN PRINT #2,"AN S-1 CURVE, CONTROL IS DOWNSTREAM"
  179. 1420 IF D2 >= Y4 THEN 1550
  180. 1430 D6=Y4
  181. 1440 GOTO 1550
  182. 1450 IF D1<Y2 THEN 1510
  183. 1460 IF D1<D2 THEN 1220
  184. 1470 PRINT #1,"AN S-2 CURVE, CONTROL IS UPSTREAM"
  185. 1475 IF Q9=2 THEN PRINT #2,"AN S-2 CURVE, CONTROL IS UPSTREAM"
  186. 1480 IF D2 >= Y2 THEN 1550
  187. 1490 D6=Y2
  188. 1500 GOTO 1550
  189. 1510 IF D1>D2 THEN 1220
  190. 1520 PRINT #1,"AN S-3 CURVE, CONTROL IS UPSTREAM"
  191. 1525 IF Q9=2 THEN PRINT #2,"AN S-3 CURVE, CONTROL IS UPSTREAM"
  192. 1530 IF D2 <= Y2 THEN 1550
  193. 1540 D6=Y2
  194. 1550 PRINT #1," " 
  195. 1555 IF Q9=2 THEN PRINT #2," "
  196. 1570 PRINT #1, "  DEPTH      VEL     DELTA     SUM OF      WAT    AREA    WET   HYD   STABLE"
  197. 1575 IF Q9=2 THEN PRINT #2,"  DEPTH      VEL     DELTA     SUM OF      WAT    AREA    WET   HYD   STABLE"
  198. 1590 PRINT #1, "   FEET      FPS     X  FT     X'S,FT     SURF   SQ FT    PER   RAD      D50"
  199. 1595 IF Q9=2 THEN PRINT #2,"   FEET      FPS     X  FT     X'S,FT     SURF   SQ FT    PER   RAD      D50"
  200. 1600 Z0=0
  201. 1610 X4=0
  202. 1620 D5=D1
  203. 1630 W5=B+(X1+X2)*D5
  204. 1640 A=(B+W5)/2*D5
  205. 1650 P=B+D5*C
  206. 1660 V=Q/A
  207. 1670 W=V^2/64.4
  208. 1680 E3=D5+W
  209. 1690 R=A/P
  210. 1700 S1=(V*N/1.486/R^.66667)^2
  211. 1710 Z0=Z0+1
  212. 1720 IF Z0>1 THEN 1820
  213. 1730 PRINT #1,USING FORMAT9$;D5;V,W5,A,P,R,(118*Q*(S^(13/6))*R/P)^(2/5)
  214. 1735 IF Q9=2 THEN PRINT #2,USING FORMAT9$;D5;V,W5,A,P,R,(118*Q*(S^(13/6))*R/P)^(2/5)
  215. 1740 S2=S1
  216. 1750 E1=E3
  217. 1760 D5=D5+D4
  218. 1770 IF D4<0 THEN 1800
  219. 1780 IF D5>D6 THEN 1890
  220. 1790 GOTO 1630
  221. 1800 IF D5<D6 THEN 1890
  222. 1810 GOTO 1630
  223. 1820 S3=(S2+S1)/2
  224. 1830 E2=E3-E1
  225. 1840 S4=S-S3
  226. 1850 X3=E2/S4
  227. 1860 X4=X4+X3
  228. 1870 PRINT #1,USING FORMAT0$;D5;V,X3,X4,W5,A,P,R,(118*Q*(S^(13/6))*R/P)^(2/5)
  229. 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)
  230. 1880 GOTO 1740
  231. 1890 IF D2=D6 THEN 1920
  232. 1900 PRINT #1,TAB(4);"DEPTH HAS INCREMENTED ACROSS NORMAL OR CRITICAL DEPTH"
  233. 1905 IF Q9=2 THEN PRINT #2,TAB(4);"DEPTH HAS INCREMENTED ACROSS NORMAL OR CRITICAL DEPTH"
  234. 1910 PRINT #1," " 
  235. 1915 IF Q9=2 THEN PRINT #2," "
  236. 1920 PRINT #1," " 
  237. 1925 IF Q9=2 THEN PRINT #2," "
  238. 1930 PRINT "TRY ANOTHER CURVE ?  YES=0 NO=1";
  239. 1940 INPUT A6
  240. 1950 IF A6=0 THEN 990
  241. 1960 PRINT
  242. 1970 PRINT "COMPUTE ANOTHER CHANNEL?  YES=0 NO=1";
  243. 1980 INPUT A6
  244. 1990 IF A6=0 THEN 130
  245. 2000 CHAIN "MENU"
  246. 55000 REM **************    ERROR   TRAPING   ROUTINE    ******************************************************************************                         '
  247. 55010 ET=ERR :EL=ERL
  248. 55020 PRINT:PRINT:PRINT
  249. 55030 IF ET=25 THEN PRINT"PRINTER IS NOT READY":GOTO 55070
  250. 55040 IF ET=24 THEN PRINT "PRINTER IS OUT OF PAPER. REPLACE PAPER ":GOTO 55070
  251. 55050 IF ET>=70 AND ET<=72 THEN PRINT"DISK ERROR < not ready , media error , etc. > ":PRINT"PRESS ANY KEY TO CONTINUE":GOTO 55080
  252. 55060 IF ET=53 THEN PRINT"MENU NOT ON DEFAULT DRIVE DISK":RESUME 55110:ELSE PRINT"ERROR # " ET " ON LINE # " EL:RESUME 55110
  253. 55070 PRINT "Turn on printer. Make sure  'ON LINE '  light is on.":PRINT:PRINT:PRINT "PRESS ANY KEY TO CONTINUE"
  254. 55080 AA$=INKEY$:IF AA$="" THEN 55080
  255. 55090 RESUME
  256. 55100 REM **********************************************************************
  257. 55110 ON ERROR GOTO 0:END
  258.