Modelica特殊运营商源代码

时间:2013-05-11 16:53:39

标签: modelica

如下例所示:

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标准库中?

1 个答案:

答案 0 :(得分:3)

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

为什么?

因为它是(你说的)一个运算符。不是功能。您要问的是(几乎),例如+运算符或connect的源代码。

我确信您在java中遇到过类似的功能。例如,在C++中您有sizeof()。这不是一个真正的功能,但外观和行为就像一个。

der()由每个模拟器的集成方法实现。并为您提供内置操作员。它没有像sincos这样的库函数实现....而且坦率地说它不可能。它不会像您在源代码中看到的那样进行评估。

我不确定你会如何翻译它。但是那里有一些 ode求解器集成商。我希望有人会很快给你一个替代方法。


只是一个友好的抬头,它可能不像你现在接近它那么容易。并且您不能将modelica代码(任何源代码)转换为另一种语言。也许可以将java翻译成C/C++,反之亦然,但这些语言密切相关并用于相同类型的编程范例。 Modelica是不同的。

如果您坚持翻译algorithmic的{​​{1}}部分并暂时离开modelica,则会更容易。然后你可以继续使用当前的方法。

祝你好运。