河道洪水计算中VBA模块的建立及应用

2015-02-25 03:02克,李
黄河水利职业技术学院学报 2015年2期
关键词:洪量历时水文

刘 克,李 颖

(1.郑州市水利建筑勘测设计院,河南 郑州 450006;2.黄河水利职业技术学院,河南 开封 475004)

河道洪水计算中VBA模块的建立及应用

刘 克1,李 颖2

(1.郑州市水利建筑勘测设计院,河南 郑州 450006;2.黄河水利职业技术学院,河南 开封 475004)

水文分析计算成果是水利工程规划设计的重要依据。在数据量较大和重复操作较多的步骤中,建立VBA模块,提高了工作效率和计算结果的精度。分析了推理公式法求设计洪水的过程和特点,探讨了VBA模块的建立步骤和实现过程。

洪水计算;Excel表格;VBA模块;推理公式法

0 引言

随着水利改革工作的推进,全国中小型水库除险加固、重点地区中小河流治理建设等水利工程建设项目广泛开展实施。水文分析计算作为各水利工程设计的主要依据,对工程规模、治理方案、施工组织和工程投资等起决定性作用。

近年来,各类水文分析计算软件相继出现。但是,由于水利工程的区域差异,部分软件仅在局部地区得到认可和使用,大多数工程还是采用Excel(电子表格)进行水文分析与计算。应用Excel进行水文分析与计算时,对于一些需计算者判断并反复操作的问题,若仅使用Excel的自带函数进行计算,会在一定程度上影响其工作效率。为了减轻计算工作量,提高设计效率,采用VBA(Visual Basic for Applications简称VBA)编程进行辅助计算。即将Excel和VBA编程技术做合理衔接,将水利工程水文分析计算的数据输入、表格编制、计算书编制等形成有机整体。这不仅有利于提高计算准确度,还可大幅度节省时间和人力。笔者以水文分析计算中的设计洪水计算过程为例,探讨了VBA模块的建立和应用。

1 推理公式法计算设计洪水的过程及特点

由雨量资料推求设计洪水时,推理公式法由于计算方法相对简便,又能保证一定精度,是在缺乏资料的小流域计算设计洪水时常用的方法。在我国几乎各省区的“水文手册”或“水文图集”中,均引用了这种方法[1]。

1.1 计算过程

由24 h净雨推求设计洪水的计算步骤为[2]:(1)根据暴雨图集,由所在水文分区设计的点、面雨量计算得到同频率24 h净雨概化时程分配表;(2)选定对应重现期的逐时净雨过程;(3)根据逐时净雨过程,推求各个流域汇流历时τ时段的净雨过程;(4)根据各流域汇流历时τ时段的净雨过程,计算各τ时段的洪水过程;(5)根据τ时段的洪水过程,推求对应重现期24 h洪水过程线。

在应用MicrosoftExcel2003电子表格进行分析计算时,常采用列表的方式,主要包括24 h净雨概化时程分配表、逐时净雨过程表(重现期P=n%)、τ时段净雨过程~洪水过程表、设计洪水过程线表、设计洪水过程线修正表。其中,τ时段净雨过程~洪水过程表的计算过程比较繁杂,具体为:(1)由逐时净雨过程表(重现期P=n%)计算τ时段(往往时非整小时)净雨过程表。从24 h最大净雨时段起,分别向起始时刻和结束时刻依次逐个τ时段推求,即由逐时(整时段)净雨内插计算各个τ时段净雨。(2)由τ时段净雨过程推求τ时段洪水过程。(3)根据各个τ时段洪水过程,计算24 h(整时段)设计洪水(重现期P=n%)。

1.2 计算特点

在由雨量资料推求设计洪水的过程中,对于不同的流域,由于净雨历时(产流历时)tB可能大于或等于流域汇流历时τ,也可能小于流域汇流历时,致使流域断面出口处洪峰流量Qm的计算公式不同。因此,在1个整时段内,可能存在多个τ时段净雨和历时的情况,也会出现1个τ时段跨越2个整时段的情况。于是,先要进行判断分析,再分别在各区域进行计算。由于数据较多,计算及整理表格工作量大,如果采用计算器或Microsoft Excel 2003电子表格自带函数计算,必然耗费大量时间和精力,而且必须进行反复检查,才能确保计算结果准确无误。

2 VBA模块的建立和应用[3~4]

按照准确、简洁、易用、清晰、效率的原则,先对基于Excel的设计洪水计算过程进行分析,确定系统分析图,然后按照系统分析图,丰富各部分功能。以下结合某中小河流治理工程水文分析,介绍采用推理公式法由净雨资料推求设计洪水过程中VBA模块的建立及应用。

2.1 VBA模块的建立步骤

(1)打开Microsoft Visual Basic界面,在工程窗口中,选择VBAProject(book1),然后选择菜单“插入”“模块1”。(2)在属性窗口中,将“模块1”改为“Flood Calculation”。(3)在代码窗口中(如图1所示),定义“sub()… end sub”等主程序和子程序。

2.2 VBA模块的实现过程

