【问题标题】:Why does using a flexible array input in a function raise a translation error in OpenModelica?为什么在函数中使用灵活的数组输入会在 OpenModelica 中引发翻译错误?
【发布时间】:2025-12-18 13:45:02
【问题描述】:

在我看来,以下简单的function 是完全合法的Modelica 代码:

function foo "Returns true"
  input Boolean[:] x "Vector of booleans";
  output Boolean y "= true, in any case here";
algorithm
  y := true;
end foo;

OpenModelica v1.16.2 (64-bit) 中使用Check Model 会引发错误:

[1] 15:15:11 Translation Error
[foo: 2:3-2:42]: Failed to deduce dimension 1 of x due to missing binding equation.

Modelica 代码有问题还是 OME 问题?

编辑

只是为了表明,这实际上不是一个明确的案例:
这是在 Wolfram System Modeler 12.2 中验证 foo 时得到的消息:

[3] 10:59 验证函数 foo
验证函数 foo 顺利完成。

【问题讨论】:

    标签: modelica openmodelica systemmodeler


    【解决方案1】:

    错误消息应该是:“OpenModelica 不检查或实例化函数。要测试函数,请在模型中使用它。”

    【讨论】:

    • 但是它应该只是一个message?在没有错误或未检查错误时给出error(即skipped)本身就是一个error
    • 我在 OpenModelica 的 trac #6359 开了一个新问题。
    • 不,应该是错误信息。您使用了错误的功能。或者 OMEdit 应该使功能(和包)的按钮变灰
    • 好的,我明白你的意思,因为它确实在 OMEdit 中说 Check Model,而不是 Validate Class,这与我最常使用的 Wolfram SystemModeler 不同(很棘手,因为按钮看起来很像)。 ;-)