Debugging in Dymola – Get the best out of your model

Die Simulation in Dymola kommt nicht in die Gänge, stockt, ist langsam oder bricht sogar ab? – Eine häufige Ursache: Nichtlineare Gleichungssysteme. Lerne sie zu vermeiden, um so Simulationszeit zu sparen und dein Simulationsmodell numerisch robuster zu machen.

Helena Vorspohl

Helena Vorspohl

|

May 5, 2022

TLK Energy

Nichtlineare Gleichungssysteme in Dymola

Aus unserer Erfahrung empfehlen wir, nichtlineare Gleichungssysteme in Dymola am besten zu vermeiden. Das spart meistens Simulationszeit und macht das Simulationsmodell numerisch robuster. In diesem Artikel zeigen wir euch daher, was nichtlineare Gleichungssysteme in Dymola sind, wie man sie identifiziert und wie man sie lösen bzw. eliminieren kann.

Was sind nichtlineare Gleichungssysteme?

Streng genommen ist der in Dymola benutzte Begriff „nichtlineare Gleichungssysteme“ etwas irreführend, mathematisch exakter ist: „implizite algebraische Gleichungssysteme“. Um genau zu verstehen, wie die „nichtlinearen“ Gleichungen entstehen und warum sie ein Problem darstellen, schauen wir uns zunächst an, welche Typen von Gleichungssystemen wir in Dymola betrachten und wie Dymola Gleichungssysteme allgemein löst.
Das am einfachsten zu lösende Gleichungssystem stellt das gewöhnliche Differentialgleichungssystem (engl. Ordinary Differential Equations, ODE) dar:
$$\dot{x} = F(x)$$
Dabei bezeichnet man \(\dot{x}\) als differentiellen Zustand. Ein ODE kann immer explizit nach diesen differentiellen Zuständen aufgelöst werden.
Mithilfe eines ODE-Solvers, wie z.B. einen Euler-Algorithmus, kann das Gleichungssystem dann in Dymola gelöst werden. Wie in Abbildung 1 vereinfacht dargestellt ist, berechnet Dymola ausgehend von einem bekannten Zustand \(x_0\) und dem ODE-Gleichungssystem die zeitlichen Ableitungen aller differentiellen Zustände und führt dann die Integration auf den Zustand \(x_1\) im nächsten Zeitschritt aus.

Abbildung 1: Lösen von gewöhnlichen Differentialgleichungssystemen in Dymola

Enthält ein Gleichungssystem darüber hinaus algebraische Gleichungen, so kann dieses differentiell-algebraische Gleichungssystem (engl. Differential Algebraic Equations, DAE) im Allgemeinen nicht mehr explizit nach den differentiellen Zuständen aufgelöst werden:
$$\dot{x} = F(x, y)$$
$$0 = G(x, y)$$
Hier unterscheidet man zwischen den differentiellen Zuständen \(\dot{x}\) und den algebraischen Zuständen \(y\).
Diese DAE können in der Regel nicht allein durch den ODE-Solver gelöst werden. Aus diesem Grund nutzt Dymola standardmäßig einen zusätzlichen algebraischen Gleichungslöser (AE-Solver). Dieser kann beispielsweise aus einem Newton-Algorithmus bestehen. Das schrittweise Vorgehen zum Lösen von DAE-Systemen in Dymola ist in Abbildung 2 vereinfacht dargestellt:

Abbildung 2: Schrittweises Lösen von differentiell-algebraischen Gleichungssystemen in Dymola

Das Lösen eines DAE-Systems startet ebenfalls ausgehend von einem bekannten Initialzustand \(x_0\). Im ersten Schritt werden jedoch zunächst die algebraischen Gleichungssysteme mithilfe eines AE-Solver gelöst (1). Dabei können die algebraischen Zustände beispielsweise durch Iterationen mit dem Newton-Algorithmus berechnet werden. In Dymola werden die zu iterierenden algebraischen Zustände auch als Iterationsvariablen bezeichnet. Anschließend können die algebraischen Zustände \(y_0\) zusammen mit den differentielle Gleichungssystem an den ODE-Solver übermittelt und gelöst werden (2).

Der Vergleich zwischen dem Lösen von ODEs und DAEs in Dymola macht deutlich, dass nichtlineare Gleichungen (bzw. implizite algebraische Gleichungssysteme) zusätzlichen Rechenaufwand verursachen und sich somit negativ auf die Simulationszeit auswirken. Zudem kann das Lösen der algebraischen Gleichungssysteme zusätzliche Probleme, wie z.B. das Nicht-konvergieren von Iterationen, auslösen.

Dymola bietet mithilfe der flag Advanced.Define.DAESolver die Möglichkeit, mit bestimmten Solvern direkt das DAE ohne den vorgeschalteten AE-Solver zu lösen. Hierzu eignet sich beispielsweise der Dassl-Algorithmus (der in Dymola standardmäßig als reiner ODE-Solver genutzt wird). Wenn der DAE-Solver aktiviert ist, werden die nichtlinearen Gleichungen vom Integrator als Teil des Gleichungssystems behandelt, das der Integrator in jedem Zeitschritt löst. Wenn das übersetzte Modell große nichtlineare Gleichungssysteme enthält, können DAE-Löser effizienter sein.

Wie identifiziert Dymola nichtlineare Gleichungssysteme und wie kann man diese eliminieren?

