5.7 KiB
tjwater2_v2 爆管模拟校准设计
状态:参数与只读校验已准备,尚未运行水力模拟。目标项目为 tjwater2_v2(演示项目2(新版)),不是 tjwater_v2。
目标
先用现有管网、阀门和监测点选择可观测的事故管段,再在隔离评测数据库中校准破口面积。首版使用管道截面积的 1/32、1/16、1/8;1/8 是上限。若 1/8 仍不能形成明确降压信号,该管段退出 SCADA 爆管用例,不继续扩大破口。
模拟调用链为:
只读源数据快照 -> 隔离 BizDB/模型模板 -> 正常对照模拟
-> 爆管三档校准 -> 选择最小通过面积
-> 保存正式分析结果 -> 映射 SCADA 数据
当前 temporary_project_database 会从项目模型模板创建临时数据库,同时短暂禁止模板连接并终止模板会话。因此即使 run_burst_simulation 不保存结果,也不能直接针对原项目执行。正式运行必须把只读逻辑快照恢复到独立评测数据库及其模板,Server、worker 和 Agent 全部使用评测路由。
方法参数
run_burst_simulation 接收带时区的 start_time、60 至 86400 秒的 duration、1 至 20 个输出节点、至多 20 条输出管段、1 至 20 条爆管管段,以及与管段一一对应的正数孔口面积 orifice_areas_cm2。本次每个调用只模拟一条爆管管段,等待预算使用 240 秒;排队成功只表示已接受,仍需查询计算任务和最终结果。
tjwater2_v2 使用 LPS 流量单位、米制压力、0.5 emitter 指数,水力和报告步长均为 15 分钟。压力设备值使用 m,流量设备值使用 m³/h。3600 秒模拟必须产生 0、15、30、45、60 分钟五个结果时刻;缺少任一时刻即失败。爆管服务把 emitter 放在管段末端 junction,切换临时模型为 PDA,并设置 REQUIRED PRESSURE=10 m。
孔口面积是输入,不是漏水流量。服务的 emitter 系数为:
coefficient[L/s/sqrt(m)] = 0.65 * area[cm²] / 10000 * sqrt(19.6) * 1000
正式运行后,定位使用的泄漏量按事故节点相对正常对照的 demand 增量计算,并从 L/s 除以 1000 转成 m³/s。流量监测设备单位为 m³/h,模型流量结果为 L/s,映射 SCADA 时乘以 3.6。
管段与场景
主场景管段 541720 为 DN800、长 483.038 m,破口节点 502046。附近两个压力点沿管网约 1.2 km,最近流量点约 1.2 km;两座边界阀可隔离 11 个节点。其破口面积为 157.079633、314.159265、628.318531 cm²。
清单同时保存 SCADA 设备 ID 与其实际水力模型对象 ID,不能假定两者相同。例如压力设备 447382、444985 分别绑定节点 7543252226207002012、14141146287589625673,流量设备 542121 绑定管段 pipe-eaa5c512bd8f4649b37bdbe3d。模拟输出使用模型对象 ID,得分与数据映射使用设备 ID。
启动校验还要求所选压力设备到绑定节点、流量设备到绑定管段的本地坐标距离均不超过 1 m。全量复核中待人工确认的 542017、547063 和 DEMO-WQ-551571 不进入本套爆管 benchmark;不得为通过校验而自动吸附设备坐标或猜测改绑对象。
次级场景管段 520323 为 DN300、长 33.5951 m,破口节点 91055。最近压力点沿管网约 262 m,五座边界阀可隔离 19 个节点。其破口面积为 22.089323、44.178647、88.357293 cm²。
两条管段分别在北京时间 2026-10-08 02:00 和 12:00 模拟,形成 B01 至 B04 四个物理场景。每个场景都必须有同时间、同持续时长、相同模型状态的无爆管正常对照。严重档先验证是否可观测;通过后依次测试中度和轻度,最终选择满足要求的最小面积。最坏情况下执行 12 次爆管校准模拟,正常对照按项目、时间和模型版本复用。
通过条件
一个面积只有同时满足以下条件才可冻结:
- 至少一个指定压力点连续两个 15 分钟时刻较正常对照下降 30%。
- 第二压力点下降至少 10%,或指定流量点相对正常对照变化至少 20%。
- 正常对照不触发相同规则。
- 指定监测节点不出现负压,模拟正常收敛,所有请求输出完整。
- 同一管段的夜间和白天场景使用同一面积;两者都通过时才能进入正式 benchmark。
压力与流量变化都按相同时间戳的正常对照计算:abs(事故值 - 正常值) / max(abs(正常值), 1e-6)。压力规则只取下降方向,流量规则取绝对变化。不得用其他时段均值代替同时间戳对照。
压力下降、流量变化、实际泄漏量、计算状态和缺失输出都保存到校准报告。失败的档位保留,不重试到通过。若严重档失败,该管段标记为不适用;若较小档位失败而较大档位通过,选择最小通过档位。
校验与后续执行
清单保存在 resources/benchmarks/tjwater2-v2-burst-simulation.json。以下命令使用本地占位 context handle,把全部 12 组计划参数送入当前 BurstSimulationInput 做契约校验,再只读检查 Metadata 项目身份、当前 BizDB、模型模板、管段属性、模型单位、步长、监测点、设备到绑定对象的距离、边界阀和既有 emitter;它不创建运行上下文,也不调用模拟工具:
conda run -n server python scripts/check_burst_simulation_design.py
隔离评测数据库准备完成后,runner 先按清单调用非持久 run_burst_simulation 校准。面积冻结后,通过 save_simulation_scenario 在评测数据库保存全量节点和管段结果,生成固定的运行 ID 和数据摘要。模型分析结果与模拟 SCADA 保留明确来源,不标记为实测数据。