2017-06-27 1 views
0

OpenModelica上の別のモデルを継承しながら、パラメータ/変数の名前と説明を変更したいと思います。拡張子/継承によるModelicaの変更

私はModelica言語のreplaceable/redeclareプロパティを使用してそれを実行しようとしましたが、うまくいきませんでした。これまでのところ、私は以下のようにしていますが、わかるように、それは良い習慣ではありません。

model MySubModel 
    Real myVar "Some general description" 
    parameter Real myParam "Some general description" 
eqaution 
    der(myVar) = myParam*time; 
end MySubModel 

model MyModel 
    extends MySubModel(myParam=Coeff); 
    Real TimeIntegral "Integral of time, just nonsense" 
    parameter Real Coeff = 12 "Coefficient bla bla" 
equation 
    MyVar = TimeIntegral 
end MyModel 

Iが.fmuとしてモデルをエクスポートするので、私にとって重要な点は、継承しながら、変数およびパラメータの説明を個別に与えられなければならないことであると説明は、そのようなユニット、参考として私のために必要なすべての情報を運びます、説明など

答えて

2

変数/パラメータの名前を変更したり、説明や値を変更したい場合は、標準のModelicaではもっと良い方法はありません。

実際の問題は名前を変更することです。

内容が変更された記述(および値)のみを含むコンテンツの場合は、仕様に従って正しくありますが、変更された記述が使用されることは保証されていません(Dymolaで動作します - OpenModelicaではテストしません) 、それは見栄えしません:

model MySubModel 
    Real myVar "Some general description"; 
    parameter Real myParam "Some general description"; 
equation 
    der(myVar) = myParam*time; 
end MySubModel; 

model MyModel 
    extends MySubModel(redeclare parameter Real myParam=12 "Coefficient", 
     redeclare Real myVar "Integral of time, just nonsense"); 
end MyModel; 

(これは非交換可能な要素の再宣言で、仕様の7.3.3によると、それは、元の宣言と同じ型を持つ必要があることに注意してください。)

+0

実際、私は、再宣言を使用しなくても、私がそれに似た何かを読んだので、この解決策を受け入れていました。私は今それを試して、それはOpenModelicaのために働かなかった。実際、値はまったく設定されていません。 MySubModel(myParam = 12 "Coefficient") 値は設定されていますが、説明は同じです。私はベースモデルでは初期の説明がなくても両方の方法を試しました。それは助けにもならなかった。 [7.2.4](https://www.modelica.org/documents/ModelicaSpec33.pdf)によると、別の解決方法が考えられます。それは動作しません。 – Falsterbo

関連する問題