Files
SystemSimulationApp/docs/other/Amesim摩擦与管路功能补齐验证-2026-09-13.md

12 KiB
Raw Permalink Blame History

Amesim 摩擦与管路功能补齐验证

日期:2026-09-13。分支:system-optimization。参照本机 Simcenter Amesim 2404。

结论与范围

已补齐 MECMAS21 静摩擦保持、高级干摩擦和 Stribeck 过渡,修正其弹性限位参数检查;调整 LSTP00A 的零刚度/零剪切模量边界、PNL0001/2 的多方指数范围,并修正 PNL0003 两段各自的换热温度。

本次新建并实际运行了 13 个 Amesim 算例,每个运行 3 秒;对应平台 C 程序均运行到 3 秒。另外用平台的 JSON→XML→正式后端仿真函数完整运行两个联合小系统,确认参数解析、连接编译、结果生成与组件单独执行一致。本次没有在浏览器界面点击运行,后端入口为 app.main.run_system_xml_simulation。

常规采样网格上的连续状态和力/热力学曲线吻合。简单摩擦恰好脱离时有一个左右取值不同的采样点,详见下文,不能将结果表述成逐点完全相等。

重力保持 9.80665 m/s²,大气压保持 101300 Pa。根据用户要求,本轮不增加环境重力、大气压的可调组件。没有修改 CVODE 积分公式、稠密分解/条件着色算法,也没有处理此前另行审阅的积分时间停滞问题。

已完成的功能

元件 本次行为
MECMAS21 简单摩擦 静止时干摩擦抵消外力;超过静摩擦阈值进入滑动;滑动时使用库仑摩擦;减速停住后重新检查保持或反向启动。
MECMAS21 高级摩擦 增加 ±dvel 低速保持区间;支持 Stribeck 过渡、黏性摩擦和风阻共同作用。Amesim 2404 在高级模式采用约 0.1% 的脱离滞环,5 N、7 N 两组实际运行分别验证了 5.005 N、7.007 N 附近脱离。
MECMAS21 理想限位与摩擦 限位挡住质量时,由限位承担外力,干摩擦输出为零;反向外力足以脱离后恢复运动。碰撞后的摩擦状态随接受的事件一起更新。
MECMAS21 弹性限位 活动模式要求 Kbmin、Kbmax、Dbmin、Dbmax 全部大于零,Pdmin/Pdmax 允许零,xmin≤xmax。参数检查在执行编译阶段进行。
MECMAS21 恢复碰撞 延续 Amesim 该模式只计算黏性摩擦和风阻、忽略干摩擦的行为。原有两种积分方法的碰撞回归通过。
LSTP00A 数值模式 kcont 必须大于零;几何模式允许 G=0,sdiam、wdiam、na 必须大于零。G=0 时弹簧力为零,接触阻尼仍然有效。
PNL0001/2 k 必须大于零,取消原先的 k≤2 限制;实际以 k=2.5 验证。PNL0003 共用的 k 元数据同步采用相同边界。
PNL0003 两半管分别使用自身温度计算对外换热,而不是共同使用两段平均温度。

高级摩擦滑动分支的阻力幅值为:

Fcoul + (Fstick − Fcoul) × exp(−3 × |v| / astrib)。

PNL0003 两段换热功率分别为:

Q1 = kth × π × diam × le / 2 × (Text − T1),

Q2 = kth × π × diam × le / 2 × (Text − T2)。

以两段 400 K、200 K,外界 300 K,管径 0.02 m、管长 1 m、kth=10 为例,独立理想气体封闭初态的换热功率为 −31.4159265359 W 和 +31.4159265359 W。旧的平均温度写法会错误地把两段都算成零。

数值实现与状态保存

每个有干摩擦的刚性运动组增加一个内部状态 _friction_mode,取保持、正向滑动、反向滑动三个值。在连续积分期间其导数为零,只在接受的脱离/停止/反向/限位事件处修改并重新初始化积分历史。

每次计算先按现有机械连接求出不含干摩擦的驱动力,再计算干摩擦并代入同一组线性力平衡。这是两次已有的线性表达式求值,未引入压力、流量、焓的额外非线性迭代。低速事件检查会增加方程求值次数,本轮验收目标是功能与结果一致性,没有据此作性能收益承诺。

