ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

PHAST-SAFETI二次开发教程(04):第一个后果分析——从泄漏源项到扩散、火灾与毒性结果

PHAST-SAFETI二次开发教程(04):第一个后果分析——从泄漏源项到扩散、火灾与毒性结果 PHAST-SAFETI二次开发教程04第一个后果分析——从泄漏源项到扩散、火灾与毒性结果版本声明块工具与软件Phast™ 版本主线为 9.x9.0 于 2023 年 12 月发布引入 Batch runner9.1 增补粉尘爆炸等能力历史锚点版本为 8.x8.6 起提供 CFD 池火8.7 起提供 CFD 射流火。版本细节以官方发布说明为准。语言与环境官方 Python 库 PyPWS 要求 Python 3.11 及以上官方 Web 服务面向全 SI 单位。本文目标不写复杂脚本先把一个场景从输入到结果这条最短路径亲手走通并知道你看到的每个数字是什么量。一句话结论Phast™ 的第一个后果分析只需四步——选物料与源项、给一组气象与地面条件、指定要算的效应类型、运行官方内核在秒级给出结果链路是源项Discharge算出泄漏速率与相态扩散Dispersion算出浓度分布效应Effects把浓度与几何转成热辐射、超压与毒性剂量读懂结果的关键是先分清哪一个数是哪一个环节的输出。〇、本篇要解决的认知问题Q1作为第一个练习应该选哪一类泄漏场景为什么不该一上来就做复杂场景Q2源项参数里孔径、相态、隔离与放空分别改变什么哪个最敏感Q3Phast™ 能给出哪些结果量它们分别属于链路的哪一环Q4秒级出结果的工作节奏意味着什么这意味着模型是近似还是精确Q5结果解读有哪些典型误用哪些数字最容易被误读一、机制解析1.1 第一个场景的选择越简单越好第一场景的目标不是算出一个能交差的数而是建立对输入与输出因果关系的直觉。因此选择原则是场景类型适用性备注压力容器vessel泄漏最适合入门参数少、模型链清晰结果量最全常压储罐tank泄漏适合入门第二步引入液池与蒸发理解池径与池火管道pipe泄漏第三步引入上游供料与持续释放长输管道暂缓参数多分段、阀室、地形不适合第一场景为什么不该一上来就做复杂场景链路越长误差来源越多。第一场景里如果有五个参数同时不确定你无法判断结果偏差来自哪一环。先把参数压到三个以内物料、孔径、气象把因果看明白再逐步加复杂度。1.2 源项参数谁在改变结果源项是整条链路的上游它的偏差会成量级地传到下游。四个关键参数的影响机制参数改变什么敏感度孔径泄漏尺寸直接决定泄漏速率与持续时间是结果量级的第一驱动极高相态假设气/液/两相决定是形成射流云团还是形成液池、是否闪蒸极高隔离isolation是否在有限时间内切断泄漏决定释放总量高放空/泄压blowdown降低容器压力改变泄漏速率的时间演化中至高铁律 8物理量不臆造泄漏与扩散的经验参数一律取自官方技术文档并标注查不到就写以官方文档为准。孔径、充装、泄漏高度这类工况值来自你的工程设计而孔口闪蒸假设、容器条件等模型取值来自官方参考文档——两者不能混为一谈。1.3 结果量清单每个数属于哪一环链路环节结果量典型用途源项Discharge泄漏速率随时间变化、释放总量、相态与闪蒸比例、液池形成速率判断释放有多猛、持续多久扩散Dispersion浓度等值线如易燃下限、急性暴露浓度对应值、云团尺寸与位置判定危险范围、可燃云范围火灾效应Effectsfire火焰长度、池径、热辐射通量与剖面、闪火范围判定热伤害距离、闪火影响爆炸效应Effectsexplosion超压与冲量可含阻塞区影响判定结构损伤与人员伤害毒性效应Effectstoxic毒性剂量与致死率probit 类剂量-响应表述判定急性中毒影响范围看表的顺序就是链路的顺序先确认泄漏速率合理再看云团范围最后看效应距离。跳过前两级直接看热辐射距离是最常见的无效做法。1.4 秒级出结果的含义这是工程近似不是 CFD官方的后果链路在单场景上通常秒级返回结果。这个速度本身就告诉你模型的类型它由经验与唯象模型构成适合大量工况的快速评估、筛选与合规论证当场景涉及复杂三维几何、密集阻塞、局部地形或近场湍流细节时才需要 Phast CFD 扩展、KFX™ 或 EXSIM 这类高保真工具。最佳实践把秒级模型和CFD当成两种工具而非两个精度等级。工程上正确的做法是用秒级模型跑上百个工况做筛选取包络只对少数关键工况做 CFD 复核反过来用 CFD 跑上百个工况是预算与工期的双重浪费。1.5 结果解读的五个典型误用把等值线当安全边界。等值线是某个阈值的位置不是越线必伤亡、线内必安全的硬边界人员暴露时间、防护与遮蔽都在起作用。混淆闪火范围与热辐射伤害。闪火主要是可燃云范围内的人员受热与燃烧风险与持续射流火或池火的热辐射剂量不是一回事。忽略相态对液池的影响。同一物料气态泄漏与液体泄漏的结果形态完全不同——前者看云团后者要先看池径与蒸发。不声明气象与地面条件。风速与大气稳定度决定了云团是高瘦还是矮胖缺少这两个前提的结果无法与他人比较。只看最大值不看时间演化。泄漏速率与浓度都是时间的函数只取峰值会漏掉低强度长时间的暴露情形。二、完整操作与脚本/API 代码逐段剖析2.1 GUI 全程操作步骤清单步骤 1 新建 Study Folder 与 Study命名带上物料与场景族例如 LPG_Demo 步骤 2 在 Study 层设置一组气象工况风速例如 3 m/s与大气稳定度例如 D 类 步骤 3 在 Study 层设置地面与基底条件例如陆面、常规粗糙度 步骤 4 新建 Scenario选择物料先选单组分、物性来源取官方物料库 步骤 5 选择容器类型压力容器设置容积、充装比例与容器条件 步骤 6 设置物料状态温度与压力推荐从工程数据取真实值不臆造 步骤 7 设置泄漏参数孔径例如 10 mm、泄漏高度例如液面以下或气相空间 步骤 8 选择是否隔离有限时间切断以及是否启用放空/泄压 步骤 9 在结果选项里勾选要输出的效应类型扩散浓度、热辐射、闪火、毒性按需 步骤 10 运行记录运行时间确认单场景在秒级返回 步骤 11 依次查看结果先看泄漏速率曲线再看浓度等值线最后看效应距离与热辐射剖面 步骤 12 导出 Excel 结果表与 Word 报告把该场景作为“黄金场景”存档铁律 7 的回归基准2.2 用官方接口跑通同一场景Python下面的脚本把 §2.1 的手工步骤翻译成脚本先算容器状态再算泄漏。注意本代码展示的是对象如何串联与如何判定成功实体与计算类的构造参数名以官方 PyPWS 参考文档为准铁律 2。# first_consequence.py —— 第一个后果分析容器状态 - 泄漏源项# 说明计算类与实体的构造参数名以官方 PyPWS 参考文档为准铁律 2# 本脚本重点演示“链路串联”与“成功判定”而非提供可照抄的签名。importos# 读环境变量令牌不硬编码铁律 5frompypws.calculationsimport(# 官方计算类VesselStateCalculation,# 第一级容器内物料状态VesselLeakCalculation,# 第二级泄漏/释放Discharge)frompypws.entitiesimportMaterial,State,Vessel,Leak# 输入实体frompypws.enumsimportResultCode# 运行结果码成功的判定依据defrun_discharge(case:dict)-dict:跑“容器状态 - 泄漏”两级链路返回下游要用的结果。materialMaterial(**case[material])# 物料单组分或多组分定义stateState(**case[state])# 状态温度、压力、相态vesselVessel(**case[vessel])# 容器形状、容积、充装leakLeak(**case[leak])# 泄漏孔径、泄漏高度等# ---- 第一级容器状态计算 ----state_calcVesselStateCalculation(material,state,vessel)# 组合上游三个实体codestate_calc.run()# run() 返回 ResultCodeifcode!ResultCode.SUCCESS:# 必须显式判定不能靠“没抛异常”state_calc.print_messages()# 走官方诊断通道打印消息raiseRuntimeError(f容器状态计算失败:{code})# 失败即停禁止带病向下传递holdupstate_calc.outputState# 关键契约上游输出状态喂给下游# ---- 第二级泄漏/释放Discharge----leak_calcVesselLeakCalculation(material,holdup,leak)# 三个输入物料、上游状态、泄漏参数codeleak_calc.run()# 同样返回 ResultCodeifcode!ResultCode.SUCCESS:# 同样显式判定leak_calc.print_messages()# 打印诊断消息定位问题raiseRuntimeError(f泄漏计算失败:{code})return{# 交给下游扩散与效应的成果material:leak_calc.material,# 物料含上游归一后的定义vesselConditions:leak_calc.vesselConditions,# 容器条件outputState:holdup,# 容器内状态dischargeRecords:leak_calc.dischargeRecords,# 泄漏记录速率/时间序列}if__name____main__:tokenos.environ.get(PHAST_API_TOKEN,)# 只从环境变量取令牌asserttoken,未配置 PHAST_API_TOKEN无法调用官方服务见铁律 5case{# 一个最小工况数值请按工程数据填写material:{},# 物料参数以官方参考文档为准state:{temperature:300.0,pressure:1.0e6},# 温度与压力全 SI铁律 4vessel:{},# 容器参数以官方参考文档为准leak:{holeDiameter:0.01},# 10 mm 孔径 0.01 mSI}resultrun_discharge(case)# 跑两级链路print(链路完成可用成果键:,sorted(result.keys()))# 打印成果键确认契约字段齐全逐行要点state_calc.outputState会传给下游这是整条链路最重要的数据契约——上游算出的状态就是下游的边界条件第 05 篇会把这条契约完整画出来ResultCode.SUCCESS是官方给的成功判据不要用没有异常抛出代替它print_messages()是官方诊断通道失败时先看它再改代码所有量值一律 SI10 mm 必须写成 0.01 m铁律 4。铁律 7改完必验把 §2.1 手工跑出的黄金场景结果留档再用 §2.2 的脚本跑同一场景逐项比对泄漏速率与关键结果量。两者不一致时先查单位与相态假设再查气象与地面条件最后才怀疑模型。2.3 结果判读表把数字读成结论你看到的它在说什么该怎么用泄漏速率随时间释放的猛烈程度与持续时间判断是否需要隔离与放空决定下游输入释放总量本次事件的总物料量与容器储量对账检查是否合理浓度等值线达到某阈值的空间位置用于应急隔离距离与可燃云范围初判火焰长度 / 池径火灾几何尺度判断火焰是否可能接触临近设备与建筑热辐射通量与剖面距离与热负荷的对应关系判断人员与设备的热影响距离闪火范围可燃云可达范围与爆炸后果联合判断点火后的情形超压与冲量爆炸对结构与人体的作用判断建筑损伤与人员伤害毒性剂量与致死率暴露与效应的剂量-响应关系判断急性中毒影响范围与响应优先级三、常见报错与排查报错 3-1结果量级明显不合理例如泄漏速率大到违反物理常识。现象泄漏速率与释放总量远超容器储量对应的合理范围。根因单位混用是最常见原因——孔径写成毫米、压力写成巴、温度写成摄氏度都会让结果偏离数量级。解法全链路核对 SI铁律 4孔径用米、压力用帕、温度用开尔文python侧统一在入口处做一次单位规范化。报错 3-2ResultCode不是成功但脚本跑完了。现象脚本没有崩溃打印出的结果却是空的。根因只调用了run()而没有判定返回码失败被静默吞掉。解法所有计算对象在run()之后必须显式判断ResultCode.SUCCESS失败时调用print_messages()并抛出异常见 §2.2这是把无声错误变成响亮失败的关键动作。报错 3-3下游计算报缺少上游结果找不到状态或泄漏记录。现象把结果对象直接传给下一步时失败。根因忘了传递上游的输出outputState或结果属性dischargeRecords或传递顺序接错。解法把链路写成一个函数、显式返回成果字典如 §2.2 的做法让传了什么在代码里可见而不是依赖隐式全局变量。报错 3-4气相泄漏却算出明显液池。现象结果出现液池但你的意图是纯气相释放。根因相态假设闪蒸与孔口状态设置与工况不符——这是源项里最敏感的假设之一。解法回到源项参数检查物料状态与孔口闪蒸假设同一物料在不同温度压力下会给出完全不同的泄漏形态必须先确认工况是否真实。报错 3-5结果与同事的算例差很多但参数看起来一样。现象两个算例的输入表格几乎一致输出却差异显著。根因气象工况与地面条件不同风速、大气稳定度、地面粗糙度或容器条件取值不同。解法建立黄金场景比对清单把物料、状态、容器、泄漏、气象、地面六项逐项打勾比对只比看起来一样的字段是漏检的根源。四、动手练习练习 1跑通第一个场景按 §2.1 建一个压力容器 10 mm 孔泄漏场景并运行。判定单场景秒级返回结果泄漏速率曲线与释放总量在物理数量级上合理。练习 2孔径敏感性把孔径依次改为 5 mm、10 mm、25 mm其余不变记录泄漏速率与热辐射距离。判定能画出一张孔径—影响距离的趋势表并解释为何不是线性关系。练习 3相态对照同一物料、同一孔径分别设置气相与液相泄漏对比结果形态差异。判定能说清前者看云团、后者看池径与蒸发的原因。练习 4隔离与放空开启与关闭隔离、开启与关闭放空各跑一次。判定能说明释放总量与泄漏速率时间演化的变化并解释工程上为什么值得为多快能切断投资。练习 5脚本对照运行 §2.2 的脚本与练习 1 的 GUI 结果逐项比对把差异收敛到零。判定形成一份黄金场景对照记录输入六项 关键结果量作为后续篇章的回归基准。五、小结与下一篇预告本篇走通了最短的一条完整路径选物料与源项 → 给气象与地面 → 指定效应类型 → 运行。请记住三件事源项里孔径与相态是最敏感的两个参数结果量按链路顺序读先泄漏速率再浓度最后效应秒级返回意味着这是工程近似模型它的价值在于快速筛选与批量取包络高保真三维问题才交给 CFD。同时请把黄金场景留档——它是后面所有自动化工作的一致性基准铁律 7。第 05 篇《模型链路解剖》将把这四步彻底剖开Discharge → Dispersion → Effects 每一环的输入输出契约是什么、UDMUnified Dispersion Model官方统一扩散模型在扩散环节处于什么位置、经验与唯象模型和 CFD 的边界在哪里以及这条链路怎样与 PyPWS 的计算对象VesselStateCalculation→VesselLeakCalculation→JetFireCalculation→RadiationTransectCalculation一一对应。本篇认知问题回显FAQQ1第一个练习应该选哪类场景为什么不该一上来就做复杂场景A首选压力容器泄漏其次常压储罐泄漏再次管道泄漏长输管道等参数多的场景应暂缓。原因是链路越长、误差来源越多第一场景若同时有五个不确定参数就无法判断结果偏差来自哪一环。入门场景应把参数压到三个以内物料、孔径、气象先建立因果直觉再逐步增加复杂度。Q2源项参数里孔径、相态、隔离与放空分别改变什么哪个最敏感A孔径直接决定泄漏速率与持续时间是结果量级的第一驱动敏感度极高相态假设决定形成射流云团还是液池、是否闪蒸同样敏感度极高隔离决定是否在有限时间内切断泄漏影响释放总量放空泄压降低容器压力改变泄漏速率的时间演化。因此最敏感的是孔径与相态两个参数入门时应优先把它们确认清楚。Q3Phast™ 能给出哪些结果量各属于链路哪一环A源项环节给出泄漏速率随时间变化、释放总量、相态与闪蒸比例、液池形成速率扩散环节给出浓度等值线、云团尺寸与位置火灾效应给出火焰长度、池径、热辐射通量与剖面、闪火范围爆炸效应给出超压与冲量毒性效应给出毒性剂量与致死率probit 类剂量-响应表述。读表顺序应与链路顺序一致先确认泄漏速率再看云团范围最后看效应距离。Q4秒级出结果意味着模型是近似还是精确A意味着它是工程近似。单场景秒级返回说明链路由经验与唯象模型构成适合大量工况的快速评估、筛选与合规论证涉及复杂三维几何、密集阻塞、局部地形或近场湍流细节时才需要 Phast CFD 扩展、KFX™ 或 EXSIM 等高保真工具。正确的工程做法是用秒级模型跑上百工况取包络只对少数关键工况做 CFD 复核。Q5结果解读有哪些典型误用A五个常见误用。一是把等值线当作硬性安全边界忽略暴露时间、防护与遮蔽二是混淆闪火范围与持续火灾的热辐射伤害三是忽略相态对液池形成的影响气态看云团、液态先看池径与蒸发四是不声明气象与地面条件导致结果无法与他人比较五是只看峰值不看时间演化漏掉低强度长时间暴露的情形。
返回列表