Schauen wir uns hierzu das folgende Beispiel (siehe Abbildung 3) zur Veranschaulichung an: Das Simulationsmodell in der folgenden Abbildung besteht aus einer seriellen Verschaltung von einem Gebläse und einem Rohr sowie Quelle und Senke, die den Druck definieren. Im Rohr werden Druckverluste in Abhängigkeit des Massenstroms berechnet und das Gebläse definiert den Volumenstrom, welcher mithilfe einer Rampe zeitlich variiert wird.

Abbildung 3: Beispiel-Simulationsmodell mit nicht-linearen Gleichungssystem


Nach Durchführung der Translation analysieren wir die „Statistics“ des Simulationsmodells:

Abbildung 4: Statistics des Beispiel-Simulationsmodells

Hier zeigt Dymola sowohl die Anzahl der nichtlinearen Gleichungssysteme vor als auch nach der Sortierung und Optimierung des Gleichungssystems an. Durch das Sortieren und Optimieren des Gleichungssystems kann Dymola einige nichtlineare Gleichungen bereits eliminieren. Für uns sind jedoch die verbleibenden nichtlinearen Gleichungssysteme von Bedeutung.
Die Länge des Vektors beschreibt die Anzahl an nichtlinearen Gleichungssystemen und die Vektoreinträge die jeweilige Anzahl an algebraischen Zuständen.
Mithilfe der flag Advanced.LogNonLinearIterationVariables gibt Dymola zusätzlich die zu iterierenden algebraischen Zustände im Log-Window an. In unserem Beispiel ist der Massenstrom die Iterationsvariable.

Abbildung 5: Iterationsvariablen desBeispiel-Simulationsmodells

Um das nichtlineare Gleichungssystem auflösen zu können, müssen wir zunächst verstehen, wo das nichtlineare System im Simulationsmodell entsteht. Hier lohnt es sich, einen Blick in die dsmodel.mof zu werfen. Die dsmodel.mof Datei enthält das vollständige, optimierte und sortierte Gleichungssystem des Simulationsmodells. Im Simulation Setup können wir die Ausgabe der Datei, wie folgt aktivieren:

Abbildung 6: Aktivierung der Ausgabe der dsmodel.mof

Die dsmodel.mof Datei wird üblicherweise im Arbeitsverzeichnis nach der Translation abgelegt. Am Ende des Abschnitts „Nonlinear system of equations“ finden wir die folgende algebraische Gleichung:

Abbildung 7: Auszug aus der dsmodel.mof

Der Massenstrom wird demnach in Abhängigkeit des Volumenstroms und der Dichte berechnet. Dies ist physikalisch sinnvoll und eigentlich trivial. Also warum resultiert dieser Zusammenhang in einem nichtlinearen Gleichungssystem?
Wir erhalten immer dann ein nichtlineares Gleichungssystem, wenn zwei oder mehrere Gleichungen miteinander gekoppelt sind. In unserem Beispiel ist die Dichte vom Druck \(p\) und somit vom Druckverlust \(\Delta p\) im Rohr abhängig, der wiederum vom Massenstrom abhängt:
$$\Delta p= f(\dot{m}) $$
Somit erhalten wir mit diesen zwei Gleichungen ein algebraisches Gleichungssystem mit \(\dot{m}\) als Iterationsvariable.
Um algebraische Gleichungssysteme zu eliminieren, gibt es verschiedene Lösungsmöglichkeiten. Welche Methode die sinnvollste ist, hängt stark von dem jeweiligen Problem ab.

  • Iterationsvariable explizit vorgeben: Manchmal können nichtlineare Gleichungssysteme durch das explizite Vorgeben der Iterationsvariable eliminiert werden. In unserem Beispiel könnten wir anstatt des Volumenstroms den Massenstrom im Gebläse definieren. Somit wird die Gleichung \(0=\dot{V}+\dot{m}/\rho\) überflüssig.
  • Zusätzlichen differentiellen Zustand einführen: Nichtlineare Gleichungssysteme können in der Regel immer mit einem zusätzlichen differentiellen Zustand gelöst werden. In unserem Fall würde das Einführen eines Volumens helfen (siehe folgende Abbildung). Durch das Volumen wird der Druck als differentieller Zustand im System hinzugefügt und das algebraische Gleichungssystem kann aufgelöst werden.
Abbildung 8: Beispiel-Simulationsmodell mit zusätzlichen Volumen

  • Inverse definieren: In manchen Fällen kann ein nichtlineares Gleichungssystem auch dadurch entstehen, dass Modelica Gleichungen nicht invertieren kann. Hier hilft es die invertierte Funktion direkt anzugeben.

Egal ob erfahrener Modellentwickler oder Modelica-Anfänger, nichtlineare Gleichungssysteme entstehen unweigerlich und stellen für dynamische Simulationen immer ein Problem dar.
Mit dem Wissen, welchen Effekt nichtlineare Gleichungssysteme auf deine Simulationen haben, wie du diese identifizieren und eliminieren kannst, bist du einen großen Schritt weiter, das Beste aus deinem Modell herauszuholen. Wir wünschen viel Spaß dabei!

Helena Vorspohl

M.Sc.

Helena Vorspohl

Simulation & Backend Development

TLK Energy

Helena Vorspohl studierte Maschinenbau an der RWTH Aachen mit den Schwerpunkten Simulation und Energietechnik. Sie arbeitet seit 2020 bei TLK Energy und ist an der Entwicklung unserer Adsorptions-Modellbibliothek beteiligt. Im Bereich unserer TLK Energy Apps kümmert sie sich um das Backend. Außerdem leitet sie regelmäßig Schulungen zur Simulation von thermischen Systemen mit der TIL-Modellbibliothek.

Weitere Blogbeiträge: