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()。(少なくとも、あなたが探しているものとは異なります。 )

なんで?

それは(あなたが言ったオペレーターだからです。関数ではありません。あなたが求めているのは、(ほぼ+)演算子 orのソース コードのようなものconnectです。

でそのような関数に出くわしたことがあると思いますjava。たとえば、C++がありますsizeof()。これは実際には関数ではありませんが、関数のように見えて機能します。

der()各シミュレータの統合方法で実装されています。また、組み込み演算子として提供されます。sincos...のようなライブラリ関数として実装されていません。率直に言って、それはできません。ソースコードで見られるように評価されません。

あなたがそれをどのように翻訳するつもりなのか、私にはわかりません。しかし、そこにはいくつかのオードソルバーインテグレーターがあります。誰かがすぐに別のアプローチを提供してくれることを願っています。


フレンドリーなヘッズアップだけです。あなたが今近づいているほど簡単ではないかもしれません。modelicaそして、コード (さらに言えばソースコード) をそのように行ごとに別の言語に翻訳することはできません。たぶん、それは相互に翻訳javaするのには問題ありませC/C++んが、これらの言語は密接に関連しており、同じ種類のプログラミング パラダイムに使用されます。Modelica異なります。

algorithmicの部分を翻訳することに固執し、今のところは省略した方が簡単modelicaですequations。その後、現在のアプローチを進めることができます。

幸運を。

于 2013-05-12T15:16:31.103 に答える