6.3 KiB
test-mql-4 网页仿真与 LSTP00A 接口力对比
2026-09-11,在网页导入 test-mql-4-corrected.json,点击“运行仿真”,完整算到 10 s,再通过“下载结果文件”导出本次原始结果。网页显示 1003 个采样点,未发生仿真失败。
结论:常规采样点的接触力很接近,但完整网页曲线与 Amesim 已保存曲线不一致。网页额外保存的一个碰撞事件点有约 1.50×10¹¹ N 的瞬时峰值。 不能仅凭常规采样点上的小误差,宣称整条力曲线一致。
本次仿真时间
| 口径 | 本次结果 |
|---|---|
| 点击运行后至结果可查看 | 约 7 s |
| C 纯求解墙钟 | 3.650152 s |
| C 求解 CPU | 3.515625 s |
| 原生子进程墙钟(含结果整理等) | 5.238736 s |
| 构建缓存检查 | 0.167409 s(命中缓存) |
| 模型计算次数 / 接受步数 | 24941 / 5137 |
页面控制台“开始仿真”为 01:53:06,“仿真完成”为 01:53:13;前端日志只显示整秒,因此约 7 s 不是毫秒精度测量,也不包含用户后来打开曲线窗口的时间。纯求解时间直接来自本次网页导出文件。网页全程与纯求解之差包含准备、子进程启动、结果生成、传输和前端接收,不能全部归于进度条。
设置为 BDF、相对误差限 1e-7、最大积分步长 1e30 s、输出间隔 0.01 s、仿真区间 0~10 s。初始 5173 开发页面未完成渲染,实际成功测试使用后端提供的 http://127.0.0.1:8000/ 页面。一次先前标签页在任务启动后不可用,其时间不计入本次结果。
部件与接口对应
用户所称 lstp001 在当前模型中对应 LSTP00A 第 1 个实例,即 JSON 的 amesim_lstp00a_1,网页显示名为 elasticendstop_9_副本。根据连接拓扑,它对应 Amesim 的 elasticendstop_8,不是仅按显示名中的数字匹配。
| 网页变量 | 对照 Amesim 变量 | 方向处理 |
|---|---|---|
amesim_lstp00a_1.port_1.f |
f1@elasticendstop_8 |
同号直接比较 |
amesim_lstp00a_1.port_2.f |
f2@elasticendstop_8 |
Amesim 值取负后比较 |
本系统端口力统一取流入元件为正,两个端口的力相反。Amesim 变量清单明确将此模型的 f2 标为 f1 的重复量,已保存的两个数组也完全相同。因此第二接口符号不同本身不能判定为力计算错误。
完整曲线与常规采样对照
第 1 实例在 1001 个共同的 0.01 s 采样点上:网页峰值为 272620.924818 N,Amesim 已保存峰值为 272621.136490 N;最大绝对差 0.577026 N,均方根差 0.135705 N。最大差相当于 Amesim 峰值的 0.000212%,该百分比是按峰值归一化,不是接近零力时的瞬时相对误差。
顺带核对全部四个接触元件的接口 1;接口 2 统一方向后有同样的误差:
| JSON 实例 | Amesim 对应实例 | 共同采样点最大差 | 均方根差 | 最大差 / Amesim 峰值 |
|---|---|---|---|---|
| 1 | elasticendstop_8 |
0.577026 N | 0.135705 N | 0.000212% |
| 2 | elasticendstop_9 |
0.578578 N | 0.136276 N | 0.000212% |
| 3 | elasticendstop_10 |
1.134175 N | 0.140897 N | 0.000416% |
| 4 | elasticendstop_11 |
0.729195 N | 0.136876 N | 0.000267% |
但是网页还保存了 1.201137556938643 s 和 1.225339087445038 s 两个事件点。第一个事件点,四个接触元件均出现约 1.49859×10¹¹ N 的力;Amesim 本次保存的曲线没有这一时刻的数据,其相邻采样为 1.20 s 和 1.21 s。上图左上保留网页原始事件点,右上只用于展示共同采样点的一致程度,两者不可混为一个比较口径。
尖峰来源与持续时间
在 t = 1.201137556938643 s,170000 kg 的负载到达 0.37 m 理想限位。本系统将该负载速度置零;与它相接触的 50 kg 活塞一侧仍为 1.498587803347 m/s。接触参数为刚度 1e11 N/m、阻尼 1e11 N/(m/s),当时穿透量约 1.47291297e-06 m,阻尼已经几乎全量参与。
按当前公式,弹性项为 147291.297 N,阻尼项为 149858720230.815 N,合计 149858867522.112 N。这个数值直接对应网页上的尖峰,并非力单位换算造成。
另编译一个仅记录事件附近内部接受步的诊断程序,使用同一输入、公式和容差。记录开关不改变已有 1003 个输出点,已逐值核验。碰撞后力值约 0.348 ns 降到一半、1.154 ns 降到 10%、2.336 ns 降到 1%;这与 50 kg / 1e11 N·s/m ≈ 0.5 ns 的阻尼时间尺度吻合。
因此有两个叠加因素:理想限位突然改变速度,配合极大阻尼形成纳秒级瞬态;网页结果保存了瞬态最高事件点,却没有保存紧接着的纳秒级回落点。用直线把该点连接到 1.20 s、1.21 s,会把非常窄的峰画成毫秒级宽峰。
目前只能证明 Amesim 的已保存曲线没有采到该峰,不能据此断言 Amesim 内部没有同类瞬态,也不能把两者完整力曲线的差异简单归因于 C 语言或积分器精度。按此前要求,本次不以 Amesim 的内部算法作为实现标准。
此前的 72 条曲线对照主要覆盖状态量和阀流量,且只比较共同采样点,没有验证这两个新增事件点处的接触力。这是此次网页检查新增发现的覆盖缺口。
下一步应先明确碰撞时刻输出采用哪一侧的状态,并保存事件前后及必要的快速衰减点,让曲线按真实时间分辨率表达瞬态;常规采样比较仍可保留,但不能靠删去峰值来宣称物理问题已经解决。如果要消除模型本身的极短冲击,应再评估理想刚性限位及接触阻尼参数的物理取值。
数据与复核
本次导出的原始结果为 test/mql4-web-force-20260911/web-result.simresult,可在网页“加载结果文件”中复现。核对了其中所有元件参数和连接端点,均与交付 JSON 相同。Amesim 数据来自上一轮对 tests/data/test_mql_4.ame 官方重新编译所得的 test/mql4-20260910/amesim-fresh/test_mql_4.ame,未使用原归档内旧八支路缓存。
同目录 summary.json 保存计时、逐部件误差及源文件哈希;force-series.json 保存原始和共同采样力数据;event-trace/accepted-event.jsonl 保存内部步诊断;lstp00a-force-comparison.svg 提供矢量图。生产求解代码及两个用户原始输入文件本次均未修改。
