8.8 KiB
Amesim 元件语义核查与修复
日期:2026-09-13;分支:system-optimization。本轮核查公开目录中的 22 个 Amesim 条目,重点是参数编码、选项是否实际参与计算、单位、力方向、初值和分段信号。对照本机 Amesim 2404 子模型 C 文件及其随附说明;没有复制其实现源码进入生产代码。
同日复核补充:不能将下表理解为对应元件已全面对齐。后续发现 PNL0003 分端换热仍有计算错误,UD00 零时长及部分机械参数边界也有差异;详见 已修复元件语义复核。本报告保留原修复记录,新增差异尚未修复。
本轮没有修改 native/runtime/ 中的积分器、停滞判断或事件恢复策略,也没有开展稀疏矩阵优化。公开参数名、端口名和 0/1 布尔编码不变;修复的是已有选项的实现及外部转换,故保持当前精确 modelVersion,避免已有 XML 被无关版本升级拒绝。
已修复的问题
| 元件 | 旧问题 | 修复后的行为 |
|---|---|---|
| UD00 | AME 的 iscyclic=1 被直接复制为本系统的 1,把不循环误作循环 |
外部转换明确为 AME 1→公共 0,AME 2→公共 1;浏览器 JSON/XML 不再次转换 |
| UD00 | 不循环时,末段斜坡在全部分段结束后仍向后延伸;未安排最后终点 | 最后终点以后保持末值;开始前保持首值;最后终点纳入分段通知。零时长分段跳过是本系统现有扩展,Amesim 拒绝有效段时长为零,不能称为语义对齐 |
| LSTP00A | 选择几何刚度后仍使用保存的 kcont |
使用 G × wdiam⁴ / (8 × sdiam³ × na),几何参数须为正;接触力仍在 C 中计算 |
| MECMAS21 | theta 未参与计算 |
按度转换倾角,计入 mass × 9.80665 × sin(theta);正负 90° 的加速度方向分别验证 |
| MECMAS21 | 弹性限位使用线性阻尼增长,与 LSTP00A 不同 | 二者共用指数接触公式;穿透量等于 Pdis/Pdmin/Pdmax 时达到约 63.2% 阻尼,并保留允许/禁止负接触力的选项 |
| MECMAS21 | 恢复碰撞模式仍计入隐藏的库仑摩擦 | 按原子模型,恢复碰撞只保留启用时的黏性摩擦、风阻;干摩擦不参与 |
| PNL0001/2/3 | mode=1 只是关闭环境换热,k 未生效 |
实现多方过程;k=1 等温,其他 k 按质量变化计算温度与压力;带换热模式保留质量/能量方程 |
| PNCH012 + PNRP17 | 初始储气量只按死容积/固定容积计算,随后加入活塞容积时初始 p/T 被改变 | 按活塞及相连质量块初始位置计算完整容积,再初始化储气量;紧凑和扩展 C 生成路径均已修复 |
多方模式对照 pn2vol1 说明:固定容积中 dm/dt=Σ流量、dT/dt=(k−1)T/m × dm/dt,且 p=mRT/V。实现使用质量/温度作为内部状态;U 作为结果由状态导出。和 Amesim 的这一简化模式一致,储气质量采用理想气体关系,流阻所用密度及端口焓仍来自所选介质;不能把这种模式解释成完整的真实气体能量守恒模型。直接相连的管路储气单元须采用相同热力学模式和多方指数。
尚未实现的能力改为明确拒绝
静摩擦保持、脱离和高级干摩擦/Stribeck 尚未实现,本轮不加入需要进一步讨论的摩擦切换机制。现在执行编译会拒绝这些激活的配置,不再忽略参数后给出看似正常的结果;关闭摩擦、恢复碰撞中的隐藏干摩擦参数仍按其不生效的语义处理,工程仍可编辑和保存。
同时补齐 MECMAS21 的活动参数约束:非恢复碰撞且启用摩擦时 fcoul ≤ fstick,dvel/astrib > 0;恢复碰撞要求 restdvel > 0。因此现阶段可完整执行黏性摩擦、风阻及无干摩擦的模式,不能宣称完整支持所有摩擦选项。
冻结 Python 基准有三组 fcoul=2、fstick=0 的活动干摩擦输入,Amesim 本身也拒绝这种组合。历史文件保持原样,回归改为确认两个 C 入口明确拒绝;恢复碰撞那组则用独立牛顿方程验证去掉干摩擦后的加速度。
其余条目的核查边界
| 条目 | 本轮核查结论 |
|---|---|
| 理想空气介质、氦气介质 | 是限定介质/物性方法的公开条目;property_model=0 是各自的公共编码,不是 PNGD00 所有气体/EOS 选项的原始编号 |
| STEP0、F000 | 已检查阶跃前后值与时刻、零力输出,未发现新的编码问题 |
| FORC | 公开 direction=±1 与原模型几何方向转换已有明确处理;图标旋转不代替方向参数 |
| LMECHN1 | sum=1、活动端口数量、公共力平衡规则已检查;公开最多 20 个支路端口是范围限制 |
| PNPL01 | 封闭口零流量语义已检查 |
| PNCH023 | 固定容积、初始绝对 p/T、换热系数与面积的组合已检查 |
| PNOR001、PNVO001、固定开度 PNVO001 | flowset=1/2/3 含义相同;Cv/Kv 采用各自单位定义换算;有效开度限制在 0–1。固定开度条目是明确的公开变体 |
| PNL00R | 阻性管段没有储气状态;管径、长度、相对粗糙度和反向流符号沿用既有已验证实现 |
| PN3NODE2、P4NODE2 | 参考量传递与支路汇总遵循公共供需合同,没有把原始有向变量符号直接视为公共端口符号 |
结合前表,覆盖全部 22 个公开条目。这里的“未发现新问题”限于本轮检查的编码、参数选择和接口约定,不是逐点证明所有物性、所有工况都与 Amesim 相同。公共端口统一采用连接守恒符号;例如本系统 Fvisc 是带方向的力贡献,而原模型展示量采用阻力约定,曲线比对仍需显式映射。PNCH012 的固定外部容积参数、固定开度阀也属于公开扩展,不应冒充原模型全部接口的一比一复制。
当前模型文件
四路、八路 corrected JSON 各仅修改两个 iscyclic,仿真时长仍为 10 秒,未修改 AME。网页里的已有存档不自动改写,请重新导入修正文件;不能把所有历史 JSON 中的 1 批量改为 0,其他工程可能确实需要循环。
| 文件 | 修复前 SHA-256 | 修复后 SHA-256 |
|---|---|---|
tests/data/test-mql-4-corrected.json |
542494eed8e235cb36eae5f80a0776b812e547d9215fa370949b0882834ebc8b |
c8ed9efa83d111e58aa9e20e158448a7a5f45d4bd1e2a6360dd929e34919b9eb |
tests/data/test-mql-8-corrected.json |
670977bef67e62d9c66e8af497bada208bd72a7301be45128d185d47282cf288 |
60ed16c71b72be4ae71ca7980f4f8cdcdf6b4c4c4c8950863c2390960b71ced4 |
默认八路 AME 仍为 tests/data/test_mql.ame,本次 SHA-256 为 319b27ac1b8ceb7e960cc05592efbfc19664e70479fe9bf36000b823c3c928f8。它保存 50 秒、0.05 秒输出间隔、rtol=1e-7;JSON 保存 10 秒、0.01 秒输出间隔,后台 rtol=1e-8。参数审计与时间配置差异分别报告,不再把时间配置不一致冒称为元件参数错误,也不把 AME 算法枚举等同于 CVODE BDF。
验证结果
- 两份 AME 图纸独立审计通过:八路 157 个元件、1092 个参数、178 条连接;四路 81 个元件、582 个参数、90 条连接。当前参数与精确端口连接均无待修正项。
- 八路只将修正 JSON 的时长延长为 50 秒,原 BDF 求解器完整结束:纯求解 10.746 秒,9576 个接受步、669 个拒绝步、1 次状态切换;5002 个输出时刻全部有限。56 个储气质量量总和约 5.566893015 kg,最大漂移
1.69e-14 kg。 - 四路原 10 秒配置完整结束:纯求解 0.888 秒,1003 个输出时刻全部有限。
- 多方管路实际 BDF 积分 0.02 秒,验证
T/(m/m₀)^(k−1)不变量,相对误差3.35e-8以下;专项也覆盖三种管路、等温/多方、直接相连的储气单元和初始状态。 - 元件、XML、原生目录及启动自检综合回归完整通过 43 项;最终元件与原生目录回归 14 项通过,记录在
final-component-tests-recheck.log。上一轮有一个独立--probe进程返回空 stdout,原失败日志保留,重跑全部通过;没有修改原生探针来忽略空输出。final-launch-and-contract-tests.log中 25 项通过,包含编译进程恢复、启动自检和冻结历史合同。最后循环事件去重与进程检查另有 9 项通过。
上述耗时是本轮功能回归的观察值,不是隔离负载的性能评测。本轮没有重跑 Amesim,也没有重新宣布完整曲线一致;原积分器停滞问题仍等用户审阅后另行处理。
证据在被 Git 忽略的 test/component-semantics-20260913/:输入变更、工具安装说明提取、专项测试日志、四路与多方运行结果。八路原始输出在 test/mql8-50s-20260913/semantic-fixes-production-retry/。所有正式实现继续使用 C 数值内核;未恢复 Python 积分器。C 修改使用跨平台 C11,构建继续兼容 Windows/Linux;本次真实运行平台为 Windows,未在 Linux 服务器实跑。