2017-06-27 2 views
0

Ich möchte den Namen und die Beschreibung eines Parameters/einer Variablen ändern, während ein anderes Modell auf OpenModelica erbt.Modelica Änderung durch Erweiterung/Vererbung

Ich versuchte es zu tun, indem er ersetzbare/redeclare Eigenschaften der Modelica Sprache verwendete, aber es hat nicht geklappt. Bis jetzt mache ich wie unten, aber wie Sie sehen können, ist es keine gute Übung.

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 

Der wichtige Punkt ist für mich, dass die Beschreibung der Variablen und Parameter müssen einzeln angegeben werden, während erben, weil ich das Modell als .fmu exportieren und die Beschreibung trägt alle notwendigen Informationen für mich wie Einheit, Referenz, Erklärung usw.

Antwort

2

Ich sehe keinen besseren Weg in Standard Modelica, wenn Sie Variablen/Parameter umbenennen, Beschreibungen und Werte ändern möchten.

Das eigentliche Problem ist die Änderung des Namens.

Wenn Sie sich damit zufrieden geben, nur die Beschreibungen (und Werte) zu ändern, stimmt das folgende mit der Spezifikation überein - aber es wird nicht garantiert, dass die geänderten Beschreibungen verwendet werden (es funktioniert in Dymola - ich habe nicht in OpenModelica getestet) und es ist nicht schön aussehen:

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; 

(Beachten sie, dass dies ein Neudeklaration eines nicht austauschbaren Element ist und nach 7.3.3 der Spezifikation muss es die gleiche Art wie die ursprüngliche Anmeldung.)

+0

Eigentlich akzeptierte ich diese Lösung zu arbeiten, wie ich etwas ähnliches gelesen hatte, obwohl ohne redeclare. Ich habe es jetzt versucht und es hat nicht für OpenModelica funktioniert. Tatsächlich wird der Wert überhaupt nicht festgelegt. Wenn ich nur folgendes verwende: erweitert MySubModel (myParam = 12 "Coefficient") Dann wird der Wert gesetzt aber die Beschreibung bleibt gleich. Ich habe beide Methoden auch ohne Anfangsbeschreibung im Basismodell ausprobiert. Es hat auch nicht geholfen. Eine andere Lösung könnte laut [Kapitel 7.2.4] (https://www.modelica.org/documents/ModelicaSpec33.pdf) gewesen sein. Es funktioniert nicht. – Falsterbo

Verwandte Themen