避免代数环
本节介绍了代数环的概念。简而言之,当不存在一种子模型调用顺序能确保每个子模型被调用时其所有输入均为已知时,就会产生代数环。Simcenter Amesim通过引入隐式变量来打破代数环,从而解决该问题。这将导致微分代数方程(d.a.e.s),但通常使用DASSL积分器可以轻松求解。从技术上讲,d.a.e.s可通过一个称为幂零指数或简称为指数的整数进行分类。代数环会产生指数为1的d.a.e.s(最易求解),而输入与输出章节中描述的零质量子模型MAS000会导致指数为2的问题(求解难度显著增加)。无限刚性弹簧子模型SPR1情况类似,而微分器子模型DIF00则会产生指数为1的问题。
总结来说,隐式变量分为两类:
-
在子模型中声明为约束或隐式状态的隐式变量。这类变量通常会导致指数为1或2的d.a.e.s。
-
由Simcenter Amesim为消除代数环而创建的约束,通常导致指数为1的d.a.e.s。
Simcenter Amesim中使用的常微分求解器通常比d.a.e.求解器更可靠。但无需对d.a.e.s过度担忧。对于子模型开发者而言,最佳建议是尽量减少而非完全消除隐式变量数量。可通过遵循两条规则实现:
-
仅在确有需要时谨慎引入声明的隐式状态和约束变量。在代码描述章节中向用户说明使用这些子模型可能产生的问题。
-
构建子模型时应尽量减少产生代数环及生成隐式变量的可能性。
第二条规则的具体展开:
-
显式状态、固定变量、隐式状态和作为外部变量的约束变量极为有用。切勿将这类有用变量设为内部变量,再通过基本变量输出复制到外部变量——这完全浪费了变量的实用价值。
-
当同一变量出现在多个端口时,应使用重复变量。
-
若端口输入变量未参与计算,应删除该变量或设为未使用输入:
-
在产生代数环的复杂情况下,可考虑使用宏变量。
-
也可考虑将子系统重新划分为更小的子模型单元。
译文质量与官方无关,仅做辅助学习使用,帮助大家更方便高效的掌握工具.文档网址:www.tech-doc.cn;公众号:Amesim学习与应用、译匠工厂