梯形明渠水力计算程序
- 格式:xls
- 大小:18.50 KB
- 文档页数:1
梯形渠道水力半径公式摘要:一、引言二、梯形渠道水力半径公式的概念和原理三、梯形渠道水力最佳断面设计的方法四、梯形渠道水力半径公式的应用实例五、结论正文:一、引言梯形渠道是水利工程中非常常见的一种渠槽形式,它具有占地少、施工简单、运行可靠等优点。
在水利工程设计中,如何确定梯形渠道的水力最佳断面,以达到过水面积最大或流量最大的目的,是一个重要的研究课题。
而梯形渠道水力半径公式则是解决这一问题的关键。
二、梯形渠道水力半径公式的概念和原理梯形渠道的水力半径公式是指,在梯形渠道内,水流的半径与渠道的宽度和深度之间存在着一定的关系。
这个关系可以用一个公式来表示,即:R = (b + h) / 2,其中,R 表示水力半径,b 表示梯形渠道的宽度,h 表示梯形渠道的深度。
根据水力半径公式,我们可以知道,当梯形渠道的宽度和深度确定时,水力半径也就确定了。
而水力半径的大小直接影响到梯形渠道的水力性能,如过水面积、流量等。
三、梯形渠道水力最佳断面设计的方法要确定梯形渠道的水力最佳断面,可以采用以下步骤:1.根据工程需要,确定梯形渠道的宽度b 和深度h。
2.根据水力半径公式,计算出对应的水力半径R。
3.利用梯形渠道的水力最佳断面设计方法,求解出最佳断面的水深。
4.根据求解出的最佳断面水深,设计出梯形渠道的水力最佳断面。
四、梯形渠道水力半径公式的应用实例假设某水利工程需要设计一条梯形渠道,宽度为4 米,深度为2 米。
根据水力半径公式,可以计算出该梯形渠道的水力半径为:R = (4 + 2) / 2 = 3 米。
然后,利用梯形渠道的水力最佳断面设计方法,可以求解出最佳断面的水深。
假设该渠道的设计流量为10 立方米/秒,通过计算可得,最佳断面的水深为0.6 米。
根据求解出的最佳断面水深,可以设计出梯形渠道的水力最佳断面,以达到过水面积最大或流量最大的目的。
五、结论梯形渠道水力半径公式在水利工程设计中具有重要作用,它可以帮助我们确定梯形渠道的水力最佳断面,从而达到过水面积最大或流量最大的目的。
梯形渠道水力半径公式
梯形渠道水力半径公式是用于计算梯形渠道中的水流水力半径的数学公式。
水
力半径在水力学中是一个重要的参数,用于描述水流的流动情况和水在渠道中的阻力大小。
在梯形渠道中,水流通常是非均匀的,即底部宽度大于水面宽度。
这种非均匀
流动条件下,水力半径的计算需要考虑梯形渠道的几何特征。
梯形渠道的几何特征包括底宽b、上底宽t、水深h以及底宽和上底宽之间的夹角θ。
梯形渠道水力半径公式如下:
Rh = (b + t*h)/(2*(b + h*sin(θ/2)))
其中,Rh表示水力半径,b表示底宽,t表示上底宽,h表示水深,θ表示底宽
和上底宽之间的夹角。
通过使用这个公式,我们可以计算出梯形渠道中的水流水力半径。
水力半径的
数值越大,表示流体的阻力越小,流速越大。
因此,水力半径的计算对于渠道设计、水流分析和水力性能评估非常重要。
需要注意的是,在使用梯形渠道水力半径公式时,所有长度单位需要保持一致。
同时,该公式仅适用于非均匀流动条件下的梯形渠道,对于其他类型的渠道需要使用相应的公式进行计算。
综上所述,梯形渠道水力半径公式是计算梯形渠道中水流水力半径的数学公式,通过该公式可以有效评估梯形渠道的水力性能和流动特性。
在工程实践中,合理应用该公式能够提高渠道的设计质量和水流的安全性。
运用EXCEL软件计算梯形渠道流量在渠道流量的计算中,主要对水深进行试算,有时一次不能成功,需要进行多次试算,过去用手工计算非常繁琐,工作量大,容易出现错误。
而现在运用Excel软件的对数据自动处理和计算功能,就可以很轻松地完成渠道设计流量的计算工作。
下面仅就自己在实际工作中运用EXCEL软件对梯形渠道流量的计算方法作一简介,以供参考。
一、渠道流量计算公式在渠道横断面设计中,灌溉渠道水流以明渠均匀流公式计算。
明渠均匀流即是水流在渠道中流动,各断面的水深、断面平均流速和流速颁布都沿流向不变。
明渠均匀流的计算公式为:Q=ων=ωC(Ri)1/2式中 ω——过水断面面积R——水力半径,R=ω/χ χ——湿周i——渠道的底坡C——谢才系数,C=(1/n)R1/6n——渠道糙率二、计算步骤计算时采用试算法,具体步骤如下:1、先假设一个水深h值;2、根据已知的渠底宽b、边坡系数m计算出渠道的过水断面面积ω、湿周χ、水力半径R;3、依据糙率n及水力半径R计算出谢才系数C值;4、用Q=ωC(Ri)1/2(i已知)计算流量Q;5、若此流量与需要通过的流量相等,讲明假设的水深值为通过需要流量时的水深;若不相等,则应另假设一个水深,仍按上述步骤计算,直到算出的流量值与要求通过的流量值相等为止。
三、 在Excel中列式计算在Excel中建立一个新的工作薄,在A3列输入所要计算的渠道名称,B3列输入渠道水深h,C3列输入渠道底宽b,D3列输入渠道边坡系数m,E3列输入渠道糙率n,F3列输入渠道底坡i等基础数据。
根据上述计算步骤,下面进行过水面积,湿周,水力半径,谢才系数及流量的计算。
选择G3单元格,输入公式ROUND(((D5+E5*C5)*C5),2)计算过水断面面积ω;选择H3单元格,输入公式计算湿周x=ROUND((D5+2*C5*(SQRT(1+POWER(E5,2)))),2);选择I3单元格,输入公式ROUND((H5/I5),2)计算水力半径R;选择J3单元格,输入公式ROUND((1/F5*(POWER(J5,0.167))),2)计算谢才系数C;最后选K3单元格,输入公式ROUND((H5*K5*(SQRT(J5*G5))),2)计算设计流量Q。
D-6 常用断面渠道水利学计算程序作者 杨志河(水电部天津勘测设计院)一、编制目的渠道工程的设计主要是确定设计流量和纵横断面尺寸。
前者是根据需水要求确定,后者是根据水利计算确定。
渠道纵横断面尺寸的设计是互为条件、互相联系的。
在实际工作中往往将纵横断面设计交替进行,反复计算和经济实用比较,最后选择合理的设计方案。
渠道水力计算常借用各种诺模图查算或采用试算法,这样工作量很大,而且误差大,进行多种方案的比较更加困难。
编写计算程序,使用电子计算机直接求解高阶隐函数方程式,短时间内能提供多种设计方案,对于提高渠道工程的设计质量,加快设计速度有积极意义。
二、程序说明㈠ 计算原理、公式、依据渠道中的水流具有自由表面、水流属无压流,水流流态可以是恒定流或非恒定流,均匀流或非均匀流,也可以是急变流或渐变流。
渠道一般较长,在一定的渠段内比降保持不变,断面均匀,渠道中的水流接近均匀流。
虽然渠道中免不了有弯曲、断面扩大、收缩等情况,但都是局部的变化,本程序利用均匀流公式进行计算。
非均匀流另有程序计算。
1、基本公式:渠道过水断面流量V W Q ⨯=谢才公式RI C V ⨯=流量模数R C W K ⨯⨯=水利最优梯形断面的宽深比)1(22M MH B P MM M -+⨯==式中:W-渠道断面过水面积; V-渠道断面平均流速;C-谢才系数,采用满宁公式进行计算611R N C ⨯=,采用巴甫洛夫斯基公式进行计算YR N C ==1,其中N 为渠道糙率,R 为渠道过水断面水力半径, R N N Y )1.0(75.013.05.2---=B M -水力最优梯形断面底宽; H M -水力最优梯形断面水深; M-梯形断面的边坡。
以上公式参考武汉水利电力学院编《水利计算手册》(水利出版社1980年出版)第二篇-渠道的水利计算。
2、计算简图:㈡ 水力要素W 、X 、R 、B 计算公式式中各符号的意义见图1,矩形21==MM,三角形B=0三、程序功能、适用范围及使用条件㈠程序功能本程序由“T”段程序及“F”段程序组成,分别适用于梯形(包括三角形、矩形)和复式断面渠道的水力计算。
明渠均匀流水力计算书
项目名称_____________日期_____________
设计者_____________校对者_____________
一、示意图:
二、基本设计资料
1.依据规范及参考书目:
武汉大学水利水电学院《水力计算手册》(第二版)
中国水利水电出版社《灌区建筑物的水力计算与结构计算》(熊启钧编著)2.计算参数:
计算目标: 计算流量。
正常水深ho = 3.20 m,渠底比降i = 1/7000,底宽(或半径)b = 1.50 m
渠槽为梯形断面:
左侧边坡系数m1 = 2.500,右侧边坡系数m2 = 2.500
糙率n = 0.0250
三、计算依据
1.明渠均匀流基本计算公式:
Q =ω×C ×(R ×i)1/2
R =ω/ χ
C = 1 / n ×R1/6(曼宁公式)
以上式中:Q为流量,m3/s;ω为过水断面面积,m2;R为水力半径,m;
χ为湿周,m;i为渠底比降;C为谢才系数,m0.5/s;n为糙率
四、计算结果
过水断面面积ω= 30.400 m2,湿周χ= 18.733 m
水力半径R = ω/χ= 30.400/18.733 = 1.623 m
谢才系数C = 1/n×R1/6 = 1/0.0250×1.6231/6 = 43.362 m0.5/s
过水流量Q = ω×C×(R×i)1/2
= 30.400×43.362×(1.623×1/7000)1/2 = 20.071 m3/s。
梯形渠道水力半径公式【原创版】目录一、梯形渠道水力半径公式概述二、梯形渠道水力半径公式的计算方法三、梯形渠道水力最佳断面设计方法四、结论正文一、梯形渠道水力半径公式概述梯形渠道是水利工程中常用的一种渠道形式,它具有占地少、施工简单、运行可靠等优点。
在梯形渠道的水力设计中,水力半径是一个重要的参数。
水力半径是指水流在渠道内形成的圆形横断面上的半径,其值直接影响着渠道的流速、流量等水力特性。
二、梯形渠道水力半径公式的计算方法梯形渠道的水力半径公式可以通过以下步骤计算得到:1.确定梯形渠道的宽深比,即渠道宽度 B 与渠道深度 H 的比值。
2.根据宽深比,确定渠道的水力半径 R。
对于梯形渠道,水力半径 R 可以通过以下公式计算:R = (B * H) / (B + H)3.计算梯形渠道的粗糙系数 n。
粗糙系数 n 是描述渠道内壁面粗糙程度的一个参数,其值会影响渠道的流速和流量。
一般情况下,可以根据渠道的材料和施工情况选取合适的粗糙系数 n 值。
三、梯形渠道水力最佳断面设计方法梯形渠道的水力最佳断面是指在通过一定流量时,渠道面积最小或者过水面积一定时,通过的流量最大的断面。
为了设计出水力最佳断面,可以采用以下方法:1.根据梯形渠道的水力半径公式,计算不同宽深比下的水力半径 R 值。
2.结合实际情况,选取合适的粗糙系数 n 值。
3.利用明渠均匀流计算公式,计算不同宽深比和粗糙系数 n 下的渠道流量。
4.对比不同宽深比和粗糙系数 n 下的渠道流量,选取面积最小或者通过流量最大的断面作为水力最佳断面。
四、结论梯形渠道的水力半径公式和最佳断面设计方法对于渠道的水力设计具有重要意义。
通过合理设计渠道的水力半径和断面形状,可以有效提高渠道的输水效率,减少工程投资和运行费用。
弧底梯形渠道实用经济断面计算及施工摘要:水流比较稳定,水深变幅小,不易淤积或冲刷,在适当的地形条件下,挖填方量可以平衡,但在相同的水位下所需的过水断面较大。
根据弧底梯形渠道的水力最佳断面计算公式介绍了实用经济断面的计算方法和实际应用中的计算步骤及该断面的衬砌方法。
关键词:弧底梯形渠道;经济断面计算;渠道衬砌1弧底梯形渠道实用经济断面计算方法弧底梯形渠道的水力最佳断面是指断面面积一定而通过流量最大的断面。
按以下各式计算:Ho=1.542r0=H0b0=2H0/ω0= +mH02式中,H0 为水力最佳条件下的渠道水深;r0 为水力最佳条件下的渠底圆弧半径;b0 为水力最佳条件下的弧形底的长(即弦长);ω0 为水力最佳条件下的过水断面面积;X0 为水力最佳条件下的湿周;θ为圆心角;i 为渠道纵坡;Q为渠道设计流量;n 为糙率系数;m为渠道内边坡系数。
在弧底梯形渠道实用经济断面计算实际设计时多采用即符合水力最佳断面的要求又能适应各种具体情况需要的实用经济断面。
这种断面,其渠道设计流速比水力最佳断面的流速增加2%~4%,即过水断面面积较水力最佳断面面积减小2%至增加4%,在此范围内仍可认为基本符合水力最佳条件。
但流速在增加2%至减少4%的范围内,其水深变化范围则为水力最佳断面水深的68%~160%,其相应的底宽(即弦长) 范围则为29%~40%。
当流量Q、纵坡i、糙率n、边坡系数m 为已定时,弧底梯形渠道水力最佳断面与实用经济断面之间关系公式为:AKr2+BKr+C=0A=2(2m-2 )-2α4(2m+θ) +2m-B=4 (2m-2 +θ)-4α4(2m+θ) +2m-C=4(1+m2)-2α4(2m+θ)m式中, Kr 为实用经济断面与水力最佳断面的过水断面面积之比;α为实用经济断面对水力最佳断面偏离程度的系数,等于实用经济断面面积与水力最佳断面面积之比。
实用经济断面计算步骤:①根据已知条件Q 、i、m、n,计算水力最佳断面的水深H0、过水断面面积ω0、湿周X0 。
梯形渠道断面尺寸、水深计算水深底宽边坡过水面积湿周水力半径糙率谢才系数坡比降流速流量h(m)b(m)m A(m*m)χ(m)R(m)n C(m^1/2/s)I v(m/s)Q(m^3/s) 0.400.30 1.000.280 1.4310.1960.025030.4760.01 1.3480.377 0.64 1.000.410 1.8100.2260.022534.6940.000250.2610.1070.600.600.500.540 1.9420.2780.012067.3270.03 6.150 3.321 0.400.500.500.280 1.3940.2010.018042.5130.03 3.3000.924 0.600.320.400.336 1.6120.2080.012064.1640.03 5.073 1.705 0.750.80 1.00 1.157 2.9150.3970.02534.2920.01 2.1607 2.5004说明:1、计算的范围为尾水(即尾0+000~尾0+017.5)。
2、计算时假设该渠水流为明渠均匀流进行水力计算。
3、该渠道的衬砌为浆砌块石衬砌,其糙率n值取为n=0.025。
水 深过水面积湿 周水力半径糙 率谢才系数底坡比降流 速流 量h(m)A(m*m)χ(m)R(m)n C(m^1/2/s)I v(m/s)Q(m^3/s)0.6700 1.608 3.740.42994650.022538.6117860.00120.8770 1.41030.40000.16 1.20.13333330.01259.5628140.03 3.76710.6027.0#VALUE!#VALUE!0.014#VALUE!0.0012#######VALUE!0.80000.56 2.30.24347830.01843.9006410.01 2.1662 1.21311.3800 2.208 4.360.5064220.02535.7118290.002 1.1365 2.50950.30000.090.90.10.01256.7743390.03 3.10970.27990 1.600.02500.0020.00000.00001.3770 2.2032 4.3540.50601750.02535.7070720.002 1.1359 2.50271.38002.2084.360.5064220.02535.7118290.002 1.13652.5095201882.400.401.800.70矩形渠道断面尺寸、水深计算底 宽b(m)1.601.600.301.601.60水 位湿 周水力半径糙 率比降h(m)χ(m)R(m)n I 4014 4.188810.064870.0810.0083401524.73240.6629390.0810.0083401641.99927 1.1770520.0810.0083401756.68853 1.7723470.0810.0083401860.01827 2.6099290.0810.0083401963.96554 3.3681810.0810.0083402068.29129 4.0660120.0810.0083402171.52681 4.7937480.0810.0083402274.599415.4991830.0810.0083402377.672026.1762850.0810.0083402480.744616.8282910.0810.008314.0209061270931,401561.9852860896954,4016165.499744002757,40170.0493423963017573,4014水位~流量关系795.6114.02156.643397215.447505277.673195河道流量~水位关系曲线333.978518041592,4018544.493160351384,4019795.610327806321,4020流 量Q(m 3/s)0.05A(m 2)过水面积0.27172916.39606949.435331100.471771479.724499342.881492410.235771437.541816.34551.3476792231.971437.53901810852,40221816.34129695998,40232231.96604967931,402461.99165.50333.981096.43156212984,40211096.43544.49河道流量~水位关系曲线河道流量~水位关系曲线河道流量~水位关系曲线河道流量~水位关系曲线河道流量~水位关系曲线河道流量~水位关系曲线河道流量~水位关系曲线0.2780.466.90.160.2231780.040.2975713 1.1902850.12419166860325393625640高程261577.6 470332.55293136.569967 2.054854796.280.507464530.8910 2.29723770110.9594720.8916220.58413933690.4333332860.2780.552.80.790.1076410.2780.552.80.10.73392高程45128267891096110.58120.413142775 1.250.7224030.043000高程39008400 4400 5450 646.379.27416.379474723.185 4.6378.18547220 895449 1.3842694561011121315.7-0.0079614高程4567891011121314实际堆渣量可堆渣量(万m3)(万m3)1#废石场新建矿区道路下方0.490.52103024m~3034m0.21沟谷地,但坡度较陡、坡度在30°左右。
module NrType ! 确定常数implicit noneinteger,parameter::I2B=selected_int_kind(4)integer,parameter::I4B=selected_int_kind(9)integer,parameter::SP=kind(1.0) ! 单精度integer,parameter::DP=kind(1.0d0) ! 双精度real(DP),parameter::ERR=1.0d-6 ! 两实数差值的绝对值小于此常数可认为相等end module NrTypemodule wtsfuse NrTypeimplicit nonesave ! 模块内全局变量均为静态变量integer(I2B),parameter::NOUT=2 ! 输出文件号integer(I2B)::dr ! 水面线计算方向real(DP),parameter::G=9.8d0 ! 重力加速度real(DP)::q,i,n,m,b,csn,srm,alfa! 以上分别为流量,底坡比降,糙率,边坡系数,底宽,底坡余弦值,边坡余割值,动能修正系数real(DP)::v2,j1,j2,es1,es2,ds! 流速,水力比降,断面比能,断面间距real(DP),allocatable::h(:),v(:),s(:) ! 水深,流速,距起始(控制)断面的距离! 外部函数real(DP),external::ErFenFa ! 二分法real(DP),external::zBrent ! 布伦特法containssubroutine ReadData() ! 读取数据! 使用的全局变量有:q,i,n,m,b,NOUTwrite(*,*)'键盘输入:流量Q,底坡比降i,糙率n,边坡系数m,底宽b(单位均为国际单位制)'read(*,*)q,i,n,m,b ! 输入流量,底坡比降,糙率,边坡系数,底宽if(q<ERR.or.n<ERR.or.m<0.0d0.or.b<0.0d0)then ! m,b可以为0,i可正可负write(*,*)'错误:Q,n必须均为正数!m,b必须均为非负数!'stopend ifwrite(*,"(5x,'Q=',f8.2,'(m**3/s)',4x,'i=',f8.5,4x,'n=',f6.4,4x,'m=',f4.2,4x,'b=',f7.2,'(m)')")q,i,n,m,b write(NOUT,"(5x,'Q=',f8.2,'(m**3/s)',4x,'i=',f8.5,4x,'n=',f6.4,4x,'m=',f4.2,4x,'b=',f7.2,'(m)')")q,i,n,m,b end subroutine ReadDatasubroutine Cal() ! 计算! 全局变量均使用real(DP)::a,r,hk,h0,hd,hb ! 过水面积,水力半径,临界水深,正常水深,控制水深,区间端点水深integer(I2B)::l,ns,j ! ns为区间总数,j为计算方法alfa=1.05d0 ! 动能修正系数csn=sqrt(1.0d0-i*i) ! 底坡余弦值srm=sqrt(1.0d0+m*m) ! 边坡余割值call SubHk(hk) ! 调用子程序SubHk求临界水深write(*,"(5x,'临界水深Hk=',f10.6,'(m)')")hkwrite(NOUT,"(5x,'临界水深Hk=',f10.6,'(m)')")hk! 计算正常水深H0if(i<ERR)then ! i<=0即平坡或逆坡h0=100.0d0 ! 正常水深H0设为一大值write(*,*)'i<=0,没有正常水深'write(NOUT,*)'i<=0,没有正常水深'elsecall SubH0(h0) ! 调用子程序SubHk求正常水深write(*,"(5x,'正常水深H0=',f10.6,'(m)')")h0write(NOUT,"(5x,'正常水深H0=',f10.6,'(m)')")h0endifwrite(*,*)'键盘输入:控制水深Hd,断面间距Ds,区间总数Ns(断面总数为Ns+1)'read(*,*)hd,ds,ns ! 输入控制水深,断面间距,区间总数if(hd<ERR.or.ds<ERR.or.ns<=0)thenwrite(*,*)'错误:Hd,Ds必须均为非负数!Ns必须为正整数!'stopend if! 断面总数为ns+1allocate(h(ns+1),v(ns+1),s(ns+1)) ! 动态数组分配内存h=0.0d0;v=0.0d0;s=0.0d0 ! 赋初值! 计算起始(控制)断面参数h(1)=hd ! 第一断面为控制断面a=(b+m*h(1))*h(1) ! 过水面积r=a/(b+2.0d0*h(1)*srm) ! 水力半径v(1)=q/a ! 流速j1=(n*v(1))**2/r**(4.0d0/3.0d0) ! 水力比降es1=csn*h(1)+alfa*v(1)*v(1)/(2.0d0*G) ! 断面比能! 判断水面线计算方向:dr=1,控制断面在上游;dr=-1,控制断面在下游if((hd>hk).or.((abs(hd-hk)<ERR).and.(hd<h0)))thendr=-1write(*,'(a,i2,a)')'Dr=',dr,'(缓流,控制断面在下游,计算上游渠道水面线)'write(NOUT,'(a,i2,a)')'Dr=',dr,'(缓流,控制断面在下游,计算上游渠道水面线)'elsedr=1write(*,'(a,i1,a)')'Dr=',dr,'(急流,控制断面在上游,计算下游渠道水面线)'write(NOUT,'(a,i1,a)')'Dr=',dr,'(急流,控制断面在上游,计算下游渠道水面线)'endif! hb:水面线从hd出发所趋向的该区域水深界限(求解断面水深时的初始区间端点值之一) ! hb在水面线变化范围的另一端if(((hk>h0).and.(hd>hk)).or.((h0>hk).and.(hd<hk)))thenhb=hk ! S1,M3,H3,A3型曲线elsehb=h0 ! S2,S3,M1,M2,H2,A2,C1,C3型曲线endifs(1)=0.0d0 ! 距起始(控制)断面的距离write(*,*)'选择水面线数值计算方法:'write(*,*)'1.布伦特法(速度较快,默认方法)'write(*,*)'2.二分法(速度较慢)'read(*,*)j ! 选择计算方法select case(j)case(1)write(*,*)'采用布伦特法计算'write(NOUT,*)'采用布伦特法计算'case(2)write(*,*)'采用二分法计算'write(NOUT,*)'采用二分法计算'case defaultwrite(*,*)'输入错误,默认布伦特法!'write(NOUT,*)'输入错误,默认布伦特法!'j=1 ! 默认为布伦特法end selectdo l=2,ns+1 ! 计算各断面水深H(L)和流速V(L)if(abs(h(l-1)-h0)<ERR)then ! 水深接近正常水深H0时近似均匀流h(l)=h0v(l)=v(l-1)elseif(j==1)thenh(l)=zBrent(fe,h(l-1),hb,ERR) ! 采用布伦特法elseh(l)=ErFenFa(fe,h(l-1),hb,ERR) ! 采用二分法计算end ifv(l)=v2j1=j2es1=es2endifs(l)=(l-1)*ds ! 距起始(控制)断面的距离end do! 输出计算结果write(*,"(5x,'控制水深Hd=',f7.3,'(m)',5x,'断面间距Ds=',f7.3,'(m)',5x,'区间总数Ns=',&&i3//7x,'L',10x,'H(L)',10x,'V(L)',9x,'S(L)'/18x,'(m)',10x,'(m/s)',&&9x,'(m)'/5x,'------------------------------------------------')")hd,ds,nswrite(NOUT,"(5x,'控制水深Hd=',f7.3,'(m)',5x,'断面间距Ds=',f7.3,'(m)',5x,'区间总数Ns=',& &i3//7x,'L',10x,'H(L)',10x,'V(L)',9x,'S(L)'/18x,'(m)',10x,'(m/s)',&&9x,'(m)'/5x,'------------------------------------------------')")hd,ds,nswrite(*,"(5x,i3,6x,f10.6,4x,f10.6,2x,f10.3)")(l,h(l),v(l),s(l),l=1,ns+1)write(NOUT,"(5x,i3,6x,f10.6,4x,f10.6,2x,f10.3)")(l,h(l),v(l),s(l),l=1,ns+1)deallocate(h,v,s) ! 释放动态数组内存end subroutine Calsubroutine SubHk(x) ! 牛顿法或迭代法求解临界水深! 使用的全局变量有:q,alfa,G,csn,b,m,ERRreal(DP),intent(out)::xreal(DP)::temp,h1,h2,bb,aareal(DP),parameter::Y=1.0d0/3.0d0 ! 指数常数integer(I2B),parameter::kMax=40 ! 最大迭代次数integer(I2B)::ktemp=q*q*alfa/(G*csn) ! 临时数据,迭代时还有用h1=temp**Y/b**(2.0d0*Y)! 矩形断面m=0时的临界水深if(m<ERR)then ! 矩形断面m=0时x=h1return ! 临界水深已求end if! m>0梯形时h1=m*h1/b ! 西北农林科技大学《水力学》书上公式选择判定参数if(h1<3.0d0)then ! 3.0为分界点h1=1.3d0*(sqrt(1.0d0+1.54d0*h1)-1.0d0)elseh1=1.12d0*h1**0.604d0-0.39d0end if! h1<757时,临界水深误差小于0.3%;h1<2560时,临界水深误差小于0.7% h1=h1*b/m ! 作为(牛顿法或迭代法)迭代初值write(*,'(a,f10.6,a)')'梯形断面临界水深迭代初值:',h1,'(m)'! 优先选用牛顿法(速度快但不能保证收敛)h2=h1 ! h2为牛顿法迭代初值do k=1,kMaxbb=b+2.0d0*m*h2 ! 水面宽度aa=(b+m*h2)*h2 ! 过水面积x=h2+(aa**3/temp-bb)/(2.0d0*m-3.0d0*bb*bb/aa) ! 牛顿法if(abs(x-h2)>ERR)then ! 精度不够,继续迭代h2=xelse ! 精度满足write(*,*)'求解临界水深时牛顿法的迭代次数:',kreturn ! 求出m>0梯形时的临界水深(牛顿法)end ifend do! 牛顿法不收敛而采用迭代法(保证收敛但速度较慢),迭代初值仍为h1 write(*,*)'牛顿法不收敛而采用迭代法!'do k=1,kMaxx=(temp*(b+2.0d0*m*h1))**Y/(b+m*h1)if(abs(x-h1)>ERR)then ! 精度不够,继续迭代h1=xelse ! 精度满足write(*,*)'求解临界水深时迭代法的迭代次数:',kreturn ! 求出m>0梯形时的临界水深(迭代法)end ifend dowrite(*,'(a,i2,a)')'错误:求解临界水深时迭代次数超过',kMax,'次!' stopend subroutine SubHksubroutine SubH0(x) ! 迭代法求解正常水深! 使用的全局变量有:q,n,i,b,srm,m,ERRreal(DP),intent(out)::xreal(DP)::temp,h1 ! 临时数据integer(I2B),parameter::kMax=40 ! 最大迭代次数integer(I2B)::ktemp=(q*n/sqrt(i))**0.6d0 ! 迭代时还有用h1=temp/b**0.6d0 ! 迭代初值write(*,'(a,f10.6,a)')'正常水深迭代初值:',h1,'(m)'do k=1,kMaxx=temp*(b+2.0d0*srm*h1)**0.4d0/(b+m*h1)if(abs(x-h1)>ERR)then ! 精度不够,继续迭代h1=xelse ! 精度满足write(*,*)'求解正常水深时的迭代次数:',kreturn ! 求出梯形时的正常水深end ifend dowrite(*,'(a,i2,a)')'错误:求解正常水深时迭代次数超过',kMax,'次!' stopend subroutine SubH0function fe(x) ! 水面线计算方程! 使用的全局变量有:b,m,q,n,v2,srm,csn,alfa,G,es1,es2,dr,i,j1,j2,ds real(DP),intent(in)::xreal(DP)::fe,aaaa=(b+m*x)*x ! 过水面积v2=q/aa ! 流速j2=(n*v2)**2/(aa/(b+2.0d0*x*srm))**(4.0d0/3.0d0) ! 水力比降es2=csn*x+alfa*v2*v2/(2.0d0*G) ! 断面比能fe=es1-es2+dr*(i-(j1+j2)/2.0d0)*dsreturnend function feend module wtsffunction zBrent(Func,x1,x2,tol) ! 采用布伦特法(有所改动)use NrTypereal(DP),intent(in)::x1,x2,tol ! tol表示收敛的精度real(DP)::zBrentinterfacefunction Func(x)use nrtypeimplicit nonereal(DP),intent(in)::xreal(DP)::Funcend function Funcend interfaceinteger(I2B),parameter::itMax=100 ! 最大迭代数real(DP),parameter::eps=3.0d-8integer(I2B)::iter ! 当前迭代数real(DP)::a,b,c,d,e,fa,fb,fc,p,q,r,s,tol1,xma=x1b=x2do ! 这个循环是为了保证区间有根fa=Func(a)fb=Func(b)if(fa*fb<0.0d0)exit ! 为有根区间,退出循环write(*,*)'(x1,x2)不是有根区间,请重新输入x1,x2'read(*,*)a,b ! 若不是有根区间,用户自己输入确定,直至异号为止end doc=bfc=fbdo iter=1,itMaxif(fb*fc>0.0d0)thenc=a ! 对a,b,c更名并调整区间dfc=fad=b-ae=dendifif(abs(fc)<abs(fb))thena=bb=cc=afa=fbfb=fcfc=faendiftol1=2.0d0*eps*abs(b)+0.5d0*tol ! 收敛性检验xm=0.5d0*(c-b)if(abs(xm)<=tol1.or.abs(fb)<ERR)thenwrite(*,*)'布伦特法迭代次数:',iterreturnendifif(abs(e)>=tol1.and.abs(fa)>abs(fb))thens=fb/fa ! 欲进行二次反内插if(abs(a-c)<ERR)thenp=2.0d0*xm*sq=1.0d0-selseq=fa/fcr=fb/fcp=s*(2.0d0*xm*q*(q-r)-(b-a)*(r-1.0d0))q=(q-1.0d0)*(r-1.0d0)*(s-1.0d0)endifif(p>0.0d0)q=-q ! 检查是否在解区间内p=abs(p)if(2.0d0*p<min(3.0d0*xm*q-abs(tol1*q),abs(e*q)))thene=d ! 可以进行内插d=p/qelsed=xm ! 不能进行内插,改用二分法e=dendifelse ! 界下降速度太慢,改用二分法d=xme=dendifa=b ! 将最新估值赋给afa=fbb=b+merge(d,sign(tol1,xm),abs(d)>tol1) ! 计算新的试验解fb=func(b)end dowrite(*,'(a,i2,a)')'错误:布伦特法迭代次数超过',itMax,'次!' stop ! 永远不能执行到此end function zBrentfunction ErFenFa(f,x1,x2,eps) ! 采用二分法use NrTypeimplicit nonereal(DP),intent(in)::x1,x2,epsreal(DP)::ErFenFa,a,b,fa,fb,fminteger(I2B),parameter::ItMax=40integer(I2B)::iterinterfaceuse nrtypeimplicit nonereal(DP),intent(in)::xreal(DP)::fend function fend interfacea=x1b=x2do ! 这个循环是为了保证区间有根fa=f(a)fb=f(b)if(fa*fb<0.0d0)exit ! 有根区间,退出循环write(*,*)'(x1,x2)不是有根区间,请重新输入x1,x2'read(*,*)a,b ! 若不是有根区间,用户自己输入确定,直至异号为止end dodo iter=1,ItMaxErFenFa=(a+b)*0.5d0if(abs(b-a)<eps)then ! 有根区间长度小于给定误差限时迭代结束write(*,*)'二分法区间折半次数:',iterreturnend iffm=f(ErFenFa)if(fm*fa<0.0d0)thenb=ErFenFaelsea=ErFenFaendifend dowrite(*,'(a,i2,a)')'错误:二分法区间折半次数超过',ItMax,'次!' stopend function ErFenFaprogram Main ! 主程序use NrTypeuse wtsfimplicit noneopen(NOUT,file='out.txt') ! 结果保存在out.txtcall ReadData() ! 读取数据call Cal() ! 计算close(NOUT) ! 关闭文件stopend program Main。
明渠均匀流水力计算方法及Basic 程序使用说明明渠均匀流水力计算的主要内容包括如下两个方面:一是校核已成渠道的过水能力;或者由实测流量资料确定已成渠道的糙率;二是设计新的渠道即确定底宽(b)或水深(h)或底坡(i)。
为了应用方便,这两类问题可以汇编成一个电算程序来解决。
一、明渠均匀流水力计算的数学公式:明渠均匀流水力计算的基本公式是连续方程及谢才公式。
3/23/56/1/1X A n i Q X A R R n C Ri C V V A Q ∙=⇒⎪⎪⎪⎭⎪⎪⎪⎬⎫==∙=∙=令 1nQ Y ∙=,3/23/5x A K =只要根据不同的横断面类型找出A 与x 的表达式,就可以解决各种情况下的明渠均匀流水力计算问题。
工程中较为常用的是梯形和u 形断面型式,其相应的过水断面面积和湿周的表达式,分别如下:梯形断面:()h mh b A ∙+=212m h b x ++=对于不同的问题,编写程序时可分别应用下述不同的公式。
(1)计算流量:n i K Q ∙=(2)计算底坡:2⎪⎭⎫ ⎝⎛∙=K Q n i(3)计算糙率:Q i K n ∙=(4)计算正常水深,应用迭代公式,()h K y h ∙=6.0/ (5)计算底宽或半径R ,用迭代公式:b xy b ∙=二、Basic 原程序5 REM 梯形断面明渠均匀流水力计算10 INPUT “J=”;J20 ON J GOTO 30,150,270,390,58030 INPUT “H=”;H: INPUT “N=”;N : INPUT “I=”;I50 INPUT “B=”;B: INPUT “M=”;M60 GOSUB 860130 Q=K*SQR(I)/N140 PRINT “Q=”;INT(1000*Q+0.5)/1000145 END150 INPUT “Q=”;Q: INPUT “N=”;N: INPUT “H=”;H170 INPUT “B=”;B: INPUT “M=”;M180 GOSUB 860190 I=(Q*N/K)^2200 PRINT “I=”;INT(1000*I+0.5)/1000205 END270 INPUT “H=”;H: INPUT “Q=”;Q : INPUT “I=”;I280 INPUT “B=”;B: INPUT “M=”;M290 GOSUB 860300 N=K*SQR(I)/Q310 PRINT “N=”;INT(1000*N+0.5)/1000320 END390 INPUT “Q=”;Q: INPUT “N=”;N: INPUT “I=”;I392 Y=Q*N/SQR(I)395 INPUT “B=”;B: INPUT “M=”;M:H=5400 GOSUB 860430 H1=H*(Y/K)^0.6450 IF ABS(H-H1)<0.001 THEN 470460 H=H1 : GOTO 400470 PRINT “H=”;INT(1000*H+0.5)/1000480 END580 INPUT “Q=”;Q: INPUT “N=”;N: INPUT “I=”;I590 Y=Q*N/SQR(I)600 INPUT “H=”;H: INPUT “M=”;M:B=5610 GOSUB 860620 B1=B*Y/K630 IF ABS(B-B1)<0.001 THEN 650640 B=B1 : GOTO 610650 PRINT “H=”;INT(1000*H+0.5)/1000660 END860 A=(B+M*H)*H:P=B+2*H*SQ R(1+M*M)870 K=A^(5/3)/(P^(2/3))880 RETURN三、有关程序的说明:1、程序只适用于计算梯形(矩形)断面,对于其它的的断面类型,可根据具体情况修改子程序中的断面面积A及湿周x的表达式即可。