Files
SystemSimulationApp/docs/other/物性有效温度越界提示与Amesim核验-2026-09-15.md

50 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 物性有效温度越界提示与 Amesim 核验
已给平台原生仿真增加非致命物性温度越界提示,实时显示在仿真控制台,并保存到结果诊断信息中。提示包含气体名称、物性类别、物性计算使用的温度、有效界限和仿真时刻,不包含具体元件名称。
## Amesim 实际行为
核对 Amesim 2404 实际运行的 [run.log](../../test/helium-high-temperature-20260915/amesim/run.log),例如第 16 行起的提示:状态方程使用了 10890.565 K,超过 1500.000 K 上限,发生于 0.001000 s;下一行说明使用 pneumatic gas 1、predefined helium (He) real。后续还有 Cp/h/s 中依赖状态方程的真实气体修正项越界提示。
这些提示没有具体元件名。因此,“不报元件”的判断与本次日志相符;但 Amesim 不只是给出温度,还包含物性类别、界限、时刻和气体编号/名称。日志存在重复提示,本次平台按“氦气物性类别 + 上/下界方向”在一次仿真内仅提示一次,另外保存极值,避免刷屏。没有依据该日志推断所有 Amesim 物性模块、版本都采用完全相同策略。
## 范围与触发规则
范围来自本机 Amesim 2404 的 `libpn/data/nasa_properties/` 数据文件,来源哈希见 [原物性对照清单](../../test/helium-high-temperature-20260915/manifest.json)。
| 实际使用的物性 | 有效温度范围 | 数据来源 |
| --- | --- | --- |
| 状态方程及热力性质的真实气体修正项 | 2.2–1500 K | helium_eos.data |
| 理想气体热容、焓和内能 | 200–20000 K | helium_cp_h_s.data;内能由焓减 RT |
| 动力黏度 | 200–15000 K | helium_mu.data |
- 只检查实际调用的物性。封闭容积不使用黏度时,不因容积温度高而生成黏度警告。
- 在初始状态和每个求解器接受的状态检查,包括接受的事件状态;不采纳被拒绝的步、Newton/Jacobian 试探状态或结果回放。提示首次时刻指首次检测到越界的接受状态,未额外求解准确穿越时刻。
- 温度指物性计算的输入温度,也可能包括等熵估算温度;不能将其解读为某个容积元件的存储温度。
- 边界使用 `1e-9 × max(界限, 1)` K 的浮点容差,避免温度反解舍入造成端点误报。
- 保持现有物性公式、外推行为和求解状态不变,越界本身不中断仿真;温度有计算结果不意味着它仍处于物性有效范围。
- 多个氦气实例使用同一数据集,提示合并为“氦气”,不添加无法从当前原生介质结构可靠还原的 Amesim 气体编号。平台其他介质目前没有对应的已核验温度有效域,本次没有虚构空气等介质的界限。
## 实现
`NativePropertyTemperatures` 在每次检查中汇总实际物性调用的最小/最大温度,不依赖物性缓存是否已满,也不使用进程全局状态。两个代码生成路径都提供诊断入口。原生运行时按初始/接受状态额外执行一次只读模型计算;不改变积分器的 RHS 统计或状态,无氦气的通用模型跳过该检查。
原生进程通过 stderr JSON 发出 `property-warning`;后端保留现有进度/心跳阶段并转发警告;前端以 warning 级别显示,实时提示与最终结果提示去重。结果的 `diagnostics.propertyWarnings` 同时保存首次温度/时刻、极值温度/时刻及提示文字,原生结果也有 `propertyWarnings`。用户终止且工作进程被强制停止时,保留已收到的警告。
## 验证结果
新增 4 项原生测试覆盖两个生成路径的端点、上下限、黏度按需触发、空气不误报、缓存容量耗尽、试探计算隔离、去重和极值。RK45/BDF 下开启与关闭提示的最终状态、全部最终输出以及 nfev/njev/nlu、接受/拒绝步数完全一致。结合氦气物性、属性缓存、结果分块、求解器控制和工作进程控制回归,共 22 项 Python 测试分批通过。前端 5 项浏览器测试通过,包含实时/仅结果提示、重复消息去重与 IndexedDB 结果保存;TypeScript 检查和 Vite 生产构建通过。
验证期间修正了两个测试环境问题:浏览器导入工程名已由文件名决定,旧测试仍断言 JSON 内名称;原生控制测试需显式提供临时目录内的二进制结果文件,避免 Windows `tmpfile()` 无权限导致空结果。这些调整没有修改生产求解行为。
使用上一次已经核对参数和初始条件的同一 Amesim 模型对应 [startup/platform.json](../../test/node-fixes-amesim-20260914/startup/platform.json),经真实后端消息流完成 0–0.15 s 仿真:1784 条输出曲线、每条 1501 个采样值,与添加提示前的高温物性修复结果逐值完全一致。[验证结果](../../test/property-temperature-warnings-20260915/model-validation.json)、[消息流](../../test/property-temperature-warnings-20260915/stream-events.jsonl)、[复现脚本](../../test/property-temperature-warnings-20260915/validate_model.py)。本次检查的是提示功能,不是重新声明整个模型对 Amesim 的相对误差均小于 5%。
本模型检测到:
| 类别 | 首次时刻 / s | 首次物性计算温度 / K | 界限 / K | 期间越界极值 / K |
| --- | ---: | ---: | ---: | ---: |
| 理想气体热容、焓和内能下界 | 0 | 39.4411755352 | 200 | 39.4411755352 |
| 状态方程及真实气体修正项上界 | 2.95514285254e-8 | 1513.97899017 | 1500 | 11759.1354656 |
初始的 56 个容积温度输出都约为 293.15 K;39.44 K 是物性计算内部使用的温度,不能说初始容积气体降到了 39.44 K。实时消息按发生顺序发出,结果列表按物性类别汇总,顺序可以不同。