保持状态随采样状态一起保存,函数不会根据试算或绘制历史曲线改变全局摩擦标志。回归额外验证了乱序查询同一状态的输出一致。模型编译的依赖登记增加了新函数和内部状态;雅可比算法本身保持现状。

多质量刚性同速组中的静摩擦反力按各质量静摩擦容量分配。多个静摩擦约束同时保持时,单个元件反力可能存在不唯一性;本次 Amesim 联合验证中的两个质量通过弹性接触连接,并非两个质量直接刚性串联。不能把本次结果扩展成任意欠定静摩擦反力分配都已与 Amesim 逐元件验证。

对照条件与单位

  • 所有实际 Amesim 算例:3 s,变步长隐式设置,误差限 1e-9,最大积分步长 0.002 s,输出间隔 0.001 s。
  • 独立平台 C 程序:BDF,rtol=1e-9,最大积分步长 0.002 s,输出间隔 0.001 s。另有简单摩擦和大低速区间算例的 RK45 回归。
  • 联合系统后端:保持平台默认误差设置,JSON 中选择 BDF、3 s、0.002 s 最大步长和 0.001 s 输出间隔。
  • 气动介质:显式使用气体索引 1 的氦气 Peng–Robinson 设置;平台 JSON 已指定匹配的介质索引。导出时不得把默认介质索引 0 与显式氦气索引 1 混用。
  • 表中误差:将平台输出插值到 Amesim 的 0.001 s 常规采样时刻,计算整个 0–3 s 区间最大绝对差。平台另存事件点,Amesim 固定间隔数据未必包含这些瞬时时刻。
  • Amesim 管路压力变量本次使用 Pa 表压,比较时加 101300 Pa 转为绝压;不是再乘 1e5。MECMAS21 限位刚度的 N/mm、阻尼的 N/(mm/s)、穿透量的 mm,分别换算到平台 SI 单位。
  • 机械联合系统的 Amesim v1/x1 与平台全局坐标相反;比较时反号,且交换上下限位力。LSTP00A 的 gap 从 mm 转为 m。单质量驱动算例则通过 FORC 方向设置使用相同 v1/x1 方向。

单元件实际运行结果

下列 11 个单元件算例全部完整运行 3 s;源 .ame、对应 JSON/XML、双方 CSV 已收入交付包。

算例 主要最大绝对差
简单摩擦 速度 3.79e-9 m/s;位移 5.47e-9 m;脱离单点例外见下文。
高级摩擦、无 Stribeck 速度 3.79e-9 m/s;位移 8.68e-9 m。
高级 Stribeck 速度 5.31e-8 m/s;位移 3.34e-8 m;干摩擦 3.01e-6 N。
高级摩擦叠加弹性限位 速度 6.89e-8 m/s;位移 2.42e-9 m;加速度 1.82e-5 m/s²。
高级摩擦叠加理想限位 速度 1.72e-8 m/s;位移 2.96e-9 m;干摩擦 4.85e-7 N。
扩大低速区间、非零初速、风阻 dvel=0.005 m/s、初速 0.001 m/s;速度差 8.74e-9 m/s,位移差 2.10e-9 m;验证初始低速保持与后续停止。
LSTP00A 几何刚度 接触力 6.70e-8 N,间隙 8.87e-10 m。
LSTP00A 零剪切模量 接触力 2.89e-8 N;阻尼仍有非零力,间隙差 8.39e-10 m。
PNL0001,k=2.5 管内压力 0.0205 Pa,温度 1.85e-5 K。
PNL0002,k=2.5 管内压力 0.142 Pa,温度 1.28e-4 K;相连储气腔最大压力差 0.216 Pa。
PNL0003,非对称温度换热 两半最大压力差 0.000169 Pa,最大温度差 8.42e-7 K。

管路对照并非按位相等;本次全区间最大压力差不足 0.22 Pa,相对于约 200000 Pa 的压力约为百万分之一。温度与多方关系、换热方向一致。现有管阻根求解实现及积分器误差控制不同仍可带来这种小量差异,本轮未继续修改其求解算法。

简单摩擦的单个切换采样点

外力在 t=0.15 s 达到 5 N。Amesim 的常规输出点保存切换前的静止分支,平台该事件点保存切换后的滑动分支,因此该点干摩擦差 2 N,加速度差 2 m/s²。

