93 lines
8.3 KiB
Markdown
93 lines
8.3 KiB
Markdown
# 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 曲线对比。
|