132 lines
11 KiB
Markdown
132 lines
11 KiB
Markdown
# 八路循环信号:参数核对、耗时与曲线对比
|
||
|
||
2026-09-14,Windows,分支 `system-optimization`。
|
||
|
||
## 结论
|
||
|
||
先核对参数,再将两个 UD00 都设为循环并统一运行设置。最终测试副本的 **157 个元件、178 条逐端口连接、1,092 项公开参数均匹配**,另有 1,015 项图纸参数与 Amesim 实际运行参数表交叉核验通过。
|
||
|
||
两边均连续三次完成 50 秒。平台纯求解墙钟时间中位数 **9.133 秒**;平台原生进程完整运行 **10.660 秒**,Amesim 原生进程完整运行 **6.816 秒**,按此进程口径平台约慢 **1.56 倍**。平台通过真实 HTTP 流式接口提交和接收结果,完整请求中位数为 **14.593 秒**。
|
||
|
||
**曲线总体变化趋势相近,但不能验收为全部一致。** 循环切换采样点存在左右分支差异;起始快速变化阶段还有压力、温度差异,而且将双方误差限收紧到 `1e-10` 后仍然存在。
|
||
|
||
## 1. 仿真前参数检查
|
||
|
||
本轮来源为用户指定的当前八路默认文件:
|
||
|
||
| 来源 | 仿真前 SHA-256 |
|
||
| --- | --- |
|
||
| `tests/data/test_mql.ame` | `251b2f17c24ea02c1ab48f9f441a0ec38e7920627ea7e6870392326424a517c5` |
|
||
| `tests/data/test-mql-8-corrected.json` | `60ed16c71b72be4ae71ca7980f4f8cdcdf6b4c4c4c8950863c2390960b71ced4` |
|
||
|
||
原模型公开物理参数和连接没有差异,两个 UD00 都为非循环。原运行设置有三项差别:JSON 为 10 秒、输出间隔 0.01 秒,Amesim 为 50 秒、0.05 秒;平台默认相对误差限 `1e-8`,Amesim 容差 `1e-7`。
|
||
|
||
在测试副本中调整如下,并在开始求解之前重新通过完整参数、连接和时间设置审计:
|
||
|
||
| 设置 | 平台 | Amesim |
|
||
| --- | --- | --- |
|
||
| 起止时间 | 0–50 s | 0–50 s |
|
||
| 输出间隔 | 0.01 s | 0.01 s |
|
||
| 最大积分步长 | 1e30 s | 1e30 s |
|
||
| 误差限数值 | rtol=1e-8 | tolerance=1e-8 |
|
||
| 运行方式 | CVODE BDF | 标准变步长积分器;API `integ_method=0` |
|
||
| 循环开关 | 两个 UD00 均为 1 | 两个 UD00 均为 2 |
|
||
|
||
循环开关按各自枚举的语义转换,而非直接比较数字。两个信号周期都是 **10.8 秒**:
|
||
|
||
- `amesim_ud00_1` / `piecewiselinear`:前 0.8 秒为 `1e17`,后 10 秒为 `49000`。
|
||
- `amesim_ud00_2` / `piecewiselinear_1`:前 0.8 秒为 `1e12`,后 10 秒为 `0`。
|
||
|
||
统一的是公开物理输入、连接和上述运行设置,不是两套求解器的全部内部行为。Amesim 保留 mixed error、standard solver、启用 optimized solver;平台保留生成的逐状态绝对误差限。相同的 `1e-8` 数字不等于完全相同的误差权重。按用户此前要求,仅记录 Amesim 运行选项,不把其内部算法直接认定为 CVODE BDF。
|
||
|
||
证据:`test/mql8-cyclic-20260914/preflight/audit.json`、`aligned-audit/audit.json`、`ame-settings.json`。原始 AME/JSON 在本轮结束时 SHA-256 均未改变。
|
||
|
||
## 2. 执行方式和耗时
|
||
|
||
Amesim 使用本机 2404 官方 API 打开副本、设置参数、生成程序并保存;随后独立运行其生成的模型程序。平台启动一个独立临时 FastAPI 实例,走 JSON→XML→`/api/system-xml/simulate-stream` 正式路径,使用本轮修复后的 C 封装。该临时服务已结束,未替换用户运行中的服务。
|
||
|
||
两边各串行运行三次,没有互相并发竞争计算资源。平台三次均命中模型编译缓存。主测均为 `1e-8`;后文 `1e-10` 仅用于精度诊断,不混入速度中位数。
|
||
|
||
| 计时字段 | 第 1 次 | 第 2 次 | 第 3 次 | 中位数 |
|
||
| --- | ---: | ---: | ---: | ---: |
|
||
| 平台 `solveSeconds`:纯求解墙钟 | 9.368 s | 9.133 s | 9.058 s | **9.133 s** |
|
||
| 平台 `solveCpuSeconds`:纯求解 CPU | 9.344 s | 9.219 s | 9.078 s | **9.219 s** |
|
||
| 平台 `processWallSeconds`:原生进程及结果读取 | 10.901 s | 10.660 s | 10.594 s | **10.660 s** |
|
||
| 平台 HTTP 请求墙钟 | 14.593 s | 14.653 s | 14.291 s | **14.593 s** |
|
||
| Amesim 原生进程墙钟 | 6.886 s | 6.816 s | 6.649 s | **6.816 s** |
|
||
| Amesim 日志 `Total CPU time` | 4.406 s | 4.438 s | 4.250 s | **4.406 s** |
|
||
|
||
CPU 字段之比约 2.09;但 Amesim 的日志总 CPU 字段与平台明确排除了初始化/最终结果投影的纯求解 CPU 字段不保证边界完全一致,因此只作辅助观察。原生进程墙钟之比约 1.56;两边结果格式和输出数量也不同,不能把全部差额认定为积分器内部开销。
|
||
|
||
平台完整请求的额外成本可直接看到:缓存命中时仍有约 **2.22 秒构建检查/预处理**;原生进程时间比纯求解约多 **1.53 秒**;另有后端组装及本地 HTTP 结果传输。此次平台返回完整 1,784 个输出,JSON 体积较大。HTTP 计时包含请求至接收完全部流式响应,不含客户端随后解析大 JSON、浏览器 JavaScript 或绘图,所以不能称为网页按钮到绘图完成时间。
|
||
|
||
平台三次接受步均为 15,037,均记录同时间成功返回 12 次、最多连续 6 次;最终到达 50 秒,没有再次出现 10.8 秒提前终止。
|
||
|
||
## 3. 曲线结果
|
||
|
||
比较 158 条关键曲线:质量位移/速度、气腔和管路压力/温度、8 路接触力/间隙及信号。由参数审计确定对应元件,按物理单位转换,例如 Amesim 表压加 101300 Pa 对应平台绝对压力,间隙 mm 转为 m;没有通过交换元件或改变符号来拟合曲线。
|
||
|
||
平台返回 5,010 个时刻,Amesim 为 5,002 个时刻。双方具名保存值均有限;对比使用 0~50 秒的 5,001 个共同 0.01 秒网格点,线性插值。额外事件点及浮点边界的处理并不相同,原始文件全部保留。
|
||
|
||
### 完整区间的最大差
|
||
|
||
| 物理量/曲线 | 最大绝对差 | 发生时刻 |
|
||
| --- | ---: | ---: |
|
||
| 第 1 路接触力 `amesim_lstp00a_1.force` | **1,285,518 N** | 32.4 s |
|
||
| 全部 8 路接触力的最差项,第 7 路 | 1,285,518 N | 32.4 s |
|
||
| 管路压力 `amesim_pnl0002_6.p` | **163,286 Pa** | 0.01 s |
|
||
| 管路温度 `amesim_pnl0001_13.T` | **105.215 K** | 0.01 s |
|
||
| 接触间隙最差项,第 2 路 | 2.703e-8 m | 44.19 s |
|
||
|
||
不能只报“趋势重合”而省略上表的大差异。
|
||
|
||
### 循环切换点为什么有尖峰差异
|
||
|
||
在共同网格 `t=32.4 s`,两边取到了不同的信号分支:平台第一个信号为 `49000`,Amesim 插值值约为 `1e17`。这里正好是第三个循环边界;浮点时间、事件点及保存采样的先后约定影响取到跳变前还是跳变后的值。离开切换点前后 0.02 秒后,所有对照信号完全相同,说明不是周期长度或幅值参数仍不一致。
|
||
|
||
接触力对此特别敏感:本模型 `kcont=rcont=1e11`,32.4 秒处两边接触间隙接近,但 Amesim 相连两质量的相对速度约为 `1.2855e-5 m/s`,平台接近零,仅此阻尼项就对应约 **1.2855e6 N** 的力。因而微小速度和切换取样侧的差别,会被很大的阻尼放大为力尖峰。这里是对保存结果的解释,不等于已证明某一方的尖峰代表真实物理脉冲。
|
||
|
||
保留全部初始阶段、只避开每个 UD00 切换点前后 0.02 秒,8 路接触力最大差约 **5,129 N**。进一步仅看 `t>=0.1 s` 且避开上述窗口,接触力最大差 **32.12 N**;第 1 路在 50 秒时的差为 **−28.79 N**。这些筛选结果用于定位差异,不能代替完整区间验收。
|
||
|
||
### 温度和压力差异并未随容差收紧消失
|
||
|
||
补做两边 `1e-10` 的 50 秒诊断:
|
||
|
||
| 项目 | 双方 1e-8 最大差 | 双方 1e-10 最大差 |
|
||
| --- | ---: | ---: |
|
||
| 上述管路压力 | 163,285.92 Pa | 163,359.89 Pa |
|
||
| 上述管路温度 | 105.2145 K | 105.2373 K |
|
||
| 第 7 路接触力 | 1,285,518.34 N | 1,288,259.73 N |
|
||
|
||
对压力最差曲线,平台自身收紧容差的变化最大约 89.87 Pa,Amesim 自身变化约 15.89 Pa;温度最差曲线分别约 0.02356 K 和 0.00106 K,远小于双方之间的 105 K。因此这部分差异主要不是普通积分误差限偏松,后续应核对相应状态/物性公式、有效范围之外的处理和初始化后的快速压缩过程。
|
||
|
||
本次 Amesim 日志实际报告:初始快速过程的氦气温度超出状态方程及残余热物性有效上限 1500 K,日志中出现约 9609 K 的查询;保存曲线也有约 5174 K 的管内温度。Amesim 还报告 8 个 PNCH012 容积被最小容积 `cvol0/100=150 cm³` 限制。这些都是当前匹配模型实际进入的状态,需要在后续公式对照中保留,不能因为双方均正常终止就认定该工况的物性精度已经得到保证。本轮没有进一步认定某个具体物性函数为唯一根因。
|
||
|
||
### 巨大位移的特殊质量块
|
||
|
||
`amesim_mecmas21_9` 是质量 100 kg、无摩擦、无限位的质量块,受到本模型量级很大的重复激励。两边都得到约 `1.12e17 m` 的最终位移。默认容差下该位移的绝对差约 `1.50e10 m`,相对该量级约 `1.34e-7`;容差收紧后绝对差降到约 `2.66e8 m`。这部分不能与普通活塞的毫米级位移混在同一绝对误差指标里,也不能忽略这项极端模型状态。
|
||
|
||
排除该质量块,在 `t>=0.1 s` 且避开切换窗口后,其他质量位移最大差约 `2.19e-5 m`,速度最大差约 `2.43e-4 m/s`。完整逐曲线指标均见 `comparison.json`。
|
||
|
||

