水文预报课程设计(河海)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章基本任务
本次课程设计从2013年7月8日至2012年7月12日,主要任务是对广东省东江一级支流西枝江白盆珠水库的上游宝口流域编制预报方案与产汇流计算。
其基本任务为:
任务一:根据已给的资料、参数及做过的习题,自己编写程序,将流域作为整体进行产流量计算;将计算年径流与实测年径流进行比较;每人计算两年。
任务二:根据已给设计暴雨资料、参数及做过的习题,自己编写程序,将流域作为整体进行次洪产流量、划分水源、直接径流汇流、地下径流汇流计算;绘出直接径流过程、地下径流过程、总的流量过程。
第二章基本资料
2.1 流域概况
白盆珠水库位于广东省东江一级支流
西枝江的上游,坝址以上集雨面积856km2。
流域地处粤东沿海的西部,海洋性气候显
著,气候温和,雨量丰沛。
暴雨成因主要是
锋面雨和台风雨,常受热带风暴影响。
降雨
年际间变化大,年内分配不均,多年平均降
雨量为1800mm,实测年最大降雨量为
3417mm,汛期4—9月降雨量占年降雨量的
81%左右;径流系数0.5-0.7。
流域内地势平缓,土壤主要有黄壤和砂
壤,具有明显的腐殖层,淀积层和母质土等层次结构,透水性好。
台地、丘陵多生长松、杉、樟等高大乔木;平原则以种植农作物和经济作物为主,植被良好。
流域上游有宝口水文站,流域面积为553km2,占白盆珠水库坝址以上集雨面积的64.6%。
白盆珠水库有6年逐日入库流量资料、逐日蒸发资料和时段入库流量资料:流域内有7个雨量站,其中宝口以上有4个。
雨量站分布较均匀,有6年逐日降水资料和时段降水资料;宝口水文站具有6年以上水位、流量资料;流域属山区性小流域且受到地形、地貌等下垫面条件影响,洪水陡涨缓落,汇流时间一般2—3小时(h),有时更短;一次洪水总历时2~5天(d)。
2.2 基本资料
2.2.1 任务一参数及相关实测资料
计算流域为白盆珠水库上游的宝口流域,其流域面积为553km2。
该流域内有四个雨量站:禾多布、马山、高潭、宝口,其权重系数分别为:0.33、0.14、0.33、0.20。
本次课设提供的资料为1987年至1992年该流域径流量、蒸发量及各雨量站的日实测资料,其中我计算年份为1987年与1988年,所使用的相关参数值如下表所示:
其中蒸散发折算系数Kc 需编程优选,优选范围为0.90-1.30。
优选原则为:计算的2年内每年的年径流相对误差尽可能不超过5%。
2.2.2 任务二参数及相关实测资料
任务二产流参数Kc 为任务一中日模优选的值,FC 为10.0mm/3h ,产流参数Kc 用日模优选的值,其他参数取任务1中各组的参数,初始张力水蓄量取各组的容量值。
任务二汇流参数CG 为0.968,QG 0=55.3m 3/s ,单位线序号1至11对应的Q (m 3/s )分别为:0、40、80、130、100、80、48、20、10、5、0
2.3 产流方式论证
宝口流域地处我国南方湿润地区,气候暖热,雨量充沛,多年平均降雨量为1800mm>1000mm ,年径流系数在0.5—0.7之间,大于0.4;流域内土质疏松,植被良好,不易超渗;一次洪水的流量过程陡涨缓落,持续时间2~5d 左右。
从流域的气象条件,下垫面条件和流量过程的分析知,该流域降雨径流关系具有蓄满产流的特点,可以按蓄满产流建立产流量预报方案。
第三章 计算公式
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 为下层土壤含水量(mm );C 为蒸发扩散系数。
三层蒸发模式按照先上层后下层的次序,具体计算为: 1)当WU+P>=E P 时,EU=E p ,EL=0,ED=0
2)当WU+P<E P ,WL>=C*WLM 时,EU=WU+P,EL=(E P -EU)*WL/WLM,ED=0
3)当WU+P<E P , C*(E P -EU)<=WL<C*WLM 时,EU=WU+P,EL=C*(E P -EU),ED=0 4)当WU+P<E P , WL<C*(E P -EU)时,EU=WU+P,EL=WL,ED=C*(E P -EU)-EL
3.3 降雨产流量计算
1)a +PE ≤WMM 时,R=PE +W -WM +WM (1-WMM
a PE +)b+1
2)a +PE >WMM 时,R=PE -(WM -W )
3.4 水源划分计算
通过稳渗率fc 可划分产流中的直接径流和地下径流。
次洪的各水源分量为:
∑
∑∑
>≤>-=
+=
FC
PE i i
i c i FC
PE i i FC
PE i
i
i
c
i i i PE r f PE r
PE r f RG )
(RS 总直接径流:总地下径流:
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)相对误差(%)1987 1080 1100 19.3 1.79
1988 824 813 -10.2 -1.23 4.2 任务二结果
t(i)P(i)R(i)Rd(i)Rg(i)QS(i)QG(i)Q(i) 2004/9/23 12:001412.7 2.710069.969.9 2004/9/23 15:0014.112.9 2.91010.884.194.9 2004/9/23 18:00119.709.733.297.3130 2004/9/23 21:0018.717.47.41058.3111169 2004/9/24 0:0029.728.518.51094.3123218 2004/9/24 3:003635.125.110184136320
第五章误差统计与分析
5.1 精度评定
从计算结果可见,年产流量绝对误差均小于100mm,所产流量的相对误差均小于5%。
精度统计表明,率定的模型参数是基本合理的。
但由于课设时间限制与任务要求,每位同学只用两年的资料来率定Kc,不满足《水文情报预报规范》
中规定:洪水预报方案要求使用样本数量不少于10年的水文气象资料,其中应包括大、中、小水各种代表性年份,并保证有足够代表性的场次洪水资料。
显然Kc=0.98的结果还是存在一定问题的。
5.2 误差分析
影响流域降雨径流过程的因素很多,利用蓄满产流新安江模型的结构与参数能够很好反映湿润地区降雨径流过程的主要规律和特点,因而能获得较好的精度。
但是模型本身以及模型计算中有很多概化,会造成误差。
造成宝口流域产汇流计算方案误差来源主要有以下几个方面:
1.资料代表性的影响。
我们每位同学只用两年实测资料来率定Kc,资料必不能满足时期要求及代表性要求。
实际操作中,应要求有12年以上的连续的对未来有代表性的实测资料,其中10年为率定期,2年为检验期,且这种资料应具备丰、平、枯水年代表性,资料系列前后一致,受人类影响较小。
所以仅用两年的资料率定势必造成Kc一定的误差,而且误差可能还很大。
2.量测误差。
实测的降雨、蒸发、径流量等水文气象信息及河流、湖泊、地形等下垫面信息是研制预报模型或编制洪水预报方案或进行作业预报的主要依据,在现有站网、仪器设备、观测技术条件下,各种信息的时空变化是难以准确反映的,加上受自然因素等客观条件影响,势必造成各种信息的量测误差。
3.模型结构误差。
在该蓄满产流新安江模型中,有很多将非线性现象概化为线性现象或者将某些随机因子近似作为确定因子描述等都会带来误差。
4.模型参数误差。
模型参数是根据输入,通过模型计算输出,再将输出过程与实测过程进行比较,用系统识别的方法作优化调试的,上述所率定出的模型参数Kc可能不是最优。
5.人类活动的影响。
随着社会经济的快速发展,人类活动的影响加剧,流域内可能新建了一些大中型水库或其他工程措施。
影响了该地区原有的产流特点,如汛期提前。
5.3 实时校正
模型计算值与实测值直接总是存在一定的误差。
造成两者间误差的因素很多,若针对每一个单一因素是难于描述或预见的,一般采用实时校正模型来解决。
实时校正模型常用的有卡尔曼滤波、自回归模型等。
第六章编写程序
FORM 1
Private Sub Command1_Click(Index As Integer)
Form2.Show
End Sub
Private Sub Command2_Click()
Form3.Show
End Sub
FORM 2
Private Sub Command1_Click()
Form1.Show
Form2.Hide
End Sub
Private Sub Command2_Click()
For m = 0 To 40
Kc = 0.9 + 0.01 * m
ReDim 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 = 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 Qobs(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 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)
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, Wmm 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 <= Wmm Then
R(j) = PE(j) + W(j - 1) - Wm + Wm * (1 - A / Wmm) ^ (1 + B)
Else
R(j) = PE(j) + W(j - 1) - Wm
End If
If (WU(j - 1) + PE(j) - R(j)) > 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) - 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) > 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 - 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 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.Print 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 If
Next m
Text1.Text = InputBox("请输入您选择的Kc") '使用者选用自己认为合适的Kc
Kc = Text1.Text
ReDim Robs(2), Rcal(2), jderror(2), xderror(3)
WU0 = Text10.Text: WL0 = Text11.Text: WD0 = Text12.Text
W0 = 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 Qobs(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 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)
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 <= Wmm Then
R(j) = PE(j) + W(j - 1) - Wm + Wm * (1 - A / Wmm) ^ (1 + B)
Else
R(j) = PE(j) + W(j - 1) - Wm
End If
If (WU(j - 1) + PE(j) - R(j)) > 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) - 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) > 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 - 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 = 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 & ")=" & jderror(i)
Print "相对误差(" & i & ")=" & xderror(i)
Next i
End Sub
FORM 3
Private Sub Command1_Click()
'//任务二
'//读入数据
Open App.Path & "\..\Data\pdata.csv" For Input As #1
Do While Not EOF(1)
intHours = intHours + 1
ReDim Preserve t(intHours)
ReDim Preserve EM(intHours)
ReDim Preserve P1(intHours)
ReDim Preserve P2(intHours)
ReDim Preserve P3(intHours)
ReDim Preserve P4(intHours)
Input #1, t(intHours), EM(intHours), P1(intHours), P2(intHours), P3(intHours), P4(intHours)
Loop
Close #1
'//参数赋值
Kc = Text1.Text: Wum = 20: Wlm = 60: C = 0.16
Wm = 140: B = 0.2: Im = 0.001
ReDim P(intHours), EP(intHours), PE(intHours)
ReDim E(intHours), EU(intHours), EL(intHours), ED(intHours)
ReDim W(intHours), WU(intHours), WL(intHours), WD(intHours)
ReDim R(intHours)
'//初始状态
W(0) = Val(Text2.Text) + Val(Text3.Text) + Val(Text4.Text): WU(0) = Val(Text2.Text): WL(0) = Val(Text3.Text): WD(0) = (Text4.Text)
For j = 1 To intHours
P(j) = Int((0.33 * P1(j) + 0.14 * P2(j) + 0.33 * P3(j) + 0.2 * P4(j)) * 10 + 0.5) / 10
EP(j) = Kc * EM(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, Wmm As Single
Wmm = (1 + B) * Wm / (1 - Im)
If Abs(W(j - 1) - Wm) < 0.1 Then
A = Wmm
Else
A = Wmm * (1 - (1 - W(j - 1) / Wm) ^ (1 / (1 + B)))
End If
A = A + PE(j)
If A <= Wmm Then
R(j) = PE(j) + W(j - 1) - Wm + Wm * (1 - A / Wmm) ^ (1 + B) Else
R(j) = PE(j) + W(j - 1) - Wm
End If
R(j) = Int(R(j) * 10 + 0.5) / 10
If (WU(j - 1) + PE(j) - R(j)) > 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) - 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) / 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 - 1) - ED(j)
End If
E(j) = EU(j) + EL(j) + ED(j)
W(j) = WU(j) + WL(j) + WD(j)
Next j
Open App.Path & "\Hour.out" For Output As #2
For j = 1 To intHours
Write #2, t(j), P(j), EM(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
Dim FC As Single
Dim Rd() As Single, Rg() As Single
ReDim Rd(intHours), Rg(intHours)
FC = 10#
For i = 1 To UBound(PE)
If PE(i) > FC Then
Rg(i) = FC * (R(i) - PE(i) * Im) / PE(i)
End If
If (PE(i) > 0 And PE(i) <= FC) Then
Rg(i) = (R(i) - PE(i) * Im)
End If
Rg(i) = Int(Rg(i) * 10 + 0.5) / 10
Rd(i) = R(i) - Rg(i)
Next i
Dim Q() As Single, QS() As Single, QG() As Single
Dim UH() As Single, intUHNums As Integer
Open App.Path & "\..\Data\unitgraph.csv" For Input As #1 '//读入单位线Do While Not EOF(1)
intUHNums = intUHNums + 1
ReDim Preserve UH(intUHNums)
Input #1, UH(intUHNums)
Loop
Close #1
ReDim QS(intHours + intUHNums - 1)
For i = 1 To intHours
For j = 1 To intUHNums
QS(i + j - 1) = (Rd(i) / 10) * UH(j) + QS(i + j - 1)
Next j
Next i
Dim U As Single
U = 553 / (3.6 * 3)
Dim CG As Single
ReDim QG(intHours)
QG(0) = 55.3: CG = 0.968
For i = 1 To intHours
QG(i) = CG * QG(i - 1) + (1 - CG) * Rg(i) * U
Next i
ReDim Q(intHours)
For i = 1 To intHours
Q(i) = QS(i) + QG(i)
Next i
Open App.Path & "\Hour_Q.out" For Output As #3
For i = 1 To intHours
Write #3, t(i), P(i), R(i), Rd(i), Rg(i), QS(i), QG(i), Q(i)
Next i
Close #3
MsgBox "任务二完成!"
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
Text1.Text = ""
End Sub
第七章心得体会
刚看到实习内容的时候,觉得都不是考江苏计算机二级了,简直像计算机竞赛,课设其实原理并不复杂,但要转化为代码,实在是一项巨大的工程,不知从何处下手。
一开始是分小块来写,但写着写着就乱掉了,在参数的处理方面也很麻烦,经常会重复定义,所以后来还是选择了先构建出整体框架,再一点一点慢慢填充,最后一边调试一边慢慢完善,对细节做些补充,原本以为要挑灯夜战的两个大程序也就这样差不多完成了。
幸福有时候很简单,就比如说在经过N多次调试、黄色字块终于消失的时候,比如说程序运行后终于给了我一个靠谱点的答案的时候,再比如说一沓厚厚的报告打印出来拿在手里的时候,真的是有一种满足感。
这次课设还有一点感触很深的就是学无止境,真的是这样,不管在哪方面,你了解的的和不了解的。
我们从小学的时候就开始学Excel,一直用到现在,讲起来也很熟悉了,而记事本在我们眼里又是再简单不过的一个小软件,但在如何把.out文件里乱糟糟一大堆的数据转换成表格时还真犯了愁,总不能一个一个输吧。
后来上网查了一下,原来Excel可以把记事本转化成表格的形式打开,瞬间觉得方便了许多,有一种豁然开朗的感觉。
曾经看过一段话,觉得写在这里很合适:一个人不认识的永远比认识的要多的多,当你以为对一件事物很熟悉的时候,也正是对这件事物最不了解的时候。
而当你随着对事物的了解慢慢加深却感觉越来越摸不透的时候,那么恭喜你,终于入门了。