找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 892|回复: 5

[日积月累]:发表一个促淤围垦的龙口水力计算BAS程序

[复制链接]
发表于 2003-5-20 10:23:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
促淤围垦的龙口水力计算BAS程序
n1-涨潮落潮数据个数,n2-水位库容数据个数,n3,n4糙率等,不改,m流量系数
5 : CLEAR
6 : PRINT "*********************************************"
8 : INPUT "工程名称"; a$
10 : PRINT a$; "水库截流水力计算"
20 : n1 = 13: n2 = 8: n3 = 21: n4 = 21: m = .32
30 : DIM o(n4), y(n4)
40 : INPUT "立堵/平堵(1/2)="; a1
45 : IF a1 = 1 THEN PRINT "截流方式:立堵"
48 : IF a1 = 2 THEN PRINT "截流方式:平堵"
50 : INPUT "堰顶高程yd="; yd
51 : INPUT "打印时间dt="; dt
52 : INPUT "打印时间段内计算次数n5="; n5
53 : INPUT "堰前水宽b0="; b0
54 : INPUT "涨潮历时s1="; s1
55 : INPUT "落潮历时s2="; s2
60 : INPUT "计算开始潮位h0="; h0
61 : INPUT "计算开始潮时t0="; t0
62 : PRINT "堰顶高程yd="; yd
63 : PRINT "堰前水宽b0="; b0
65 : PRINT "涨潮历时s1="; s1; TAB(9); "落潮历时s2="; s2: s1 = s1 - t0
68 : INPUT "堰宽b="; b
69 : PRINT "堰宽b="; b
70 : PRINT "计算开始潮位h0="; h0; TAB(9); "计算开始潮时t0="; t0
71 : LET a2 = 0:  IF b < 0 THEN END
72 : PRINT "打印时间内计算次数n5="; n5
74 : PRINT "*+-+-+-+-+-+-+-+-+-+-+-+-+*"
75 : T1 = t0: H1 = h0: x1 = h0
80 : FOR i1 = 1 TO INT((s1 + s2) / dt) * n5
90 : T1 = T1 + dt / n5
100 : LET ss = 1
110 : LET q = T1
112 : GOSUB 3900
115 : LET h2 = y
120 : IF i1 > 1 GOTO 150
130 : LET ss = 2: LET q = H1: GOSUB 3900
140 : LET v1 = y
150 : K4 = (x1 * (1 - a2) + h2 * a2 - yd) / (x1 * a2 + h2 * (1 - a2) - yd)
160 : IF K4 < .8 THEN GOTO 210
180 : LET ss = 3
190 : LET q = (x1 * (1 - a2) + h2 * a2 - yd) / (x1 * a2 + h2 * (1 - a2) - yd): GOSUB 3900
200 : K1 = y
210 : K2 = (h2 * (1 - a2) + x1 * a2 - yd) / b
220 : IF K2 > 1 THEN LET K2 = 1
230 : K3 = 1 - .2 * K2 * .7
240 : IF K4 < .8 THEN LET K1 = 1
250 : QQ = K1 * K3 * m * b * (2 * 9.81) ^ .5 * (h2 * (1 - a2) + x1 * a2 - yd) ^ 1.5
260 : HK = (1.05 * QQ ^ 2 / b ^ 2 / 9.81) ^ (1 / 3)
270 : IF K4 < .8 THEN LET V = QQ / (b * HK)
280 : IF K4 < .8 GOTO 300
290 : V = QQ / (b * (x1 * (1 - a2) + h2 * a2 - yd))
300 : IF V < vm GOTO 308
305 : vm = V: tm = T1: xm = x1: qm = QQ: hm = h2
308 : IF T1 / dt <> INT(T1 / dt) AND i1 > 1 GOTO 342
310 : PRINT "V="; INT(V * 1000) / 1000; TAB(9); "T="; INT(T1 * 1000) / 1000
320 : PRINT "XS="; INT(x1 * 1000) / 1000; TAB(9); "SS="; INT(h2 * 1000) / 1000
330 : PRINT "Q="; INT(QQ * 1000) / 1000
342 : IF i1 <> INT((s1 / dt) * n5 + 1) GOTO 350
344 : PRINT "涨潮时段最大流速VM="; vm
345 : PRINT "最大流速对应潮时TM="; tm
346 : PRINT "涨潮最大流速出现时的库内水位XM="; xm
347 : PRINT "最大流速对应流量QM="; qm
348 : PRINT "最大流速对应潮位HM="; hm
349 : vm = 0: tm = 0: xm = 0: qm = 0: hm = 0
350 : IF a2 = 1 GOTO 370
352 : IF i1 > INT(s1 / dt) * n5 AND x1 > h2 THEN a2 = 1
370 : v1 = v1 + QQ * dt / n5 * (-1) ^ a2 * 60
380 : LET q = v1
390 : LET ss = 4: GOSUB 3900
394 : x1 = y
396 : IF (x1 * (1 - a2) + h2 * a2 - x1 * a2 - h2 * (1 - a2)) <= 0 GOTO 400
397 : LET ss = 2: LET q = h2: GOSUB 3900
398 : LET v1 = y: LET x1 = h2
400 : NEXT i1
420 : PRINT "落潮时段最大流速vm="; vm
430 : PRINT "最大流速对应潮时tm="; tm
440 : PRINT "涨潮最大流速出现时的库内水位xm="; xm
450 : PRINT "最大流速对应流量qm="; qm
460 : PRINT "最大流速对应潮位hm="; hm
470 : IF a1 = 1 THEN b = b - 20
480 : IF a1 = 1 GOTO 70
500 : END
3900 : IF ss = 1 THEN RESTORE 5000
3910 : IF ss = 1 THEN ii = n1
3920 : IF ss = 2 THEN ii = n2
3930 : IF ss = 2 THEN RESTORE 6000
3940 : IF ss = 3 THEN RESTORE 7000
3950 : IF ss = 3 THEN ii = n3
3960 : IF ss = 4 THEN ii = n2
3970 : IF ss = 4 THEN RESTORE 6000
4000 : FOR i = 0 TO ii
4002 : IF ss <> 4 GOTO 4010
4005 : READ y(i), o(i): GOTO 4020
4010 : READ o(i), y(i)
4020 : NEXT i
4030 : FOR i = 2 TO ii - 1
4040 : IF i = ii - 1 GOTO 4080
4050 : IF q < o(i) GOTO 4070
4060 : NEXT i
4070 : IF ABS(q - o(i - 1)) <= ABS(q - o(i)) THEN i = i - 1
4080 : a5 = (q - o(i)) * (q - o(i + 1)) / (o(i - 1) - o(i)) / (o(i - 1) - o(i + 1)) * y(i - 1)
4090 : b5 = (q - o(i - 1)) / (o(i) - o(i - 1)) * (q - o(i + 1)) / (o(i) - o(i + 1)) * y(i)
4100 : c5 = (q - o(i - 1)) / (o(i + 1) - o(i - 1)) * (q - o(i)) / (o(i + 1) - o(i)) * y(i + 1)
4110 : y = a5 + b5 + c5
4120 : RETURN
5000 : DATA  0,0.82,60,1.1,120,1.81,180,2.73,240,3.52,300,3.85,360,3.87,420,3.81,480,3.43
5010 : DATA  540,2.83,600,2.23,660,1.76,718,1.4,720,1.21
6000 : DATA  0,0,1.2,210794,1.4,296576,1.7,524824,2.2,1126886,2.4,1422544,2.6,1753657,3.1,2657820,7.2,10305494
7000 : DATA  0.8,1,0.81,0.995,0.82,0.99,0.83,0.98,0.84,0.97,0.85,0.96,0.86,0.95,0.87,0.93,0.88,0.9
7010 : DATA  0.89,0.87,0.9,0.84,0.91,0.81,0.92,0.78,0.93,0.74,0.94,0.7,0.95,0.65,0.96,0.59,0.97,0.5
7020 : DATA  0.98,0.4,0.99,0.28,0.995,0.185,1.0,0
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-5-20 11:31:18 | 显示全部楼层
正需要,谢谢.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-20 21:52:02 | 显示全部楼层
1000 REM 消能计算 . 消力池设计
1100 PRINT "1. 消能计算": PRINT "2. 消力池设计"
1110 INPUT "    请选择---! "; IJ1
1120 IF IJ1 = 1 GOTO 1300
1200 PRINT " 消力池设计 : 请选择消能工形式"
1210 PRINT "1. 降低护坦高程形成消力池": PRINT "2. 护坦尾坎形成消力池"
1220 PRINT "3. 消力池中设辅助消能工": INPUT "    请选择--! "; IJ2
1300 INPUT "堰顶标高"; H0:     INPUT "上游河底标高"; H1
1310 INPUT "下游河底标高"; H2: INPUT "上游正常蓄水位"; H11
1320 IF IJ1 = 1 THEN INPUT " 消力池深度"; DC: GOTO 1500
1400 IF IJ2 = 1 THEN INPUT "初拟消力池深度值"; DC
1410 IF IJ2 = 2 THEN INPUT "初拟坎高值"; DC
1500 KA = 1.05: O = 1.1: KF = .95: Z = 1
1510 INPUT "设计泄流"; Q: IF Q = 0 GOTO 2210
1520 INPUT "下游水位"; H22: H22(Z) = H22: Q(Z) = Q
1600 P1 = H0 - H1: P2 = H0 - H2: C = KA * Q * Q / 19.62 / KF / KF
1610 T0 = H11 - H2 + DC: HS = H22 - H2: P = -T0 * T0 / 9
1620 QQ = -T0 ^ 3 / 27 + C / 2: R = -(-P) ^ .5: X = QQ / R ^ 3
1630 F = ATN(SQR(1.00005 - X * X) / X): Y1 = 2 * R * COS(3.1415 / 3 - F / 3) + T0 / 3
1640 Y2 = 2 * R * COS(3.1415 / 3 + F / 3) + T0 / 3
1650 Y3 = -2 * R * COS(F / 3) + T0 / 3
1660 IF Y1 > 0 AND Y1 < HS THEN HC = Y1
1670 IF Y2 > 0 AND Y2 < HS THEN HC = Y2
1680 IF Y3 > 0 AND Y3 < HS THEN HC = Y3
1690 HC2 = HC / 2 * ((1 + 16 * C * KF * KF / HC ^ 3) ^ .5 - 1)
1700 DZ = C * (1 / HS / HS / KF / KF - 1 / HC2 / HC2): LJ = 6.9 * (HC2 - HC)
1710 A$(Z) = "远区": IF HC2 < (HS - .5) THEN A$(Z) = "淹没"
1720 IF HC2 < HS AND HC2 > (HS - .5) THEN A$(Z) = "临界"
1730 HC(Z) = HC: HC2(Z) = HC2: LJ(Z) = LJ
1740 IF IJ1 = 1 THEN Z = Z + 1: GOTO 1510
1800 ON IJ2 GOTO 1810, 2000, 2000
1810 D0 = O * HC2 - HS - DZ: KD = DC - D0
1820 IF ABS(KD) > .1 THEN DC = DC - .05 * SGN(KD): GOTO 1600
1830 LS(Z) = .8 * LJ
1840 D(Z) = DC: Z = Z + 1: GOTO 1510
1900 RESTORE 5600: FOR I = 45 TO 99: READ O(I): NEXT I
1910 HN = HS - DC: H10 = 1.1 * HC2 - DC + Q * Q / 19.62 / 1.21 / HC2 / HC2
1920 I = INT(HN / H10 * 100 + .5): IF I < 45 THEN O(I) = 1
1930 IF I >= 100 THEN I = 100: O(I) = .5
1940 H10 = (Q / .42 / O(I) / (2 * 9.810001) ^ .5) ^ (2 / 3) - Q * Q / 2 / 9.810001 / (1.1 * HC2) ^ 2
1950 C0 = 1.1 * HC2 - H10: KC = DC - C0
1960 IF ABS(KC) > .1 THEN DC = DC - SGN(KC) * .05: GOTO 1600
1970 LS(Z) = .8 * LJ
1980 D(Z) = DC: Z = Z + 1: GOTO 1510
2000 FC = Q / HC / (9.81 * HC) ^ .5
2010 H3 = .7 * FC * (FC - 1) ^ .5
2020 X = .8 * HC: LS(Z) = .32 * LJ + .24 * LJ
2210 LPRINT "序号  泄流流量  上游水位  下游水位  收缩水深  共轭水深  水跃长度  水跃形式 "
2220 FOR I = 1 TO Z - 1:  LPRINT USING "###"; I;
2230 LPRINT USING "#######.##"; Q(I); H11; H22(I);
2240 LPRINT USING "#######.##"; HC(I); HC2(I); LJ(I);
2245 LPRINT "     "; A$(I): NEXT I: LPRINT : PRINT
2246 END
2250 LPRINT "序号  泄流流量  上游水位  下游水位";
2260 IF IJ = 1 THEN LPRINT "  消力池深度" ELSE LPRINT "  尾坎高度"
2270 LPRINT "消力池长度   厚度"
2280 FOR I = 1 TO N - 1: LPRINT USING "###"; I;
2290 LPRINT USING "#######.##"; Q(I); H11(I); H22(I - 1);
2295 IF IJ = 1 THEN LPRINT USING "#######.##"; D(I); LS(I): GOTO 2350
2300 LPRINT USING "#######.##"; V(I); LS(I)
2350 NEXT I: END
5600 DATA 1.000,.998,.996,.994,.992,.990,.989,.988,.987,.986,.985
5610 DATA       .983,.981,.979,.977,.975,.972,.969,.966,.963,.960
5620 DATA       .956,.952,.948,.944,.940,.935,.940,.922,.915,.907
5630 DATA       .900,.893,.885,.875,.865,.855,.845,.830,.815,.800
5640 DATA       .785,.768,.750,.730,.710,.677,.651,.613,.574,.535
5650 DATA       .520,.500,.475,.435
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-31 10:04:29 | 显示全部楼层
呵呵,补充一个说明。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-1 18:15:04 | 显示全部楼层
堵口计算程序 有没有人 把他编成vb啊  我这里打不开bas
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-4 01:51:17 | 显示全部楼层
去下载一个TURBO BASIC运行
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 05:50 , Processed in 0.195862 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表