1

如下例所示:

model HelloWorld "A Simple Model"
  Real x(start = 1);
equation 
  **der(x) = -x;**
  annotation (uses(Modelica(version="3.2")));
end HelloWorld;

我打算写一些代码将Modelica源代码转换为java格式。但是,我找不到特殊运算符之类的源代码der()

我的意思是:java中的例子可以写成这种格式:

class HelloWorld{
   ModelicaReal x = new ModelicaReal(start,1);

   public void run(){
      while(time...){
         ...der(x)... 
      }
   }
}

我想der(x)作为一个java函数调用来处理。但是必须先找到der()算子源码,然后才能把der()算子转成java函数。但是Modelica运营商源代码不在Modelica标准库中?

4

1 回答 1

3

没有源代码der()。(至少不像你要找的那个。

为什么?

因为它是(你说的)一个运营商。不是函数。您要问的是(几乎)类似于操作员的源代码+connect.

我相信你在java. 例如在C++你有sizeof(). 这不是一个真正的功能,但看起来和行为就像一个。

der()由每个模拟器的集成方法实现。并作为内置运算符为您提供。它没有像sin, cos... 这样的库函数实现。坦率地说,它不可能。正如您在源代码中看到的那样,它不会被评估。

我不确定你会如何翻译它。但是那里有一些ode 求解器积分器。我希望有人很快会给你另一种方法。


只是一个友好的提醒,它可能不像你现在接近它那么容易。而且您不能像这样将modelica代码(就此而言,任何源代码)逐行翻译成另一种语言。也许这可以翻译javaC/C++或反之亦然,但这些语言密切相关并用于相同类型的编程范式。Modelica是不同的。

如果您坚持翻译其中的algorithmic部分modelica并暂时equations不使用它,那会更容易。然后,您可以继续使用当前方法。

祝你好运。

于 2013-05-12T15:16:31.103 回答