论文部分内容阅读
Modelica语言仿真建模在科研工作中已经得到了广泛应用。它能方便地对包含机械、电子、液压、控制、热流等领域的复合物理系统进行基于组件的仿真。现有基于Modelica语言的仿真建模软件支持图形化建模和文本建模两种方式,集成了面向对象、陈述式描述、统一建模、组件重用的优势,给科研工作带来了巨大的便利。
Modelica软件仿真的过程可归结为微分代数方程(differential algebraicequation,DAE)系统的求解。在求解DAE系统时,需要对DAE系统进行约简,直到庞大的DAE系统约简为目前自动求解方法成熟的ODE系统,或约简为方程个数不多的、指标较低的DAE系统,才能使Modelica建模仿真软件具有工业上的应用价值。在约简DAE系统之前,需要对之进行预处理,根据方程之间的数据依赖关系进行拓扑排序,确定求解顺序。排序的过程对应着将DAE系统结构关联矩阵进行块状下三角(block lower triangle,BLT)变换。寻找强连通分量和拓扑排序是对DAE系统进行预处理的重要组成部分。
本文剖析了Modelica软件在仿真时的运行机制,使用几个实例来详细描述在仿真过程中,Modelica软件完成的工作。在寻找强连通分量和拓扑排序这一步,本文提出了使用Kosaraju算法的策略,对由模型得到的有向图直接使用Kosaraju算法,得出DAE系统的求解顺序。文章叙述了强连通分量的含义,并阐述了在求强连通分量时的理论依据,由此引出了Tarjan算法和Kosaraju算法,再分析和比较Tarjan算法和Kosaraju算法,对比了两种策略的优劣,并进行了实验。同时,本文分析了OpenModelica软件包的结构,修改了软件包在寻找强连通分量及拓扑排序相关模块的代码。