对齐test_mql保存时刻与PNVO事件边界

This commit is contained in:
huojiarong committed 2026-07-21 07:56:25 +00:00
1 parent 7c68caed27
commit a0855018d5
5 files changed
+345 -35

No files matched your search

+39 -30
View File
@@ -60,43 +60,46 @@ Python 输出只有通过 AMESim baseline 对比后才能作为数值一致性
## 当前对比结果
默认 comparison 仍使用 `0 -> 1e-5 s` 的短时域,并已新增
`dm1@pneumatic_69` 流量诊断。
默认 comparison 已从区间内插值的 `t=1e-5 s` 改为与 AMESim
首个保存时刻精确对齐的 `t=0.01 s`,当前比较 13 个关键信号,并
新增 `xv@pn_morifice_1`、`dm2@pn_morifice_1` 的结构化 PNVO 诊断。
本轮确认原最大偏差的主因不是 PNL0001 Darcy 阻力,而是 8 个
`PNVO001` 在 Python 中被固定为 `opening=1`,忽略了各自的
`STEP0` 控制。AMESim baseline 显示 `step_8..15` 均在
`t=0.04 s` 从 0 跳到 1,对应 PNVO 在此前保持关闭。
事件前 `t=0.01 s` 对比:
接入 STEP0 控制后的默认短时对比:
- `press@pn_c1_8`:Python `-1286.601221 Pa`,AMESim
`-1288.253185 Pa`,绝对误差约 `1.651964 Pa`。
- `dm1@pneumatic_69`:Python `-0.002485112 g/s`,AMESim
`-0.002054255 g/s`;换算后的 canonical 流量绝对误差约
`4.30857e-7 kg/s`。
- `xv@pn_morifice_1` 和 `dm2@pn_morifice_1` 在两侧均为 0,确认
STEP0 事件前 PNVO 保持关闭。
- `vol1@pn_brp2_8` 绝对误差约 `8.76e-5`,机械位移、速度和加速度
仍保持较小误差;当前较明显的累计差异集中在 PNL0001 流量和
PNCH012 压力/能量链路。
- `press@pn_c1_8` 末值误差从约 `9.22849 Pa` 降为
`0.0117249 Pa`。
- Python `dm1@pneumatic_69` 末值约
`-4.97737e-7 g/s`,AMESim 线性插值约
`-2.05425e-6 g/s`。
- canonical chamber-to-line flow 定义为
`-dm1 * 1e-3`,因此两者分别约为
`4.97737e-10 kg/s` 和 `2.05425e-9 kg/s`,绝对误差约
`1.55652e-9 kg/s`。
- AMESim 首个 `0.01 s` 区间的 `mgas1@pn_c1_8` 有限差分约
`-9.86349e-7 kg/s`;用该区间首末 `dm1` 做梯形平均得到的
chamber 质量变化率约 `-1.02713e-6 kg/s`,符号和量级一致。
新增 `--pnvo-event-boundary` 诊断:先积分到 `0.04 s` 的左极限,
再按 STEP0 的右连续语义在事件时刻读取开度和流量。结果为:
当前剩余 `1e-5 s` 误差不能直接解释为物理方程误差:AMESim
baseline 只按 `0.01 s` 保存,而 comparison 在首个保存区间内做
线性插值;位移、体积和压力的初始响应并不一定是线性的。
- `xv@pn_morifice_1`:Python/AMESim 均为 `1`。
- `dm2@pn_morifice_1`:Python `502.945005 g/s`,AMESim
`497.823823 g/s`,绝对误差约 `5.121182 g/s`,相对约 `1.03%`。
- `press@pn_c1_8` 绝对误差约 `55.4815 Pa`;
`dm1@pneumatic_69` 绝对误差约 `0.00281880 g/s`。
这说明 PNVO 开启瞬间的开度语义和主流量量级已经对齐,但事件前
累积压力/支路流量仍有偏差。常规积分直接跨越事件到 `0.05 s` 时,
当前进程会被系统终止,尚未形成可信的事件后结果;不能据此声明
完整 `0.04 -> 0.05 s` 窗口已经可运行。
## 下一步
1. 增加 AMESim 保存时刻对齐的诊断,优先比较事件前的
`t=0.01 s`,避免把 `1e-5 s` 线性插值误差当成物理偏差。
2. 导出 `xv@pn_morifice_1` 和 `dm2@pn_morifice_1`,检查
`t=0.04 -> 0.05 s` 开启窗口的 PNVO 流量及事件传播。
3. 在控制时序对齐后,再判断是否需要校准 PNVO 流量系数、
`pneumatic_69` 的 PNL0001 阻力或 PNCH012 能量方程。
4. 继续保留 `press@pn_c1_8`、`dm1@pneumatic_69` 和 chamber
RHS breakdown 作为同一条诊断链。
1. 优先定位 `0 -> 0.04 s` 累积的 `pneumatic_69` 流量与
`pn_c1_8` 压力偏差,区分 PNL0001 阻力和 PNCH012 能量方程。
2. 采用显式事件分段或针对事件后的局部数值策略,解决跨越
`t=0.04 s` 后积分进程被终止的问题,再验证 `t=0.05 s` 保存点。
3. 保留 `press@pn_c1_8`、`dm1@pneumatic_69`、PNVO `xv/dm2`
和 chamber RHS breakdown 作为同一条诊断链。
4. 在完整开启窗口稳定后,再判断是否需要校准 PNVO 流量系数。
`pn_c1_8` 的直接主线是 `pneumatic_69`;`pneumatic_96`
属于另一条固定气室支路,不是该诊断对象。
@@ -109,6 +112,12 @@ baseline 只按 `0.01 s` 保存,而 comparison 在首个保存区间内做
python3 -m PythonModels.scripts.run_test_mql_full_state_comparison
```
运行 PNVO 事件边界诊断:
```bash
python3 -m PythonModels.scripts.run_test_mql_full_state_comparison --pnvo-event-boundary
```
运行相关测试:
```bash