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 / FLODROUT.BAS < prev    next >
BASIC Source File  |  1985-09-18  |  40KB  |  694 lines

  1. 10  REM  WRITTEN BY JOE LINN               ROOM 718 C.O.     MODIFIED 10/31/80
  2. 20  REM  HYDRAULICS BY WALLY MARUSENKO     ROOM 718 C.O.
  3. 30   DIM AX(255),FX(1,13),H(1,50),OX(1,19),RX(1,13),R1(1,13),R2(1,13),SX(1,19),TX(149),U(1,50),BX(255),CX(255),VX(249),NX(20),QX(19,2),XX(20),YX(20),A(255),TEMPX(255)
  4. 40   DIM A,A9,C,C1,C9,D,E,ET,F,F8,F9,FL0,FL1,FL2,FL3,FL4,FL6,I,I8,I9,J,K,N
  5. 50   DIM                 O,O1,O2,O8,Q,Q1,Q9,R,S,S8,S9,T,T0,T1,T9,V,V8,X,X9,Y
  6. 60   FORMAT1$="     RAINFALL DURATION          =#####.## HOURS"
  7. 70   FORMAT2$="     TOTAL ACCUMULATED RAINFALL =#####.## INCHES"
  8. 80  FORMAT3$="     CURVE NUMBER               =#####"
  9. 90  FORMAT4$="     DRAINAGE AREA              =#####.## ACRES   OR####.## SQ. MI."
  10. 100  FORMAT5$="     TIME OF CONCENTRATION      =#####.## MINUTES OR####.## HOURS"
  11. 110  FORMAT6$="     TIME TO PEAK               =#####.## MINUTES OR####.## HOURS"
  12. 120  FORMAT7$="     PEAK DISCHARGE             =#####.#  CFS"
  13. 130  FORMAT8$="#######    #######.#   I ########    #######.#   I ########    #######.#"
  14. 140  FORMAT9$="     ###    ###.##      ###.##"
  15. 150  FORMAT10$="     ###    ######.#    #######.##"
  16. 160  FORMAT11$="     TOTAL ACCUMULATED RUNOFF   =#####.## INCHES"
  17. 170  FORMAT12$="     INFLOW HYD. TIME INCRIMENT =#####.## MINUTES OR####.## HOURS"
  18. 180  FORMAT13$="     ###.## ########## ########.##    ######### #######.## ########.## ########"
  19. 190  FORMAT14$="     ###.##    #######   ######.##      #######"
  20. 200  FORMAT15$="     TOTAL RUNOFF =###.## INCHES (VOLUME / DRAINAGE AREA)"
  21. 210  FORMAT16$="IN ERROR.  INFLOW HYDROGRAPH VOLUME IS#####.## ACRE FT."
  22. 220  FORMAT18$="######.##  #########  ######.##    #######.#   ######.##
  23. 230  FORMAT19$="DO YOU WISH TO GO FURTHER BY CHANGING TIME INC. TO #####.## HOURS?"
  24. 240  FORMAT20$="INCRIMENT WILL REMAIN AT######.## HOURS."
  25. 250  FORMAT21$="INCREMENT HAS BEEN CHANGED TO######.## HOURS."
  26. 260   FORMAT22$="INPUT HYDROGRAPH HAD BEEN TERMINATED AT####.## HOURS."
  27. 270  FORMAT23$="    ####.##  #########  #######.##    #########  ######.##  #######.## ########"
  28. 280   FORMAT24$="     FIRST HYDROGRAPH STARTS AT ###.## HOURS"
  29. 290  FORMAT25$="     SECOND HYDROGRAPH STARTS AT ###.## HOURS"
  30. 300  FORMAT26$="     HYDROGRAPH ## PEAK IS ######### AT #####.## HOURS"
  31. 310  FORMAT27$="     COMBINED HYDROGRAPH WILL GO THROUGH THE PEAK OF HYDROGRAPH ##"
  32. 320  FORMAT28$="     INCRIMENT FROM HYDROGRAPH ##"
  33. 330  FORMAT29$="  TOO SMALL.  DEFAULT VALUE=####.## HOURS"
  34. 340  FORMAT30$="     COMBINED HYDROGRAPH TIME INCRIMENT =###.### HOURS"
  35. 350  FORMAT31$="ONE OF THE INPUT HYDROGRAPHS HAD BEEN TERMINATED AT####.## HOURS
  36. 360  FORMAT32$="####.## ######## #####.## I      ###.## ######## #####.## I      ###.## ######## #####.##"
  37. 370  FORMAT33$="POINT  : # ###### ###### ###### ###### ###### ###### ###### ###### ###### ######"
  38. 380  FORMAT34$="X: ####### ###### ###### ###### ###### ###### ###### ###### ###### ###### ######"
  39. 390  FORMAT35$="X:        ####### ###### ###### ###### ###### ###### ###### ###### ###### ######"
  40. 400  FORMAT36$="Y: #####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.#"
  41. 410  FORMAT37$="Y:        #####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.#"
  42. 420  FORMAT38$="N:  0.0000 #.#### #.#### #.#### #.#### #.#### #.#### #.#### #.#### #.#### #.####"
  43. 430  FORMAT39$="N:          #.#### #.#### #.#### #.#### #.#### #.#####.#### #.#### #.#### #.####"
  44. 440  FORMAT40$="POINT  :  ####### ###### ###### ###### ###### ###### ###### ###### ###### ######"
  45. 450  FORMAT41$="REACH LENGTH = ######.#     SLOPE = #.####"
  46. 460  FORMAT42$="####.## ####### ######## I      ####.## ####### ######## I      ####.## ####### ########"
  47. 470   FORMAT43$="TOTAL OUTFLOW VOLUME = #####.## ACRE FT."
  48. 480   FORMAT44$="HYDROGRAPH WAS TERMINATED AT ###.## HOURS"
  49. 490 DATA 0,.03,.1,.19,.31,.47,.66,.82,.93,.99,1,.99,.93,.86,.78,.68,.56,.46,.39,.33,.28,.2435,.207,.177,.147,.127,.107,.092,.077,.066,.055,.0475,.04,.0345,.029
  50. 491 DATA .025,.021,.018,.015,.013,.011,9.8E-03,8.6E-03,7.4E-03,6.2E-03,5E-03,4E-3,3E-03,2E-03,1E-03,0
  51. 500 DATA 0,6,9,10.5,11,11.5,11.75,12,12.5,13,13.5,15,18,24,0,.08,.147,.204,.235,.283,.387,.663,.735,.772,.799,.854,.921,1,0,6,8,8.5,9,9.5,9.75,10,10.5,11,12,14,18,24,0,.125,.194,.219,.254,.303,.373,.515,.583,.624,.682,.767,.882,1
  52. 510 FOR I=0 TO 50: U(0,I)=I/10: NEXT I
  53. 520 FOR I=0 TO 50 :READ U(1,I):NEXT I
  54. 530 FOR I=0 TO 1:FOR J=0 TO 13 :READ R1(I,J):NEXT J:NEXT I
  55. 540 FOR I=0 TO 1:FOR J=0 TO 13 :READ R2(I,J):NEXT J:NEXT I
  56. 550  C1LEAR$=CHR$(12)
  57. 560  FORMFEED$=CHR$(12)
  58. 570  PI=3.14159
  59. 580  DEF FNCOMM(ARG)=65535!-ARG
  60. 590 WIDTH "lpt1:",135 '                                                                                                                '
  61. 1000 REM **********  MENU  **********  MENU  **********  MENU  **********  MENU  **********  MENU  **********  MENU  **********        '                       '
  62. 1010 N3$="scrn:":ON ERROR GOTO 25010
  63. 1020 PRINT C1LEAR$
  64. 1030 PRINT
  65. 1040 PRINT TAB(10);"MENU OF FLOOD ROUTING PROGRAMS"
  66. 1050 PRINT
  67. 1060 PRINT "1. FLOOD ROUTING AND INFLOW HYDROGRAPH"
  68. 1070 PRINT "2. FLOOD ROUTE HYDROGRAPH FROM DISK"
  69. 1080 PRINT "3. COMBINE HYDROGRAPHS"
  70. 1090 PRINT "4. CHANNEL ROUTING"
  71. 1100 PRINT "5. PRINT HYDROGRAPH FROM DISK"
  72. 1110 PRINT "6. TYPE IN HYDROGRAPH AND STORE IT ON DISK"
  73. 1120 PRINT "7. ";
  74. 1140 PRINT "FINISH"
  75. 1160 PRINT
  76. 1170 INPUT "ENTER THE NUMBER OF THE DESIRED PROGRAM  ",Q6:Q6$=STR$(Q6)
  77. 1180 IF Q6$ > " 7 " OR Q6$ < " 0 " THEN 1020 ELSE IF Q6 >=7 THEN 1230
  78. 1190  CLOSE #1:INPUT "DO YOU WANT PRINTOUT ON   (SCREEN=0  PRINTER=1)  ",Q9:IF Q9<>0 AND Q9<>1 THEN 1190
  79. 1200 NA$="scrn:":IF Q9=1 THEN NA$="lpt1:":OPEN "O",#2,NA$:ELSE OPEN "O",#2,NA$
  80. 1210  PRINT #2,FORMFEED$: PRINT #2,"          RUN  DATE  ";DATE$: PRINT #2,"": PRINT #2,""
  81. 1220 ON Q6 GOTO 1250,1260,1270,1280,1290,1300
  82. 1230 ON ERROR GOTO 0
  83. 1240 GOTO 1310
  84. 1250  PRINT #2,"###################### INFLOW HYDROGRAPH & FLOODROUTING #######################":PRINT #2," ":GOTO 2010
  85. 1260  PRINT #2,"###################### FLOOD ROUTE HYDROGRAPH FROM DISK #######################":PRINT #2," ":GOTO 3010
  86. 1270  PRINT #2,"#############################  COMBINE HYDROGRAPHS ############################":PRINT #2," ":GOTO 4010
  87. 1280  PRINT #2,"############################  CHANNEL FLOW PROGRAM  ###########################":PRINT #2," ":GOTO 5010
  88. 1290  PRINT #2,"#########################  PRINT HYDROGRAPH FROM DISK #########################":PRINT #2," ":GOTO 6010
  89. 1300  PRINT #2,"##############  INPUT HYDROGRAPH FROM KEYBOARD AND STORE ON DISK ##############":PRINT #2," ":GOTO 7010
  90. 1310 PRINT C1LEAR$: CHAIN "MENU"                                                                                                        '
  91. 2000 REM ***************   MAIN PROGRAM FOR INFLOW HYDRO. & FLOOD ROUTING   ***********************************************************                        '
  92. 2010 C9=14: GOSUB 8005
  93. 2020 GOSUB 8020: FL1=0: FL3=0: GOSUB 15060: FL2=0
  94. 2030 INPUT "ARE RAINFALL, STORAGE, AND OUTFLOW STORED ON DISK  (1=YES, 0=NO) ",Q9: IF Q9=0 THEN 2320
  95. 2040 N4$="LOAD RAINFALL, STORAGE, OUTFLOW FROM DISK":GOSUB 20070:GOSUB 20030
  96. 2050 GOSUB 8090: GOSUB 8120: IF FL0=0 THEN 2070
  97. 2060 GOSUB 8180: GOSUB 8215
  98. 2070 FL3=1
  99. 2080 GOSUB 8345: O1=0: O2=0: IF FL1=1 OR FL3=1 THEN 2300
  100. 2090 FL0=0: INPUT "OUTFLOW HYDROGRAPH (1=YES, 0=NO)  ",Q9: IF Q9=0 THEN 2310
  101. 2100 FL0=1
  102. 2110 GOSUB 8370: IF FL1=0 THEN 2290
  103. 2120 GOSUB 8215
  104. 2130 GOSUB 8470
  105. 2140 GOSUB 8525: IF FL55=1 THEN 2270
  106. 2150 V=0: V8=0: A9=0: FL6=0: N=INT(D*10/T1): GOSUB 8670
  107. 2160 IF  FL6=0 THEN 2180
  108. 2170 GOSUB 8740
  109. 2180 FL1=1
  110. 2190 INPUT "STORE HYDROGRAPH  (1=YES, 0=NO)  ",Q9: IF Q9=1 THEN GOSUB 8905
  111. 2200 O1=0:O2=0: INPUT "NEW RAINFALL      (1=YES, 0=NO)  ",Q9: IF Q9=0 THEN 2220
  112. 2210 FL2=0: GOSUB 15070: C9=14: GOTO 2320
  113. 2220 IF  FL0=0 THEN 2260
  114. 2230 INPUT "NEW STORAGE CURVE (1=YES, 0=NO)  ",Q9: IF Q9=1 THEN 2110
  115. 2240 INPUT "NEW OUTFLOW CURVE (1=YES, 0=NO)  ",Q9: IF Q9=0 THEN 2260
  116. 2250 GOSUB 8180: GOTO 2290
  117. 2260 INPUT "STORE RAINFALL, STORAGE, AND OUTFLOW       (1=YES, 0=NO)  ",Q9:  IF Q9=1 THEN GOSUB 8880
  118. 2270 INPUT"NEW CURVE NUMBER OR TIME OF CONCENTRATION? (1=YES, 0=NO)  ",Q9: IF Q9=1 THEN 2010
  119. 2280 CLOSE #2:GOTO 1010
  120. 2290 GOSUB 8420: PRINT
  121. 2300 IF FL0=1 THEN 2130
  122. 2310 PRINT #2,TAB(30);"INFLOW HYDROGRAPH": GOSUB 8475: GOTO 2140
  123. 2320 INPUT "STANDARD DIST. (1=YES, 0=NO)  ",Q9: IF Q9=1 THEN 2360
  124. 2330 GOSUB 8250
  125. 2340 IF D/T1<150 THEN 2080
  126. 2350 PRINT #2,"TIME OF CONCENTRATION TOO SHORT FOR THIS RAINFALL DURATION.     ": PRINT #2," ": PRINT #2," ": PRINT #2," ": PRINT #2," ": GOTO 2020
  127. 2360 GOSUB 8315
  128. 2370 INPUT "ENTER RAINFALL DURATION IN HOURS  ",D:INPUT "ENTER TOTAL RAINFALL (INCHES)  ",R: GOSUB 8120: GOTO 2340                                             '
  129. 3000 REM****************   MAIN PROGRAM FOR FLOOD ROUTE HYDRO. FROM DISK   ************************************************************                        '
  130. 3010 GOSUB 9010
  131. 3020 N4$="LOAD HYDROGRAPH FROM DISK":GOSUB 20070:GOSUB 20020:GOSUB 15040
  132. 3030 FL0=0: GOSUB 8370: GOSUB 8420: GOSUB 9020: GOSUB 9090
  133. 3040 FL6=0:FL7=0:V8=0:V=0:A9=0:O1=0:O2=0:C1=1: GOSUB 9140: IF FL6=0 THEN 3060
  134. 3050 GOSUB 8740
  135. 3060 BX(255)=C1: BX(254)=1: BX(252)=AX(252): PRINT #2," ": GOSUB 9310
  136. 3070 INPUT "STORE HYDROGRAPH?       (1=YES, 0=NO)  ",Q9: IF Q9=0 THEN 3160
  137. 3080 BX(249)=AX(249)
  138. 3090 GOSUB 8770: GOSUB 9340:IF BX(253)+BX(252)*(C1-1)<BX(249) OR BX(249)=0 THEN 3110
  139. 3100 BX(255)=C1-1: GOTO 3150
  140. 3110 BX(C1-1)=O: IF O<1.5 THEN 3150
  141. 3120 C1=C1+1: BX(255)=BX(255)+1: IF C1<242 THEN 3090
  142. 3130 GOSUB 9390: IF Q9=0 THEN 3150
  143. 3140 GOTO 3090
  144. 3150 N4$="HYDROGRAPH TO BE STORED ON DISK":GOSUB 20070:GOSUB 15020:GOSUB 20010
  145. 3160 INPUT "FLOOD ROUTE ANOTHER HYDROGRAPH? (1=YES, 0=NO)  ",Q9: IF Q9=1  THEN  CLOSE #2: GOTO 1190
  146. 3170 CLOSE #2:GOTO 1010                                                                                                                 '
  147. 4000 REM ***************   MAIN  PROGRAM  FOR  COMBINING  HYDRGRAPHS   ****************************************************************                        '
  148. 4010 N4$="LOAD HYDROGRAPH #1 FROM DISK":GOSUB 20070:GOSUB 20020:GOSUB 15040
  149. 4020 GOSUB 10170
  150. 4030 N4$="LOAD HYDROGRAPH #2 FROM DISK":GOSUB 20070:GOSUB 20020:GOSUB 15050
  151. 4040 GOSUB 10210: GOSUB 10250
  152. 4050 INPUT "CHANGE START TIME? (1=YES, 0=NO)  ",Q9:IF Q9=0 THEN 4100
  153. 4060 INPUT "WHICH HYDROGRAPH 1 OR 2 ?  ",Q9:IF Q9=2 THEN 4080
  154. 4070 GOSUB 10280: GOTO 4090
  155. 4080 GOSUB 10310
  156. 4090 GOSUB 10340
  157. 4100 FOR I=0 TO 255: CX(I)=0: NEXT I
  158. 4110 GOSUB 10360: GOSUB 10460: GOSUB 10490: IF Q9=2 THEN 4130
  159. 4120 CX(252)=AX(252)*(AX(250)-1)+A1-C1: GOSUB 10580: GOTO 4140
  160. 4130 GOSUB 10570
  161. 4140 IF CX(250)>0 THEN 4160
  162. 4150 GOSUB 10630: GOTO 4180
  163. 4160 GOSUB 10660
  164. 4170 FOR I=0 TO 249:VX(I)=0:NEXT I
  165. 4180 GOSUB 10690: GOSUB 10760: GOSUB 10810
  166. 4190 INPUT "STORE HYDROGRAPH  (1=YES, 0=NO)  ",Q9:IF Q9=0 THEN 4210
  167. 4200 N4$="COMBINED HYDROGRAPH TO BE STORED ON DISK":GOSUB 20070:GOSUB 15030:GOSUB 20010
  168. 4210 INPUT "COMBINE MORE HYDROGRAPHS? (1=YES, 0=NO)  ",Q9: IF Q9=1 THEN CLOSE #2 : GOTO 1190
  169. 4220 CLOSE #2:GOTO 1010                                                                                                                 '
  170. 5000 REM ***************   MAIN   PROGRAM   FOR   CHANNEL   FLOW   ********************************************************************                        '
  171. 5010 N4$="LOAD HYDROGRAPH FROM DISK": GOSUB 20070: GOSUB 20020: GOSUB 15040
  172. 5020 INPUT "IS X-SECTION STORED ON DISK? (1=YES, 0=NO)  ",Q9:IF Q9=0 THEN 5050
  173. 5030 N4$="LOAD X-SECTION FROM DISK": GOSUB 20070: GOSUB 20050
  174. 5040  F=NX(0):GOTO 5070
  175. 5050 GOSUB 11010
  176. 5060 INPUT "ENTER REACH LENGTH  ",L: INPUT "ENTER SLOPE  ",S
  177. 5070 GOSUB 11200
  178. 5080 INPUT "CHANGE REACH LENGTH AND SLOPE? (1=YES, 0=NO) ",Q9:IF Q9=1 THEN 5060
  179. 5090 AX(251)=0:INPUT "STORE X-SECTION?  (1=YES, 0=NO)  ",Q9:IF Q9=0 THEN 5110
  180. 5100 N4$="X-SECTION TO BE STORED ON DISK":GOSUB 20070:NX(0)=F:GOSUB 20060
  181. 5110 GOSUB 11290: GOSUB 11580: GOSUB 11830: GOSUB 11870: GOSUB 11940
  182. 5120 INPUT "STORE HYDROGRAPH? (1=YES, 0=NO)  ",Q9: IF Q9=0 THEN 5140
  183. 5130 N4$="HYDROGRAPH TO BE STORED ON DISK":GOSUB 20070:GOSUB 15020:GOSUB 20010
  184. 5140 INPUT "CHANGE REACH LENGTH AND SLOPE? (1=YES, 0=NO) ",Q9:IF Q9=1 THEN 5060
  185. 5150 CLOSE #2:GOTO 1010                                                                                                                 '
  186. 6000 REM ***************   MAIN PROGRAM FOR PRINTING HYDROGRAPH FROM DISK   ************************************************************                       '
  187. 6010 N4$="LOAD HYDROGRAPH FROM DISK":GOSUB 20070:GOSUB 20020:GOSUB 15040
  188. 6020  PRINT #2,"CONTENTS OF DATA FILE ";N1$: PRINT #2," ": GOSUB 12010
  189. 6030  INPUT "PRINT ANOTHER HYDROGRAPH (1=YES, 0=NO)  ",Q9: IF Q9=1 THEN CLOSE #2 : GOTO 1190
  190. 6040  CLOSE #2:GOTO 1010                                                                                                                '
  191. 7000 REM ***************   MAIN PROGRAM FOR INPUTING HYDRO. & STORING ON DISK   *******************************************************                        '
  192. 7010 PRINT: INPUT "TIME OF BEGINNING INFLOW (HOURS)  ",AX(253): T=AX(253): INPUT "TIME INCRIMENT (HOURS)  ",AX(252)
  193. 7020  PRINT #2," ": PRINT #2,"TIME (HRS)      CFS": FOR I=1 TO 240: PRINT"Q AT ";T;" HOURS OR 0 ";: INPUT AX(I-1): IF AX(I-1)=0 THEN 7050
  194. 7030  IF AX(I-1)=0 THEN 7050
  195. 7040  PRINT #2,T,AX(I-1): T=T+AX(252): NEXT I: I=I-1
  196. 7050  AX(255)=I
  197. 7060 N4$="HYDROGRAPH TO BE STORED ON DISK":GOSUB 20070:GOSUB 15010:GOSUB 20010
  198. 7070  PRINT
  199. 7080 CLOSE #2:GOTO 1010                                                                                                                 '
  200. 8000 REM ***************   SUBROUTINES FOR INFLOW HYDROGRAPH & FLOOD ROUTING   ********************************************************                        '
  201. 8005  PRINT: INPUT "ENTER CURVE NUMBER  ",C: PRINT #2,USING FORMAT3$;C
  202. 8010  INPUT "ENTER DRAINAGE AREA (ACRES)  ",A: A=A/640
  203. 8015 RETURN
  204. 8020  INPUT "TIME OF CONCENTRATION (MINUTES)  ",T
  205. 8025  PRINT #2,USING FORMAT4$;A*640,A: PRINT #2,USING FORMAT5$;T,T/60
  206. 8030  T1=.67*T/60: Q=484*A/T1: T=T/60: PRINT #2,""
  207. 8035  INPUT "PRINT UNIT HYDRGRAPH? (1=YES, 0=NO)  ",Q9: IF Q9=0 THEN 8045
  208. 8040  PRINT #2,TAB(30);"UNIT HYDROGRAPH": PRINT #2,""
  209. 8045  PRINT #2,USING FORMAT6$;T1*60,T1: PRINT: PRINT USING FORMAT6$;T1*60,T1
  210. 8050  PRINT #2,USING FORMAT7$;Q:PRINT USING FORMAT7$;Q: PRINT #2,"":PRINT #2,""
  211. 8055  PRINT: IF Q9=0 THEN 8070
  212. 8060  PRINT #2,"   TIME    DISCHARGE   I     TIME    DISCHARGE   I     TIME    DISCHARGE"
  213. 8065  PRINT #2,"MINUTES";TAB(24);"I  MINUTES";TAB(50);"I  MINUTES"
  214. 8070  FOR I=0 TO 50:H(0,I)=T1*U(0,I):H(1,I)=Q*U(1,I):NEXT I:IF Q9=0 THEN 8080
  215. 8075  FOR I=0 TO 16:PRINT #2,USING FORMAT8$;H(0,I)*60,H(1,I),H(0,I+17)*60,H(1,I+17),H(0,I+34)*60,H(1,I+34):NEXT I: PRINT #2,""
  216. 8080  INPUT "NEW TIME OF CONCENTR? (1=YES, 0=NO)  ",Q9: IF Q9=1 THEN 8020
  217. 8085 RETURN
  218. 8090 T9=RX(0,0):RX(0,0)=0:FL0=0
  219. 8095 IF SX(0,0)=0 AND SX(0,1)=0 AND SX(1,1)=0 THEN 8105
  220. 8100 FL0=1
  221. 8105 IF F8=0 THEN 8115
  222. 8110 FL2=1
  223. 8115 RETURN
  224. 8120 PRINT #2,TAB(5);"RAINFALL DISTRIBUTION";
  225. 8125 ON T9+1 GOTO 8130,8135,8140
  226. 8130 PRINT #2," - INPUT MANUALLY" :  GOTO 8145
  227. 8135 PRINT #2," - TYPE 1" :  GOTO 8145
  228. 8140 PRINT #2," - TYPE 2"
  229. 8145 PRINT #2," "
  230. 8150 PRINT #2,"     NO.      TIME    RAINFALL"
  231. 8155 PRINT #2,"             HOURS         IN."
  232. 8160 PRINT #2,USING FORMAT9$;1,0,0:FOR I=1 TO 13:IF RX(0,I)=0 AND RX(1,I)=0 THEN 8170
  233. 8165 PRINT #2,USING FORMAT9$;I+1,RX(0,I)*D/24,RX(1,I)*R: NEXT I
  234. 8170 PRINT #2," "
  235. 8175 RETURN
  236. 8180 PRINT #2,TAB(5);"STORAGE CURVE" : PRINT #2,""
  237. 8185 PRINT #2,TAB(5);"NO.       ELEV.       STORAGE"
  238. 8190 PRINT #2,TAB(26);"ACRE-FT."
  239. 8195 PRINT #2,USING FORMAT10$;1,SX(0,0),SX(1,0): FOR I=1 TO 19:IF SX(0,I)=0 AND SX(1,I)=0 THEN 8205
  240. 8200 PRINT #2,USING FORMAT10$;I+1,SX(0,I),SX(1,I): NEXT I
  241. 8205 PRINT #2," "
  242. 8210 RETURN
  243. 8215 PRINT #2,TAB(5);"OUTFLOW CURVE" : PRINT #2,""
  244. 8220 PRINT #2,TAB(5);"NO.       ELEV.       OUTFLOW"
  245. 8225 PRINT #2,TAB(29);"(CFS)"
  246. 8230 PRINT #2,USING FORMAT10$;1,OX(0,0),OX(1,0): FOR I=1 TO 19:IF OX(0,I)=0 AND OX(1,I)=0 THEN 8240
  247. 8235 PRINT #2,USING FORMAT10$;I+1,OX(0,I),OX(1,I) : NEXT I
  248. 8240 PRINT #2," "
  249. 8245 RETURN
  250. 8250 FL2=1
  251. 8255 PRINT #2,TAB(5);"RAINFALL DISTRIBUTION (MAXIMUM OF 14 POINTS)":PRINT #2,""
  252. 8260 PRINT #2,"     NO.      TIME    RAINFALL"
  253. 8265 PRINT #2,"             HOURS         IN."
  254. 8270 GOSUB 15070:T9=0: PRINT #2,USING FORMAT9$;1,0,0: PRINT
  255. 8275 FOR I=2 TO 14
  256. 8280 INPUT "TIME (HOURS), RAINFALL OR 0,0  ",RX(0,I-1),RX(1,I-1): IF RX(0,I-1)=0 AND RX(1,I-1)=0 THEN 8290
  257. 8285 PRINT #2,USING FORMAT9$;I,RX(0,I-1),RX(1,I-1): C9=I: NEXT I
  258. 8290 R=RX(1,C9-1): D=RX(0,C9-1)
  259. 8295 FOR I=1 TO C9: RX(1,I-1)=RX(1,I-1)/R: RX(0,I-1)=RX(0,I-1)/D*24: NEXT I
  260. 8300 PRINT #2," " : PRINT #2," "
  261. 8305 INPUT "MAKE CORRECTIONS? (1=YES, 0=NO)  ",Q9: IF Q9=1 THEN 8255
  262. 8310 RETURN
  263. 8315 INPUT "ENTER TYPE (1 OR 2)  ",T9
  264. 8320 IF T9=1 THEN 8335
  265. 8325 FOR I=0 TO 1:FOR J=0 TO 13:RX(I,J)=R1(I,J):NEXT J:NEXT I
  266. 8330 GOTO 8340
  267. 8335 FOR I=0 TO 1:FOR J=0 TO 13:RX(I,J)=R2(I,J):NEXT J:NEXT I
  268. 8340 RETURN
  269. 8345 IF D/T1>75 THEN S9=10
  270. 8350 IF D/T1<=75 THEN S9=5
  271. 8355 IF D/T1<=12 THEN S9=2
  272. 8360 IF D/T1<=4 THEN S9=1
  273. 8365 RETURN
  274. 8370 PRINT
  275. 8375 PRINT #2,TAB(5);"STORAGE CURVE (MAXIMUM OF 20 POINTS)": PRINT #2," "
  276. 8380 PRINT #2,TAB(5);"NO.       ELEV.       STORAGE"
  277. 8385 PRINT #2,TAB(26);"ACRE-FT."
  278. 8390 INPUT "ENTER ELEV. FOR STORAGE = 0  ", SX(0,0): SX(1,0)=0
  279. 8395 PRINT #2,USING FORMAT10$;1,SX(0,0),SX(1,0): FOR I=2 TO 20
  280. 8400 INPUT "ELEV., STORAGE (ACRE-FT) OR 0,0  ",SX(0,I-1),SX(1,I-1): IF SX(0,I-1)=0 AND SX(1,I-1)=0 THEN 8410
  281. 8405 S8=I: PRINT #2,USING FORMAT10$;I,SX(0,I-1),SX(1,I-1): NEXT I
  282. 8410 PRINT #2,"":INPUT "MAKE CORRECTIONS? (1=YES 0=NO)  ",Q9:IF Q9=1 THEN 8375
  283. 8415 RETURN
  284. 8420 PRINT #2,TAB(5);"OUTFLOW CURVE (MAXIMUM OF 20 POINTS)": PRINT #2,""
  285. 8425 PRINT #2,TAB(5);"NO.       ELEV.       OUTFLOW"
  286. 8430 PRINT #2,TAB(29);"(CFS)"
  287. 8435 INPUT "ENTER ELEV. FOR OUTFLOW = 0  ",OX(0,0): OX(1,0)=0: IF OX(0,0) >= SX(0,0) THEN 8445
  288. 8440 PRINT "ELEVATION MUST BE >= STORAGE CURVE": GOTO 8435
  289. 8445 PRINT #2,USING FORMAT10$;1,OX(0,0),OX(1,0) : FOR I=2 TO 20
  290. 8450 INPUT "ELEV., OUTFLOW (CFS) OR 0,0  ",OX(0,I-1),OX(1,I-1) : IF OX(0,I-1)=0 AND OX(1,I-1)=0 THEN 8460
  291. 8455 PRINT #2,USING FORMAT10$;I,OX(0,I-1),OX(1,I-1): O8=I: NEXT I
  292. 8460 PRINT #2,"":INPUT "MAKE CORRECTIONS? (1=YES, 0=NO)  ",Q9:IF Q9=1 THEN 8420
  293. 8465 RETURN
  294. 8470 PRINT #2,TAB(30);"FLOOD ROUTING"
  295. 8475 PRINT #2," "
  296. 8480 PRINT #2,USING FORMAT4$;A*640,A:PRINT #2,USING FORMAT1$;D:PRINT #2,USING FORMAT2$;R:PRINT #2,USING FORMAT3$;C:PRINT #2,USING FORMAT5$;T*60,T
  297. 8485 S=1000/C-10: Q1=(R-.2*S)^2/(R+.8*S)
  298. 8490 PRINT #2,USING FORMAT11$;Q1:  PRINT #2,USING FORMAT12$;S9*T1*6,S9*T1/10
  299. 8495 PRINT #2," "
  300. 8500 FOR I=0 TO 1 : FOR J=0 TO 13 : FX(I,J)=0: NEXT J: NEXT I: FOR I=0 TO 255 : AX(I)=0:NEXT I:FOR I=0 TO 149:TX(I)=0:NEXT I
  301. 8505 FL4=0: AX(252)=S9*T1/10: C1=1:FOR I=1 TO C9: IF RX(1,I-1)*R<.2*S THEN 8515
  302. 8510 FX(1,I-1)=(R*RX(1,I-1)-.2*S)^2/(R*RX(1,I-1)+.8*S)
  303. 8515 FX(0,I-1)=RX(0,I-1)/24*D: NEXT I: X9=S9: X=S9: T0=0: I8=1: F9=1
  304. 8520 RETURN
  305. 8525 GOSUB 8615: IF Y=0 THEN 8540
  306. 8530 F9=2 : TX(I8-1)=Y : I8=I8+1 : IF I8<151 THEN 8550
  307. 8535 PRINT "DURATION TOO LONG" : FL55=1 : GOTO 8610
  308. 8540 IF F9=2 THEN 8555
  309. 8545 T0=T0+T1*S9/10
  310. 8550 X9=X9+S9 : X=X9 : GOTO 8525
  311. 8555 IF  FL0=0 THEN 8570
  312. 8560 AX(254)=1
  313. 8565 PRINT #2, "       TIME       TIME     STORAGE   INFLOW HYD    STORAGE           OUTFLOW" : GOTO 8575
  314. 8570 PRINT #2,"       TIME       TIME     STORAGE   INFLOW HYD"
  315. 8575 IF  FL0=0 THEN 8590
  316. 8580 PRINT #2,"      HOURS    MINUTES      VOLUME        (CFS)      ELEV.      ACCUM.    (CFS)"
  317. 8585 PRINT #2,"                          ACRE FT.                            ACRE FT." : GOTO 8600
  318. 8590 PRINT #2,"      HOURS    MINUTES      VOLUME        (CFS)"
  319. 8595 PRINT #2,TAB(26);"ACRE FT."
  320. 8600 IF FL0<>1 THEN : PRINT #2,USING FORMAT14$;0,0,0,0 : GOTO 8610
  321. 8605 PRINT #2,USING FORMAT13$;0,0,0,0,SX(0,0),0,0
  322. 8610 RETURN
  323. 8615 Y=0
  324. 8620 IF X <= 0 OR X*T1/10>FX(0,C9-1) THEN 8665
  325. 8625 X=(X-S9)*T1/10 : FOR I=2 TO C9 : IF X <= FX(0,I-1) THEN 8635
  326. 8630 NEXT I
  327. 8635 IF FX(1,I-1)=0 THEN 8645
  328. 8640 Y=(X-FX(0,I-2))*(FX(1,I-1)-FX(1,I-2))/(FX(0,I-1)-FX(0,I-2))+FX(1,I-2)
  329. 8645 X=X+T1*S9/10
  330. 8650 FOR I9=I TO C9 : IF X > FX(0,I9-1) THEN NEXT I9
  331. 8655 IF FX(1,I9-1)=0 THEN 8665
  332. 8660 Y=(X-FX(0,I9-2))*(FX(1,I9-1)-FX(1,I9-2))/(FX(0,I9-1)-FX(0,I9-2))+FX(1,I9-2)-Y : IF Y<=0 THEN Y=0
  333. 8665 RETURN
  334. 8670 K=2-S9
  335. 8675 K=K+S9:  F=0:  FOR J=1 TO 51 STEP S9:  X=K-J:  IF X <= 0 THEN 8695
  336. 8680 IF X*T1/10>FX(0,C9-1) THEN 8690
  337. 8685 F=F+TX((X-1)/S9)*H(1,J-1)
  338. 8690 NEXT J
  339. 8695 T0=T0+T1*S9/10 : IF F < .5 THEN 8725
  340. 8700 V=V+(F+A9)*T1*S9/242: V8=V8+(F+A9)*T1*S9/242: A9=F: IF FL0=1 THEN 8720
  341. 8705 PRINT #2,USING FORMAT14$;T0,T0*60,V,F: AX(C1-1)=F: IF C1<>1 THEN 8715
  342. 8710 AX(253)=T0
  343. 8715 C1=C1+1: AX(255)=AX(255)+1: GOTO 8675
  344. 8720 GOSUB 8770: GOSUB 8825: GOTO 8675
  345. 8725 IF V8=0 THEN 8675
  346. 8730 PRINT #2,"": PRINT #2,USING FORMAT15$;V8/A*12/640: PRINT #2,""
  347. 8735 RETURN
  348. 8740 PRINT #2,"* NOTE: OUTFLOW CALCULATIONS EXCEEDED INFLOW CALCULATIONS DUE TO"
  349. 8745 PRINT #2,"LIMITATIONS OF THE HP 9830.  (THIS OCCURS WHEN STORAGE VOLUME IS"
  350. 8750 PRINT #2,"VERY SMALL AND OUTFLOW IS VERY LARGE).  OUTFLOW VALUE ACRE FEET IS"
  351. 8755 PRINT #2,USING FORMAT16$;V8
  352. 8760 PRINT #2," "
  353. 8765 RETURN
  354. 8770 I=2
  355. 8775 IF S8=2 THEN 8790
  356. 8780 FOR I=2 TO S8-1 : IF V <= SX(1,I-1) THEN 8790
  357. 8785 NEXT I
  358. 8790 E=(V-SX(1,I-2))*(SX(0,I-1)-SX(0,I-2))/(SX(1,I-1)-SX(1,I-2))+SX(0,I-2)
  359. 8795 I=2 : IF O8=2 THEN 8810
  360. 8800 FOR I=2 TO O8-1 : IF E <= OX(0,I-1) THEN 8810
  361. 8805 NEXT I
  362. 8810 O=(E-OX(0,I-2))*(OX(1,I-1)-OX(1,I-2))/(OX(0,I-1)-OX(0,I-2))+OX(1,I-2)
  363. 8815 IF O <= 0 THEN O=0
  364. 8820 RETURN
  365. 8825 O1=O1+(O+O2)*T1*S9/242:  V=V-(O+O2)*T1*S9/242:  IF V >= 0 THEN 8840
  366. 8830 V=0:  FL6=1:  IF FL4=1 THEN 8870
  367. 8835 PRINT #2,USING FORMAT13$;T0,T0*60,V,F,E,O1,O:  GOTO 8850
  368. 8840 IF FL4=1 THEN 8870
  369. 8845 PRINT #2,USING FORMAT13$;T0,T0*60,V,F,E,O1,O
  370. 8850 IF O<.5 THEN 8870
  371. 8855 IF AX(0) >= .5 THEN 8865
  372. 8860 AX(253)=T0
  373. 8865 AX(C1-1)=O:  C1=C1+1:  AX(255)=AX(255)+1
  374. 8870 O2=O
  375. 8875 RETURN
  376. 8880 F8=0:  RX(0,0)=T9:  IF FL2=0 THEN 8890
  377. 8885 F8=1:  PRINT
  378. 8890 N4$="STORE RAINFALL, STORAGE, AND OUTFLOW ON DISK":GOSUB 20070:GOSUB 20040
  379. 8895 PRINT #2,"": PRINT #2,"THE ABOVE RAINFALL, STORAGE AND OUTFLOW WERE STORED UNDER THE NAME ";N1$:  PRINT #2,""
  380. 8900 RETURN
  381. 8905 IF FL0=0 THEN 8980
  382. 8910 FL4=1
  383. 8915 GOSUB 8770: GOSUB 8825:  AX(C1-1)=O:  IF O<1.5 THEN 8980
  384. 8920 C1=C1+1:  AX(255)=AX(255)+1:  IF C1<242 THEN 8915
  385. 8925 PRINT #2,""
  386. 8930 PRINT #2,"MACHINE RAN OUT OF MEMORY AT THE FOLLOWING POINT:"
  387. 8935 PRINT #2,"HOURS AFTER    OUTFLOW      TOTAL    REMAINING     CURRENT"
  388. 8940 PRINT #2,"   START OF      (CFS)    OUTFLOW      STORAGE    TIME INC"
  389. 8945 PRINT #2,"   RAINFALL               ACRE FT      ACRE FT     (HOURS)"
  390. 8950 PRINT #2,"": PRINT #2,USING FORMAT18$;AX(253)+(C1-2)*AX(252),AX(C1-2),O1,V,AX(252):  PRINT #2,""
  391. 8955 PRINT #2, USING FORMAT19$ ; AX(252)*2 : PRINT USING FORMAT19$ ; AX(252)*2 : INPUT "1=YES, 0=NO  ",Q9:IF Q9=1 THEN 8970
  392. 8960 PRINT #2,USING FORMAT20$;AX(252):  PRINT #2,"":  AX(249)=AX(253)+(C1-2)*AX(252):  GOTO 8980
  393. 8965 AX(249)=AX(253)+(C1-2)*AX(252)
  394. 8970 PRINT #2,USING FORMAT21$;AX(252)*2 :  PRINT #2," "
  395. 8975 FOR I=1 TO 241 STEP 2: AX((I+1)/2-1)=AX(I-1): NEXT I: AX(255)=122: C1=122:      S9=S9*2: AX(252)=AX(252)*2:  GOTO 8915
  396. 8980 PRINT
  397. 8985 N4$="HYDROGRAPH TO BE STORED ON DISK":GOSUB 20070:GOSUB 15010:GOSUB 20010
  398. 8990 RETURN                                                                                                                             '
  399. 9000 REM ***************   SUBROUTINES FOR FLOOD ROUTING HYDRO. FROM DISK   ***********************************************************                        '
  400. 9010  FOR I=0 TO 255:BX(I)=0:NEXT I:RETURN
  401. 9020 FL0=0: PRINT
  402. 9030 INPUT "PRINT EVERY INCRIMENT?  (1=YES, 0=NO)  ",Q9:  IF Q9=1 THEN 9070
  403. 9040 AX(251)=0:  FOR I=1 TO AX(255):  IF AX(I-1) <= AX(251) THEN 9060
  404. 9050 AX(251)=AX(I-1): AX(250)=I
  405. 9060 NEXT I: FL0=1
  406. 9070 PRINT #2,"INFLOW HYDROGRAPH HAD BEEN STORED UNDER THE NAME ";N1$: PRINT #2,""
  407. 9080 RETURN
  408. 9090 PRINT #2,"       TIME       TIME     STORAGE   INFLOW HYD    STORAGE           OUTFLOW"
  409. 9100 PRINT #2,"      HOURS    MINUTES      VOLUME        (CFS)       ELEV.      ACCUM.   (CFS)"
  410. 9110 PRINT #2,"                          ACRE FT.                             ACRE FT."
  411. 9120 PRINT #2,USING FORMAT23$;0,0,0,0,SX(0,0),0,0
  412. 9130 RETURN
  413. 9140 FOR J=1 TO AX(255)
  414. 9150 F=AX(J-1):V=V+(F+A9)*AX(252)/24.2:V8=V8+(F+A9)*AX(252)/24.2:A9=F:T0=AX(253)+AX(252)*(J-1)
  415. 9160 GOSUB 8770:GOSUB 9340
  416. 9170 IF FL0=0 THEN 9230
  417. 9180 IF J/2-INT(J/2)<>AX(250)/2-INT(AX(250)/2) THEN 9240
  418. 9190 IF FL7=0 THEN 9230
  419. 9200 PRINT #2,USING FORMAT13$;T0,T0*60,V,F,E,O1,O
  420. 9210 FL7=0
  421. 9220 GOTO 9240
  422. 9230 PRINT #2,USING FORMAT23$;T0,T0*60,V,F,E,O1,O
  423. 9240 BX(C1-1)=O
  424. 9250 IF C1<>1 THEN 9280
  425. 9260 IF O<.5 THEN 9290
  426. 9270 BX(253)=AX(252)*(J-1)+AX(253)
  427. 9280 C1=C1+1
  428. 9290 NEXT J
  429. 9300 RETURN
  430. 9310 IF AX(249)=0 THEN 9330
  431. 9320 PRINT #2,USING FORMAT22$;AX(249):PRINT #2,"THEREFORE, OUTPUT HYDROGRAPH WILL END AT THE SAME TIME.":PRINT #2," "
  432. 9330 RETURN
  433. 9340 O1=O1+(O+O2)*AX(252)/24.2:V=V-(O+O2)*AX(252)/24.2
  434. 9350 IF V >= 0 THEN 9370
  435. 9360 V=0: FL6=1: FL7=1
  436. 9370 O2=O
  437. 9380 RETURN
  438. 9390 PRINT #2," "
  439. 9400 PRINT #2,"MACHINE RAN OUT OF MEMORY AT THE FOLLOWING POINT:"
  440. 9410 PRINT #2,"HOURS AFTER    OUTFLOW      TOTAL    REMAININGCURRENT"
  441. 9420 PRINT #2,"   START OF      (CFS)    OUTFLOW      STORAGE    TIME INC"
  442. 9430 PRINT #2,"   RAINFALL               ACRE FT      ACRE FT(HOURS)"
  443. 9440 PRINT #2,USING FORMAT18$;BX(253)+(C1-2)*BX(252),BX(C1-2),O1,V,BX(252)
  444. 9450 PRINT #2,USING FORMAT19$;BX(252)*2
  445. 9460 INPUT "1=YES, 0=NO  ",Q9 :  IF Q9=1 THEN 9520
  446. 9480 PRINT #2,USING FORMAT20$;BX(252)
  447. 9490 PRINT
  448. 9500 BX(249)=BX(253)+(C1-2)*BX(252)
  449. 9510 GOTO 9540
  450. 9520 PRINT #2,USING FORMAT21$;BX(252)*2
  451. 9530 FOR I=1 TO 241 STEP 2: BX((I+1)/2-1)=BX(I-1): NEXT I: BX(255)=122: C1=122:      BX(252)=BX(252)*2:AX(252)=BX(252)
  452. 9540 RETURN                                                                                                                             '
  453. 10000 REM **************   SUBROUTINES   FOR   COMBINING   HYDROGRAPHS   **************************************************************                        '
  454. 10010  A3=0
  455. 10020  IF T1>AX(253)+(AX(255)-1)*AX(252) OR T1<AX(253) THEN 10080
  456. 10030  I=(T1-AX(253))/AX(252)+1
  457. 10040  IF I<>INT(I) THEN 10070
  458. 10050  A3=AX(I-1)
  459. 10060  GOTO 10080
  460. 10070  A3=(AX(INT(I))-AX(INT(I)-1))*(I-INT(I))+AX(INT(I)-1)
  461. 10080  RETURN
  462. 10090  B3=0
  463. 10100  IF T1>BX(253)+(BX(255)-1)*BX(252) OR T1<BX(253) THEN 10160
  464. 10110  I=(T1-BX(253))/BX(252)+1
  465. 10120  IF I<>INT(I) THEN 10150
  466. 10130  B3=BX(I-1)
  467. 10140  GOTO 10160
  468. 10150  B3=(BX(INT(I))-BX(INT(I)-1))*(I-INT(I))+BX(INT(I)-1)
  469. 10160  RETURN
  470. 10170  AX(251)=0
  471. 10180  FOR I=1 TO AX(255):IF AX(I-1) > AX(251) THEN AX(251)=AX(I-1):AX(250)=I
  472. 10190  NEXT I
  473. 10200 RETURN
  474. 10210  BX(251)=0
  475. 10220  FOR I=1 TO BX(255):IF BX(I-1) > BX(251) THEN BX(251)=BX(I-1):BX(250)=I
  476. 10230  NEXT I
  477. 10240 RETURN
  478. 10250 PRINT #2,USING FORMAT24$;AX(253):PRINT USING FORMAT24$;AX(253)
  479. 10260 PRINT #2,USING FORMAT25$;BX(253):PRINT #2," ":PRINT USING FORMAT25$;BX(253):PRINT
  480. 10270 RETURN
  481. 10280 INPUT "HYDROGRAPH 1, START TIME  ",Q9:IF AX(249)<>0 THEN AX(249)=AX(249) + Q9-AX(253)
  482. 10290 AX(253)=Q9
  483. 10300 RETURN
  484. 10310 INPUT "HYDROGRAPH 2, START TIME  ",Q9:IF BX(249)<>0 THEN BX(249)=BX(249) + Q9-BX(253)
  485. 10320 BX(253)=Q9
  486. 10330 RETURN
  487. 10340 PRINT #2,TAB(10);"REVISED START TIMES":PRINT #2,USING FORMAT24$;AX(253)  :      PRINT #2,USING FORMAT25$;BX(253)
  488. 10350 RETURN
  489. 10360 CX(249)=BX(249)
  490. 10370 IF AX(249)=0 OR (BX(249)>0 AND BX(249)<AX(249)) THEN 10390
  491. 10380 CX(249)=AX(249)
  492. 10390 PRINT #2,USING FORMAT26$;1,AX(251),AX(253)+AX(252)*(AX(250)-1)
  493. 10400 PRINT USING FORMAT26$;1,AX(251),AX(253)+AX(252)*(AX(250)-1)
  494. 10410 PRINT #2,USING FORMAT26$;2,BX(251),BX(253)+BX(252)*(BX(250)-1)
  495. 10420 PRINT #2," "
  496. 10430 PRINT USING FORMAT26$;2,BX(251),BX(253)+BX(252)*(BX(250)-1)
  497. 10440 PRINT
  498. 10450 RETURN
  499. 10460 INPUT "INCRIMENT 1 OR 2  " , Q9 : PRINT #2, USING FORMAT27$;Q9:PRINT USING FORMAT27$;Q9
  500. 10470 A1=AX(253):B1=BX(253):A2=A1+AX(252)*(AX(255)-1):B2=B1+BX(252)*(BX(255)-1)
  501. 10480 RETURN
  502. 10490 C1=A1:IF B1>A1 THEN 10510
  503. 10500 C1=B1
  504. 10510 C2=A2
  505. 10520 IF B2<A2 THEN 10540
  506. 10530 C2=B2
  507. 10540 IF CX(249)=0 THEN 10560
  508. 10550 C2=CX(249)
  509. 10560 RETURN
  510. 10570 CX(252)=BX(252)*(BX(250)-1)+B1-C1
  511. 10580 CX(250)=0
  512. 10590 CX(250)=CX(250)+1
  513. 10600 IF (C2-C1)*CX(250)/CX(252)<239 THEN 10590
  514. 10610 CX(250)=CX(250)-1:CX(255)=(C2-C1)*CX(250)/CX(252)+1
  515. 10620 RETURN
  516. 10630 CX(252)=(C2-C1)/239:CX(253)=C1:CX(255)=240
  517. 10640 PRINT #2,USING FORMAT28$;Q9;:PRINT #2,USING FORMAT29$;CX(252):PRINT
  518. 10650 RETURN
  519. 10660 CX(253)=C1:CX(252)=CX(252)/CX(250)
  520. 10670 PRINT #2,USING FORMAT30$;CX(252):PRINT USING FORMAT30$;CX(252):PRINT #2," " : PRINT
  521. 10680 RETURN
  522. 10690 FOR J=1 TO CX(255):T1=C1+CX(252)*(J-1):GOSUB 10010:GOSUB 10090:CX(J-1)=A3+B3
  523. 10700 IF J<>1 THEN 10730
  524. 10710 VX(0)=CX(0)*CX(252)/24.2
  525. 10720 GOTO 10740
  526. 10730 VX(J-1)=VX(J-2)+(CX(J-1)+CX(J-2))*CX(252)/24.2
  527. 10740 NEXT J
  528. 10750 RETURN
  529. 10760 CX(254)=4
  530. 10770 PRINT #2,"   TIME  OUTFLOW   VOLUME I        TIME  OUTFLOW   VOLUME I        TIME  OUTFLOW   VOLUME"
  531. 10780 PRINT #2,"  HOURS    (CFS)  ACRE FT I       HOURS    (CFS)  ACRE FT I       HOURS     (CFS)  ACRE FT"
  532. 10790 FOR I=1 TO 80: I1=CX(253)+CX(252)*(I-1): I2=I1+CX(252)*80: I3=I2+CX(252)*80 : PRINT #2,USING FORMAT32$;I1,CX(I-1),VX(I-1),I2,CX(I+79),VX(I+79),I3,CX(I+159),VX(I+159): NEXT I
  533. 10800 RETURN
  534. 10810 PRINT #2," ":IF CX(249)=0 THEN 10830
  535. 10820 PRINT #2,USING FORMAT31$;CX(249): PRINT #2,"THEREFORE, COMBINED HYDROGRAPH WILL END AT THE SAME TIME.": PRINT #2," "
  536. 10830 RETURN                                                                                                                            '
  537. 11000 REM **************   SUBROUTINES   FOR   CHANNEL   FLOW   ***********************************************************************                        '
  538. 11010  FOR I=0 TO 20: XX(I)=0: YX(I)=0: NX(I)=0: NEXT I
  539. 11020  INPUT "ENTER NO. OF PTS. ON X-SECTION  ",F: FOR I=1 TO F:PRINT "ENTER NO.";I;"X,Y,'N'";:INPUT XX(I-1),YX(I-1),NX(I-1):NEXT I
  540. 11030 RETURN
  541. 11040 PRINT #2,USING FORMAT33$;1,2,3,4,5,6,7,8,9,10,11
  542. 11050 PRINT #2,USING FORMAT34$;XX(0),XX(1),XX(2),XX(3),XX(4),XX(5),XX(6),XX(7),XX(8),XX(9),XX(10)
  543. 11060 PRINT #2,USING FORMAT36$;YX(0),YX(1),YX(2),YX(3),YX(4),YX(5),YX(6),YX(7),YX(8),YX(9),YX(10)
  544. 11070 PRINT #2,USING FORMAT38$;NX(1),NX(2),NX(3),NX(4),NX(5),NX(6),NX(7),NX(8),NX(9),NX(10)
  545. 11080 IF F<12 THEN 11190
  546. 11090 PRINT #2," "
  547. 11100 PRINT #2,USING FORMAT40$;12,13,14,15,16,17,18,19,20,21
  548. 11110 PRINT #2,USING FORMAT35$;XX(11),XX(12),XX(13),XX(14),XX(15),XX(16),XX(17),XX(18),XX(19),XX(20)
  549. 11120 PRINT #2,USING FORMAT37$;YX(11),YX(12),YX(13),YX(14),YX(15),YX(16),YX(17),YX(18),YX(19),YX(20)
  550. 11130 PRINT #2,USING FORMAT39$;NX(11),NX(12),NX(13),NX(14),NX(15),NX(16),NX(17),NX(18),NX(19),NX(20)
  551. 11140 PRINT #2," "
  552. 11150 PRINT #2,USING FORMAT41$;L,S
  553. 11160 PRINT #2," "
  554. 11170 PRINT #2,"-------------------------------------------------------------------------"
  555. 11180 PRINT #2," "
  556. 11190 RETURN
  557. 11200 GOSUB 11040
  558. 11210 INPUT "CHANGE X-SECTION?  (1=YES, 0=NO)  ",Q9
  559. 11220 IF Q9=0 THEN 11280
  560. 11230 INPUT "ENTER NO. OF THE P0INT TO CHANGE  ",Q9
  561. 11240 IF Q9>F THEN 11230
  562. 11250 PRINT "ENTER NO.";Q9;"X,Y,'N'";
  563. 11260 INPUT XX(Q9-1),YX(Q9-1),NX(Q9-1)
  564. 11270 GOTO 11200
  565. 11280 RETURN
  566. 11290 PRINT:PRINT "THERE WILL BE A DELAY OF SEVERAL MINUTES WHILE THE HYDROGRAPH IS COMPUTED":PRINT
  567. 11300 FOR I=1 TO AX(255):IF AX(I-1) >AX(251) THEN AX(251)=AX(I-1):AX(250)=I
  568. 11310 NEXT I
  569. 11320 RETURN
  570. 11330 A0=0: P0=0
  571. 11340 IF Y8 >= D4 AND Y9 >= D4 THEN 11450
  572. 11350 P0=((X9-X8)^2+(Y9-Y8)^2)^.5
  573. 11360 IF Y8 >= D4 THEN 11400
  574. 11370 IF Y9 >= D4 THEN 11430
  575. 11380 A0=(2*D4-Y8-Y9)/2*(X9-X8)
  576. 11390 GOTO 11450
  577. 11400 A0=(D4-Y9)^2*(X9-X8)/2/(Y8-Y9)
  578. 11410 P0=P0/(Y8-Y9)*(D4-Y9)
  579. 11420 GOTO 11450
  580. 11430 A0=(D4-Y8)^2*(X9-X8)/2/(Y9-Y8)
  581. 11440 P0=P0*(D4-Y8)/(Y9-Y8)
  582. 11450 RETURN
  583. 11460 Q7=0: A9=0: B9=0: FOR A=1 TO F-1: A8=0: P8=0
  584. 11470 X8=XX(A-1): Y8=YX(A-1): X9=XX(A): Y9=YX(A): GOSUB 11330: A8=A8+A0
  585. 11480 IF A8=0 THEN 11520
  586. 11490 P8=P8+P0: R=A8/P8: IF A=F-1 THEN 11510
  587. 11500 IF NX(A)=NX(A+1) THEN A=A+1: GOTO 11470
  588. 11510 A9=A9+A8: V=1.49*R^(2/3)*S^.5/NX(A): Q1=V*A8: B9=B9+Q1*V: Q7=Q7+Q1
  589. 11520 NEXT A
  590. 11530 RETURN
  591. 11540 FOR J=2 TO 20 : IF QX(J-1,1) < Q0 THEN NEXT J
  592. 11550 D6=(Q0-QX(J-2,1))*(QX(J-1,0)-QX(J-2,0))/(QX(J-1,1)-QX(J-2,1))+QX(J-2,0)
  593. 11560 V6=(Q0-QX(J-2,1))*(QX(J-1,2)-QX(J-2,2))/(QX(J-1,1)-QX(J-2,1))+QX(J-2,2)
  594. 11570 RETURN
  595. 11580 D3=9999
  596. 11590 FOR I=1 TO F
  597. 11600 IF D3<YX(I-1) THEN 11620
  598. 11610 D3=YX(I-1)
  599. 11620 NEXT I
  600. 11630 D4=D3
  601. 11640 D4=D4+3
  602. 11650 GOSUB 11460
  603. 11660 IF Q7<AX(251) THEN 11640
  604. 11670 D5=D4
  605. 11680 FOR I=1 TO 20: D4=D3+(D5-D3)/20*I:GOSUB 11460: QX(I-1,0)=D4: QX(I-1,1)=Q7:QX(I-1,2)=B9/Q7: NEXT I
  606. 11690 O1=0: V1=0: D0=D3: Q0=AX(0): GOSUB 11540: V0=V6: D=D6: AX(AX(255))=0
  607. 11700 FOR I=2 TO INT(AX(255)+1.5)
  608. 11710 Q0=AX(I-1): GOSUB 11540: V2=V6: D1=D6: O2=O1: V3=V1: D2=D0
  609. 11720 T1=L/(1800*(V0+V1))*SQR((L*S)/(L*S+D-D0))
  610. 11730 C1=2*AX(252)/(2*T1+AX(252))
  611. 11740 T2=L/(1800*(V2+V3))*SQR((L*S)/(L*S+D1-D2))
  612. 11750 C2=2*AX(252)/(2*T2+AX(252))
  613. 11760 O3=C2*((AX(I-2)+AX(I-1))/2+(1/C1-1)*O1)
  614. 11770 IF ABS(O2-O3)<.01 THEN 11800
  615. 11780 O2=O3: Q0=O3: GOSUB 11540: V3=V6: D2=D6
  616. 11790 GOTO 11740
  617. 11800 O1=O2: BX(I-2)=O2: V0=V2: V1=V3: D0=D2: D=D1
  618. 11810 NEXT I
  619. 11820 RETURN
  620. 11830 PRINT #2,"   TIME  INFLOW  OUTFLOW I         TIME  INFLOW  OUTFLOW I         TIME  INFLOW  OUTFLOW"
  621. 11840 PRINT #2,"  HOURS   (CFS)    (CFS) I        HOURS   (CFS)    (CFS) I        HOURS   (CFS)    (CFS)"
  622. 11850 IF AX(249)<>0 THEN BX(AX(255))=0: BX(255)=BX(255)-1: BX(249)=AX(249)
  623. 11860 RETURN
  624. 11870 T0=INT((AX(255)+2)/3):  T1=AX(253):  T2=T1+AX(252)*T0:  T3=T2+AX(252)*T0
  625. 11880 PRINT #2,USING FORMAT42$;T1,AX(0),0,T2,AX(T0),BX(T0-1),T3,AX(2*T0),BX(2*T0-1)
  626. 11890 BX(252)=AX(252):BX(253)=T1+AX(253): BX(255)=AX(255)
  627. 11900 FOR I=2 TO T0
  628. 11910 T1=AX(253)+(I-1)*AX(252): T2=T1+AX(252)*T0: T3=T2+AX(252)*T0
  629. 11920 PRINT #2,USING FORMAT42$;T1,AX(I-1),BX(I-2),T2,AX(I+T0-1),BX(I+T0-2),T3,AX(I+2*T0-1),BX(I+2*T0-2): NEXT I: PRINT
  630. 11930 RETURN
  631. 11940 IF BX(249)=0 THEN 11980
  632. 11950 PRINT #2,USING FORMAT22$;BX(249)
  633. 11960 PRINT #2,"THEREFORE, COMBINED HYDROGRAPH WILL END AT THE SAME TIME."
  634. 11970 PRINT #2," "
  635. 11980 RETURN                                                                                                                            '
  636. 12000 REM **************   SUBROUTINE  FOR  PRINTING  HYDROGRAPH  FROM  DISK   ********************************************************                        '
  637. 12010  L=INT(AX(255)+.5):FOR I=L+1 TO 249:AX(I-1)=0:NEXT I:T=AX(253):K=INT((L+3)/3):BX(0)=AX(0)*AX(252)/24.2
  638. 12020  FOR I=1 TO L-1:BX(I)=BX(I-1)+(AX(I)+AX(I-1))*AX(252)/24.2:NEXT I
  639. 12030  PRINT #2,"   TIME  OUTFLOW   VOLUME I        TIME  OUTFLOW   VOLUME I        TIME  OUTFLOW   VOLUME":PRINT #2,"  HOURS    (CFS)  ACRE FT I       HOURS    (CFS)  ACRE FT I       HOURS     (CFS)  ACRE FT"
  640. 12040  FOR I=1 TO K:I1=AX(253)+AX(252)*(I-1):I2=I1+AX(252)*K:I3=I2+AX(252)*K
  641. 12050  PRINT #2,USING FORMAT32$;I1,AX(I-1),BX(I-1),I2,AX(I+K-1),BX(I+K-1),I3,AX(I+2*K-1),BX(I+2*K-1)
  642. 12060  NEXT I
  643. 12070  PRINT #2," ":PRINT #2,USING FORMAT43$;BX(L-1):PRINT #2," "
  644. 12080  IF AX(249)=0 THEN 12100
  645. 12090  PRINT #2,USING FORMAT44$;AX(249)
  646. 12100  RETURN                                                                                                                           '
  647. 15000 REM **************   SUBROUTINES   COMMON   TO   ALL   PROGRAMS   ***************************************************************                        '
  648. 15010  FOR II=0 TO 255:TEMPX(II) = AX(II):NEXT II:RETURN
  649. 15020  FOR II=0 TO 255:TEMPX(II) = BX(II):NEXT II:RETURN
  650. 15030  FOR II=0 TO 255:TEMPX(II) = CX(II):NEXT II:RETURN
  651. 15040  FOR II=0 TO 255:AX(II) = TEMPX(II):NEXT II:RETURN
  652. 15050  FOR II=0 TO 255:BX(II) = TEMPX(II):NEXT II:RETURN
  653. 15060 FOR I=0 TO 1:FOR J=0 TO 10:SX(I,J)=0:NEXT J:FOR J=0 TO 19:OX(I,J)=0:NEXT J:NEXT I:RETURN
  654. 15070 FOR I=0 TO 1:FOR J=0 TO 13:RX(I,J)=0:NEXT J:NEXT I:RETURN                                                                         '
  655. 20000 REM **************   SUBROUTINES  TO  READ & WRITE  DATA  TO  FILES   ***********************************************************                        '
  656. 20010 OPEN "O",#1,N2$:FOR I=0 TO 255:WRITE #1,TEMPX(I):NEXT I:CLOSE #1:PRINT #2,"":PRINT #2,"HYDROGRAPH HAS BEEN STORED UNDER THE NAME ";N1$:PRINT #2,"":RETURN
  657. 20020 ON ERROR GOTO 25010:OPEN "I",#3,N2$:FOR I=0 TO 255:INPUT #3,TEMPX(I):NEXT I:CLOSE #3:RETURN
  658. 20030 ON ERROR GOTO 25010:OPEN "I",#3,N2$:INPUT #3,D,R,F8,C9,O8,S8:FOR I=0 TO 1:FOR J=0 TO 13:INPUT #3,RX(I,J):NEXT J:NEXT I:FOR I=0 TO 1:FOR J=0 TO 19:INPUT #3,SX(I,J),OX(I,J):NEXT J:NEXT I:CLOSE #3:RETURN
  659. 20040 OPEN "O",#1,N2$:WRITE #1,D,R,F8,C9,O8,S8:FOR I=0 TO 1:FOR J=0 TO 13:WRITE #1,RX(I,J):NEXT J:NEXT I:FOR I=0 TO 1:FOR J=0 TO 19:WRITE #1,SX(I,J),OX(I,J):NEXT J:NEXT I:CLOSE #1:RETURN
  660. 20050 ON ERROR GOTO 25010:OPEN "I",#3,N2$:FOR I=0 TO 20:INPUT #3,XX(I),YX(I),NX(I):NEXT I:INPUT #3,L,S:CLOSE #3:PRINT #2,"CROSS SECTION HAD BEEN STORED UNDER THE NAME ";N1$:PRINT #2," ":RETURN
  661. 20060 OPEN "O",#1,N2$:FOR I=0 TO 20:WRITE #1,XX(I),YX(I),NX(I):NEXT I:WRITE #1,L,S:CLOSE #1:PRINT #2,"CROSS SECTION HAS BEEN STORED UNDER THE NAME ";N1$:PRINT #2," ":RETURN
  662. 20070 PRINT C1LEAR$:PRINT:PRINT N4$
  663. 20080 PRINT:COLOR 24,7:PRINT"   MAKE SURE DATA DISK IS IN DRIVE 2   ":COLOR 7,0
  664. 20090 PRINT:INPUT "WHAT IS THE NAME OF THE DATA FILE  ",N1$:N2$="B:"  +  N1$  +  ".DAT":RETURN                                                                 '
  665. 25000 REM **************    ERROR   TRAPING   ROUTINE    ******************************************************************************                        '
  666. 25010 ET=ERR
  667. 25020 PRINT:PRINT:PRINT
  668. 25030 IF ET=52 OR ET=53 OR ET=67 THEN 25210:REM bad file name
  669. 25040 IF ET=61 THEN 25110:REM disk full
  670. 25050 IF ET>=70 AND ET <=72 THEN 25150:REM disk error (write prot.,not ready,media  error)
  671. 25060 IF ET=25 THEN PRINT"PRINTER IS NOT READY":GOTO 25080
  672. 25070 ON ERROR GOTO 0:PRINT ET:GOTO 25260
  673. 25080 PRINT "Turn on printer. Make sure  'ON LINE '  light is on.":PRINT:PRINT:PRINT "PRESS ANY KEY TO CONTINUE"
  674. 25090 AA$=INKEY$:IF AA$="" THEN 25090
  675. 25100 GOTO 25260
  676. 25110 PRINT"DISK FULL REPLACE DATA DISK AND TRY AGAIN"
  677. 25120 PRINT:PRINT:PRINT "PRESS ANY KEY TO CONTINUE"
  678. 25130 AA$=INKEY$:IF AA$="" THEN 25130
  679. 25140 GOTO 25260
  680. 25150 PRINT"****************************  YOU HAVE A DISK ERROR  *************************"
  681. 25160 PRINT"MAKE SURE THAT YOUR DATA DISK IS IN DRIVE 1 AND SEE IF DISK DOOR IS CLOSED"
  682. 25170 PRINT"IF DISK IS IN DRIVE 1 AND DOOR IS CLOSED YOUR DISK IS WRITE PROTECTED OR FAULTY"
  683. 25180 PRINT:PRINT:PRINT "REPLACE DISK AND PRESS ANY KEY TO CONTINUE"
  684. 25190 AA$=INKEY$:IF AA$="" THEN 25190
  685. 25200 GOTO 25260
  686. 25210 PRINT "FILE NOT FOUND OR NAME NOT VALID - MUST BE LETTERS A-Z AND DIGITS O-9"
  687. 25220 PRINT "FILE NAME CANNOT BE MORE THAN EIGHT DIGITS LONG"
  688. 25230 PRINT:PRINT:PRINT "PRESS ANY KEY TO CONTINUE"
  689. 25240 AA$=INKEY$:IF AA$="" THEN 25240
  690. 25250 GOSUB 20070
  691. 25260 RESUME
  692. 25270 REM **********************************************************************
  693. 25280 END
  694.