原始数据和 comparison.json 均保留这个最大差。单独注明并排除恰好该时刻后,干摩擦最大差 4.46e-10 N,加速度最大差 8.24e-10 m/s²;整个区间的速度、位移仍分别只有 3.79e-9 m/s、5.47e-9 m 的差异。回归同时保留 0.149 s 和 0.151 s 的前后分支检查,而不把瞬时跳变强行平滑成相同数据。

两个联合小系统

机械系统

连接:分段力信号 → FORC → 左质量(高级 Stribeck+弹性限位)→ LSTP00A → 右质量(简单干摩擦+弹性限位)→ 零力源。

三秒内发生启动、接触、脱离、换向、限位压缩和再次静止。独立 C 程序记录 12 次离散状态切换。

平台正式后端相对 Amesim 的最大差:

输出 最大绝对差
左质量位移 3.26e-8 m
右质量位移 3.75e-8 m
左质量速度 1.09e-6 m/s
右质量速度 6.03e-7 m/s
接触力 8.20e-5 N
左质量干摩擦 8.20e-5 N

机械联合系统

气动系统

连接:封闭储气腔 → PNL0001(k=2.5)→ PNL0002(k=2.5)→ PNL0003(两半初始 320/280 K,与 300 K 环境换热)→ 封闭端。

平台正式后端相对 Amesim,四个管内压力输出最大差 0.133 Pa;管内温度输出最大差 1.12e-4 K。两个系统的后端均完整返回 3 s 结果。

气动联合系统

回归与限制记录

  • 元件语义测试:11 项通过,覆盖活动参数、零剪切模量、多方指数 2.5、两段独立换热等。
  • Amesim 实测冻结数据回归:1 项测试内含 8 个算例、10 次积分运行,全部通过;覆盖 BDF 和 RK45、静止/启动/反向/限位和联合系统。
  • 原生目录与机械 XML 回归:16 项通过,包含原有恢复碰撞和代数模型两种积分方法。
  • 结构依赖回归:6 项通过。旧目录有 3 个 fcoul>fstick 的非法历史输入,已改为验证明确拒绝,未修改冻结输入。
  • 以上相关测试合计 34 项通过。扩展运行的旧 NativeJacobianProbeTests 仍在预检失败:native-jacobian-cache-state.json 绑定的八路输入摘要与当前 corrected JSON 不符。该固定状态夹具、模型输入及其摘要均未在本轮改写;需要后续在求解器审阅中重新建立一致基准。不能将完整雅可比测试套件标记为全绿。
  • NativeJacobianRuntimeTests 的独立私有 ABI 检查依赖 Linux SUNDIALS 静态库,本机 Windows 按其既有规则跳过。
  • Windows 上实际通过原生 C 编译、链接、运行及 Amesim 对照。生产代码只使用 C11、现有构建器和跨平台状态/事件接口,无新增 Windows 专用工具链路径。本轮没有 Linux 实机结果。
  • Amesim API 用于新建模型、生成代码及参数文件;本机 JobManager 无可用运行资源时,关闭 API 后独立启动其生成的本机可执行文件,均正常完成。原始运行日志和 .results 保留在 test/component-semantics-20260913/feature-reference/*-run/。

文件与复现

交付包:amesim-component-validation-20260913.zip。含 13 个新算例的 JSON/XML/AME、单位和坐标已统一的双方 CSV、两份后端 CSV、对照统计和曲线图。.ame 保存模型与设置,本次仿真测量值另存于 CSV。

平台可直接导入:

运行中的后端需要重新启动以加载 Python 编译器及元件参数定义的修改;新生成的 C 模型通过已有构建指纹使用更新后的内核。

无需 Amesim 安装即可运行已冻结的实测回归:

python -m unittest tests.test_amesim_semantics tests.test_native_friction tests.test_native_catalog tests.test_amesim_mechanical_xml tests.test_native_jacobian_structure.StructuralDependencyTests -v

本机 Amesim 构建脚本和对照脚本保留在 test/component-semantics-20260913/;实测冻结数据在 tests/fixtures/amesim-component-semantics-2404.json,带原始 Amesim 结果 SHA-256。交付内容不包含 Siemens 元件库实现源码。