Files
SystemSimulationApp/docs/other/八路曲线剩余差异占比与全程评价-2026-09-17.md
T
ljz 7611f13208 修复循环信号与事件采样并接入 LSTP 接触定位,补充八路验证及复用实验
相较上一版 Jacobian 确定性复用更新,本次补齐事件边界一致性、结果两侧采样及接触事件定位;保留已有物性复用和组件力学公式。

- 统一 UD00 信号求值与下一事件查询的绝对时间边界,修复循环边界浮点舍入导致的阶段错位、重复或漏报,并覆盖零时长、多阶段及长周期场景。
- 引入原生输出语义 v2:保留规则网格真实时间,补充内部时间事件和状态事件的左邻及事件后采样,按保存时间、状态和离散模式重放结果。
- 两条代码生成路径均发出 LSTP 接触描述,默认定位间隙过零及非负力模式的力截断;仅在接受事件时更新防重复记录,增加 contactEvents 诊断计数。
- 补充 MASS/LSTP 独立事件实验、八路全曲线与驱动阶段配对评估,以及 Amesim 不连续点输出对照和力差定位报告;MASS 新增释放机制仍保留为独立实验。
- 保存局部 probe、context 访问与回退、shadow replay、R288 real skip/typed replay 及阀门数值尾部诊断工具和报告;未证明净收益的实验不启用为生产默认优化。
- 更新原生运行说明和元件建模规范,补充信号边界、输出语义、接触事件和实验依赖回归测试。

验证:五组专项回归共 34 项全部通过;37 个待提交 Python 文件语法检查通过;git diff --cached --check 通过。
2026-09-17 23:50:13 +08:00

