首页 文章

Modelica - 将非modelica函数映射到模型

提问于
浏览
0

如果我有一个非modelica函数,它没有输入,也没有输出

void foo(void)
{
  variable1;
  variable2;
  for loop
   {
     if conditions
   }
  variable2=foobar(); // another function call, foobar() is not modelica function

}

然后我可以在modelica中像下面那样建模吗?

model foo
 variable1;
 variable2;

algorithm
for loop
   {
     if conditions
   }
 variable2 :=foobar(); //foobar here is modelica function
end foo;

2 回答

  • 3

    实际上,你的描述有点令人不安 . 如果你的功能没有输入而没有输出,那么调用它有什么意义呢?

    我猜你的功能有side effects . 但是如果你正在调用Modelica的副作用函数,你需要非常小心,因为一般来说,你无法控制它们何时被调用 . 例如,他们将被称为所谓的"candidate solutions"以及实际的模拟步骤 .

    因此,如果您更多地了解这个功能的作用,那将是最好的 . 这不仅有助于决定如何在Modelica中表达它,它还可以证明您的函数最好保留为C代码并通过Modelica中的外部函数接口调用 .

  • 1

    您可能希望快速查看好的备忘单http://modref.xogeny.com/以了解如何执行for循环 . 此外,当在算法部分内部时,您必须使用赋值而不是方程式:

    algorithm
    ...
    variable2 := foobar(); //foobar here is modelica function
    

相关问题