在水文分析计算表中,VBA主要实现逐时净雨过程表 (重现期P=n%,该工程设计洪水重现期为P=2%)和τ时段净雨过程~洪水过程表的计算及数据输出填表。具体实现过程为:

(1)输入计算参数。输入的参数包括流域面积、计算历时τ、净雨历时和对应净雨量。其中,净雨历时和对应净雨量分别定义为一维数组,作为后续计算的基本区域。输入方法是,利用InputBox函数,通过交互对话框的形式在工作表(sheet)中直接选择相应单元格内的计算参数。

(2)判断计算重现期和净雨表输入数据是否满足计算要求。为保证计算条件满足计算目标,需要判断重现期选择是否正确,净雨表是否完整。先通过msgbox函数确认表头重现期是否为所需计算的重现期,再判断选取时段个数与暴雨图集中选定净雨时段个数是否相同,并且识别净雨起始时刻是否为零,避免将不完整的净雨过程表输入。

(3)分析出净雨表中最大净雨量及其对应时刻,并赋值。对于单峰值净雨过程,净雨过程最大值及其对应时刻是τ时段净雨及其洪量计算的起算位置。因此,先找出净雨数组中最大值位置,然后确定最大净雨值在工作表(sheet)中的绝对位置,并分别赋值给事先定义的净雨最大值变量及其对应时刻变量,备下一过程计算引用。

(4)选择τ时段净雨及其对应洪量计算表填表位置,自最大净雨时刻依次计算τ时段对应洪水,并填入工作表(sheet)。在采用列表进行水文分析时,“τ时段净雨及其对应洪量计算表”中最大净雨时刻与“逐时净雨过程表(重现期P=n%)”中最大净雨时刻相同,通常放置在工作表中相同列上。据此确定“τ时段净雨及其对应洪量计算表”位置,以净雨过程最大值及其对应时刻作为起算位置,以τ为步长分别向前、向后计算。计算时,采用两个“Do… Loop Until”语句嵌套多层“For…next”等语句。本过程核心是判断所需计算τ时段在“逐时净雨过程表(重现期P=n%)”中的位置,并根据各个τ时段与整时段的差值关系进行τ时段洪量计算,并根据相对位置依次填表,按设计计算书格式生成τ时段净雨及其对应洪量计算表,如表1所示。

图1 模块操作界面Fig.1 M odule operation interface

表1 τ时段净雨及其洪水计算过程表(重现期P=2%)Table 1 Net rainfall and flood calculation process ofτ(recurrence interval P=2%)

(5)选择设计洪水过程线填表位置,计算设计洪水过程并填入成果表。对于24 h洪水计算,设计洪水过程线时刻(1~24 h)固定。于是,可根据经验选择出设计洪水过程填表区域。然后,根据各个整数时刻在“τ时段净雨及其对应洪量计算表”中的τ时段位置,按照历时和洪量两个参数线性内差计算出各个整数时段设计洪水,并按相对位置关系填表,按设计计算书格式生成“24 h设计洪水(重现期P=n%)”成果表,如表2所示。

表2 设计洪水过程成果表(重现期P=2%)Table 2 Designed flood process results(recurrence interval P=2%)

应用中应注意的几个问题:(1)如计算过程中人为操作退出,应重新执行程序。(2)如果计算过程出现提示“溢出”无输出结果,是计算精度问题,应在Microsoft Excel 2003电子表格界面窗口菜单栏选择“工具—选项—重新计算—工作簿选项”选择“以显示精度为准”,而后重新执行程序。

3 结语

在用Excel(电子表格)进行水文分析时,采用VBA编程技术进行辅助计算,计算过程开放、可控程度高、效率高、应用广泛。经测定,依据暴雨图集,按照推理公式法由典型净雨过程推求设计洪水的计算,从输入参数至计算成果输出,大约只需1min。若人工逐个列表计算,一般约需要1 h。由此可见,采用Excel(电子表格)进行水文分析计算时,合理引入VBA编程,可有效提高工作效率和结果的准确性。

[1]长江流域规划办公室水文处.水利工程实用水文水利计算[M].北京:水利出版社,1980:69-70.

[2]王燕生.工程水文学[M].北京:中国水利水电出版社,1998:76-79.

[3] [美]John Walkenbach.Excel 2003高级VBA编程宝典[M].盖江南,王勇译.北京:电子工业出版社,2005:13-57.

[4]蔡士源.Excel VBA语法字典[M].北京:中国青年出版社,2005:87-90.

[责任编辑 杨明庆]

TV122.3

B

1008-486X(2015)02-0014-03

2015-01-13

刘 克(1980-),男,河南南阳人,工程师,主要从事水利水电工程设计与施工工作。

猜你喜欢
洪量历时水文
赣江流域洪水峰量演变规律及联合分布研究
继往开来 守正创新——河北省水文工程地质勘查院
量词“只”的形成及其历时演变
常用词“怠”“惰”“懒”的历时演变
水文
水文水资源管理
对《红楼梦》中“不好死了”与“……好的”的历时考察
古今字“兑”“说”“悦”“敚”历时考察
黄河内蒙古段河床冲淤规律分析
辽河干流主要控制站近75年最大洪峰及洪量变化特征分析研究