|
||
|
||
## 4. 后续方向与本轮范围
|
||
|
||
这次已经确认:参数与连接匹配、两个循环信号配置正确、两边都完成 50 秒、外层提前终止问题没有复发。仍未完成的“一致性”包括切换点采样侧统一,以及高温快速过程的压力/温度差异解释。应先完成这两项,再把此模型作为等精度性能基准。
|
||
|
||
本轮没有修改生产求解器、组件公式或两个可调环境参数,也没有据此开展稀疏矩阵优化。Amesim 首次重新编译遇到既有 GCC CreateProcess 故障,另一次 API 会话缺少模型库搜索路径;补齐该会话使用的既有库路径后编译完成,未修改机器工具链配置。这些发生在正式计时之前。
|
||
|
||
## 5. 交付文件与证据
|
||
|
||
所有本机工件位于 `test/mql8-cyclic-20260914/`:
|
||
|
||
- **`amesim/test_mql.ame`**:循环、50 秒、0.01 秒采样、容差 1e-8 的模型副本,已通过官方 API 保存最新仿真结果;归档 `.results` 的 SHA-256 与本次实际运行结果一致。
|
||
- **`test-mql-8-cyclic.json`**:参数对应的平台工程,可直接导入;rtol 由当前平台后端默认值提供。
|
||
- `platform-curves.csv`、`amesim-curves.csv`:158 条曲线在共同网格上的单位统一数据。
|
||
- `comparison.png` / `.svg`:总体及局部曲线。
|
||
- `comparison.json`、`refinement-comparison.json`:完整指标及严格容差诊断。
|
||
- `platform-timings.json`、`ame-timings.json`:三次计时;`platform-result-event.json`、`ame-run/` 保留原始输出。
|
||
- `prepare_ame.py`、`run_comparison.py`、`analyze.py`、`refine.py`、`analyze_refinement.py`:本机复现脚本。
|
||
|
||
原始 `tests/data` 两份默认输入保持不变;循环测试使用交付副本。测试目录为 Git 忽略目录,报告保存在 `docs/other/`。
|