【VB开源代码栏目提醒】:本文主要为网学会员提供“水力学水面曲线计算VB代码 - 讲义教程”,希望对需要水力学水面曲线计算VB代码 - 讲义教程网友有所帮助,学习一下!
程序共有2个文件Hydraulics.bas和Form1.frm。
Hydraulics.bas文件里定义了水力学计算所需的相关函数后面的计算全部基于这些函数。
相关函数有参数已省略 ‘author:吴昱驹 ‘e-mail:328522073qq.com ‘platform:
VB6.0 fxA 计算过水面积 fxv 计算断面平均流速 fxEs 计算断面单位能量 fxv_average 计算平均速度 fxR_average 计算平均水力半径 fxC_average 计算平均谢才系数 fxX 计算湿周 fxR 计算水利半径 fxC 计算谢才系数 fxJ 计算水力坡度 fxdeltaS 计算ΔS fxHc 计算临界水深 fxH0 计算正常水深 Hydraulics文件内容如下 Public Const g As Single 9.81定义重力加速度常量g Function fxAb As Single m As Single h As Single As Single 计算过水面积 fxA b m h h End Function Function fxvq As Single a As Single As Single 计算断面平均流速 fxv q / a End Function Function fxEsh As Single alpha As Single v As Single As Single 计算断面单位能量 fxEs h alpha v v / 2 g End Function Function fxv_averagev1 As Single v2 As Single As Single 计算平均速度 fxv_average 0.5 v1 v2 End Function Function fxR_averager1 As Single r2 As Single As Single 计算平均水力半径 fxR_average 0.5 r1 r2 End Function Function fxC_averagec1 As Single c2 As Single As Single 计算平均谢才系数 fxC_average 0.5 c1 c2 End Function Function fxXb As Single h As Single m As Single As Single 计算湿周 fxX b 2 h Sqr1 m m End Function Function fxRa As Single x As Single As Single 计算水力半径 fxR a / x End Function Function fxCn As Single r As Single As Single 计算谢才系数 fxC r 1 / 6 / n End Function Function fxJv As Single c As Single r As Single As Single 计算水力坡度 fxJ v v / c c r End Function Function fxdeltaSes1 As Single es2 As Single i As Single J As Single As Single 计算ΔS fxdeltaS es2 - es1 / i - J End Function Function fxHcalpha As Single q As Single htest As Single b As Single m As Single As Single 试算法计算临界水深 Dim temp As Single ht As Single temph As Single temp alpha q q / g For ht htest To 0 Step -0.0001 temph b m ht ht 3 / b 2 m ht If Abstemph - temp 1 Then Exit For End If Next ht If ht 0 Then fxHc ht Else fxHc -1 End If End Function Function fxH0q As Single b As Single m As Single n As Single i As Single As Single 计算正常水深 Dim qt As Single ht As Single c As Single a As Single r As Single x As Single For ht 0 To 10 Step 0.0001 x fxXb ht m a fxAb m ht r fxRa x c fxCn r qt c a Sqrr i If Absqt - q 0.1 Then Exit For End If Next ht If ht 10 Then fxH0 ht Else fxH0 -1 End If End Function Form1.frm 文件是
程序窗体文件相关运算结果等都在此界面输出。
Form1.frm
代码如下 Option Explicit Option Base 1 Dim alpha As Single q As Single n As Single m As Single b As Single h1 As Single i As Single Hc As Single H0 As Single s As Single L As Single Dim a12 As Single x12 As Single r12 As Single c12 As Single v12 As Single Es12 As Single Dim J12 As Single deltaS12 As Single Private Sub Command1_Click Call Form_Load Dim ii As Integer Dim h As Single v_ave As Single C_ave As Single R_ave As Single h h1 Hc fxHcalpha q 5 b m H0 fxH0q b m n i Call printHcH0 For ii 1 To 7 aii fxAb m h xii fxXb h m rii fxRaii xii cii fxCn rii vii fxvq aii Esii fxEsh alpha vii If h H0 Then h h s End If Next ii For ii 2 To 7 v_ave fxv_averagevii vii - 1 C_ave fxC_averagecii cii - 1 R_ave fxR_averagerii rii - 1 Jii fxJv_ave C_ave R_ave deltaSii fxdeltaSEsii Esii - 1 i Jii Next ii h h1 For ii 1 To 7 If ii 1 Then Picture1.Print h X R C v Es ΔS End If If deltaSii 0 Then Picture1.Print Formath 0.00 Formatxii 0.00 Formatrii 0.00 Formatcii 0.00 Formatvii 0.000 FormatEsii 0.000 FormatdeltaSii 0 Else Picture1.Print Formath 0.00 Formatxii 0.00 Formatrii 0.00 Formatcii 0.00 Formatvii 0.000 FormatEsii 0.000 - End If If h H0 Then h h s End If Next ii Dim sumS sumS 0 For ii 1 To 7 If deltaSii 0 Then sumS sumS deltaSii End If Next ii Picture1.Print Picture1.Print ∑ΔS CStrsumS End Sub Private Sub Command2_Click Picture1.Cls Picture2.Cls End Sub Private Sub Form_Load b CSngText1.Text m CSngText2.Text n CSngText3.Text q CSngText4.Text h1 CSngText5.Text alpha CSngText6.Text i CSngText7.Text L CSngText8.Text s CSngText9.Text End Sub Private Sub printHcH0 If Hc -1 Then Picture2.Print 临界水深5超出计算范围 Else Picture2.Print 临界水深: Picture2.Print Hc CStrHc End If If H0 -1 Then Picture2.Print 正常水深10超出计算范围 Else Picture2.Print 正常水深: Picture2.Print H0 CStrH0 End If If H0 Hc Then Picture2.Print 缓坡 ElseIf H0 Hc Then Picture2.Print 临界坡 Else Picture2.Print 陡坡 End If End Sub