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

时间:2013-11-20 14:50:30

标签: modelica openmodelica

如果我有一个非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 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

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