如下例所示:
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
标准库中?
答案 0 :(得分:3)
der()
没有源代码。 (至少不像你要找的那个。)
为什么?
因为它是(你说的)一个运算符。不是功能。您要问的是(几乎),例如+
运算符或connect
的源代码。
我确信您在java
中遇到过类似的功能。例如,在C++
中您有sizeof()
。这不是一个真正的功能,但外观和行为就像一个。
der()
由每个模拟器的集成方法实现。并为您提供内置操作员。它没有像sin
,cos
这样的库函数实现....而且坦率地说它不可能。它不会像您在源代码中看到的那样进行评估。
我不确定你会如何翻译它。但是那里有一些 ode求解器和集成商。我希望有人会很快给你一个替代方法。
只是一个友好的抬头,它可能不像你现在接近它那么容易。并且您不能将modelica
代码(任何源代码)转换为另一种语言。也许可以将java
翻译成C/C++
,反之亦然,但这些语言密切相关并用于相同类型的编程范例。 Modelica
是不同的。
如果您坚持翻译algorithmic
的{{1}}部分并暂时离开modelica
,则会更容易。然后你可以继续使用当前的方法。