参赛作品SCEDv10Word文档下载推荐.docx

上传人:b****1 文档编号:3967362 上传时间:2023-05-02 格式:DOCX 页数:22 大小:569.08KB
下载 相关 举报
参赛作品SCEDv10Word文档下载推荐.docx_第1页
第1页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第2页
第2页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第3页
第3页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第4页
第4页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第5页
第5页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第6页
第6页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第7页
第7页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第8页
第8页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第9页
第9页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第10页
第10页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第11页
第11页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第12页
第12页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第13页
第13页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第14页
第14页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第15页
第15页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第16页
第16页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第17页
第17页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第18页
第18页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第19页
第19页 / 共22页
参赛作品SCEDv10Word文档下载推荐.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

参赛作品SCEDv10Word文档下载推荐.docx

《参赛作品SCEDv10Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《参赛作品SCEDv10Word文档下载推荐.docx(22页珍藏版)》请在冰点文库上搜索。

参赛作品SCEDv10Word文档下载推荐.docx

渗流计算

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<

e=1.0,则减少试算误差,取e=e/10=0.1,取Δh=3.0+e=3.1继续迭代,当Δh=3.2时,迭代前后误差满足试算误差,再较少试算误差,进行下一步迭代,直到试算误差等于要求误差Precision=0.0001,这迭代结束,得到最终的答案,具体迭代计算过程如下:

第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>

m_B>

m_H>

m_precision<

=1&

m_precision>

0&

m_m1>

m_m2>

=m_h1&

=m_h2)

MessageBox.Show("

参数输入正确,请点击开始计算!

"

);

else

参数输入不正确,请检查输入的参数!

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_e)

m_ht0[i]=m_ht1;

m_ht1=Math.Min(m_ht1,m_ht2);

break;

}

ResultDisplay();

计算完成!

欢迎再次使用!

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"

))

Success!

"

提示对话框"

MessageBoxButtons.OK,MessageBoxIcon.Information);

对不起,文件导出失败!

privatevoidoutputData()

StreamWritersw=newStreamWriter("

//输出计算模型信息

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);

\r\n-------------------------------------------------------------------"

//输出计算控制参数

计算精度为:

\r\n计算精度e:

e0}"

m_precision);

\r\n-------------------------------------------------------------------"

//输出计算分析

计算过程为:

\r\n下游溢出点高程试算的次数为:

F0}次"

\r\n计算总迭代次数为:

n+1,counter);

+Convert.ToString(i);

//输出结果小数点控制

第{0:

F0}次试算得到的下游溢出点高程为:

+m_ht0[i].ToString(Fn)+"

m"

i+1);

};

\r\n---------------------------------------------------------------------"

//输出计算结果信息

stringFm="

//输出结果小数点控制

计算结果为:

\r\n单宽渗流量为:

"

+m_q.ToString(Fm)+"

L/min"

\r\n溢出点高程(相对下游水面)为:

+m_h0.ToString(Fm)+"

m"

\r\n"

//输出时间

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