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;
4

2 回答 2

3

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

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

所以最好能多解释一下这个函数的作用。这不仅有助于决定如何在 Modelica 中表达它,还可以证明你的函数最好保留为 C 代码,并通过 Modelica 中的外部函数接口调用。

于 2013-11-21T01:09:17.373 回答
1

您可能想快速查看漂亮的备忘单http://modref.xogeny.com/以了解如何进行 for 循环。此外,在算法部分中,您必须使用分配而不是方程式:

algorithm
...
variable2 := foobar(); //foobar here is modelica function
于 2013-11-20T22:20:49.373 回答