Die Array-Größen sind strukturelle Parameter und sie können normalerweise nicht von externen Funktionsaufrufen abhängen, da sie zur Kompilierungszeit bekannt sein sollten. Dies wird jedoch beispielsweise in OpenModelica unterstützt, wo eine DLL der externen Funktion erstellt und aufgerufen wird und die Ergebnisse während der Modellkompilierung abgerufen werden.
Die einzige Möglichkeit, dies in allen Tools zu unterstützen, besteht darin, das Modell mithilfe eines externen Tools zu generieren, das das XML liest und die MO-Datei mit den gelesenen Werten ändert. Man könnte wahrscheinlich so etwas wie Parameters.mo hat:
package Parameters
constant Integer nTube = <EXTERN_NTUBE>;
constant Integer nSeg = <EXTERN_NSEG>;
end Parameters;
und externes Tool wird die XML und bindet und in Parameters.mo lesen, die Sie dann in Ihren Modellen über Parameters.nTube und Parameters.nSeg verwenden. Vielleicht wäre es gut, einige Ausfälle zu geben, damit es funktioniert direkt diese Datei zu verwenden:
package Parameters
constant Integer nTube = 1;
constant Integer nSeg = 2;
end Parameters;
und dann Ihr externes Tool 1 und 2 mit den benötigten Werten vor der Kompilierung ersetzen.
Vielen Dank für Ihre Antwort. Ich benutze Dymola und könnte näher erläutern, wie Ergebnisse während der Modellerstellung von der externen Funktion abgerufen werden können? –
Es hängt stark vom Werkzeug ab, jedes Werkzeug macht es, soweit ich weiß, anders. –