Files
SystemSimulationApp/docs/other/Amesim已修复元件语义复核-2026-09-13.md
T

93 lines
8.3 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.
# Amesim 已修复元件语义复核
日期:2026-09-13;分支:`system-optimization`。
本次针对上一份报告“已修复的问题”涉及的 UD00、LSTP00A、MECMAS21、PNL0001/2/3、PNCH012 和 PNRP17 复核,排除已单独说明的静摩擦保持和高级干摩擦。依据本机 Amesim 2404 子模型源文件、随附帮助及当前生产 C 程序的最小探针结果。没有修改生产元件、积分器、工程参数或运行中的后端;没有重跑完整 Amesim 模型。
**结论:不能确认这些元件已经全面对齐。原先修改的若干核心公式已对齐,但还发现了 PNL0003 换热计算错误、若干活动参数边界不一致,以及环境参数和适用范围限制。上一份报告中把零时长分段跳过也列作对齐行为,不准确。**
## 逐项结论
| 元件 | 已核对一致的部分 | 仍有差异或验证边界 |
|---|---|---|
| UD00 | 外部循环编码转换;正时长分段的线性插值、开始前首值保持、非循环结束后末值保持 | 我们接受有效段时长为 0,Amesim 初始化拒绝;未使用段时长为 0 不属于这个问题。事件内部的试算调用约定不同,不能据函数值核对就宣布积分器事件处理等价 |
| LSTP00A | 几何刚度公式;按公共端口方向转换后的间隙/相对速度;指数接触阻尼;负接触力保留或截零 | 数值模式 kcont=0 我们接受而 Amesim 拒绝;几何模式 G=0 我们拒绝而 Amesim 的子模型初始化检查允许 |
| MECMAS21,排除未实现干摩擦 | 默认重力下的倾角分量;上下弹性限位的指数阻尼和方向;恢复碰撞模式不计算干摩擦,保留启用的黏性摩擦和风阻 | 弹性限位参数边界尚未对齐;重力固定为 9.80665,未实现 Amesim 的 GRAV0 环境覆盖;碰撞事件处理机制仍不能宣称全面等价 |
| PNL0001、PNL0002 | 固定容积、mode=1 多方储气方程;mode=2 本地温度换热项及质量/能量守恒形式 | 公开 k、rr 范围比原子模型检查更窄;本次未重新验证全部介质物性、流阻曲线和极端状态 |
| PNL0003 | 两个半容积、各自的多方储气方程、中心质量/焓流守恒方向 | **mode=2 的两个换热项错误使用平均温度,尚未对齐**;同样存在 k、rr 范围限制 |
| PNCH012 + PNRP17 | 直接相连活塞的初始完整容积;在该容积下满足指定初始绝对 p/T;气腔能量中的环境换热和压力做功项;有效活塞面积、相对运动对应的容积及变化率 | 气压力计算固定采用 101300 Pa 参考大气压,没有对应 PNATP00 的覆盖;固定外部容积参数是公共扩展,当前 C 生成器按直接相邻 PNRP17 收集动态容积,不能据此声称任意供容积元件/连接均已支持;极小容积/负状态时的求解恢复策略未对齐证明 |
“方程形式一致”以采用相同介质状态关系和统一单位、端口方向为前提。不同内部状态选择可以表达同一物理方程,不能把状态变量名称不同直接当成语义错误;同样,形式一致也不能替代完整曲线验证。
## 已复现的计算问题:PNL0003 分别换热
Amesim 对两个半容积分别使用自己的温度:
```text
Q1 = kth × A/2 × (Text − T1)
Q2 = kth × A/2 × (Text − T2)
```
当前实现先计算 `(T1+T2)/2`,再用这一温度计算两个相同的换热项。对两个半容积的总换热功率,这个写法可能恰好相同;但分配到每个半容积的能量不同,后续温度、压力及流量会受到影响。
最小算例使用理想气体,两端封闭、初始压力均为 200000 Pa,避免中心流量干扰;管径 0.02 m、管长 1 m、kth=10 W/(m²·K),T1=400 K、T2=200 K、Text=300 K。
| 量 | 按 Amesim 方程独立计算 | 当前生产 EXE 探针 |
|---|---:|---:|
| 中心质量流量 | 0 kg/s | 0 kg/s |
| 半容积 1 的 dU/dt | −31.4159265359 W | 0 W |
| 半容积 2 的 dU/dt | +31.4159265359 W | 0 W |
这是实际方程差异,不是积分容差、求解速度或输出采样造成的。这里的 Amesim 预期值来自已核对的方程,不冒称本次运行了 Amesim EXE。
定位:本系统 `app/simulation/native_codegen/extended.py:577`;Amesim `F:/AMESim2404/Amesim/libpn/submodels/PNL0003.c:377` 和 `:382`。
建议后续使用当前半容积自己的温度,并补充两端温度不同、环境温度位于两者之间的回归。仅验证初始温度相同或 kth=0,无法发现该问题。
## 已复现的参数边界差异
以下本系统结果经过实际构建网络和执行编译校验确认。Amesim 一栏依据子模型初始化检查;不是逐个启动 Amesim 后得到的结果。
| 配置 | 本系统 | Amesim 初始化检查 |
|---|---|---|
| UD00 的有效段 t1=0、nstages=2 | 接受,跳过该段 | 拒绝,要求每个有效段终点严格晚于起点 |
| LSTP00A 数值模式 kcont=0 | 接受 | 拒绝,要求 >0 |
| LSTP00A 几何模式 G=0 | 拒绝 | 只拒绝 G<0 |
| MECMAS21 弹性限位 Kbmin=0 | 接受 | 拒绝,要求上下限位刚度均 >0 |
| MECMAS21 弹性限位 Dbmin=0 | 接受 | 拒绝,要求上下限位阻尼均 >0 |
| MECMAS21 弹性限位 xmin=1、xmax=−1 | 接受 | 拒绝,要求 xmin≤xmax |
| PNL 多方模式 k=2.5 | 拒绝,公开上限为 2 | 子模型只要求 k>0 |
| PNL 相对粗糙度 rr=0.2 | 拒绝,公开上限为 0.1 | 子模型只要求 rr≥0 |
前六项属于元件活动参数边界的差异;后两项属于已公开的支持范围限制,不表示共同支持范围内的方程一定错误。未启用参数的检查也需要单独规定,不应为对齐有效段限制而禁止 UD00 未使用段保存默认 0。
源码证据:UD00.c:318;LSTP00A.c:136、:152;MECMAS21.c:225、:234;PNL0001.c:159、:165,PNL0002/3 有对应检查。本系统位置:`signals/sources.py:12`、`semantics.py:43`、`mechanical/translational.py:61`、`flow/pipes.py:59`。
建议后续统一执行时的活动参数检查:既拒绝 Amesim 拒绝的组合,也避免错误拒绝原模型允许的活动参数;编辑、保存与求解校验仍应按现有协议各自承担责任。
## 两个默认环境条件
MECMAS21 的 Amesim 原模型从 `getgravity_()` 取重力;其随附帮助说明可由 GRAV0 改变,默认值为 9.80665 m/s²。目前本系统使用的就是这个默认值。因此倾角公式已经补上,但尚未支持自定义重力。
PNRP17 在 Amesim 中接收表压,本系统使用绝对压力后固定减去 101300 Pa。`pn2getatp` 随附帮助确认这是 Amesim 默认大气压,同时 PNATP00 可以改变该值。本系统尚未支持这种环境覆盖。不能把默认环境下对齐推广为任意环境配置下都对齐。
## 对当前四路、八路测试文件的影响
再次读取 `tests/data/test-mql-4-corrected.json` 和 `tests/data/test-mql-8-corrected.json`:
- UD00 的有效段时长均为 0.8 s、10 s,不存在有效零时长段。
- PNL0003 均使用 mode=2,但 kth=0,因此新发现的分端换热错误不会在这两份当前配置中生效。
- LSTP00A 使用数值刚度且 kcont>0;MECMAS21 使用理想限位或无限位,theta=0,不触发上述弹性限位参数问题。
- 当前目录中没有实现 GRAV0、PNATP00;默认对标模型的已审计元件清单也不包含它们。
这些判断只排除本次新发现的触发条件,**不表示完整曲线已经验证一致,也不否认尚待审阅的积分停滞问题。** PNCH012 在当前模型中有非零环境换热,该气腔项使用自身温度,不能把它与 PNL0003 的平均温度错误混为一谈。
## 本次验证与证据
- 原有 `tests.test_amesim_semantics` 共 10 项全部通过,耗时 31.444 s。说明原修复的专项检查仍通过;旧测试没有覆盖这次的非对称换热与若干参数边界。
- 新的独立审计探针确认上述 PNL0003 差异及 8 组参数边界行为。
- 证据脚本和输出:`test/component-semantics-20260913/followup_semantic_audit.py`、`followup-semantic-audit.json`、`followup-regression.log`。test 目录依仓库约定不纳入 Git。
- 真实运行平台为 Windows,未在 Linux 服务器运行;本次没有生产代码修复。
下一步应优先修复 PNL0003 分端换热,然后对齐活动参数校验;自定义重力、大气压和通用容积传递是需明确范围的能力补齐。完成相应元件级验证后,再对当前四路、八路做完整 Amesim 曲线对比。