【问题标题】:An error of using multi-mode DAEs in Dymola在 Dymola 中使用多模 DAE 的错误
【发布时间】:2020-12-08 13:26:25
【问题描述】:

我在 Dymola 中构建了一个简单的模型,在不同时期使用不同的方程,但令我惊讶的是,Dymola 无法处理这个简单的模型。索引减少后,系统似乎是单一的。

我的问题是:

  • 这是使用 Modelica 时常见的问题吗?
  • 如果是这样,我应该如何修改这个模型,我知道当我用der(x)=0 替换方程x=100 时,模型工作正常,但我想知道是否有更复杂情况的通用规则。如果能提供详细的解释,我将不胜感激。

这是模型的代码:

    model ErrorWhenUsingIf
      Real x(start=100);
    equation 
      if time<=0.5 then
        x=100;
      else
       der(x)=5;
      end if;
    end ErrorWhenUsingIf;

错误信息是:

Failed to evaluate model for ODE-Jacobian
Error: The following error was detected at time: 7.62939453125E-012
Error: Singular inconsistent scalar system for der(x) = ( -(if time <= 0.5 then x-100 else -5.0))/((if time <= 0.5 then 0.0 else 1.0)) = 8e-008/0
Solver will attempt to handle this problem.

Failed to evaluate model for ODE-Jacobian

【问题讨论】:

    标签: modelica dymola


    【解决方案1】:

    给定的模型不遵守当前规则之一,遵循常见的典型直接方法来实现可模拟/可编译的 Modelica 模型:

    模型不应在整个过程中改变其差异指数 模拟

    Modelica 语言规范指南的实际版本并未明确阻止实现此类模型,并且没有什么反对实现这一点的。

    普通模拟环境显然不会模拟如此简单的模型,除非明确声明允许 DAE 的多模式。

    现在详细介绍一下,微分索引非正式地对应于状态变量之间隐式/显式依赖关系的固有程度。在整个模拟过程中,微分指数的变化有两种方式,一种是结构方式,一种是数值方式。

    在结构上,模型(类似于给定的模型)是根据方程系统的几个分支来表述的。每个分支对应一个不同的差分索引。在给定的模型中,一个分支对应于一个线性方程,而另一个对应于一个微分方程。结构分析的典型实现将揭示模型对应于 ODE 系统(对于第一个分支而言并非如此)。我的猜测是线性方程被提交给 ODE 求解器。如果我们在 if 条件之外添加一个虚拟微分方程,例如der(z) = -1,则系统将被模拟,因为结构分析是偶然(半)正确的。

    如果我们在不同的分支中处理高索引 DAE,我们可能会得到一个数值不精确的解决方案,因为索引缩减不是针对每个可能的分支单独进行的。将求解器应用于非约简 DAE 可能会导致数值解中出现草稿,因为在传递给求解器的所得约简方程中没有明确显示隐式代数方程。

    以数值方式在某些情况下,模型参数的不同值会导致不同的微分指数(考虑将复杂方程变为微不足道的参数值)。类似地,差分指数可能会在模拟运行期间改变其值。使用处理高指数微分方程的常用方法很难捕捉到这种类型。

    结构索引:常用的方法是使用 s.c. 来近似差分索引。结构指数:它是方程系统的基于图形的表示,从中可以近似得出微分指数。 ODE 系统的结构索引为 0,而非微分方程系统的结构索引为 -1。使用 Pantelides 算法和虚拟导数方法的组合进行索引减少,参见。相关文献。这种基于图形的方法无法捕捉模拟过程中不同的差异指数或不同参数值的数值方面。

    多模 DAE 是由这两种类型产生的,目前正在积极研究中,并且有一些新的出版物涉及多模 DAE,参见。 Hilding Elmqvist 在 Modelica 会议和期刊上的出版物以及其他与多模式 DAE 相关的出版物(作为说明,我没有确定关于该主题的最佳出版物是什么)。

    如果要遵循通用角色,则模型的所有分支都应具有相同的结构索引(理想情况下,在模拟期间具有相同的微分索引)。在前者中,结构指标可以很容易地由建模者对小型模型进行近似。对于大型模型,如果仿真环境可以转储有关给定模型的基于图的结构(即计算图)、其微分索引等信息,这是有益的。在后一种类型中,建模者很难捕捉到这些信息。如果模拟环境可以转储有关数值变化的微分索引的此类信息,那将是理想的。

    【讨论】:

      【解决方案2】:

      这与https://github.com/modelica/ModelicaSpecification/issues/2411 的持续讨论有关,其中(在 Modelica 语言规范版本 3.4 中)未指定可变结构模型是合法的还是特定于工具的或非法的。带有 DAE 求解器的工具(和概念证明)可以成功模拟此类模型。

      【讨论】:

      • 同意。我相应地改变了我的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 2018-08-10
      相关资源
      最近更新 更多