参赛作品SCEDv10.docx
《参赛作品SCEDv10.docx》由会员分享,可在线阅读,更多相关《参赛作品SCEDv10.docx(22页珍藏版)》请在冰点文库上搜索。
参赛作品SCEDv10
程序设计大赛参赛作品
均质土坝渗流计算程序设计
作品:
SCEDv1.0
一、前言
渗流分析与计算的方法主要分为解析法、电拟法和数值法。
解析法利用有关数学手段直接求解基本微分方程,主要有流体力学和水力学两种方法。
解析法适合边界条件单一的情况,但对于实际工程复杂的边界条件,很难找到精确解析解。
电拟法采用导电液模型进行试验,但它无法模拟非均质各向异性渗透介质,对复杂的地质和边界也不尽适应。
随着电子计算机的迅速发展,数值方法(有限差分法、有限单元发和边界元法)在渗流分析中越来越广泛的应用。
针对本次程序设计大赛第六题“均质坝渗流计算程序设计”的要求,作者选择解析法的数学手段对渗流结果进行求解。
SCEDv1.0(SeepageCalculationofEarthdam)程序设计主要目的有一下几点:
1.掌握渗流计算的一般方法,加深对渗流问题的认识。
2.掌握迭代问题的一般算法,并提高迭代的效率。
3.设计程序界面,方便程序的使用。
4.提高自己的程序设计能力。
二、程序设计
1设计基础
SCEDv1.0使用C#语言编写而成,使用的框架为.NetFramework3.5SP1,用户界面采用的技术为WPF(WindowsPresentationFoundation)。
C#是面向对象的编程语言。
它使得程序员可以快速地编写各种基于MICROSOFT.NET平台的应用程序。
正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选——无论是高级的商业对象还是系统级的应用程序。
图1程序界面及其相应的模块
2程序模块——类设计
图1所示为程序界面及其相应的模块图,显示本程序中核心部分的类图,用户界面部分未包含其中,类的功能定义如表1所示,其余具体说明等请参见源代码中的注释。
功能模块
对应的函数
函数的功能
模型参数读取模块
inputData
数据文件读取类的接口
渗流计算和结果显示模块
btn_check
模型参数的检查按钮
btn_calculate
渗流计算
ResultDisplay
结果显示
计算报告输出模块
btn_output
输出计算报告
outputData
形成计算报告
其他
btn_exit
退出
HELPToolStrip
帮助
表1核心类说明
3算法设计
程序采用类的形式封装各种对象及其相应操作,为保证算法的高效,存储结构方面主要使用了双精度浮点数和双精度浮点数数组。
(1)变精度算法
对于渗流量q和下游溢出点高程Δh两个未知量,计算取溢出点高程Δh作为迭代的对象。
为达到目标精度要求,实现未知量地高效迭代计算,本算法采用“变精度”法进行试算。
具体实现过程如图2所示:
图2变精度算法设计流程图
变精度算法主要是对试算精度e和迭代变量Δh进行控制,首先选取比较大的精度e,一般取e=1(表示计算结果只需要精确到小数点位),并选取比较小迭代变量,一般取Δh的范围的最小值。
每一次迭代完成后,判断迭代误差是否满足试算精度误差,即图2中的第一个菱形判断,若不满足,增加Δh的值,取Δh=Δh+e,直到迭代结果误差小于试算误差e的要求,这是得到第一次试算的结果,记作Δh(i)。
当该次的试算误差满足要求误差Precision时(即图2中的第二个菱形判断),得到的Δh(i)为满足要求的解答,如不满足,则需要减少试算误差,取e=e/10,即将精度向小数点后面再推一位,再进行迭代计算,迭代的初值则是前一次试算得到的Δh(i)。
由于试算误差e一直朝着要求误差Precision的方向取值,最终将计算得到满足要求误差Precision的解,即迭代收敛。
(2)算法详解
以本次渗流计算为例,计算模型如图3所示,对变精度试算法进行详细解答,模型参数采用大赛第六题中的数据。
图3计算模型简图
将坝高H、坝顶宽度B等八个模型参数输入程序,并输入要求精度0.0001,程序记作Precision=0.0001,对问题初始化,取下游溢出点高程Δh=0.0,试算精度e=1,按照公式①-③进行迭代计算:
①
②
,
③
。
根据溢出点高程Δh=0.0,由公式①、②可以计算出q,由公式③可以计算出迭代后的Δh,前后两次的Δh之差记为ht,与试算误差e进行比较。
若误差大于试算误差,增大Δh,取Δh=Δh+e=2,继续迭代。
当取Δh=3时,试算出来的Δh=3.2729,此时误差为0.2729第1次试算得到的下游溢出点高程为:3m第2次试算得到的下游溢出点高程为:3.2m第3次试算得到的下游溢出点高程为:3.23m第4次试算得到的下游溢出点高程为:3.236m第5次试算得到的下游溢出点高程为:3.2362m下游溢出点高程试算的次数达到第5次时,得到的下游溢出点高程已达到精度要求,此时计算结束。计算总迭代次数为3+2+3+6+2=16次。综上,即可计算得到要求结果。三、程序源代码程序源代码共计278行,以下为渗流计算核心算法代码,提取自Form1.cs文件:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO;usingSystem.Runtime.InteropServices;namespaceseepage{publicpartialclassForm1:Form{//输入的参数privatedoublem_m1=0.0;privatedoublem_m2=0.0;privatedoublem_h1=0.0;privatedoublem_h2=0.0;privatedoublem_H=0.0;privatedoublem_B=0.0;privatedoublem_Td=0.0;privatedoublem_k=0.0;//输出结果privatedoublem_q=0.0;privatedoublem_h0=0.0;//计算过程中的变量privatedoublem_Hu=0.0;privatedoublem_Hd=0.0;privatedoublem_bm=0.0;privatedoublem_Lx=0.0;privatedoublem_L=0.0;privatedoublem_A=0.0;privatedoublem_D=0.0;privatedoublem_ht1=0.0;privatedoublem_ht2=0.0;privatedoublem_ht=0.0;privateintn;privateintcounter;privatedouble[]m_ht0=newdouble[10000];//计算精度:m_precision为控制精度,m_e为试算精度privatedoublem_precision=0.0;privatedoublem_e=0.0;publicForm1(){InitializeComponent();}privatevoidinputData(){m_H=Convert.ToDouble(textBox1.Text);//坝高m_B=Convert.ToDouble(textBox2.Text);//坝顶宽m_Td=Convert.ToDouble(textBox3.Text);//坝基厚度m_h1=Convert.ToDouble(textBox4.Text);//上游水头m_h2=Convert.ToDouble(textBox5.Text);//下游水头m_m1=Convert.ToDouble(textBox6.Text);//上游坝坡坡度m_m2=Convert.ToDouble(textBox7.Text);//下游坝坡坡度m_k=Convert.ToDouble(textBox8.Text);//渗透系数m_precision=Convert.ToDouble(textBox11.Text);//计算控制精度}privatevoidbtn_check_Click(objectsender,EventArgse){//对输入的数据进行判读,并提示是否输入正确的参数inputData();if(m_h1>=m_h2&&m_k>=0&&m_Td>=0&&m_B>=0&&m_H>=0&&m_precision<=1&&m_precision>0&&m_m1>=0&&m_m2>=0&&m_H>=m_h1&&m_H>=m_h2){MessageBox.Show("参数输入正确,请点击开始计算!");}else{MessageBox.Show("参数输入不正确,请检查输入的参数!");}}privatevoidbtn_caculate_Click(objectsender,EventArgse){inputData();m_Hu=m_Td+m_h1;m_bm=m_m1*m_Hu/(1+2*m_m1);m_ht1=0.0;n=Convert.ToInt16(Math.Log10(1/m_precision));//n为试算次数counter=0;//counter为计数器for(inti=0;i<=n;i++){if(i==0){m_e=1.0;}else{m_e=m_e/10.0;}for(intj=0;j<=100;j++){counter=counter+1;m_ht1=m_ht1+m_e;m_Hd=m_Td+m_h2+m_ht1;m_Lx=m_m1*(m_H-m_h1)+m_B+m_m2*(m_H-m_h2-m_ht1);m_L=m_bm+m_Lx;m_D=0.5*(m_Hu*m_Hu-m_Hd*m_Hd)/m_L;m_A=0.5*(m_D*m_m2-(1+0.4/m_m2)*m_Hd);m_ht2=1.2*(m_A+Math.Sqrt(m_A*m_A+0.4*m_D*m_Hd));m_ht=m_ht2-m_ht1;if(Math.Abs(m_ht2-m_ht1){m_ht0[i]=m_ht1;m_ht1=Math.Min(m_ht1,m_ht2);break;}}}ResultDisplay();MessageBox.Show("计算完成!欢迎再次使用!");}privatevoidResultDisplay(){stringFn="";m_q=m_D*m_k*60000.0;m_h0=m_ht1;Fn="F"+Convert.ToString(n);//控制结果小数点位数textBox9.Text=m_q.ToString(Fn);//渗流量textBox10.Text=m_h0.ToString(Fn);//溢出点高度(相对下游水面)}privatevoidbtn_output_Click(objectsender,EventArgse){outputData();if(File.Exists(Application.StartupPath+"\\"+"Result_Report.txt")){MessageBox.Show("Success!","提示对话框",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{MessageBox.Show("对不起,文件导出失败!","提示对话框",MessageBoxButtons.OK,MessageBoxIcon.Information);}}privatevoidoutputData(){StreamWritersw=newStreamWriter("Result_Report.txt");//输出计算模型信息sw.WriteLine("-------TheReportoftheSeepageCaculationResult--------"+"\r\n"+"\r\n"+"\r\n>>均质土石坝基本参数为:"+"\r\n坝高H:{0:F2}m"+"\r\n坝顶宽度B:{1:F2}m"+"\r\n坝基厚度Td:{2:F2}m"+"\r\n上游水头h1:{3:F2}m"+"\r\n下游水头h2:{4:F2}m"+"\r\n上游坝坡坡度m1:{5:F2}m"+"\r\n下游坝坡坡度m2:{6:F2}m"+"\r\n渗透系数k:{7:e2}m/s",m_H,m_B,m_Td,m_h1,m_h2,m_m1,m_m2,m_k);sw.WriteLine("\r\n-------------------------------------------------------------------");//输出计算控制参数sw.WriteLine(">>计算精度为:"+"\r\n计算精度e:{0:e0}",m_precision);sw.WriteLine("\r\n-------------------------------------------------------------------");//输出计算分析sw.WriteLine(">>计算过程为:"+"\r\n下游溢出点高程试算的次数为:{0:F0}次"+"\r\n计算总迭代次数为:{1:F0}次",n+1,counter);for(inti=0;i<=n;i++){stringFn="F"+Convert.ToString(i);//输出结果小数点控制sw.WriteLine("第{0:F0}次试算得到的下游溢出点高程为:"+m_ht0[i].ToString(Fn)+"m",i+1);};sw.WriteLine("\r\n---------------------------------------------------------------------");//输出计算结果信息stringFm="F"+Convert.ToString(n);//输出结果小数点控制sw.WriteLine(">>计算结果为:"+"\r\n单宽渗流量为:"+m_q.ToString(Fm)+"L/min"+"\r\n溢出点高程(相对下游水面)为:"+m_h0.ToString(Fm)+"m"+"\r\n");//输出时间sw.WriteLine("SCEDv1.0"+"\r\n{0:f}",System.DateTime.Now);sw.Close();}privatevoidbtn_exit_Click(objectsender,EventArgse){if(DialogResult.OK==MessageBox.Show("是否确定退出?","提示",MessageBoxButtons.OKCancel)){this.Close();}}privatevoidClearToolStripMenuItem1_Click(objectsender,EventArgse){textBox1.Text="";textBox2.Text="";textBox3.Text="";textBox4.Text="";textBox5.Text="";textBox6.Text="";textBox7.Text="";textBox8.Text="";textBox9.Text="";textBox10.Text="";textBox11.Text="";}privatevoidOutput_dataToolStripMenuItem1_Click(objectsender,EventArgse){outputData();if(File.Exists(Application.StartupPath+"\\"+"Result_Report.txt")){MessageBox.Show("Success!","提示对话框",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{MessageBox.Show("对不起,文件导出失败!","提示对话框",MessageBoxButtons.OK,MessageBoxIcon.Information);}}privatevoidExitToolStripMenuItem1_Click(objectsender,EventArgse){if(DialogResult.OK==MessageBox.Show("是否确定退出?","提示",MessageBoxButtons.OKCancel)){this.Close();}}privatevoidIfoToolStripMenuItem1_Click(objectsender,EventArgse){MessageBox.Show("说明"+"\r\n"+"\r\n1.SCEDV1.0为均质土石坝稳定渗流计算小程序。"+"\r\n2.渗流计算公式参照《渗流分析与控制》(毛昶熙)编写。"+"\r\n3.本程序只能作为均质渗流计算的参考,不能作为设计标准。");}privatevoidAboutToolStripMenuItem1_Click(objectsender,EventArgse){MessageBox.Show("About"+"\r\n"+"\r\nSCEDV1.0程序为武汉大学第六届“弘禹杯”工程程序设计大赛参赛作品。"+"\r\n更多信息请联系wangmin-whu@");}privatevoid版本ToolStripMenuItem1_Click(objectsender,EventArgse){MessageBox.Show("Information"+"\r\n"+"\r\nVersion1.0"+"\r\nCopyrightWangmin@WHU.2012"+"\r\nContactwangmin-whu@");}privatevoidhELPToolStripMenuItem_Click(objectsender,EventArgse){MessageBox.Show("SCEDV1.0使用手册"+"\r\n"+"\r\n1.根据程序右边“简化模型”图,确定均质土石坝的模型参数。"+"\r\n2.在程序左边“模型参数”栏输入相对应的参数。"+"\r\n3.点击“参数检查”按钮,对模型参数进行检查。"+"\r\n4.若参数无误,点击“开始计算”按钮进行计算。"+"\r\n5.计算结果将在“结果显示”栏显示出来。"+"\r\n6.点击“保存计算结果”,程序将输出Result_Report.txt的结果文件。"+"\r\n7.点击“关闭”,关闭程序。"+"\r\n"+"\r\n注:参数单位采用米和秒,流量的单位为(L/min)。"+"\r\n更多信息,查看“帮助”。");}}}四、程序说明1程序功能a.实现均质土石坝模型的模拟;b.计算均质土石坝简单模型的单宽渗流量;c.计算均质土石坝简单模型的溢出点高程(相对下游水位);d.输出计算报告。2程序编写环境程序采用C#语言编写,使用的IDE为MicrosoftVisualStudio2008TeamSystemSP1及MicrosoftExpressionBlend3,目标运行环境为.NetFramework3.5SP1;开发和调试在Windows7Ultimate系统下进行。3系统需求程序运行于Windows操作系统下,系统中需要安装有Microsoft.NETFramework3.5ServicePack1以上版本。若无法运行请访问以下站点
第1次试算得到的下游溢出点高程为:
3m
第2次试算得到的下游溢出点高程为:
3.2m
第3次试算得到的下游溢出点高程为:
3.23m
第4次试算得到的下游溢出点高程为:
3.236m
第5次试算得到的下游溢出点高程为:
3.2362m
下游溢出点高程试算的次数达到第5次时,得到的下游溢出点高程已达到精度要求,此时计算结束。
计算总迭代次数为3+2+3+6+2=16次。
综上,即可计算得到要求结果。
三、程序源代码
程序源代码共计278行,以下为渗流计算核心算法代码,提取自Form1.cs文件:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;
usingSystem.Runtime.InteropServices;
namespaceseepage
{
publicpartialclassForm1:
Form
//输入的参数
privatedoublem_m1=0.0;
privatedoublem_m2=0.0;
privatedoublem_h1=0.0;
privatedoublem_h2=0.0;
privatedoublem_H=0.0;
privatedoublem_B=0.0;
privatedoublem_Td=0.0;
privatedoublem_k=0.0;
//输出结果
privatedoublem_q=0.0;
privatedoublem_h0=0.0;
//计算过程中的变量
privatedoublem_Hu=0.0;
privatedoublem_Hd=0.0;
privatedoublem_bm=0.0;
privatedoublem_Lx=0.0;
privatedoublem_L=0.0;
privatedoublem_A=0.0;
privatedoublem_D=0.0;
privatedoublem_ht1=0.0;
privatedoublem_ht2=0.0;
privatedoublem_ht=0.0;
privateintn;
privateintcounter;
privatedouble[]m_ht0=newdouble[10000];
//计算精度:
m_precision为控制精度,m_e为试算精度
privatedoublem_precision=0.0;
privatedoublem_e=0.0;
publicForm1()
InitializeComponent();
}
privatevoidinputData()
m_H=Convert.ToDouble(textBox1.Text);//坝高
m_B=Convert.ToDouble(textBox2.Text);//坝顶宽
m_Td=Convert.ToDouble(textBox3.Text);//坝基厚度
m_h1=Convert.ToDouble(textBox4.Text);//上游水头
m_h2=Convert.ToDouble(textBox5.Text);//下游水头
m_m1=Convert.ToDouble(textBox6.Text);//上游坝坡坡度
m_m2=Convert.ToDouble(textBox7.Text);//下游坝坡坡度
m_k=Convert.ToDouble(textBox8.Text);//渗透系数
m_precision=Convert.ToDouble(textBox11.Text);//计算控制精度
privatevoidbtn_check_Click(objectsender,EventArgse)
//对输入的数据进行判读,并提示是否输入正确的参数
inputData();
if(m_h1>=m_h2&&m_k>=0&&m_Td>=0&&m_B>=0&&m_H>=0&&m_precision<=1&&m_precision>0&&m_m1>=0&&m_m2>=0&&m_H>=m_h1&&m_H>=m_h2)
MessageBox.Show("参数输入正确,请点击开始计算!
");
else
MessageBox.Show("参数输入不正确,请检查输入的参数!
privatevoidbtn_caculate_Click(objectsender,EventArgse)
m_Hu=m_Td+m_h1;m_bm=m_m1*m_Hu/(1+2*m_m1);m_ht1=0.0;
n=Convert.ToInt16(Math.Log10(1/m_precision));//n为试算次数
counter=0;//counter为计数器
for(inti=0;i<=n;i++)
if(i==0)
m_e=1.0;
m_e=m_e/10.0;
for(intj=0;j<=100;j++)
counter=counter+1;
m_ht1=m_ht1+m_e;
m_Hd=m_Td+m_h2+m_ht1;
m_Lx=m_m1*(m_H-m_h1)+m_B+m_m2*(m_H-m_h2-m_ht1);
m_L=m_bm+m_Lx;
m_D=0.5*(m_Hu*m_Hu-m_Hd*m_Hd)/m_L;
m_A=0.5*(m_D*m_m2-(1+0.4/m_m2)*m_Hd);
m_ht2=1.2*(m_A+Math.Sqrt(m_A*m_A+0.4*m_D*m_Hd));
m_ht=m_ht2-m_ht1;
if(Math.Abs(m_ht2-m_ht1){m_ht0[i]=m_ht1;m_ht1=Math.Min(m_ht1,m_ht2);break;}}}ResultDisplay();MessageBox.Show("计算完成!欢迎再次使用!");}privatevoidResultDisplay(){stringFn="";m_q=m_D*m_k*60000.0;m_h0=m_ht1;Fn="F"+Convert.ToString(n);//控制结果小数点位数textBox9.Text=m_q.ToString(Fn);//渗流量textBox10.Text=m_h0.ToString(Fn);//溢出点高度(相对下游水面)}privatevoidbtn_output_Click(objectsender,EventArgse){outputData();if(File.Exists(Application.StartupPath+"\\"+"Result_Report.txt")){MessageBox.Show("Success!","提示对话框",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{MessageBox.Show("对不起,文件导出失败!","提示对话框",MessageBoxButtons.OK,MessageBoxIcon.Information);}}privatevoidoutputData(){StreamWritersw=newStreamWriter("Result_Report.txt");//输出计算模型信息sw.WriteLine("-------TheReportoftheSeepageCaculationResult--------"+"\r\n"+"\r\n"+"\r\n>>均质土石坝基本参数为:"+"\r\n坝高H:{0:F2}m"+"\r\n坝顶宽度B:{1:F2}m"+"\r\n坝基厚度Td:{2:F2}m"+"\r\n上游水头h1:{3:F2}m"+"\r\n下游水头h2:{4:F2}m"+"\r\n上游坝坡坡度m1:{5:F2}m"+"\r\n下游坝坡坡度m2:{6:F2}m"+"\r\n渗透系数k:{7:e2}m/s",m_H,m_B,m_Td,m_h1,m_h2,m_m1,m_m2,m_k);sw.WriteLine("\r\n-------------------------------------------------------------------");//输出计算控制参数sw.WriteLine(">>计算精度为:"+"\r\n计算精度e:{0:e0}",m_precision);sw.WriteLine("\r\n-------------------------------------------------------------------");//输出计算分析sw.WriteLine(">>计算过程为:"+"\r\n下游溢出点高程试算的次数为:{0:F0}次"+"\r\n计算总迭代次数为:{1:F0}次",n+1,counter);for(inti=0;i<=n;i++){stringFn="F"+Convert.ToString(i);//输出结果小数点控制sw.WriteLine("第{0:F0}次试算得到的下游溢出点高程为:"+m_ht0[i].ToString(Fn)+"m",i+1);};sw.WriteLine("\r\n---------------------------------------------------------------------");//输出计算结果信息stringFm="F"+Convert.ToString(n);//输出结果小数点控制sw.WriteLine(">>计算结果为:"+"\r\n单宽渗流量为:"+m_q.ToString(Fm)+"L/min"+"\r\n溢出点高程(相对下游水面)为:"+m_h0.ToString(Fm)+"m"+"\r\n");//输出时间sw.WriteLine("SCEDv1.0"+"\r\n{0:f}",System.DateTime.Now);sw.Close();}privatevoidbtn_exit_Click(objectsender,EventArgse){if(DialogResult.OK==MessageBox.Show("是否确定退出?","提示",MessageBoxButtons.OKCancel)){this.Close();}}privatevoidClearToolStripMenuItem1_Click(objectsender,EventArgse){textBox1.Text="";textBox2.Text="";textBox3.Text="";textBox4.Text="";textBox5.Text="";textBox6.Text="";textBox7.Text="";textBox8.Text="";textBox9.Text="";textBox10.Text="";textBox11.Text="";}privatevoidOutput_dataToolStripMenuItem1_Click(objectsender,EventArgse){outputData();if(File.Exists(Application.StartupPath+"\\"+"Result_Report.txt")){MessageBox.Show("Success!","提示对话框",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{MessageBox.Show("对不起,文件导出失败!","提示对话框",MessageBoxButtons.OK,MessageBoxIcon.Information);}}privatevoidExitToolStripMenuItem1_Click(objectsender,EventArgse){if(DialogResult.OK==MessageBox.Show("是否确定退出?","提示",MessageBoxButtons.OKCancel)){this.Close();}}privatevoidIfoToolStripMenuItem1_Click(objectsender,EventArgse){MessageBox.Show("说明"+"\r\n"+"\r\n1.SCEDV1.0为均质土石坝稳定渗流计算小程序。"+"\r\n2.渗流计算公式参照《渗流分析与控制》(毛昶熙)编写。"+"\r\n3.本程序只能作为均质渗流计算的参考,不能作为设计标准。");}privatevoidAboutToolStripMenuItem1_Click(objectsender,EventArgse){MessageBox.Show("About"+"\r\n"+"\r\nSCEDV1.0程序为武汉大学第六届“弘禹杯”工程程序设计大赛参赛作品。"+"\r\n更多信息请联系wangmin-whu@");}privatevoid版本ToolStripMenuItem1_Click(objectsender,EventArgse){MessageBox.Show("Information"+"\r\n"+"\r\nVersion1.0"+"\r\nCopyrightWangmin@WHU.2012"+"\r\nContactwangmin-whu@");}privatevoidhELPToolStripMenuItem_Click(objectsender,EventArgse){MessageBox.Show("SCEDV1.0使用手册"+"\r\n"+"\r\n1.根据程序右边“简化模型”图,确定均质土石坝的模型参数。"+"\r\n2.在程序左边“模型参数”栏输入相对应的参数。"+"\r\n3.点击“参数检查”按钮,对模型参数进行检查。"+"\r\n4.若参数无误,点击“开始计算”按钮进行计算。"+"\r\n5.计算结果将在“结果显示”栏显示出来。"+"\r\n6.点击“保存计算结果”,程序将输出Result_Report.txt的结果文件。"+"\r\n7.点击“关闭”,关闭程序。"+"\r\n"+"\r\n注:参数单位采用米和秒,流量的单位为(L/min)。"+"\r\n更多信息,查看“帮助”。");}}}四、程序说明1程序功能a.实现均质土石坝模型的模拟;b.计算均质土石坝简单模型的单宽渗流量;c.计算均质土石坝简单模型的溢出点高程(相对下游水位);d.输出计算报告。2程序编写环境程序采用C#语言编写,使用的IDE为MicrosoftVisualStudio2008TeamSystemSP1及MicrosoftExpressionBlend3,目标运行环境为.NetFramework3.5SP1;开发和调试在Windows7Ultimate系统下进行。3系统需求程序运行于Windows操作系统下,系统中需要安装有Microsoft.NETFramework3.5ServicePack1以上版本。若无法运行请访问以下站点
m_ht0[i]=m_ht1;
m_ht1=Math.Min(m_ht1,m_ht2);
break;
ResultDisplay();
MessageBox.Show("计算完成!
欢迎再次使用!
privatevoidResultDisplay()
stringFn="";
m_q=m_D*m_k*60000.0;
m_h0=m_ht1;
Fn="F"+Convert.ToString(n);//控制结果小数点位数
textBox9.Text=m_q.ToString(Fn);//渗流量
textBox10.Text=m_h0.ToString(Fn);//溢出点高度(相对下游水面)
privatevoidbtn_output_Click(objectsender,EventArgse)
outputData();
if(File.Exists(Application.StartupPath+"\\"+"Result_Report.txt"))
MessageBox.Show("Success!
","提示对话框",
MessageBoxButtons.OK,MessageBoxIcon.Information);
MessageBox.Show("对不起,文件导出失败!
privatevoidoutputData()
StreamWritersw=newStreamWriter("Result_Report.txt");
//输出计算模型信息
sw.WriteLine("-------TheReportoftheSeepageCaculationResult--------"+
"\r\n"+
"\r\n>>均质土石坝基本参数为:
"+
"\r\n坝高H:
{0:
F2}m"+
"\r\n坝顶宽度B:
{1:
"\r\n坝基厚度Td:
{2:
"\r\n上游水头h1:
{3:
"\r\n下游水头h2:
{4:
"\r\n上游坝坡坡度m1:
{5:
"\r\n下游坝坡坡度m2:
{6:
"\r\n渗透系数k:
{7:
e2}m/s",
m_H,m_B,m_Td,m_h1,m_h2,m_m1,m_m2,m_k);
sw.WriteLine("\r\n-------------------------------------------------------------------");
//输出计算控制参数
sw.WriteLine(">>计算精度为:
"\r\n计算精度e:
e0}",m_precision);
//输出计算分析
sw.WriteLine(">>计算过程为:
"\r\n下游溢出点高程试算的次数为:
F0}次"+
"\r\n计算总迭代次数为:
F0}次",n+1,counter);
stringFn="F"+Convert.ToString(i);//输出结果小数点控制
sw.WriteLine("第{0:
F0}次试算得到的下游溢出点高程为:
"
+m_ht0[i].ToString(Fn)+"m",i+1);
};
sw.WriteLine("\r\n---------------------------------------------------------------------");
//输出计算结果信息
stringFm="F"+Convert.ToString(n);//输出结果小数点控制
sw.WriteLine(">>计算结果为:
"\r\n单宽渗流量为:
"+m_q.ToString(Fm)+"L/min"+
"\r\n溢出点高程(相对下游水面)为:
"+m_h0.ToString(Fm)+"m"+
"\r\n");
//输出时间
sw.WriteLine("SCEDv1.0"+
"\r\n{0:
f}",System.DateTime.Now);
sw.Close();
privatevoidbtn_exit_Click(objectsender,EventArgse)
if(DialogResult.OK==MessageBox.Show("是否确定退出?
","提示",
MessageBoxButtons.OKCancel))
this.Close();
privatevoidClearToolStripMenuItem1_Click(objectsender,EventArgse)
textBox1.Text="";textBox2.Text="";textBox3.Text="";textBox4.Text="";
textBox5.Text="";textBox6.Text="";textBox7.Text="";textBox8.Text="";
textBox9.Text="";textBox10.Text="";textBox11.Text="";
privatevoidOutput_dataToolStripMenuItem1_Click(objectsender,EventArgse)
privatevoidExitToolStripMenuItem1_Click(objectsender,EventArgse)
privatevoidIfoToolStripMenuItem1_Click(objectsender,EventArgse)
MessageBox.Show(
"说明"+
"\r\n1.SCEDV1.0为均质土石坝稳定渗流计算小程序。
"\r\n2.渗流计算公式参照《渗流分析与控制》(毛昶熙)编写。
"\r\n3.本程序只能作为均质渗流计算的参考,不能作为设计标准。
privatevoidAboutToolStripMenuItem1_Click(objectsender,EventArgse)
"About"+
"\r\nSCEDV1.0程序为武汉大学第六届“弘禹杯”工程程序设计大赛参赛作品。
"\r\n更多信息请联系wangmin-whu@");
privatevoid版本ToolStripMenuItem1_Click(objectsender,EventArgse)
"Information"+
"\r\nVersion1.0"+
"\r\nCopyrightWangmin@WHU.2012"+
"\r\nContactwangmin-whu@");
privatevoidhELPToolStripMenuItem_Click(objectsender,EventArgse)
"SCEDV1.0使用手册"+
"\r\n1.根据程序右边“简化模型”图,确定均质土石坝的模型参数。
"\r\n2.在程序左边“模型参数”栏输入相对应的参数。
"\r\n3.点击“参数检查”按钮,对模型参数进行检查。
"\r\n4.若参数无误,点击“开始计算”按钮进行计算。
"\r\n5.计算结果将在“结果显示”栏显示出来。
"\r\n6.点击“保存计算结果”,程序将输出Result_Report.txt的结果文件。
"\r\n7.点击“关闭”,关闭程序。
"\r\n注:
参数单位采用米和秒,流量的单位为(L/min)。
"\r\n更多信息,查看“帮助”。
四、程序说明
1程序功能
a.实现均质土石坝模型的模拟;
b.计算均质土石坝简单模型的单宽渗流量;
c.计算均质土石坝简单模型的溢出点高程(相对下游水位);
d.输出计算报告。
2程序编写环境
程序采用C#语言编写,使用的IDE为MicrosoftVisualStudio2008TeamSystemSP1及MicrosoftExpressionBlend3,目标运行环境为.NetFramework3.5SP1;开发和调试在Windows7Ultimate系统下进行。
3系统需求
程序运行于Windows操作系统下,系统中需要安装有Microsoft.NETFramework3.5ServicePack1以上版本。
若无法运行请访问以下站点
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2