《水文预报课程设计(河海).doc》由会员分享,可在线阅读,更多相关《水文预报课程设计(河海).doc(84页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date水文预报课程设计(河海)水文预报课程设计第一章 基本任务本次课程设计从2013年7月8日至2012年7月12日,主要任务是对广东省东江一级支流西枝江白盆珠水库的上游宝口流域编制预报方案与产汇流计算。其基本任务为:任务一:根据已给的资料、参数及做过的习题,自己编写程序,将流域作为整体进行产流量计算;将计算年径流与实测年径流进行比较;每人计算两年。任务二:根据已给设计暴雨
2、资料、参数及做过的习题,自己编写程序,将流域作为整体进行次洪产流量、划分水源、直接径流汇流、地下径流汇流计算;绘出直接径流过程、地下径流过程、总的流量过程。第二章 基本资料2.1 流域概况白盆珠水库位于广东省东江一级支流西枝江的上游,坝址以上集雨面积856km2 。流域地处粤东沿海的西部,海洋性气候显著,气候温和,雨量丰沛。暴雨成因主要是锋面雨和台风雨,常受热带风暴影响。降雨年际间变化大,年内分配不均,多年平均降雨量为1800mm,实测年最大降雨量为3417mm,汛期49月降雨量占年降雨量的81左右;径流系数0.5-0.7。流域内地势平缓,土壤主要有黄壤和砂壤,具有明显的腐殖层,淀积层和母质土
3、等层次结构,透水性好。台地、丘陵多生长松、杉、樟等高大乔木;平原则以种植农作物和经济作物为主,植被良好。 流域上游有宝口水文站,流域面积为553km2,占白盆珠水库坝址以上集雨面积的64.6。白盆珠水库有6年逐日入库流量资料、逐日蒸发资料和时段入库流量资料:流域内有7个雨量站,其中宝口以上有4个。雨量站分布较均匀,有6年逐日降水资料和时段降水资料;宝口水文站具有6年以上水位、流量资料;流域属山区性小流域且受到地形、地貌等下垫面条件影响,洪水陡涨缓落,汇流时间一般23小时(h),有时更短;一次洪水总历时25天(d)。2.2 基本资料2.2.1 任务一参数及相关实测资料计算流域为白盆珠水库上游的宝
4、口流域,其流域面积为553km2。该流域内有四个雨量站:禾多布、马山、高潭、宝口,其权重系数分别为:0.33、0.14、0.33、0.20。本次课设提供的资料为1987年至1992年该流域径流量、蒸发量及各雨量站的日实测资料,其中我计算年份为1987年与1988年,所使用的相关参数值如下表所示:WM(mm)WUM(mm)WLM(mm)BCIMPW(mm)WU(mm)WL(mm)WD(mm)14020600.20.160.001110104060其中蒸散发折算系数Kc需编程优选,优选范围为0.90-1.30。优选原则为:计算的2年内每年的年径流相对误差尽可能不超过5%。2.2.2 任务二参数及相
5、关实测资料任务二产流参数Kc为任务一中日模优选的值,FC为10.0mm/3h,产流参数Kc用日模优选的值,其他参数取任务1中各组的参数,初始张力水蓄量取各组的容量值。任务二汇流参数CG为0.968,QG0=55.3m3/s,单位线序号1至11对应的Q(m3/s)分别为:0、40、80、130、100、80、48、20、10、5、02.3 产流方式论证宝口流域地处我国南方湿润地区,气候暖热,雨量充沛,多年平均降雨量为1800mm1000mm,年径流系数在0.50.7之间,大于0.4;流域内土质疏松,植被良好,不易超渗;一次洪水的流量过程陡涨缓落,持续时间25d左右。从流域的气象条件,下垫面条件和
6、流量过程的分析知,该流域降雨径流关系具有蓄满产流的特点,可以按蓄满产流建立产流量预报方案。第三章 计算公式3.1 降雨量计算由已知资料知,该地区雨量站分布均匀,且宝口以上有四个雨量站:禾多布、马山、高潭、宝口,其权重系数分别为:0.33、0.14、0.33、0.20,所以宝口流域平均降雨量P=0.33*P1+0.14*P2+0.33*P3+0.20*P4。3.2 蒸散发量计算蒸散发计算采用三层蒸发计算模式,即:上层蒸发量:EU=Ep下层蒸发量:EL=Ep*WL/WLM深层蒸发量:ED=C*Ep总蒸发量:E=EU+EL+ED式中:Ep为流域蒸发能力(mm);WL为下层土壤含水量(mm);WLM为
7、下层土壤含水量(mm);C为蒸发扩散系数。三层蒸发模式按照先上层后下层的次序,具体计算为:1)当WU+P=EP时,EU=Ep,EL=0,ED=02)当WU+P=C*WLM时,EU=WU+P,EL=(EP-EU)*WL/WLM,ED=03)当WU+PEP, C*(EP-EU)=WLC*WLM时,EU=WU+P,EL=C*(EP-EU),ED=04)当WU+PEP, WLC*(EP-EU)时,EU=WU+P,EL=WL,ED=C*(EP-EU)-EL3.3 降雨产流量计算1) aPEWMM时,R=PEWWMWM(1)b+1 2) aPEWMM时,R=PE(WMW)3.4 水源划分计算通过稳渗率fc
8、可划分产流中的直接径流和地下径流。次洪的各水源分量为: 3.5 汇流计算根据流域净雨和流域径流单位线,采用卷积的差分形式算出流域出口的流量过程。其计算公式:直接径流过程:QS(i)=RS(i)*U地下径流过程:QG(i)=CG*QG(i-1)+(1-CG)*RG(i)*U总的流量过程:Q(i)=QS(i)+QG(i)第四章 计算结果4.1 任务一结果经过程序优选,Kc=0.98年份实测R(mm)计算R(mm)绝对误差(mm)相对误差(%)19871080110019.31.791988824813-10.2-1.234.2 任务二结果t(i)P(i)R(i)Rd(i)Rg(i)QS(i)QG(
9、i)Q(i)2004/9/23 12:001412.72.710069.969.92004/9/23 15:0014.112.92.91010.884.194.92004/9/23 18:00119.709.733.297.31302004/9/23 21:0018.717.47.41058.31111692004/9/24 0:0029.728.518.51094.31232182004/9/24 3:003635.125.1101841363202004/9/24 6:0038.337.527.5103811485292004/9/24 9:007.86.906.9645154799200
10、4/9/24 12:0030.529.619.6107991669652004/9/24 15:0042.641.731.71087417710502004/9/24 18:0093.892.982.91086418810502004/9/24 21:0084.183.373.310122019814202004/9/25 0:0047.646.836.810177020819802004/9/25 3:0056.455.345.310237021825902004/9/25 6:0050.449.339.310265022728702004/9/25 9:0016.515.45.410260
11、023628402004/9/25 12:005.84.804.8236023726002004/9/25 15:008.37.207.2186024121002004/9/25 18:002.61.501.5125023614802004/9/25 21:000.200077422810002004/9/26 0:0000003962216172004/9/26 3:0000001682143822004/9/26 6:00000072.82072802004/9/26 9:00000025.02002252004/9/26 12:0000002.701941972004/9/26 15:0
12、000000.001881882004/9/26 18:0000000.001821822004/9/26 21:0000000.00176176第五章 误差统计与分析5.1 精度评定从计算结果可见,年产流量绝对误差均小于100mm,所产流量的相对误差均小于5%。精度统计表明,率定的模型参数是基本合理的。但由于课设时间限制与任务要求,每位同学只用两年的资料来率定Kc,不满足水文情报预报规范中规定:洪水预报方案要求使用样本数量不少于10年的水文气象资料,其中应包括大、中、小水各种代表性年份,并保证有足够代表性的场次洪水资料。显然Kc=0.98的结果还是存在一定问题的。5.2 误差分析影响流域降雨
13、径流过程的因素很多,利用蓄满产流新安江模型的结构与参数能够很好反映湿润地区降雨径流过程的主要规律和特点,因而能获得较好的精度。但是模型本身以及模型计算中有很多概化,会造成误差。造成宝口流域产汇流计算方案误差来源主要有以下几个方面:1.资料代表性的影响。我们每位同学只用两年实测资料来率定Kc,资料必不能满足时期要求及代表性要求。实际操作中,应要求有12年以上的连续的对未来有代表性的实测资料,其中10年为率定期,2年为检验期,且这种资料应具备丰、平、枯水年代表性,资料系列前后一致,受人类影响较小。所以仅用两年的资料率定势必造成Kc一定的误差,而且误差可能还很大。2.量测误差。实测的降雨、蒸发、径流
14、量等水文气象信息及河流、湖泊、地形等下垫面信息是研制预报模型或编制洪水预报方案或进行作业预报的主要依据,在现有站网、仪器设备、观测技术条件下,各种信息的时空变化是难以准确反映的,加上受自然因素等客观条件影响,势必造成各种信息的量测误差。3.模型结构误差。在该蓄满产流新安江模型中,有很多将非线性现象概化为线性现象或者将某些随机因子近似作为确定因子描述等都会带来误差。4.模型参数误差。模型参数是根据输入,通过模型计算输出,再将输出过程与实测过程进行比较,用系统识别的方法作优化调试的,上述所率定出的模型参数Kc可能不是最优。5.人类活动的影响。随着社会经济的快速发展,人类活动的影响加剧,流域内可能新
15、建了一些大中型水库或其他工程措施。影响了该地区原有的产流特点,如汛期提前。5.3 实时校正模型计算值与实测值直接总是存在一定的误差。造成两者间误差的因素很多,若针对每一个单一因素是难于描述或预见的,一般采用实时校正模型来解决。实时校正模型常用的有卡尔曼滤波、自回归模型等。第六章 编写程序FORM 1Private Sub Command1_Click(Index As Integer) Form2.ShowEnd SubPrivate Sub Command2_Click() Form3.ShowEnd SubFORM 2 Private Sub Command1_Click() Form1.
16、Show Form2.Hide End SubPrivate Sub Command2_Click()For m = 0 To 40 Kc = 0.9 + 0.01 * mReDim Robs(2), Rcal(2), jderror(2), xderror(3) Dim W0 As Single, WU0 As Single, WL0 As Single, WD0 As Single WU0 = Text10.Text: WL0 = Text11.Text: WD0 = Text12.Text W0 = WL0 + WD0 + WU0 For i = 1 To 2 intYear = 198
17、6 + i 用于定位 If intYear Mod 4 0 And xuYear Mod 100 0 Then intDays = 365 Else intDays = 366 End If /读入数据 Open App.Path & .Data & intYear & .csv For Input As #1 ReDim t(intDays) ReDim Qobs(intDays) ReDim Eo(intDays) ReDim P1(intDays) ReDim P2(intDays) ReDim P3(intDays) ReDim P4(intDays) For j = 1 To 365
18、 Input #1, t(j), Qobs(j), Eo(j), P1(j), P2(j), P3(j), P4(j) Next j Close #1 /参数赋值 Wum = Text2.Text: Wlm = Text3.Text: C = Text4.Text Wm = Text5.Text: B = Text6.Text: Im = Text7.Text ReDim P(intDays), EP(intDays), PE(intDays) ReDim E(intDays), EU(intDays), EL(intDays), ED(intDays) ReDim W(intDays), W
19、U(intDays), WL(intDays), WD(intDays) ReDim R(intDays) For j = 1 To intDays W(0) = W0: WU(0) = WU0: WL(0) = WL0: WD(0) = WD0 P(j) = 0.33 * P1(j) + 0.14 * P2(j) + 0.33 * P3(j) + 0.2 * P4(j) EP(j) = Kc * Eo(j) PE(j) = P(j) - EP(j) If PE(j) 0 Then EU(j) = EP(j) /蒸发 EL(j) = 0 ED(j) = 0 Dim A As Single, W
20、mm As Single Wmm = Wm * (1 + B) / (1 - Im) If Abs(W(j - 1) - Wm) 0.01 Then A = Wmm Else A = Wmm * (1 - (1 - W(j - 1) / Wm) (1 / (1 + B) End If A = A + PE(j) If A Wum Then /第一层 WU(j) = Wum If (WU(j - 1) + PE(j) - R(j) - Wum) + WL(j - 1) Wlm Then /第二层 WL(j) = Wlm WD(j) = W(j - 1) + PE(j) - R(j) - WU(j
21、) - WL(j) Else WL(j) = (WU(j - 1) + PE(j) - R(j) - Wum) + WL(j - 1) WD(j) = WD(j - 1) End If Else WU(j) = WU(j - 1) + PE(j) - R(j) WL(j) = WL(j - 1) WD(j) = WD(j - 1) End If Else /不产流,按三层蒸发算 If WU(j - 1) + P(j) = EP(j) Then EU(j) = EP(j) EL(j) = 0 ED(j) = 0 Else EU(j) = WU(j - 1) + P(j) If WL(j - 1)
22、 Wlm * C Then EL(j) = (EP(j) - EU(j) * (WL(j - 1) / Wlm) ED(j) = 0 Else If WL(j - 1) = C * (EP(j) - EU(j) Then EL(j) = C * (EP(j) - EU(j) ED(j) = 0 Else EL(j) = WL(j - 1) ED(j) = C * (EP(j) - EU(j) - EL(j) End If End If End If WU(j) = WU(j - 1) + P(j) - EU(j) WL(j) = WL(j - 1) - EL(j) WD(j) = WD(j -
23、 1) - ED(j) End If E(j) = EU(j) + EL(j) + ED(j) W(j) = WU(j) + WL(j) + WD(j) Next j W0 = W(intDays): WU0 = WU(intDays): WL0 = WL(intDays): WD0 = WD(intDays) For j = 1 To intDays - 1 Robs(i) = Robs(i) + Qobs(j) * 3.6 * 24 / 553 /年实测径流深 Next j For j = 1 To intDays Rcal(i) = Rcal(i) + R(j) /年计算径流深 Next
24、 j Robs(i) = Int(Robs(i) * 10 + 0.5) / 10 Rcal(i) = Int(Rcal(i) * 10 + 0.5) / 10 jderror(i) = Int(Abs(Rcal(i) - Robs(i) * 10 + 0.5) / 10 xderror(i) = Int(Abs(Rcal(i) - Robs(i) / Robs(i) * 100 + 0.5) / 100 If xderror(i) = 0.05 Then If intYear = 1987 Then Picture1.Print Kc; xderror(i) Else Picture2.Pr
25、int Kc; xderror(i) End If End If Next i If xderror(i - 2) = 0.05 And xderror(i - 1) = 0.05 Then xderror(i) = (xderror(i - 2) + xderror(i - 1) / 2 xderror(i)为两年的平均值 Picture3.Print Kc; xderror(i) End IfNext mText1.Text = InputBox(请输入您选择的Kc) 使用者选用自己认为合适的KcKc = Text1.TextReDim Robs(2), Rcal(2), jderror(
26、2), xderror(3)WU0 = Text10.Text: WL0 = Text11.Text: WD0 = Text12.TextW0 = WL0 + WD0 + WU0 For i = 1 To 2 intYear = 1986 + i /用于定位 If intYear Mod 4 0 And xuYear Mod 100 0 Then intDays = 365 Else intDays = 366 End If /读入数据 Open App.Path & .Data & intYear & .csv For Input As #1 ReDim t(intDays) ReDim Q
27、obs(intDays) ReDim Eo(intDays) ReDim P1(intDays) ReDim P2(intDays) ReDim P3(intDays) ReDim P4(intDays) For j = 1 To 365 Input #1, t(j), Qobs(j), Eo(j), P1(j), P2(j), P3(j), P4(j) Next j Close #1 Wum = Text2.Text: Wlm = Text3.Text: C = Text4.Text Wm = Text5.Text: B = Text6.Text: Im = Text7.Text ReDim
28、 P(intDays), EP(intDays), PE(intDays) ReDim E(intDays), EU(intDays), EL(intDays), ED(intDays) ReDim W(intDays), WU(intDays), WL(intDays), WD(intDays) ReDim R(intDays) For j = 1 To intDays W(0) = W0: WU(0) = WU0: WL(0) = WL0: WD(0) = WD0 P(j) = 0.33 * P1(j) + 0.14 * P2(j) + 0.33 * P3(j) + 0.2 * P4(j)
29、 EP(j) = Kc * Eo(j) PE(j) = P(j) - EP(j) If PE(j) 0 Then EU(j) = EP(j) /蒸发 EL(j) = 0 ED(j) = 0 Wmm = Wm * (1 + B) / (1 - Im) If Abs(W(j - 1) - Wm) 0.01 Then A = Wmm Else A = Wmm * (1 - (1 - W(j - 1) / Wm) (1 / (1 + B) End If A = A + PE(j) If A Wum Then /第一层 WU(j) = Wum If (WU(j - 1) + PE(j) - R(j) -
30、 Wum) + WL(j - 1) Wlm Then /第二层 WL(j) = Wlm WD(j) = W(j - 1) + PE(j) - R(j) - WU(j) - WL(j) Else WL(j) = (WU(j - 1) + PE(j) - R(j) - Wum) + WL(j - 1) WD(j) = WD(j - 1) End If Else WU(j) = WU(j - 1) + PE(j) - R(j) WL(j) = WL(j - 1) WD(j) = WD(j - 1) End If Else /不产流,按三层蒸发算 If WU(j - 1) + P(j) = EP(j)
31、 Then EU(j) = EP(j) EL(j) = 0 ED(j) = 0 Else EU(j) = WU(j - 1) + P(j) If WL(j - 1) Wlm * C Then EL(j) = (EP(j) - EU(j) * (WL(j - 1) / Wlm) ED(j) = 0 Else If WL(j - 1) = C * (EP(j) - EU(j) Then EL(j) = C * (EP(j) - EU(j) ED(j) = 0 Else EL(j) = WL(j - 1) ED(j) = C * (EP(j) - EU(j) - EL(j) End If End I
32、f End If WU(j) = WU(j - 1) + P(j) - EU(j) WL(j) = WL(j - 1) - EL(j) WD(j) = WD(j - 1) - ED(j) End If E(j) = EU(j) + EL(j) + ED(j) W(j) = WU(j) + WL(j) + WD(j) Next j W0 = W(intDays): WU0 = WU(intDays): WL0 = WL(intDays): WD0 = WD(intDays) /输出文件 Open App.Path & & intYear & .out For Output As #2 For j
33、 = 1 To intDays Write #2, t(j), P(j), Eo(j), EP(j), EU(j), EL(j), ED(j), E(j), WU(j), WL(j), WD(j), W(j), R(j) Next j Close #2 /年统计 For j = 1 To intDays - 1 Robs(i) = Robs(i) + Qobs(j) * 3.6 * 24 / 553 /年实测径流深 Next j For j = 1 To intDays Rcal(i) = Rcal(i) + R(j) /年计算径流深 Next j Robs(i) = Format(Robs(i), 0.00) Rcal(i) = Format(Rcal(i), 0.00) jderror(i) = Rcal(i) - Robs(i) xderror(i) = (Rcal(i) - Robs(i) / Robs(i) * 100 jderror(i) = Format(jderror(i), 0.00) xderror(i) = Format(xderror(i), 0.00) Print 实测径流( & i & )= & Robs(i) Print 计算径流( & i & )= & Rcal(i) Print 绝对误差( & i