Files
SystemSimulationApp/docs/other/氦气高温物性补齐与Amesim对照-2026-09-15.md
T

116 lines
8.6 KiB
Markdown
Raw 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 2404 气动库验证。**108 个相同温度、相同绝对压力的状态中,密度、焓、Cp、Cv、黏度及单位能量输入下的储气温度/压力变化率,与 Amesim 的最大逐点相对差小于 `6.4e-13%`。** 这是浮点数值对齐,不是对高温物理适用范围的验证。
原模型启动段误差减小,但完整 50 s 的个别温差/焓流差最大值增大。本次修复没有证明整模型所有曲线均满足 ±5%,也没有把事件点差异或近零流量差异归因成物性缺段后宣布全部解决。
## 1. 已确认的缺项
数据依据为本机 `F:/AMESim2404/Amesim/libpn/data/nasa_properties/` 下的氦气数据文件,另以初始化真实氦气后的 Amesim 库函数输出核实公式及边界。
| 项目 | 修复前 | Amesim 与修复后 |
| --- | --- | --- |
| 动力黏度 | 所有温度均用 200–1000 K 系数 | 200–1000、1000–5000、5000–15000 K 三段,换段处连续修正 |
| 理想 Cp | 全温度 `Cp/R=2.5` | 6000 K 以下保持原值,6000–20000 K 使用 NASA 2002 高温段 |
| 理想 h、u | 全温度线性热量学 | 对分段 Cp 积分得到 h,且 `u=h−R*T`,保留原焓基准 |
| 温度反解 | 线性反解 | 高温段用有区间保护的 Newton 反解,低温保留直接计算 |
| 等熵系数 | Cv 理想项始终为 `1.5R` | 使用同一高温 Cp 推导 Cv,连接孔口及管流计算 |
PR EOS、密度方程、PR 剩余焓/内能公式及其常数没有更换。
只复制数据文件的高温系数是不够的。官方库对高温段做连续性修正:
- `ln(mu)` 在 1000 K 和 5000 K 逐段衔接。直接换原始系数会留下约 `1e-6` 量级的相对跳变。
- 高温 Cp 的常数项在 6000 K 对齐低温 Cp,再通过积分使 h 连续。直接使用原始高温 a8,会在该点产生约 **3.94 J/kg** 的焓跳变。
- 超过 20000 K 时,Amesim 使用匹配值和斜率的二次 Cp 延拓及相应三次焓积分;直接无限延长 NASA 高阶多项式不会得到相同结果。此规则以 25000 K、30000 K 官方库输出交叉验证。
若 `c=Cp0(20000)`,`k=Cp0'(20000)/c`,`ΔT=T−20000`,则延拓采用:
```text
Cp0(T) = c × [1 + kΔT + (kΔT)²/2]
h0(T) = h0(20000) + cΔT × [1 + kΔT/2 + (kΔT)²/6]
```
## 2. 独立物性对照
从已初始化 `fluidType=12`、`eosType=6` 的 Amesim 模型副本,直接调用 `pn2rhopti_`、`pn2hpti_`、`pn2cppti_`、`pn2cvpti_`、`pn2mupti_`、`pn2vol_`。没有用平台公式产生参考值。
- 温度:200–30000 K,共 27 点,包含 1000、5000、6000、15000、20000 K 边界及其 `±1e-6 K` 邻点。
- 绝对压力:101300、1e7、5e7、2.5e8 Pa,共 4 点。
- 108 个温压组合均保存为独立 JSON 基准,日常测试不需要安装或运行 Amesim。
- 对 `pn2vol_` 使用固定容积 1 m³、零质量流、零容积变化率及 1 W 能量输入,独立验证 `dT/dt` 和 `dp/dt`。
下表在 101300 Pa 下比较动力黏度,误差以 Amesim 为分母。
| T (K) | Amesim (Pa·s) | 修复前 (Pa·s) | 修复前相对误差 | 修复后 (Pa·s) |
| ---: | ---: | ---: | ---: | ---: |
| 1000 | 4.625395961e-5 | 4.625395961e-5 | 0% | 4.625395961e-5 |
| 5000 | 1.560851464e-4 | 1.506553992e-4 | −3.47871% | 1.560851464e-4 |
| 9600 | 2.592262341e-4 | 2.449318836e-4 | **−5.51424%** | 2.592262341e-4 |
| 15000 | 3.704987036e-4 | 3.418731155e-4 | **−7.72623%** | 3.704987036e-4 |
| 20000(黏度表外) | 4.685124691e-4 | 4.239668715e-4 | −9.50788% | 4.685124691e-4 |
108 点的修复后最大绝对相对误差:
| 物性 | 最大误差 (%) |
| --- | ---: |
| 密度 | 1.354e-13 |
| 焓 | 6.330e-13 |
| Cp | 5.152e-14 |
| Cv | 7.065e-14 |
| 动力黏度 | 3.658e-13 |
| 储气温度变化率 | 1.302e-13 |
| 储气压力变化率 | 2.257e-13 |
这些参考样本的分母均非零。整模型近零点另按此前口径报告原值/绝对差,不用巨大相对百分数判定。
![Amesim 氦气高温物性与修复前后曲线](F:/Master/SystemSimulationApp/test/helium-high-temperature-20260915/property-comparison.png)
## 3. 同一原模型的接入验证
继续使用上一轮已经审计的 `test_mql.ame` 对应模型及其非循环信号输入。平台输入副本逐字节相同,物理参数、初始条件、输出间隔和 `rtol=1e-8` 保持不变。Amesim 使用上一轮已运行并保留的原始结果;本次重新运行物性修复前后两版平台。
为了隔离变量,在实验目录复制当前 native 源码,仅把副本的 `properties.c` 换成本次开始时保存的版本,作为“物性修复前”;其余组件代码、节点修复和求解器均与修复后相同。生产文件未被来回覆盖。逐一校验其余 native 文件相同。
| 采样窗口 | 比较量 | 物性修复前最大绝对差 | 物性修复后最大绝对差 |
| --- | --- | ---: | ---: |
| 0–0.15 s,0.1 ms | 压力 | 13606.981 Pa | 4641.503 Pa |
| 同上 | 温度 | 1.174655 K | 0.457507 K |
| 同上 | 节点焓流 | 51182.787 W | 27064.123 W |
| 0–50 s,10 ms | 压力 | 71.6543 Pa | 65.6868 Pa |
| 同上 | 温度 | 0.355813 K | **0.395395 K** |
| 同上 | 节点焓流 | 24.8071 W | **141.9202 W** |
| 同上 | 节点质量流 | 2.5189054e-5 kg/s | 5.6631705e-6 kg/s |
两套平台结果均正常到达指定终点。各栏取相应网格中全部已映射曲线的最大差,最差元件/时刻可能变化,不能把这些数值当成同一时刻误差或未采样时刻的极值。
全程修复后最大温差和焓流差均在 0.01 s;最大质量流差在 0.37 s。启动段 0.04 s 的阶跃点质量流差仍约 0.390305 kg/s,属于此前已经记录的事件点输出差异,没有在本次物性工作中删除该点或改变时间轴。
本次比较说明:遗漏的物性已被独立证实并修正,但整模型还存在其他差异;不能为了让某个最大误差下降而保留错误的物性。
## 4. 有效域与范围
`helium_eos.data` 标记 PR EOS 有效温度为 **2.2–1500 K**,理想热量学表到 20000 K,黏度表到 15000 K。Amesim 超过 EOS 标注温度也会给出警告并继续计算。本次对齐这一实现行为,没有宣称高温 PR 结果具有经过验证的物理精度。
修改覆盖平台当前求解路径使用的热力学、黏度和等熵量;没有新加当前组件未使用的熵或导热系数接口。`cp_ref` 仍表示参考比热,Python 介质类的说明已修正,避免将其误读为全温区常数。
## 5. 代码、测试与证据
- [物性实现](F:/Master/SystemSimulationApp/native/components/modules/properties.c)
- [独立高温物性回归测试](F:/Master/SystemSimulationApp/tests/test_native_helium_high_temperature.py)
- [108 点 Amesim 基准及来源哈希](F:/Master/SystemSimulationApp/tests/data/amesim_helium_high_temperature_properties.json)
- [物性修复前后误差统计](F:/Master/SystemSimulationApp/test/helium-high-temperature-20260915/property-errors.json)
- [整模型对比统计](F:/Master/SystemSimulationApp/test/helium-high-temperature-20260915/network-comparison-summary.json)
- [Amesim 编译与直接调用日志](F:/Master/SystemSimulationApp/test/helium-high-temperature-20260915/amesim/run.log)
- [原模型复现脚本](F:/Master/SystemSimulationApp/test/helium-high-temperature-20260915/run_network.py)
- [原模型分析脚本](F:/Master/SystemSimulationApp/test/helium-high-temperature-20260915/analyze_network.py)
- [关联回归日志](F:/Master/SystemSimulationApp/test/helium-high-temperature-20260915/regression.log)
新增回归检查同温同压物性、分段边界、p/h 温度反解、质量/内能状态重构、Cp/Cv 数值导数、能量恒等式、缓存和等熵消费者。关联回归包括已有物性缓存、管路物理、管流缓存、节点守恒/容积、氦气长期均压与组件目录测试。
验证结果:新增专项 3 项、关联物性/管路/节点/长期均压 14 项通过。组件目录 4 项中,冻结基准覆盖 50 个网络、112 个探针;整批仅网络 #2 的 `--init` 曾返回空输出而导致 JSON 解析异常,没有报告数值断言失败。网络 #2 随后独立复跑通过(含两条编译路径)。因此共 21 个测试方法覆盖完成,但不将首次目录运行表述成无错误通过。
目录回归曾在进程管道处停滞并伴随编译器启动异常,中断后复跑;未因此修改物性数值、公差或测试基准。记录见[目录完整复跑日志](F:/Master/SystemSimulationApp/test/helium-high-temperature-20260915/catalog-final.log)和[网络 #2 独立复跑日志](F:/Master/SystemSimulationApp/test/helium-high-temperature-20260915/catalog-case2-retry.log)。