简介《工程水文分析计算集成应用软件[v2.28]使用说明书》是贵州省水利水电勘测设计研究院于2011年发布的官方技术手册面向水利水电勘测设计人员、水文分析计算相关从业者及院校师生用于系统掌握PHAC v2.28软件的操作流程与工程应用方法。资源压缩包整体4.43MB内含1个PDF文件轻量便于查阅已有791人学习浏览是实际水利工程与教学场景中常见的参考资料。手册结构完整按模块讲解了频率曲线分析、河道加权平均比降、水库库容曲线、径流及降水系列统计、暴雨洪水、洪水过程线放大、水位流量关系、水库泥沙淤积、河道水面线推算、农作物灌溉定额等15项计算功能包括从原始资料整理、频率分析到设计洪水、水库调节和灌溉计算的全流程同时涵盖软硬件环境、安装启动、数据库通用操作及各计算单元参数设置。读者可按章节指引完成相应计算流程快速上手软件适用于中小型水利水电工程设计计算及相关课程实训。1. 一个 2011 年的水文计算软件为什么今天还值得拆翻开这份 60 多页的《工程水文分析计算集成应用软件 PHAC v2.28 使用说明书》很容易被它熟悉的 Windows 对话框截图和 Delphi 风格的界面带回到十几年前。但如果因此把它当作过时文档跳过就错过了国内工程水文软件发展史里相当有代表性的一页。这个由贵州省水利水电勘测设计研究院开发的集成系统把频率曲线适线、库容计算、调洪演算、水面线推算等 15 类高频计算任务统一到了一个 MDI 界面里用数据库管理工程数据用 AutoCAD 脚本输出图纸——这套「计算 数据库 制图」三位一体的设计思路即使在今天做水文专业工具链的二次开发也仍然值得借鉴。对刚接触水文分析计算的人来说这份说明书是一个把 P-Ⅲ型分布、同频率放大、棱台库容公式落到实操的完整样例对做了多年水利信息化的人来说它则提供了一个研究老系统数据接口、计算参数取舍和 CAD 协作方式的绝佳样本。2. 系统的骨架工程管理、数据库控件与数据文件接口2.1 以「工程」为核心的数据库组织方式PHAC 最值得注意的设计是所有输入资料和主要成果都以「工程」为粒度存入数据库。每次启动程序后必须执行一次「打开工程数据库」或「新建工程」操作之后无论切换多少次计算单元都维持在同一工程上下文里。这意味着频率曲线的统计参数、水库库容曲线、水位流量关系ZQ 线等计算成果可以被其他单元自动引用不需要二次录入。以洪水调节计算为例它需要同时引用库容曲线和泄流曲线在大多数通用表格工具里这需要手动跨表查找而在 PHAC 中只要这些数据在同名工程下已经算过调洪单元就直接从数据库读取。用现代软件工程的话说这是一种很朴素的「共享数据层」设计——没有服务端没有网络同步靠本地数据库文件加约定好的表结构完成模块间通信。对于单机版专业计算软件来说这个方案的可靠性远高于一堆散落的 Excel 工作簿。2.2 TDBNavigator 与 TDNGridDelphi 时代的数据库交互范本说明书里专门用了一节描述数据库通用操作核心是 TDBNavigator 功能按钮部件和 TDNGrid 网格部件。前者提供 10 个按钮First、Prior、Next、Last、Insert、Delete、Edit、Post、Cancel、Refresh。这套交互逻辑在今天看来有些古老但它解决了一个至今仍困扰数据录入场景的问题什么时候数据真正写入了存储层。在 PHAC 的网格里新录入或修改一条数据后如果立即关闭窗口而没移动记录指针最后修改的那条记录不会保存。这是因为数据处于 Edit 状态但未触发 Post。使用这类系统时有两条经验批量录入后再逐条移动指针让每条记录都完成 Post关闭窗口前养成点击 Refresh 的习惯确保界面显示与数据库一致。表格PHAC 数据库操作与常见场景对照操作按钮适用场景注意事项新增记录Insert在系列资料表中追加年份新记录位置在当前行之后删除记录Delete删除误输的年份数据删除不可恢复先确认修改数据Edit修正某年系列值修改后需移动指针触发 Post保存Post录入或编辑完成后关闭窗口前务必保证已 Post刷新Refresh数据异常或重新载入会放弃未 Post 的修改定位首尾First / Last长系列数据快速跳转配合 Next / Prior 逐条检查这里有一个容易踩的坑当要求输入数值类型Int 或 Float字段时不能处于中文输入法状态否则输入的数字不会进入编辑缓冲区最终表现为「数据写不进去」。这类问题不影响算法本身却在实际使用中最消耗时间。2.3 「从文件读入」接口与外部工具链打通的唯一通道PHAC v2.28 为两类数据文件提供了外部导入能力径流及降水系列统计分析支持从SwxLsr.txt读入历年逐月逐旬资料河道比降计算和水库库容曲线计算分别支持从BiJiangSR.txt、KuRongQXsr.txt读入。文件需要放在Wssjs.exe所在目录下。SwxLsr.txt的格式是起始年、年数、起始月、月旬数、起始旬、旬数历年逐月(旬)系列资料一次典型的水文系列导入文件可能是这样的1961,50,1,12,1,36, 45.2,38.7,52.1,88.9,132.4,168.2,174.5,156.8,110.3,76.5,58.9,41.2, ...逻辑说明首段定义系列的时间骨架起始年为 1961共 50 年起始月为 1每年 12 个月若按旬统计则每月 3 旬、一年 36 旬。首段之后按日历年顺序排列逐年逐月或逐旬数据软件据此重建完整的系列表。参数要点旬数据的字段顺序必须严格对应时间骨架中间不能缺段如果某些月份只有月值而没有旬值按说明书约定以「上旬」代表月值即把月值写入当月第一个旬字段。这种折中方案会损失月内分配信息但对以年控制、枯水段分析为主的计算精度上是可以接受的。3. P-Ⅲ型频率曲线适线从矩法初值到 0.618 优选3.1 三种经验频率计算方法的边界条件P-Ⅲ型频率曲线分析是 PHAC 的核心单元也是径流统计、暴雨洪水、代表年选择等模块共用的一套适线引擎。适线的前提是先计算经验频率说明书给出了三种方法分别处理法实测系列按Pm m/(n1)特大值按P a/(N1)计算是缺省方法统一处理法特大值仍按P a/(N1)实测系列按Pm Pmo (1-Pmo)*(m-l)/(n-l1)计算直接输入法特大值频率直接给定实测系列沿用统一处理法的公式。三种方法的差异核心在于如何对待特大洪水。分别处理法把特大值和实测系列当成两个独立样本各自计算经验频率容易在高尾部出现频率重叠或跳跃统一处理法先确定末位特大值的频率 Pmo再在其后的区间内均匀分布实测点据保证了频率轴的连贯性。实际业务中当有历史调查洪水时优先使用统一处理法。直接输入法适用于文献资料直接给出了重现期、但没有原始排位的场景比如「某站 1870 年洪水重现期约为 500 年」这类信息。3.2 统计参数的计算链路矩法、0.618 与人工适线软件用矩法计算均值 Xo 和 Cv 初值然后用 0.618 法黄金分割搜索在参数空间里优选 Cv最后允许用户通过适线窗口手工调整。整条链路可以概括为矩法求初值Xo mean(X)Cv std(X)/mean(X)0.618 法在一维区间内搜索使经验点据与理论曲线拟合最优的 Cv保持 Xo、Cv 不变调整 Cs/Cv不能为 0最多同时绘制 6 条理论频率曲线1# 线是矩法结果2# 线是 0.618 优选结果36# 线是用户手调结果退出适线窗口时当前显示的曲线编号就是最终采用方案。0.618 法的迭代逻辑用 Python 可以这样演示def golden_section_search(f, a, b, tol1e-6): phi (5 ** 0.5 - 1) / 2 # 黄金分割比 0.618034 c b - phi * (b - a) d a phi * (b - a) while abs(b - a) tol: if f(c) f(d): b, d d, c c b - phi * (b - a) else: a, c c, d d a phi * (b - a) return (a b) / 2逻辑说明函数 f 是给定 Cv 时理论频率曲线与经验点据的离差平方和a、b 是 Cv 的搜索区间。黄金分割搜索每次迭代抛弃区间内较差的一侧用 0.618 的比例不断压缩搜索范围相比均匀扫描效率更高且不要求目标函数可导。参数要点搜索区间一般取[0, 1.5]对 Cv 较大的南方暴雨系列可取到[0, 2.0]Cs/Cv 在 PHAC 中不允许为 0实际工程中常用Cs 2.5Cv ~ 3.5Cv作为初估范围尤其在暴雨频率计算中。每条理论线都可以执行「拷贝上一条线参数」操作方便在此基础上小幅调整 Cs/Cv 后对比拟合效果。查值功能按采用的曲线参数以用户输入的频率查算 Kp 和 Xp——这对应水文计算书中常用的模比系数 Kp 表可快速输出设计频率对应的设计值。3.3 基本参数表与系列资料表的录入逻辑基本参数表共 11 个参数关键字段包括计算系列单位m^3/s表示流量mm表示降水量或径流深m表示水位万(亿)m^3表示径流量实测系列项数必须与年系列资料输入表的行数一致否则计算无法进行统计参数 Cs/Cv不能为 0否则采用参数无效。年系列资料输入表中序号自动生成年份可自动递增只有系列值必须手工录入。这里有一个值得注意的兼容性设计当直接输入特大值频率时最多支持 12 个特大值对应的频率字段也在基本参数表里。这意味着 PHAC 在设计时已经覆盖了国内水文站网常见的「实测 历史调查」数据组合而不是只按连续系列处理。一个容易出错的细节如果采用直接输入法但长度超过 12 个特大值软件可能无法正确读入全部数据。实际项目遇到这种情况时通常的做法是合并相邻历史洪水为同一场次或者在成果报告中注明「仅采用前 12 位特大值」——虽然不完美但在工程精度范围内可接受。4. 六个高频单元的公式、参数与操作要点4.1 河道加权平均比降计算这一单元根据河道纵断面资料通常从 1:5 万或 1:1 万地形图量取计算各断面间的河长及加权平均比降。计算公式为J {(Z0Z1)l1 (Z1Z2)l2 ... (Zn-1Zn)ln - 2*Z0*L} / L²其中 Z 为各量取断面高程单位为 ml 为间距单位为 kmL 为总河长。输入界面只有「高程 Z」和「间距 ΔL」两个字段高程从小到大输入第一个高程 Z0 对应的间距为 0。河长和比降字段随输入实时计算并写入对应行。v2.28 新增了「从文件读入」功能对应文件BiJiangSR.txt。改进点是当后续高程未输入时以前一个 ΔZ 为标准自动推算并写出本条的高程。这个改进对断面较密、量取工作量大的项目非常实用减少了重复键入。4.2 水库库容曲线计算与棱台公式库容计算采用相邻断面面积平均的棱台公式ΔVi [A1 sqrt(A1*A2) A2] * ΔZ / 3 Vm sum(ΔVi) (i1~m)这里的 A 是面积万 m²ΔZ 是高程差m。当面积变化较剧烈时用棱台公式比梯形公式精度更好因为它在 A1 和 A2 之间假定了线性变化考虑了面积沿高程的非线性过渡。操作上有两个很有用的细节「面积、库容取整」按钮计算结果不收整时可一键取整使成果表更规范「面积反算」功能若表中已有面积则不做计算只有库容值从零起算时反算结果才精确否则仅供参考。输出方面PHAC 提供两代 CAD 对接方案。旧方案直接自动化启动 AutoCAD R14 绘图新方案在 v2.28 中改为生成Drawing1.scr脚本文件用户自行在 AutoCAD 命令行输入script调用。脚本方式绕过了 COM 自动化接口的兼容性问题对 AutoCAD 2000 以上版本也能正常工作。这里有个实际建议用脚本方式输出后进入 AutoCAD 用SCRIPTPATH检查脚本搜索路径避免因为找不到文件而静默失败。4.3 径流及降水系列统计分析这个单元的体量最大它不只是算均值而是完整覆盖了以下工作流按总表参数统计历年逐月、丰水段、枯水段、最小月共四个年系列值对年值及分时段系列做 P-Ⅲ型适线基于适线成果做代表年选择降水径流频率法转换径流深、径流量、流量、百分率之间的单位换算累计和滑动平均线分析。单位换算提供了快捷通道例如已知径流深mm、流域面积km²和时段长可换算为平均流量m³/s。这类换算在水文分析中极其频繁做成内置功能可以显著减少手工计算错误。代表年选择提供两种方法。同频率法按「长包短」原则先按最小月放大再按枯水段放大最后按年值放大。如果最小月放大系数大于枯水段系数则采用枯水段系数。同倍比法则统一采用年值放大系数不区分时段。两者的适用场景不同同频率法用于灌溉和供水设计需要同时保证年、枯水期、最枯月三个时段的设计保证率同倍比法用于洪水或径流总量控制为主的分析。降水径流系列转换的计算假定是Yi (Pi/Pp) * Yp即按月降水比例分摊年径流深。输入参数包括流域面积若为 0 则转换为径流深和丰、枯水期基流径流深半年值。软件将基流值分配到各月、旬后再叠加降雨产流部分得到径流年内分配。说明书明确提醒这种方法假定年径流与年降水完全对应成果仅供无资料地区参考。4.4 洪水调节计算与多单元联动洪水调节单元是 PHAC 单元间数据引用的典型代表。调洪演算需要库容曲线来自库容曲线单元和泄流曲线来自水位流量关系单元在 PHAC 中这两者由数据库自动引用不需要在调洪界面重新输入。泄流设施涵盖堰流、闸孔出流、发电出流、淹没出流等并支持控制下泄操作方式。对于中小型水库的调洪演算这是非常贴合实际的设置——很多水库在汛期不是自由泄流而是按指令控制闸门开度或下泄流量。调洪成果自动生成 AutoCAD 图同样支持新版本的.scr脚本输出方式。4.5 成果输出的图形格式取舍PHAC 的图形成果支持.bmp、.wmf、.dwg或.scr三种格式。从工程应用角度.bmp用于屏幕显示和文档插图体积较大但兼容性最好.wmf是矢量图元格式可被 AutoCAD 等图形编辑器调入修改适合报告插图.scr是纯文本的 AutoCAD 脚本可生成精确的工程图。表格PHAC 成果输出格式对比格式输出方式可编辑性典型用途.bmp图形存盘低文档插图、快速查看.wmf图形存盘中可调入 CAD报告附图.dwg / .scr自动绘图 / 脚本高施工图、设计图注意一个已知问题直接用 PHAC 自动启动 AutoCAD R14 绘图时要等待图形绘制完成后才能单击 AutoCAD 窗口区域否则可能出现「远程调用失败」。如果使用.scr脚本方式则没有这个限制这也是 v2.28 将其作为更新方向的原因。5. 在 Windows 新平台复现 PHAC 工作流的几个经验5.1 老软件在新系统上的安装与启动PHAC v2.28 的开发环境是 Windows XP说明书列出的最低配置是 80586 处理器和 8MB 内存。在 64 位 Windows 10/11 上运行的关键是把安装目录下的可执行文件Wssjs.exe设置为「Windows XP (Service Pack 3)」兼容模式并以管理员身份运行。安装序列号为A1364C8337缺省安装目录是c:\WinSsjs尽量保持缺省路径因为部分数据文件依赖程序所在目录定位。如果安装类程序的反应是「缺少 DLL」优先检查是否安装了 32 位 VC 运行库而不是直接下载 DLL 文件覆盖到系统目录——后者容易引入版本冲突。5.2 从说明书反推计算流程验证成果数值手册的价值不止于操作指引它同时给出了可复核的计算公式。我通常用 Python 或 Excel 按说明书公式独立算一遍再和 PHAC 输出对照。以库容曲线为例import math def reservoir_capacity(elevations, areas): # elevations: 高程列表, areas: 对应面积列表(万m2) capacity [0.0] for i in range(1, len(elevations)): dz elevations[i] - elevations[i-1] a1 areas[i-1] a2 areas[i] dv (a1 math.sqrt(a1 * a2) a2) * dz / 3.0 capacity.append(capacity[-1] dv) return capacity z [100.0, 105.0, 110.0, 115.0] a [0.0, 12.5, 28.3, 46.7] print(reservoir_capacity(z, a))逻辑说明逐段按棱台公式计算相邻高程间的容积增量累加得到各高程以下累计库容。第一段面积通常为 0库底保证起始库容为 0。参数要点面积单位是万 m²高程差单位是 m得到的库容单位是万 m³。如果输入数据里面积单位是 m²记得先除以 10000 再参与计算否则结果会差 4 个数量级。5.3 多频率曲线叠加绘制与适线参数确认v2.18 以后新增的多频率曲线叠加绘制功能可以在同一张图上对比同一工程下不同分期洪水或不同时段暴雨的经验频率曲线。这个功能对成果合理性检查很有帮助——比如对比 24h 暴雨和 6h 暴雨的频率曲线如果两者在高尾部出现交叉通常提示资料系列较短或有个别特大值处理不一致需要回到原始数据重新检查。最后提醒一个 PHAC 特有的参数陷阱在「径流及降水系列统计分析」和「贵州省暴雨洪水计算」中调用频率曲线适线窗口时统计参数存放在数据库的临时区域每次进入适线窗口时显示的参数可能不是最终采用值。正确的操作顺序是先选择好需要的时段系列再做适线退出前确认当前曲线编号对应的参数正是你最终想要的那一组。否则成果表可能引用的是上一次操作遗留的参数——这种错误在正式报告中极难被发现但复核时一对比原始适线图就能看出来。本文还有配套的精品资源点击获取