133 lines
11 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.
# 八路曲线剩余差异占比与全程评价
日期:2026-09-17。
## 1. 结论与适用范围
**在目前 0–50 s、10 ms 共同输出网格上,两侧主要运行过程的数值一致性较好,剩余流量和焓流差异对整条曲线的影响很小。这个结论支持当前平台的初步功能展示和基线一致性说明。**
循环工况的 238 条曲线中,只有 3 条曲线、6 个“曲线×时刻”样本超过原来的 5% 相对差筛查线;它们集中在 0.30、0.31、0.32 s 三个时刻,占 5,001 个共同输出时刻的 **0.0600%**。不过,不能据此说其余时间完全没有问题:参考值接近零时,另有零星绝对差异;把这类点也计入,涉及 **34 / 5,001 个时刻,即 0.6799%**。
比占比更有说服力的是幅值和累计指标:质量流量各曲线中最差的全程相对 L2 误差为 **0.008566%**,焓流为 **0.007368%**;逐条曲线的累计绝对差与参考累计绝对值之比,最差分别为 **0.013934%** 和 **0.013814%**。这两种指标不会仅因为增加长时间的双方零输出而变小。
本次只读取已有结果,不修改元件、求解器、配对逻辑或工况,不重新求解。统计不包含共同网格之间所有自适应步或所有机械事件点,因此不构成未采样的极短瞬态误差上界。流量和焓流的差异尚未完成根因定位;本次量化的是影响范围和量级。
## 2. 数据来源与评价口径
- 循环:上一轮 LSTP 已接入主路的结果,对比开启不连续点输出的 Amesim 结果;238 条曲线,5,001 个共同网格点,全部成功配对。
- 不循环:同一轮主路基线的已有结果,Amesim 参照仍为普通输出,采用原有信号阶段配对;主要用来交叉检查剩余流量和焓流差异是否重复出现。
- 每个网格点、所有变量沿用同一对原始记录,不根据误差大小重新选择事件侧,没有平滑、插值或删除异常点。
- 原相对差口径为 `100 × |平台−Amesim| / |Amesim|`。质量流量只有在 `|Amesim| > 1e-6 kg/s` 时计算该比值;焓流门槛为 `1 W`。这些是已有报告的诊断门槛,不是工程验收公差。
- 接近零的区间单列:`|Amesim| ≤ 门槛` 且 `|平台−Amesim| > 门槛`。避免除以极小数,也避免把这些点直接忽略。
- “全程占比”使用曲线样本数或不重复时刻数,分母分别注明。连续标记点折合时间只是 10 ms 网格上的估计,不是已经定位的超差起止时刻。
令差值为 `e`、参考值为 `r`、梯形积分权重为 `w`:
- 全程相对 L2 误差:`100 × sqrt(Σw·e² / Σw·r²)`,即相对均方根误差。
- 全程相对 L1 误差:`100 × Σw·|e| / Σw·|r|`,避免正负误差相互抵消。
- 累计输送量误差:对流量或焓流差值做梯形积分;另保存绝对差积分和任意时刻累计有符号差的最大值。
积分均为已有 10 ms 网格上的估算。每条节点通道独立计算,不把串联节点的流量相加当成系统总输送量,也不把这些积分当成完整的守恒验证。
## 3. 超过 5% 的差异有多大占比
每类流量都有 16 条对照曲线,每条 5,001 个点。
| 变量类别 | 超过 5% 的曲线数 | 超过 5% 的样本数 | 占该类全部 80,016 个样本 | 占该类高于近零门槛的样本 |
| --- | ---: | ---: | ---: | ---: |
| 质量流量 | 2 | 4 | 0.004999% | 4 / 576 = 0.6944% |
| 焓流 | 1 | 2 | 0.002500% | 2 / 426 = 0.4695% |
下面按单条受影响曲线计算,防止其他无差异曲线稀释占比:
| 曲线 | 超过 5% 的时刻,s | 占本曲线全部样本 | 占本曲线高于近零门槛的样本 | 最大相对差 |
| --- | --- | ---: | ---: | ---: |
| `amesim_pn3node2_2.reference_mass_flow` | 0.30 | 0.0200% | 1 / 32 = 3.125% | 11.111% |
| `amesim_pn3node2_3.reference_mass_flow` | 0.30、0.31、0.32 | 0.0600% | 3 / 32 = 9.375% | 32.690% |
| `amesim_p4node2_4.reference_enthalpy_flow` | 0.31、0.32 | 0.0400% | 2 / 35 = 5.714% | 11.360% |
所以,单说“占全程很小”不够:最差流量曲线高于近零门槛的样本中,仍有 9.375% 超过相对差筛查线。关键是它们全部位于衰减尾部,实际量值很小:
- 最大相对流量差位于 0.32 s:Amesim **3.66657 mg/s**,平台 **2.46797 mg/s**,差 **1.19860 mg/s**;该曲线参考峰值约 **249,299 mg/s**。
- 最大相对焓流差位于 0.31 s:Amesim **−3.08080 W**,平台 **−2.73081 W**,差 **0.34999 W**;该曲线参考绝对峰值约 **522,749 W**。
- 0.30–0.32 s 并非本基线登记的 STEP/UD00 信号切换时刻。当前不能把这些剩余差异直接归因为之前的事件侧配对问题。
若仅查看参考幅值超过各自峰值 1% 的主要幅值区间,并同时要求高于近零门槛,质量流量最大逐点相对差为 **0.11559%**,焓流为 **0.10395%**。1% 峰值是用于区分主要幅值和衰减尾部的辅助口径,不替代上面的全样本统计。
门槛敏感性也支持差异集中于小量区间:近零门槛缩小到原来的 0.1 倍,超过 5% 的样本增至流量 79、焓流 29;扩大到 10 倍,两类都为 0。本报告保留原门槛,未靠改门槛消除差异。
## 4. 接近零的区间没有被忽略
| 类别 | 接近零但绝对差超过门槛的样本 | 占该类全部样本 | 这些点上的最大绝对差 |
| --- | ---: | ---: | ---: |
| 质量流量 | 44 | 0.054989% | 7.24440 mg/s |
| 焓流 | 2 | 0.002500% | 8.01591 W |
这些异常涉及 31 个不重复时刻,网格折合约 0.31 s,占全程约 0.62%。多数是零散点,最长连续标记段为 45.80–45.84 s 的 5 个样本,网格折合约 0.05 s。焓流两个点分别在 1.41 s 和 46.18 s,并与流量异常时刻重合。
连同相对差超过 5% 的三个时刻,共涉及 34 个时刻,网格折合约 0.34 s、约 0.68%。**99.32% 的共同网格时刻未触发上述任一筛查条件**,但这不表示误差严格为零。
按运行阶段分组,流量/焓流的主要绝对差仍在初始阶段;后续循环中没有再次出现高于原近零门槛且相对差超过 5% 的点:
| 时间区间,s | 最大流量绝对差,mg/s | 最大焓流绝对差,W | 流量近零异常样本 | 焓流近零异常样本 |
| --- | ---: | ---: | ---: | ---: |
| [0, 1) | 24.2465 | 18.6888 | 2 | 0 |
| [1, 10.8) | 6.5727 | 8.0159 | 9 | 1 |
| [10.8, 21.6) | 0.2172 | 0.02551 | 0 | 0 |
| [21.6, 32.4) | 7.2444 | 0.26117 | 5 | 0 |
| [32.4, 43.2) | 4.5750 | 0.17762 | 8 | 0 |
| [43.2, 50] | 6.3927 | 5.08374 | 20 | 1 |
## 5. 全程幅值与累计影响
以下每一列均独立取该类曲线中的最差值,因此同一行不同列可能来自不同曲线。
| 变量类别 | 最大全程相对 L2 误差 | 最大全程相对 L1 误差 | 最大逐点绝对差 |
| --- | ---: | ---: | ---: |
| 接触力,8 条 | 0.000008651% | 0.000004595% | 1.31240 N |
| 质量流量,16 条 | 0.008566% | 0.013934% | 24.2465 mg/s |
| 焓流,16 条 | 0.007368% | 0.013814% | 18.6888 W |
| 压力,56 条 | 0.00001109% | 0.000004617% | 61.1058 Pa |
| 温度,56 条 | 0.002601% | 0.002407% | 0.389714 K |
| 接触间隙,8 条 | 0.133016% | 0.045482% | 54.7406 nm |
接触间隙的最大逐点相对差为 1.16799%,但对应约 55 nm 的绝对差;因此除近零流量/焓流外,也不应宣称所有变量逐点都小于 1%。其余类别的完整逐曲线结果保存在统计 JSON 中。
质量流量的绝对差积分最大为 **7.82056e−7 kg = 0.782056 mg**;同一条曲线的参考绝对流量积分为 **5.61262 g**,比值 **0.013934%**。所有流量曲线中,任意时刻累计有符号差的最大绝对值为 **0.364845 mg**。
焓流的绝对差积分最大为 **0.491310 J**;该通道参考绝对焓流积分约 **12,521.9 J**。逐条比较误差积分与各自参考积分,最差比例为 **0.013814%**,来自另一条较小幅值通道。所有焓流曲线中,任意时刻累计有符号差的最大绝对值为 **0.307860 J**。
这些结果表明,在已保存输出的尺度上,剩余差异没有表现为显著的累计质量输送或能量输送偏差。
模型中另有异常量级的机械位移/容积输出,例如某位移参考值达到约 1.12e17 m;其绝对差虽大,相对差很小。本报告评价两套实现的一致性,不把这类模型本身的异常物理量级解释为工程工况合理,也不笼统宣称所有量的绝对差都小。
## 6. 不循环工况交叉检查
不循环工况仍然是相同三个时刻、相同三条曲线、相同六个相对差超过 5% 的样本。质量流量/焓流最差全程相对 L2 误差分别为 **0.008262% / 0.007048%**,相对 L1 误差分别为 **0.010307% / 0.010197%**。
接近零的绝对异常少于循环工况:流量 11 个样本,焓流 1 个;加上相对异常,共涉及 13 个不重复时刻,占 5,001 个时刻的 **0.25995%**。这支持主要剩余相对差属于初始衰减尾部,不是循环越多便持续积累的整体偏离。
## 7. 展示用结论与复现
可以在当前基线展示中使用以下表述:
> 在与 Amesim 对齐工况和事件输出阶段后,0–50 s、10 ms 共同输出网格上的主要响应曲线具有良好的数值一致性。质量流量和焓流最差全程相对均方根误差分别约为 0.0086% 和 0.0074%;较大的逐点相对差主要集中于近零衰减尾部,对累计输送量的影响很小。该评价不覆盖共同网格之间的全部极短瞬态。
本次不需要为整体展示而优先修改流量或焓流公式。若后续目标是低流量尾部、微小泄漏或每一事件内部瞬态的精确复现,再针对这些区间增加密集采样与根因定位;现有占比不应被当作这类目标已经通过的证据。
![全程曲线、近零尾部与绝对误差包络](../../test/mql8-curve-coverage-20260917/coverage.png)
- [完整统计:两种工况、所有曲线、区间及异常点](../../test/mql8-curve-coverage-20260917/coverage.json)
- [只读分析脚本](../../tests/manual/analyze_mql8_curve_coverage.py)
- [上一步力差与事件输出定位报告](LSTP主路接入与八路力差定位-2026-09-17.md)
复现统计无需重新仿真:
```powershell
.\.venv-win\Scripts\python.exe -X utf8 tests/manual/analyze_mql8_curve_coverage.py
# 本机已有 matplotlib 的环境可同时生成图:
F:\Anaconda\python.exe -X utf8 tests/manual/analyze_mql8_curve_coverage.py --plots
```
脚本核验:全部输入有限、共同网格完整配对、时间严格递增、积分权重合计 50 s;逐条曲线重算的相对异常数和近零异常数与此前报告完全一致;读取前后的输入 SHA-256 不变。原平台代码与仿真结果未改动。