Die symbolische Aufbereitung mathematischer Modelle ist eine wesentliche Voraussetzung, um die Dynamik komplexer physikalischer Systeme mit Hilfe numerischer Simulationen zu untersuchen. Deren Modellierung mit gleichungsbasierten objektorientierten Sprachen bietet gegenüber der signalflussbasierenden Modellierung den Vorteil, dass die sich aus der Mathematik und Physik ergebenden Gleichungen in ihrer ursprünglichen Form zur Modellbeschreibung verwendet werden können. Die akausale Beschreibung mit Gleichungen erhöht die Wiederverwendbarkeit der Modelle und reduziert den Aufwand bei der Modellierung.
Die automatisierte Überführung der Gleichungen in Zuweisungen lässt sich theoretisch auf Modelle beliebiger Größe und Komplexität anwenden. In der praktischen Anwendung ergeben sich jedoch, insbesondere bei der automatisierten Überführung großer Modelle, mathematische Systeme mit sehr vielen Gleichungen und zeitabhängigen Variablen. Die daraus resultierenden langen Ausführungszeiten schränken die Anwendbarkeit der symbolischen Aufbereitung erheblich ein.
Die vorliegende Arbeit beschreibt den Prozess der automatisierten Überführung eines Modells bis zur numerischen Simulation. Alle Teilschritte werden detailliert untersucht und bezüglich ihrer theoretischen Komplexität bewertet. Geeignete Algorithmen werden im OpenModelica Compiler umgesetzt und bezüglich ihrer Laufzeit anhand praxisrelevanter Modelle miteinander verglichen und für jeden Teilschritt die beste Implementierung ausgewählt. Dadurch konnte ein nahezu linearer Zusammenhang zwischen Modellgröße und benötigter Zeit zur Überführung erreicht werden.
Zusätzlich bietet die Arbeit eine umfassende Dokumentation mit zahlreichen Empfehlungen für die Implementierung eines BackEnds eines Modelica Compilers. Dies erleichtert den Einstieg für neue Entwickler sowie die Weiterentwicklung bestehender Algorithmen. Letzteres wird durch ein modulares Konzept einer BackEnd-Pipeline unterstützt. Außerdem werden Methoden diskutiert, wie ein neues Modul innerhalb dieser Pipeline effizient getestet werden kann.:1 Einleitung
1.1 Modellierung und Simulation
1.2 Gleichungsbasierte objektorientierte Modellierung und Simulation
1.3 Motivation
1.4 Ziele, Forschungsschwerpunkt und Arbeitsvorhaben
2 Modellierung und Simulation mit Modelica
2.1 Anwendersicht
2.2 Die Modelica Sprache
2.3 Das Modelica Modell
2.4 Transformation des Modells zum Simulator
2.5 Laufzeituntersuchungen eines Modelica Compiler BackEnds
3 Graphen
3.1 Graphen für Gleichungssysteme
3.2 Suchalgorithmen
3.3 Matching Algorithmen
3.4 Laufzeituntersuchungen an Matching Algorithmen mit Modelica
4 Kausalisierung
4.1 Kausalisieren von algebraischen Systemen und Systemen gewöhnlicher Differentialgleichungen erster Ordnung
4.1.1 Zuweisen
4.1.2 Sortieren
4.2 Kausalisieren von differential algebraischen Systemen
4.2.1 Pantelides Algorithmus
4.2.2 Auswahl der Zustände des Systems
4.2.3 Singuläre Systeme
5 Symbolische Optimierung
5.1 Definition und Anwendung symbolischer Optimierungen
5.2 Allgemeine symbolische Optimierung
5.2.1 Finden und Entfernen trivialer Gleichungen
5.2.2 Tearing und Relaxation
5.2.3 Inline Integration
5.2.4 Parallelisierung
5.3 Fachbereichsspezifische symbolische Optimierung
5.3.1 Relaxation O(n) für Mehrkörpersysteme
6 Umsetzung Modelica Compiler BackEnd
6.1 Konzepte für die Implementation
6.1.1 Datenstruktur
6.1.2 Teilschritte der Analyse und Optimierungsphase
6.1.3 BackEnd Pipeline
6.1.4 Kausalisierung
6.2 Testen der Implementation
7 Laufzeituntersuchung an skalierbaren Modellen
7.1 Software-Benchmark Umgebung für Modelica Compiler - ModeliMark
7.2 Modelle für Laufzeituntersuchungen
7.3 Ergebnisse
8 Zusammenfassung und Ausblick / The symbolic treatment of mathematical models is essential to study the dynamics of complex physical systems by means of numerical simulations. In contrast to signal flow based approaches, modeling with equation-based and object-oriented languages has the advantage that the original equations can be used directly. The acausal description of equations increases reusability and reduces the effort for the modeller.
The automated transformation of equations into assignments can in theory be applied to models of any size and complexity. In practice, however, problems arise when large models, i.e. mathematical systems with many equations and time-dependent variables, shall be transformed. Long execution times that occur limit the applicability of symbolic processing considerably.
The present work describes the process of automated transformation from a model to program code which can be simulated numerically. All steps are examined in detail and evaluated in terms of its theoretical complexity. Suitable algorithms are implemented in the OpenModelica Compiler. Their execution times are compared by looking at models which are relevant to engineering. The best implementations for each sub-step are selected and combined to a Modelica Compiler BackEnd. Thus a relationship between model size and the time needed for transformation has been achieved which is mostly linear.
In addition, a comprehensive discussion with numerous recommendations for the implementation of a Modelica Compiler BackEnd is given. This is supposed to help new developers as well as to facilitate the development of existing algorithms. The latter is supported by a modular concept of a BackEnd pipeline. Moreover, methods are discussed how new modules can be tested efficiently using this pipeline.:1 Einleitung
1.1 Modellierung und Simulation
1.2 Gleichungsbasierte objektorientierte Modellierung und Simulation
1.3 Motivation
1.4 Ziele, Forschungsschwerpunkt und Arbeitsvorhaben
2 Modellierung und Simulation mit Modelica
2.1 Anwendersicht
2.2 Die Modelica Sprache
2.3 Das Modelica Modell
2.4 Transformation des Modells zum Simulator
2.5 Laufzeituntersuchungen eines Modelica Compiler BackEnds
3 Graphen
3.1 Graphen für Gleichungssysteme
3.2 Suchalgorithmen
3.3 Matching Algorithmen
3.4 Laufzeituntersuchungen an Matching Algorithmen mit Modelica
4 Kausalisierung
4.1 Kausalisieren von algebraischen Systemen und Systemen gewöhnlicher Differentialgleichungen erster Ordnung
4.1.1 Zuweisen
4.1.2 Sortieren
4.2 Kausalisieren von differential algebraischen Systemen
4.2.1 Pantelides Algorithmus
4.2.2 Auswahl der Zustände des Systems
4.2.3 Singuläre Systeme
5 Symbolische Optimierung
5.1 Definition und Anwendung symbolischer Optimierungen
5.2 Allgemeine symbolische Optimierung
5.2.1 Finden und Entfernen trivialer Gleichungen
5.2.2 Tearing und Relaxation
5.2.3 Inline Integration
5.2.4 Parallelisierung
5.3 Fachbereichsspezifische symbolische Optimierung
5.3.1 Relaxation O(n) für Mehrkörpersysteme
6 Umsetzung Modelica Compiler BackEnd
6.1 Konzepte für die Implementation
6.1.1 Datenstruktur
6.1.2 Teilschritte der Analyse und Optimierungsphase
6.1.3 BackEnd Pipeline
6.1.4 Kausalisierung
6.2 Testen der Implementation
7 Laufzeituntersuchung an skalierbaren Modellen
7.1 Software-Benchmark Umgebung für Modelica Compiler - ModeliMark
7.2 Modelle für Laufzeituntersuchungen
7.3 Ergebnisse
8 Zusammenfassung und Ausblick
Identifer | oai:union.ndltd.org:DRESDEN/oai:qucosa:de:qucosa:27418 |
Date | 16 January 2014 |
Creators | Frenkel, Jens |
Contributors | Kunze, Günter, Fritzson, Peter, Schmitz, Gerhard, Technische Universität Dresden |
Source Sets | Hochschulschriftenserver (HSSS) der SLUB Dresden |
Language | German |
Detected Language | German |
Type | doc-type:doctoralThesis, info:eu-repo/semantics/doctoralThesis, doc-type:Text |
Rights | info:eu-repo/semantics/openAccess |
Page generated in 0.0028 seconds