如果我有一个非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;
答案 0 :(得分:3)
实际上,你的描述有点令人不安。如果你的函数没有输入而没有输出,那么调用它有什么意义呢?
我猜你的功能有side effects。但是如果你正在调用Modelica的副作用函数,你需要非常小心,因为一般来说,你无法控制它们何时被调用。例如,他们将被称为所谓的“候选解决方案”以及实际的模拟步骤。
因此,如果您更多地了解这个功能的作用,那将是最好的。这不仅有助于决定如何在Modelica中表达它,它还可以证明您的函数最好保留为C代码,而是通过Modelica中的外部函数接口调用。
答案 1 :(得分:1)
您可能希望快速查看好的备忘单http://modref.xogeny.com/以了解如何执行for循环。此外,当在算法部分内部时,您必须使用赋值而不是方程式:
algorithm
...
variable2 := foobar(); //foobar here is modelica function