Lade Inhalt...

Vergleich konservativer und optimistischer Verfahren bei der verteilten Simulation mechanischer Systeme mittels CORBA

Diplomarbeit 1999 81 Seiten

Informatik - Angewandte Informatik

Leseprobe

INHALTSVERZEICHNIS

1 Einleitung

2 Verteilte Simulation
2.1 Anwendungsmöglichkeiten der Simulation
2.2 Parallelisierung und Verteilung
2.2.1 Verteilung
2.2.2 Parallelisierung
2.2.3 Multitasking und Multithreading
2.3 Vorgehensweise
2.4 Festlegung wichtiger Begriffe
2.4.1 Die Begriffe Simulationszeit und Rechenzeit
2.4.2 Die Begriffe Zustand und Ereignis
2.5 Zeitdiskrete Simulationen
2.5.1 Zeitgesteuerte Datenausgabe
2.5.2 Zustandsgesteuerte Datenausgabe
2.6 Zeitkontinuierliche Simulationen
2.6.1 Berücksichtigung von Unstetigkeitsstellen
2.6.2 Datenausgabe
2.7 Unterschiedliche Simulationsverfahren
2.7.1 Die Begriffe Kausalität, Kausalordnung und Konservativ
2.7.2 Zeitdiskrete konservative Simulationen
2.7.3 Kontinuierliche konservative Simulationen
2.7.4 Optimistische Simulationsverfahren
2.8 Vergleich der Verfahren anhand eines Beispiels
2.8.1 Aufgabenstellung
2.8.2 Aufteilung in Komponenten
2.8.3 Zustandsänderungen
1.1.4 Konservatives Verfahren
1.1.5 Optimistisches Verfahren
1.1.6 Vergleich der Rechenzeiten

3 Das untersuchte Modell
3.1 Das gewählte Beispiel
3.2 Kriterien
3.2.1 Entkoppelbarkeit
3.2.2 Berücksichtigung von Ereignissen
3.2.3 Integrationsverfahren nach Euler
3.2.4 Konservatives und optimistisches Verfahren
3.3 Wählbare Größen
3.4 Vereinfachende Annahmen

4 Simulationskonzept
4.1 Umwandlung der Bewegungsgleichungen
4.2 Allgemeines Simulationskonzept
4.2.1 System
4.2.2 Integrator
4.2.3 Zusammenwirken von Integrator und System
4.2.4 Berücksichtigung von Unstetigkeitsstellen
4.3 Umsetzung für die gewählte Simulationsaufgabe
4.3.1 Simulationskonzept für das konservative Verfahren
4.3.2 Simulationskonzept für das optimistische Verfahren
4.3.3 Stoßerkennung

5 Einführung in CORBA
5.1 Die Object Mangment Group OMG
5.2 Das OMA-Referenzmodell
5.3 Middleware CORBA
5.4 Der Sortwarebus ORB
5.5 Die Schnittstellensprache IDL
5.6 Server-Aufruf
5.7 Implementierung eines einfachen Beispiels
5.7.1 Aufgabenstellung
5.7.2 Schnittstellendefinition
5.7.3 Von IDL nach C++
5.7.4 Der Server
5.7.5 Der Client

6 Umsetzung als CORBA-Anwendung
6.1 Komponenten der CORBA-Anwendung
6.1.1 Schnittstelle Integrator
6.1.2 Schnittstelle System
6.1.3 Schnittstelle Animation
6.2 Zusammenwirken von Monitor, Integrator und System

7 Simulationsversuch
7.1 Aufgabenstellung
7.2 Die verwendete Soft- und Hardware
7.3 Versuchsdurchführung
7.3.1 Vergleich der Rechenzeiten und Anzahl der Aufrufe von Calc
7.3.2 Vergleich der Prozessorauslastung

8 Zusammenfassung und Ausblick

A Schnittstellendefinitionen

B Die Methoden der Komponenten

C Vorgehensweise bei der Simulation

1 Einleitung

Die Simulation ist heute ein taugliches Mittel, um reale Vorgänge nachzubilden und zu analysieren. Der Grad der Übereinstimmung zwischen Simulation und Realität hängt dabei von den berücksichtigten Parametern und der verlangten Rechengenauigkeit ab. Leider steigt mit der gewünschten Übereinstimmung aber auch der Rechenaufwand und die Rechenzeit. Um letztere zu verringern, wurden Parallelisierungsansätze entworfen, bei welchen die Rechenlast auf mehrere Prozessoren verteilt wird. Eine Möglichkeit ist es, das Modell in mehrere Teilmodelle zu zerlegen. Diese können dann unterschiedlichen Prozessoren zugeordnet werden. Die Teilmodelle werden durch einzelne Komponenten repräsentiert, die über ein geeignetes Medium miteinander kommunizieren. Ein weiterer Aspekt, der sich durch das Bilden dieser Komponenten ergeben kann, ist ein Steigern der Übersichtlichkeit und Wartbarkeit. Aus der notwendigen eindeutigen Festsetzung der Aufgaben jeder einzelnen Komponente ergeben sich überschaubare Einzelprogramme und klar definierte Schnittstellen zur Kommunikation untereinander.

Ziel dieser Arbeit soll es sein, eine verteilte Simulation zu erstellen, deren Vorteile gegenüber einer monolithischen Simulation aufgezeigt werden. Es wurde dafür bewußt ein einfaches Beispiel gewählt, um das Augenmerk auf die verwendeten Verteilungsstrategien und nicht auf die Erklärung des Modells als mechanisches System zu lenken.

In dieser Arbeit werden zwei unterschiedliche Parallelisierungskonzepte vorgestellt. Ein wesentlicher Unterschied zwischen den beiden liegt darin, ob die Kausalordnung verletzt werden darf oder nicht. Das erste Konzepte verletzt die Kausalordnung nicht und entspricht der Definition eines konservativen Verfahrens. Das zweite Konzept entspricht der Definition eines optimistischen Verfahrens. Dafür muß die Möglichkeit einer kurzzeitigen Verletzung der Kausalordnung berücksichtigt werden, was einen gewissen Mehraufwand bedeutet. Zu beiden Konzepten ist ein Monitor implementiert worden. Die erzielten Ergebnisse in Bezug auf Rechenzeit, Prozessorauslastung und verbundenen Aufwand wurden anschließend miteinander verglichen. Das gesamte Modell wurde als CORBA -Anwendung implementiert, wobei C++ als Programmiersprache genutzt wurde.

CORBA (Common Object Request Broker) ist eine sogenannte Middleware, welche zwischen Anwendung und Betriebssystem geschaltet wird. Sie ermöglicht es, einzelne Komponenten auch über Hardware- und Betriebssystemgrenzen hinaus zu nutzen und koordiniert dabei die dafür notwendige Kommunikation. Dabei hat sich der Programmierer nicht mehr um Netzwerkprotokolle oder Hardwarebesonderheiten zu kümmern. Es macht auch keinen Unterschied, ob sich die einzelnen Komponenten auf einem Rechner oder im gleichen LAN (Local Area Network) befinden oder über das Internet kommunizieren.

Das für die Simulation verwendete Modell entspricht mehreren, in Reihe hintereinander angeordneten Pendeln. Jedes Pendel besteht dabei aus einem Faden und einer an dessen Ende fixierten Kugel. Die Pendel können solange frei schwingen, bis sie aneinander stoßen. Im Falle eines Stoßes muß dieser nach den Gesetzen des Stoßes berechnet werden.

Der Umsetzung der Aufgabenstellung liegt ein komponentenbasiertes Simulationskonzept zugrunde, wie es in [Ada 98] beschrieben wird. Das zu erstellende Modell wurde so gebildet, daß für jedes Pendel eine eigene System- und Integratorkomponente zur Berechnung der beschreibenden Differentialgleichung und den Vorgängen beim Stoß besteht. Des weiteren existieren eine Animationskomponente zur graphischen Darstellung und eine zentrale Monitorkomponente, welche die einzelnen Komponenten koordiniert. Die Komponenten können beliebig auf verschiedene Rechner im Netzwerk verteilt werden. Die Integratorkomponente, die Systemkomponente und die Animationskomponente wurden so ausgelegt, daß sie für beide Verfahren verwendet werden können. Die Monitorkomponente des konservativen Verfahrens unterscheidet sich von der des optimistischen Verfahrens.

Diese Arbeit wurde in Zusammenarbeit der Technischen Universität Graz, Institut für Mechanik, Univ. Prof. Kecskeméthy, und der Gerhard Mercator Universität, Fachgebiet Mechatronik, Univ. Prof. Hiller, in Duisburg erstellt.

2 Verteilte Simulation

In diesem Abschnitt soll eine Überblick über die Klassifizierung von Simulationen gegeben werden. Weiters wird auf die Besonderheiten, die sich aus der Verteilung und Parallelisierung einer Simulation ergeben, eingegangen. Einzelne Simulationsverfahren, wie das konservative und das optimistische Verfahren werden miteinander bezüglich ihrer Vor- und Nachteile verglichen.

2.1 Anwendungsmöglichkeiten der Simulation

Simulation ist eine wirksame Analysetechnik, welche auf vielen Gebieten der Technik, Wirtschaft und Wissenschaften eingesetzt wird. Sie erlaubt es, Abläufe eines realen Systems anhand eines vereinfachten Modells zu untersuchen. Gründe für das Ersetzen eines realen Experiments durch eine Simulation sind unter anderem:

- Die Kosten des Experiments übersteigen die der Simulation meist bei weitem. Man denke dabei nur an aufwendige Crashexperimente, wo pro Experiment ein Kraftfahrzeug investiert werden muß.
- Der Druck des Marktes erfordert immer kürzere Entwicklungszeiten. Simulation kann ein Weg sein, die Anzahl der notwendigen Prototypen zu reduzieren, um so das Produkt schneller am Markt zu positionieren.
- Das Testen mehrerer Varianten zur Reduzierung von Kosten kann bei Produkten, welche nur einmal erstellt werden, nicht angewendet werden. Zum Beispiel macht es wenig Sinn, ein Gebäude zweimal zu bauen, um herauszufinden, welches das günstigere gewesen wäre.

Die Leistungsfähigkeit moderner Rechner ermöglicht es, immer komplexere Modelle mit immer höherer Genauigkeit zu simulieren. Trotzdem ergeben sich auch mit leistungsstarken Prozessoren bei Simulationen, wo eine Vielzahl von Differentialgleichungen und algebraischen Gleichungen gelöst werden müssen, oft unerwünscht hohe Rechenzeiten. Der Begriff der Echtzeitsimulation, bei welcher die Rechenzeit mit der tatsächlich simulierten Zeitspanne übereinstimmt, sei in diesem Zusammenhang genannt. Echtzeitsimulationen sind zum Beispiel dort notwendig, wo eine real existierende Komponente, wie ein Regler oder eine Überwachungseinheit, mit einer am Rechner simulierten Umgebung auf dessen Funktionsfähigkeit geprüft werden soll. In diesem Fall spricht man auch von einer Hardware-in-the-Loop- Simulation. Kürzere Rechenzeiten werden aber auch vom Benutzern anderer Anwendungen verlangt, die mit der Simulationsumgebung rationell arbeiten wollen.

Möglichkeiten zur Reduzierung von Rechenzeit gibt es sowohl auf programmtechnischer als auch auf hardware- Ebene. Das Entwickeln schnellerer Algorithmen oder das Verwenden besserer, meist hardwarebezogenerer Compiler, gehören zum Bereich der programmtechnischen Möglichkeiten. Leistungsfähigere Prozessoren, schnellere Speicher und bessere Bussysteme reduzieren die Rechenzeit ebenfalls und zählen zu den Möglichkeiten auf hardware-Ebene.

Um Rechenzeit zu reduzieren, wäre ein weiterer Ansatz, die Leistungsfähigkeit mehrerer Prozessoren für die Bewältigung einer Simulationsaufgabe zu nutzen. Eine Möglichkeit dazu ist es, rechenintensive Hilfsfunktionen, wie zum Beispiel das Generieren gut verteilter Zufallszahlen, oder die Berechnung von Fließkommaoperationen auf eigene Prozessoren auszulagern. Das Konzept wurde zum Beispiel bei den Prozessoren INTEL 8086 bis INTEL 80386 verwirklicht. Bei diesen Prozessoren ist es möglich, ihnen einen Hilfsprozessor für Fließkommaoperationen zur Seite zu stellen. In den folgenden Prozessoren dieser Serie, von 80486 aufwärts, wurden die Funktionen des Hilfsprozessors bereits im Hauptprozessor integriert. Das im nächsten Abschnitt vorgestellte Verfahren der Parallelisierung geht einen bedeutenden Schritt weiter. Da es auch in dieser Arbeit angewendet wird, soll darauf etwas genauer eingegangen werden.

2.2 Parallelisierung und Verteilung

2.2.1 Verteilung

Grundgedanke der Verteilung ist es, die Funktionalität in Komponenten zu kapseln. Das Aufteilen in klar definierte Einheiten steigert dabei die Übersichtlichkeit. Jeder Komponente wird eine bestimmte, klar definierte Aufgabe übertragen. Die Komponente empfängt Daten als Eingangsgrößen, verarbeitet sie und stellt anschließend von ihr berechnete Daten anderen Komponenten zu Verfügung.

Bei dem in dieser Arbeit verwendeten Verfahren, wo CORBA als Middleware eingesetzt wird, können Komponenten genutzt werden, ohne daß sich der Anwender über deren internen Aufbau Gedanken machen muß. Ist ihm bekannt welche Eingangsgrößen die Komponente verlangt und welche Ausgangsgrößen sie daraus errechnet, so kann er sie nutzen. Bei einer CORBA-Anwendung kann die Komponente bereits in kompilierter Form vorliegen. Nur der Code der Schnittstelle, eine Datei welche die Ein- und Ausgangsgrößen festlegt, muß dem Anwender bekannt sein. Dabei wird klar, daß auch Komponenten, welche in unterschiedlichen Programmiersprachen programmiert wurden, zusammenwirken können.

2.2.2 Parallelisierung

Eine Parallelisierung liegt vor, wenn die Prozesse gleichzeitig abgearbeitet werden. Geht man von einem System mit den Komponenten Ki (i=1...k) aus und laufen in jeder Komponente die zugehörigen logischen Prozesse LPi,j (j=1...p), so müssen zwei Arten der Parallelisierung unterschieden werden. Die Parallelisierung kann intern in der Komponente erfolgen, wie es auch bei jeder monolithischen, nicht verteilten Anwendung möglich ist. Dabei rechnen die Prozesse einer Komponente gleichzeitig. LPi,1 bis LPi,p laufen in diesem Fall zumindest teilweise gleichzeitig ab. Der Vorgang wird entweder als Multithreading oder Multitasking, je nach Grad der Unabhängigkeit der einzelnen Prozesse bezeichnet. Im folgenden Abschnitt wird auf beide Konzepte eingegangen.

Kennzeichnend für eine Parallelisierung, wie sie bei verteilten Systemen üblich ist, ist jedoch die Tatsache, daß auch Prozesse unterschiedlicher Komponenten gleichzeitig ausgeführt werden. Verteilter Systeme sind dadurch gekennzeichnet, daß sich die Parallelisierung über Prozesse unterschiedlicher Komponenten, im allgemeinsten Fall, von LP1,1 bis LPk,p, erstreckt.

In dieser Arbeit erfolgte die Parallelisierung dadurch, daß in einer Komponente, dem Monitor, das Verfahren des Multithreadings angewandt wird. Den restlichen Komponenten ist jeweils nur ein Prozeß zugeordnet. Bei der Simulation rechnen auch Prozesse unterschiedlicher Komponenten gleichzeitig, wie es für eine Parallelisierung bei verteilten Systemen kennzeichnend ist.

Die Koordination des Ablaufes dieser Prozesse kann auf verschiedene Weise realisiert werden. Zwei Möglichkeiten dazu, das konservative Verfahren und das optimistische Verfahren, werden in dieser Arbeit vorgestellt.

2.2.3 Multitasking und Multithreading

Beide Konzepte, das Multitasking und das Multithreading, bieten die Möglichkeit der Parallelisierung mehrerer Programme auf einem Rechner. Da beide Konzepte in dieser Arbeit verwendet wurden, soll auf sie kurz eingegangen werden.

Als Task bezeichnet man ein ausführbares Programm, welches vom Anwender oder von einem anderen Programm gestartet wird. Multitasking-fähige Betriebssysteme bieten nun die Möglichkeit, mehrere solche Tasks parallel auszuführen. Windows 95 und Windows NT geht dabei folgendermaßen vor: Jedem Task wird eine gewisse Anzahl von Zeittakten zugeteilt. Daraus ergibt sich eine Zeitscheibe, welche die Zuteilung der Prozessorzeit regelt. Nach Ablauf der zugeteilten Prozessorzeit wird der laufende Prozeß vom Betriebssystem gestoppt, alle notwendigen Informationen werden abgelegt, und der nächste anstehende Prozeß wird in den Speicher geladen. Das Verfahren des Multitaskings kommt zum Beispiel immer dann zur Anwendung, wenn mehrere Komponenten auf einem Rechner gestartet werden. Im Simulationsversuch von Abschnitt 7 wird jeweils eine Systemkomponente und eine Integratorkomponente auf einem Rechner gestartet. Das Zeitscheibenverfahren teilt nun den Prozessen der beiden Komponenten ihren Anteil an der Prozessorzeit zu.

Multithreading erlaubt es, einen Prozeß in Threads aufzuteilen. Beim herkömmlichen Programmablauf ohne der Verwendung von Threads wird nach Aufruf eines Unterprogrammes solange gewartet, bis das Unterprogramm abgearbeitet worden ist. Erst anschließend wird der Programmablauf mit dem nächsten Befehl des aufrufenden Programmes fortgesetzt. Durch die Verwendung von Threads ist es möglich, mehrere Unterprogramme parallel zu starten. Jedem Thread kann dabei eine unterschiedliche Priorität zugeteilt werden. Dadurch ist es im Programm zum Beispiel möglich, Tätigkeiten von geringerer Wichtigkeit auf Zeiten zu verlegen, in denen der Anwender keine Eingaben macht. Die Eingabe des Anwenders kann ohne Behinderung erfolgen.

Ein wesentlicher Unterschied von Multitasking und Multithreading liegt geringeren Grad der Unabhängigkeit, welchen die Threads gegenüber den Prozessen haben. Während zum Beispiel jedem Prozeß sein eigener Adressenraum zugeteilt wird, benutzen alle Threads eines Prozesses den gleichen Adressenraum. Für eine detailliertere Darstellung der Vorgänge sei auf [Tan 95] und [Bur 93] verwiesen. [Bac 98] geht auf die Realisierung Multitasking-fähiger und Multithreading-fähiger Programme mit Windows 95 und Windows NT näher ein.

2.3 Vorgehensweise

Die folgende Aufzählung soll die notwendigen Schritte für die Realisierung einer verteilten Anwendung aufzeigen.

1) Festlegen der einzelnen Komponenten

Die Komponenten sollten so gewählt werden, daß sie einerseits nicht zu komplex sind und andererseits die Kommunikation zwischen den Komponenten nicht zu aufwendig wird. Üblicherweise ist es so, daß je einfacher die Komponenten gewählt werden, um so geringer ist die Rechenzeit für einen einzelnen Rechenschritt. Andererseits steigt jedoch die Menge der auszutauschenden Daten zwischen den Einheiten und somit auch die Zeit, die für Kommunikation benötigt wird. Die Anzahl der zur Verfügung stehenden Prozessoren kann auch eine Basis für eine sinnvolle Unterteilung bilden. Bei voneinander stark abhängigen Komponenten kann es aber durchaus sinnvoll sein, sie einem gemeinsamen Prozessor zuzuordnen. Bei vielen Modellen, wie auch bei dem später behandelten mechanischen System, bieten die mechanischen Einheiten eine gute Grundlage für die am Rechner modellierten Komponenten.

2) Definition der Schnittstellen

Die Prozesse der Komponenten müssen in der Lage sein, über ein geeignetes Kommunikationsmedium Daten untereinander auszutauschen. In Abschnitt 5 wird ein solches Kommunikationsmedium, in diesem Fall CORBA, vorgestellt. Welche Daten das sind, und wie sie ausgetauscht werden, wird über die Schnittstellendefinition festgelegt. Dazu wird ein in einer Schnittstellendefinitionssprache verfaßter Code benötigt, welcher als Schnittstelle bezeichnet wird. Dieser Code wird für alle Komponenten, welche miteinander kommunizieren wollen, in die der Komponenten entsprechenden Programmiersprache mittels eines Schnittstellencompilers umgesetzt. Der Schnittstellencompiler erstellt dabei nicht ein lauffähiges Programm, sondern Quellcode in der Programmiersprache der gewünschten Komponente. Den Vorgang bezeichnet man als Schnittstellenmapping. Dieser Code kann von der entsprechenden Komponente eingebunden werden.

3) Implementierung der einzelnen Komponenten

Nach dem Einbinden des vom Schnittstellencompilers in der gewünschten Programmiersprache erstellten Codes ist es möglich, das gesamte Programm in dieser Sprache fertigzustellen. Der Programmierer muß sich dafür nicht mit dem vom Schnittstellencompiler erstellten Code befassen. Es genügt, wenn er die Schnittstellendefinition kennt und weiß, welche Methoden sich daraus für die Implementierung ergeben.

2.4 Festlegung wichtiger Begriffe

2.4.1 Die Begriffe Simulationszeit und Rechenzeit

Die Simulationszeit t gibt an, welcher Zeitpunkt der Simulation gerade betrachtet wird. Sollen zum Beispiel die Wetterveränderungen eines Tages simuliert werden, dann könnte der Simulationszeitpunkt des Sonnenaufganges mit tSonnenaufgang=7h festgelegt werden. Davon zu unterscheiden ist die Rechenzeit T. Sie gibt an, wie lange der Computer benötigt, um zu einem bestimmten Simulationszeitpunkt zu gelangen. Die Rechenzeit hängt also von der Geschwindigkeit des verwendeten Computersystems ab. Braucht das System für die gesamte Simulation drei Sekunden, so gilt, daß Tgesamt=3s ist. Die Rechenzeit bis zum Sonnenaufgang könnte bei TSonnenaufgang=1s liegen.

Es soll vereinbart werden, daß es sich bei Zeiten, welche mit kleinem t bezeichnet werden, immer um die Angabe einer Simulationszeit handelt. Bei Zeiten, welche mit großem T bezeichnet werden, handelt es sich um Rechenzeiten.

2.4.2 Die Begriffe Zustand und Ereignis

Unter dem Zustand Abbildung in dieser Leseprobe nicht enthalten eines Systems versteht man die Gesamtheit aller zum Simulationszeitpunkt Abbildung in dieser Leseprobe nicht enthalten gehörenden Werte, welche das simulierte System so beschreiben, daß die Simulation von diesem Simulationszeitpunkt ohne Kenntnis vorheriger Werte fortgesetzt werden kann. Im Falle eines mechanischen Systems kann Abbildung in dieser Leseprobe nicht enthalten durch Positionen und Geschwindigkeiten angegeben werden. Die Schreibweise Abbildung in dieser Leseprobe nicht enthalten legt fest, daß der Zustand nach dem m-ten Rechenschritt betrachtet werden soll. Bei einfacher Vorwärtsintegration, wie sie in dieser Arbeit verwendet wurde, soll

Abbildung in dieser Leseprobe nicht enthalten

gelten. Dabei steht Abbildung in dieser Leseprobe nicht enthaltenfür die Schrittweite und Abbildung in dieser Leseprobe nicht enthaltenfür den Startzeitpunkt.

Die zu Abbildung in dieser Leseprobe nicht enthaltengehörenden Werte können nun den einzelnen Komponenten zugeordnet werden. Es soll für die folgenden Betrachtungen festgelegt werden, daß Abbildung in dieser Leseprobe nicht enthalten eine Matrix mit den Werten Abbildung in dieser Leseprobe nicht enthalten ist, wobei i den Bezug zur Komponente Ki herstellt und j ein laufender Index für die einzelnen Werte der Komponente darstellt. Er soll die Werte von 1 bis w der Maximalanzahl der Zustandswerte, die eine Komponente besitzt, annehmen können. Für Komponenten, die weniger als w Zustandswerte beinhalten, sollen die restlichen Werte auf 0 gesetzt werden. Komponenten welche keine Zustandswerte besitzen werden nicht in die Matrix aufgenommen. Das Zusammenfassen der Zustandswerte in Matrix-Form erscheint sinnvoll, wenn sich die Komponenten einer Anwendung ähnlich sind. Ist dies nicht der Fall so wird der Zustand über einen Spaltenvektor, welcher die Zustandswerte aller Komponenten aufnimmt, festgelegt.

Für die weiteren Betrachtungen sollen die Spaltenvektorn Abbildung in dieser Leseprobe nicht enthaltennur die der Komponente Ki zugeordneten Werte aufnehmen. Mit dieser Vereinbarung sollAbbildung in dieser Leseprobe nicht enthaltenals

Abbildung in dieser Leseprobe nicht enthalten

angeschrieben werden.

Bei den Ereignissen muß zwischen Zustandsereignissen und Zeitereignissen unterschieden werden. Ein Ereignis, das vom Zustand des Systems abhängt, wird Zustandsereignis genannt. Zur Bestimmung eines Zustandsereignisses können dabei alle bekannten Zustandswerte herangezogen werden. Hängt ein Ereignis nicht vom Zustand des Systems ab, sondern von einer vorgegebenen Simulationszeit, so nennt man dieses Ereignis Zeitereignis. Da der Zeitpunkt im voraus bekannt ist, läßt sich ein Zeitereignis wesentlich effizienter behandeln als ein Zustandsereignis. Durch das Auswerten eines Ereignisses können unterschiedliche Aktionen gesetzt werden. Das Ausgeben von Daten und das Ändern von Zustandswerten soll im folgenden behandelt werden.

Ereignisse ei,j,n werden so indiziert, daß der Index i für die Komponente, die es erzeugt und j für die Komponente, für die das Ereignis bestimmt ist, stehen. Der Index n gibt als fortlaufender Index an, um das wievielte Ereignis der Komponente Ki es sich handelt. Der mit dem Ereignis verbundene Simulationszeitpunkt soll als Zeitstempel t*i,j,n festgelegt werden. Die Ereignisse ei,j,n einer Komponente Ki können also über den Index n nach ihren Zeitstempeln geordnet werden.

2.5 Zeitdiskrete Simulationen

Kennzeichnend für zeitdiskrete Systeme ist, daß sich der neue Zustand als Funktion des vorherigen über die Gleichung

Abbildung in dieser Leseprobe nicht enthalten

bestimmen läßt. Das Voranschreiten der Zeit erfolgt sprunghaft. Der gesamte Simulationsablauf beschränkt sich auf das Generieren, das Übermitteln und das Auswerten von Ereignissen. Dafür wird für jede Komponente Ki eine Ereignisliste ELi angelegt. Die Aufgaben der logischen Prozesse LPi,j, welche der Komponente Ki zugeordnet sind, können in drei Bereiche aufgeteilt werden. Die Verwendung von x anstelle von j bei der Indizierung der Ereignisse, soll darauf hindeuten, daß jede beliebige Komponente, auch die Komponente Ki, selbst, im System damit gemeint sein kann. Schließlich ist es ja auch denkbar, daß ein Komponente Ereignisse für sich selbst generiert.

- Entgegennehmen aller Ereignisse ex,i,n, und Eintragung in die ELi

- Auswertung der ex,i,n und Generierung der ei,x,n für sich selbst und die übrigen Komponenten. Nach der Auswertung werden die ex,i,n aus der ELi gestrichen.

Die LPi,j werten ein Ereignis ex,i,n mit dem Zeitstempel t*x,i,n aus. Dadurch wird der Zustandsvektor Abbildung in dieser Leseprobe nicht enthaltender Komponente Ki berechnet. Der Vorgang entspricht der oben abgeführten Gleichung. Auf Grund des geänderten Zustandsvektors müssen die LPi,j in der Lage sein, zu erkennen, welche neuen Zustandsereignisse ei,x,n zu generieren sind.

- Übermittlung der ei,x,n, für die gilt (x¬i) an die übrigen Komponenten und Eintragung der ei,i,n in die eigene ELi

Um die Ergebnisse einer Simulation dem Anwender sichtbar zu machen, muß der Zustand der einzelnen Komponenten ausgegeben werden. Um dies zu tun, gibt es zwei verschieden Konzepte, welche als zeitgesteuerte und als zustandsgesteuerte Datenausgabe bezeichnet werden.

2.5.1 Zeitgesteuerte Datenausgabe

Bei der zeitgesteuerten Datenausgabe wird in festgesetzten zeitlichen Abständen Abbildung in dieser Leseprobe nicht enthalten ein Zeitereignis ezj,n mit dem Zeitstempel tz*j,n=tz*j,n-1+Abbildung in dieser Leseprobe nicht enthaltenund dem Auftrag den Zustandsvektor Abbildung in dieser Leseprobe nicht enthalten auszugeben, ausgewertet. Es gilt deshalb Abbildung in dieser Leseprobe nicht enthalten,wobei gilt tmax=max{ti,j,n*| ti,j,n*<tz*}. Da schon zu Beginn der Simulation alle diese Zeitereignisse feststehen, können sie auch schon zu Beginn in die entsprechende ELi eingetragen werden. Die Ereignisse werden also nicht von einer anderen Komponente generiert, weshalb auch kein Index für die generierende Komponente vorgesehen ist. Der Anwender bekommt durch dieses Verfahren die Folge von Zuständen Abbildung in dieser Leseprobe nicht enthalten ausgegeben.

2.5.2 Zustandsgesteuerte Datenausgabe

Bei der zustandsgesteuerten Datenausgabe werden bei der Auswertung bestimmter, vom Anwender festgesetzter Zustandsereignisse die Zustandswerte ausgegeben. Es gibt also keine gesonderten Zeitereignisse für die Ausgabe des Zustandes der Komponente. Die LPi,j der Komponente Ki legen über einen geeigneten Selektionsprozeß fest, nach welchen Ereignissen eine Ausgabe erfolgen soll. Der Vorteil solch eines Verfahren ist es, daß keine Daten für Totzeiten, daß sind Zeiten wo kein einziges Ereignis stattfindet, ausgegeben werden.

Natürlich ist auch eine Kombination beider Verfahren möglich. In dieser Arbeit wird eine zeitgesteuerte Datenausgabe verwendet.

2.6 Zeitkontinuierliche Simulationen

Zeitkontinuierliche Simulationen sind dadurch gekennzeichnet, daß sie versuchen, eine stetige Änderung des Zustandes Abbildung in dieser Leseprobe nicht enthalten durch ein geeignetes Verfahren zu simulieren. Dazu ist ein Integrationsverfahren notwendig. Das einfachste Integrationsverfahren ist das die einfache Vorwärtsintegration, welche auch Euler-Integration genannt wird. Bei diesem Verfahren kann die stetige Veränderung des Zustandes durch

Abbildung in dieser Leseprobe nicht enthalten

pro Schritt angenähert werden. Der Wert Abbildung in dieser Leseprobe nicht enthalten entspricht dabei der gewählten Schrittweite.

Alle Systeme, welche durch ein System von gewöhnlichen Differentialgleichungen[1] und algebraischen Gleichungen vollständig beschrieben werden können, wie zum Beispiel mechanische Systeme ohne Blockiervorgänge, ohne Stoßvorgänge und ohne einseitigen Bindungen können als kontinuierliche Simulation simuliert werden.

Es gibt unterschiedlich aufwendige Integrationsverfahren um kontinuierliche Simulationen durchzuführen, gemeinsam ist ihnen jedoch, daß sie alle das stetige Voranschreiten der Zeit durch endlich kleine Zeitschritte annähern.

2.6.1 Berücksichtigung von Unstetigkeitsstellen

Bei zeitkontinuierlichen Systemen ist[Abbildung in dieser Leseprobe nicht enthalten nicht] stetig. Es muß ein Weg gefunden werden die Unstetigkeitsstellen zu berücksichtigen. Eine Möglichkeit ist es, dies mittels Ereignissen zu tun. Die Auswertung dieser Ereignisses kann bei solch einem Modell Zustandswerte sprunghaft ändern. Denkbar wären auch Ereignisse, die es ermöglichen den Zustandsvektor Abbildung in dieser Leseprobe nicht enthalten in seiner Dimension zu ändern. Die Anzahl der unabhängigen Zustandswerte kann sich z.B. ändern, wenn es in einem System einseitige Bindungen gibt. Da für diese Arbeit nur das Problem der Unstetigkeitsstellen von Bedeutung ist, soll nur darauf eingegangen werden.

Dafür sollen die Funktionen Abbildung in dieser Leseprobe nicht enthalten in stetige Abschnitte [Abbildung in dieser Leseprobe nicht enthalten] aufgeteilt werden, wobei a den Simulationszeitpunkt für den Startpunkt und b den Simulationszeitpunkt für den Endpunkt des stetigen Bereichs angibt. Für Unstetigkeitsstellen soll die Indizierung [Abbildung in dieser Leseprobe nicht enthalten] für den Grenzwert vor Erreichen der Unstetigkeitsstelle (linksseitiger Grenzwert) zum Simulationszeitpunkt u und [Abbildung in dieser Leseprobe nicht enthalten] für den Grenzwert nach u (rechtsseitiger Grenzwert) festgelegt werden. Der Verlauf von Abbildung in dieser Leseprobe nicht enthalten kann nun aus den Verläufen

Abbildung in dieser Leseprobe nicht enthalten

für stetige Bereiche und

Abbildung in dieser Leseprobe nicht enthalten

für die Unstetigkeitsstellen, zusammengesetzt werden.

Bei einem kontinuierlichen System mit Ereignissen müssen die LPi,j der Komponenten also sowohl die Aufgabe der Integration in den stetigen Bereichen als auch die Aufgabe des Generieren und Auswerten von Ereignissen bei Unstetigkeitsstellen erfüllen.

2.6.2 Datenausgabe

Die Datenausgabe wird bei kontinuierlichen Systemen üblicherweise in festgesetzten Zeitschritten, ausgelöst durch Zeitereignisse, wie sie schon bei den diskreten Simulationen erläutert wurden, erfolgen.

2.7 Unterschiedliche Simulationsverfahren

Um die beiden im folgenden vorgestellten Simulationsverfahren unterscheiden zu können, ist es notwendig, zuerst die Begriffe Kausalordnung, konservativ und Garantie zu erörtern. Die Begriffe sollen zuerst anhand diskreter Systeme erörtert werden.

2.7.1 Die Begriffe Kausalität, Kausalordnung und Konservativ

Unter Kausalität versteht man, daß das Auswerten der Ereignisse in der Folge entsprechender Zustandsänderungen erfolgt. Diese Zustandsänderungen bewirkt wiederum neue Ereignisse, welche mit einem Zeitstempel versehen, in eine neue Reihenfolge eingegliedert werden. Diese Reihenfolge bezeichnet man als Kausalordnung. Ein Verfahren, welches diese Kausalordnung nie verletzt, wird als konservativ bezeichnet.

2.7.2 Zeitdiskrete konservative Simulationen

Bei Systemen wo eine Abhängigkeit zwischen den Komponenten besteht, gibt es die Möglichkeit, über die Vergabe von Garantien einen konservativen Verlauf für die Simulation sicherzustellen. Dafür soll der Begriff der Garantie genauer erörtert werden.

Jedes System ist dadurch gekennzeichnet, daß man Abhängigkeiten zwischen den Komponenten festlegen kann. Eine Abhängigkeit ai,j entsteht dann, wenn es während der Gesamtzeit der Simulation nicht auszuschließen ist, daß die Komponente Ki für die Komponente Kj ein Ereignis erzeugt. Es soll dabei ai,j=1 gelten, wenn eine Abhängigkeit besteht, und ai,j=0 wenn dies nicht der Fall ist.

In der laufenden Simulation besteht die Aufgabe jeder Komponente darin, die Ereignisse ihrer Ereignisliste auszuwerten. Dafür muß es der Komponente beim konservativen Verfahren möglich sein, zu entscheiden, ob das Auswerten eines Ereignisses eine Verletzung der Kausalordnung bedeuten könnte oder nicht. Ein Ereignis darf nur dann ausgewertet werden, wenn die Möglichkeit, daß die Komponente im Lauf der weiteren Simulation ein Ereignis mit kleinerem Zeitstempel auswerten müßte, ausgeschlossen werden kann.

Unter einer Garantie gi,j,n versteht man die Zusicherung einer Komponente Ki an die Komponente Kj, bis zum garantierten Zeitpunkt, dem Wert von gi,j,n, im Verlauf der gesamten Simulation kein Ereignis zu übermitteln. Der Index n ist fortlaufend, da sich der Wert während der Simulation laufend ändert. Die Komponente Kj kann nun die Entscheidung, ob sie ein Ereignis ei,j,n auswerten darf oder nicht, wie folgt vornehmen.

1. Erfrage den aktuellen Wert für gi,j,n bei den Komponenten Ki für die gilt ai,j=1.
2. Finde den kleinsten dieser Werte. Er soll als gmin,j,n bezeichnet werden.
3. Suche das Ereignis mit dem niedrigsten Zeitstempel der ELj , emini,j,n.
4. Vergleiche den Zeitstempel t*mini,j,n des Ereignisses emini,j,n mit dem Wert gmin,j,n. Gilt t*mini,j,n×gmin,j,n, so darf das Ereignis ausgewertet werden.

Wird dieses Verfahren bei jeder Komponente implementiert, so kann ein konservatives Simulationsverfahren sichergestellt werden.

2.7.3 Kontinuierliche konservative Simulationen

Für kontinuierliche Simulationen mit Ereignissen muß der Begriff der Kausalordnung in der Weise erweitert werden, daß nicht nur alle Ereignisse im Sinne der für diskrete Systeme gemachten Festlegung abgearbeitet werden, sondern auch alle zwischen den Ereignissen liegenden Integrationsschritte berücksichtigt werden müssen. Um die Kausalordnung nicht zu verletzen, muß die über die Simulationszeit vorgegebene Reihenfolge von Ereignissen und Integrationsschritten eingehalten werden.

Für einen konservativen Simulationsablauf gilt nun, daß auch ein Integrationsschritt, wie er in Gleichung ( 2.5 ) angegeben wird, nur durchgeführt werden darf, wenn t<gmin,j,n gilt. Für die Auswertung eines Ereignisses gilt weiterhin, daß t*i,j,n<gmin,j,n sein muß, um es auswerten zu dürfen.

2.7.4 Optimistische Simulationsverfahren

Optimistische Simulationsverfahren sind dadurch gekennzeichnet, daß entweder Ereignisse, für welche die Bedingung t*i,j,n<gmin,j,n nicht erfüllt ist, ausgewertet werden, oder daß Integrationsschritte gemäß Gleichung ( 2.5 ), für welche die Bedingung t<gmin,j,n nicht erfüllt ist, berechnet werden. Dies stellt vorerst eine Verletzung der Kausalordnung dar. Um diese Verletzung anschließend korrigieren zu können, gibt es zwei verschiedene Verfahren.

2.7.4.1 Verfahren der Antiereignisse

Dieses Verfahren kann nur bei diskreten Simulationen verwendet werden. Es ist in der Lage für jedes auszuwertende Ereignis ei,j,n ein sogenanntes Antiereignis eai,j,n mit Zeitstempel ta*i,j,n = t*i,j,n , welches die von ei,j,n bewirkte Veränderung des Zustandes Abbildung in dieser Leseprobe nicht enthalten wieder rückgängig macht, zu generieren. Dabei muß bedacht werden, daß durch die Auswertung von ei,j,n auch eventuell weitere Ereignisse generiert und übermittelt werden können. War dies der Fall, so müssen bei der Auswertung von eai,j,n auch die entsprechenden Antiereignisse generiert und übermittelt werden. Dadurch ergibt sich, daß sich in den Ereignislisten der Komponenten sowohl Ereignisse als auch Antiereignisse befinden können.

Bei jeder Komponente Kj wird neben ELj eine weitere Liste EL´j angelegt. Wird ein Ereignis ei,j,n von Kj ausgewertet, so wird es von der ELj gestrichen und in die El´j als e´i,j,n mit Zeitstempel t*´i,j,n =t*i,j,n eingetragen. Antiereignisse werden in der selben Weise behandelt.

Die einzelne Komponente wertet nun die Ereignisse ei,j,n bzw. eai,j,n entweder strikt in der Reihenfolge wie sie auf der ELj eingetragen sind aus, oder sie sucht zuerst nach dem Ereignis mit dem kleinsten Zeitstempel in ihre ELj, entsprechend dem konservativen Verfahren. Es soll angenommen werden, daß das Ereignis eakti,j,n mit Zeitstempel takt*i,j,n ausgewertet werden soll. Dafür kann die Komponente Kj folgendermaßen vorgehen:

1. Stelle fest, ob es Ereignisse oder Antiereignisse der EL´j gibt, dessen Zeitstempel kleiner als takt*i,j,n sind. In diesem Fall, generiere für alle diese Ereignisse ei,j,n die entsprechenden Antiereignisse eai,j,n und für alle Antiereignisse eai,j,n die entsprechenden Ereignisse ei,j,n. Werte diese Ereignisse und Antiereignisse aus. Als nächsten Schritt, lösche die ursprünglichen Ereignisse und Antiereignisse von der EL´j und setze sie wieder auf die ELj.
2. Werte das Ereignis eakti,j,n aus, lösche es von der ELj und setze es auf die EL´j.

Soll ein Antiereignis eaakt i,j,n ausgewertet werden, so ergibt sich sinngemäß die gleiche Vorgehensweise.

2.7.4.2 Verfahren der Zustandslisten

Das Verfahren kann sowohl für diskrete als auch für kontinuierliche Simulationen angewendet werden. Für jede Komponente Kj wird bei diesem Verfahren zusätzlich zu den Listen ELj und EL´j eine Liste ZLj angelegt, in welcher der aktuelle Zustandsvektor Abbildung in dieser Leseprobe nicht enthalten gemeinsam mit dem dazugehörigen Simulationszeitpunkt t vor jedem Integrationsschritt und vor jeder Ereignisauswertung abgelegt wird. Dadurch ist es jeder Komponente möglich, zu jeden beliebigen Simulationszeitpunkt zurückzugehen, um die Simulation von dort fortzusetzen.

Ein weiterer Vorteil dieses Verfahren, welcher sich neben der Verwendbarkeit für kontinuierliche Simulationen ergibt, besteht nun darin, daß es nicht mehr notwendig ist, Antiereignisse erzeugen zu müssen.

Die Vorgehensweise einer Komponente Kj soll zuerst für diskrete Systeme dargestellt werden. Auch hier geht die Komponente so vor, daß sie die Ereignisse und Antiereignisse entweder strikt in der Reihenfolge, wie sie auf der ELj eingetragen sind, auswertet, oder daß sie zuerst in ihrer ELj nach dem Ereignis bzw. Antiereignis mit dem kleinsten Zeitstempel sucht. Es sei wieder angenommen, daß die Komponente Kj das Ereignis eakti,j,n auswerten soll. Sie wird dabei folgendermaßen vorgehen:

1. Stelle fest, ob es Ereignisse der EL´j gibt, dessen Zeitstempel kleiner als takt*i,j,n ist. Wenn dem so ist, lösche diese Ereignisse von der EL´j und setze sie wieder auf die ELj. Weiters muß die Komponente auf den Zustand Abbildung in dieser Leseprobe nicht enthalten für welchen gilt t=max{ts | ts< takt*i,j,n} zurückgesetzt werden. Alle Zustände Abbildung in dieser Leseprobe nicht enthaltenfür die gilt, t> takt*i,j,n , werden aus der ZLj gelöscht.
2. Auch bei allen von der Komponente Kj abhängigen Komponenten muß das obige Verfahren angewendet werden.
3. Werte das Ereignis eakti,j,n aus.

Für kontinuierliche Simulationen mir Ereignissen muß das Verfahren in der Weise erweitert werden, daß nach jedem Rücksetzen einer Komponente auf ein früheren Simulationszeitpunkt, auch in den durch Gleichung ( 2.5 ) beschrieben Integrationsvorgänge der Wert von t auf takt*i,j,n zurückgesetzt werden muß.

2.8 Vergleich der Verfahren anhand eines Beispiels

2.8.1 Aufgabenstellung

Es sollen zwei in der Ebene schwingenden mathematische Pendel mit gleicher Masse und gleicher Fadenlänge, simuliert werden. Die auftretenden Stöße sollen als gerade zentrale Stöße mit der Stoßzahl Abbildung in dieser Leseprobe nicht enthalten berechnet werden. Es handelt sich also um einen kontinuierliche Simulation mit Zustandsereignissen.

Das Beispiel entspricht der Simulationsumgebung wie sie in dieser Arbeit realisiert wurde, mit dem Unterschied, daß bei diesem Beispiel nur zwei gleichartige Pendel beteiligt sind. In der in dieser Arbeit realisierten Simulation können beliebig viele Pendel mit unterschiedlichen Fadenlängen und Massen berücksichtigt werden.

2.8.2 Aufteilung in Komponenten

Das Gesamtsystem besteht aus den Komponenten K2 und K3 welche jeweils einem Pendel zugeordnet sind und einer Komponente K1, die als Monitor bezeichnet wird. Die Aufgabe der Komponenten K2 und K3 besteht darin, die Eigenschaften der frei schwingenden mathematischen Pendels zu repräsentieren. K1 hat die Aufgabe, die bei Stößen erforderlichen Ereignisse zu generieren.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2.1 Komponenten des Beispiels

2.8.3 Zustandsänderungen

Der Zustand des Gesamtsystems wird durch die Winkel und die Winkelgeschwindigkeiten der beiden Pendeln repräsentiert. Die Zustandsvektoren sind durch

Abbildung in dieser Leseprobe nicht enthalten

gegeben, woraus sich der Zustand als

Abbildung in dieser Leseprobe nicht enthalten

ergibt.

2.8.3.1 Vorwärtsintegration

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2.2 Mathematisches Pendel

Für das freie Schwingen der Pendel kann die Bewegungsgleichung eines mathematische Pendels, wie es aus Abbildung 2.2 ersichtlich ist als

Abbildung in dieser Leseprobe nicht enthalten

angeschrieben werden. Die Gleichung kann in die Form,

Abbildung in dieser Leseprobe nicht enthalten

gebracht werden. Daraus ergeben sich für die Ableitung der Zustandsvektoren die Gleichungen,

Abbildung in dieser Leseprobe nicht enthalten

Mit diesen Gleichungen kann die für die stetigen Bereiche notwendige Vorwärtsintegration gemäß Gleichung ( 2.5 ), durchgeführt werden. Der Endpunkt b des Integrationsintervalls, ist durch das Auftreten eines Stoßes gekennzeichnet. Er ist zu Beginn des Intervalls nicht bekannt und wird durch ein Zustandsereignis bestimmt.

2.8.3.2 Unstetigkeitsstellen

Aus den Zustandswerten Abbildung in dieser Leseprobe nicht enthalten und Abbildung in dieser Leseprobe nicht enthalten kann die Komponente K1 erkennen, ob sie ein Zustandsereignis für die Komponenten K2 und K3 generieren muß. Dafür soll kurz auf das Stoßmodell für einen geraden zentralen Stoß mit der Stoßzahl e eingegangen werden.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2.3 Stoßablauf

Der Stoßantrieb Abbildung in dieser Leseprobe nicht enthalten zweier aufeinander prallender Massen Abbildung in dieser Leseprobe nicht enthaltenund Abbildung in dieser Leseprobe nicht enthaltenmit den Geschwindigkeiten Abbildung in dieser Leseprobe nicht enthalten und Abbildung in dieser Leseprobe nicht enthalten errechnet sich als

Abbildung in dieser Leseprobe nicht enthalten

Die Geschwindigkeiten nach dem Stoß Abbildung in dieser Leseprobe nicht enthalten und Abbildung in dieser Leseprobe nicht enthalten ergeben sich damit zu

Abbildung in dieser Leseprobe nicht enthalten

Wie oben beschrieben, werden die Unstetigkeitsstellen über die Gleichung,

Abbildung in dieser Leseprobe nicht enthalten

berücksichtigt. Dafür werden aus den Zustandswerten Abbildung in dieser Leseprobe nicht enthalten und Abbildung in dieser Leseprobe nicht enthalten , welche gleich den letzten Werten der Vorwärtsintegration vor Erkennung des Stoßes sind, die entsprechenden Geschwindigkeiten mit den Gleichungen

Abbildung in dieser Leseprobe nicht enthalten

berechnet. Die Geschwindigkeiten nach dem Stoß lassen sich speziell für gleich große Massen Abbildung in dieser Leseprobe nicht enthaltenmit den Gleichungen

Abbildung in dieser Leseprobe nicht enthalten

bestimmen. Schließlich werden die Werte für Abbildung in dieser Leseprobe nicht enthalten und Abbildung in dieser Leseprobe nicht enthalten mit den Gleichungen

Abbildung in dieser Leseprobe nicht enthalten

gefunden. Mit diesen Werten kann die Vorwärtsintegration fortgesetzt werden.

2.8.4 Konservatives Verfahren

Da K1 die Stoßereignisse für K2 und K3 generiert, ergeben sich die Abhängigkeiten a1,2=a1,3=1 und a2,1=a3,1=a2,3=a3,2=0 im System. K2 und K3 benötigen die Garantie von K1, um einen Integrationsschritt durchführen zu dürfen. Da K1 nach jedem Integrationsschritt prüfen muß, ob ein Stoßereignis für K2 und K3 generiert werden muß, kann K1 den Komponenten K2 und K3, nachdem ein Integrationsschritt geprüft wurde, nur die Garantie für einen weiteren Integrationsschritt geben. Die Simulation wird also folgendermaßen ablaufen:

1. Zuerst veranlaßt der Monitor K1 als zentrale steuernde Komponente die beiden Pendelkomponenten K2 und K3 dazu, einen Integrationsschritt durchzuführen, indem sie den Komponenten K2 und K3 die dafür notwendig Garantie übermittelt.
2. K2 und K3 führen einen Integrationsschritt gemäß Gleichung ( 2.5 ) durch.
3. K1 prüft, ob sie aufgrund der neuen Werte für Abbildung in dieser Leseprobe nicht enthalten und Abbildung in dieser Leseprobe nicht enthalten ein Stoßereignis für K2 und K3 generieren muß. Wenn dies zutrifft, tut sie das. Weiters übermittelt K1 den Komponenten K2 und K3 die notwendige Garantie, diese Ereignisse auszuwerten. K2 und K3 werten die Ereignisse aus, wodurch die Unstetigkeitsstelle gemäß Gleichung ( 2.14 ) berücksichtigt wird. Aus den beiden Werten Abbildung in dieser Leseprobe nicht enthalten und Abbildung in dieser Leseprobe nicht enthalten werden die beiden Werte Abbildung in dieser Leseprobe nicht enthalten und Abbildung in dieser Leseprobe nicht enthalten berechnet, mit welchen die Integration fortgesetzt wird.
4. Die Simulation wird mit dem nächsten Integrationsschritt fortgesetzt.

Wesentlich beim konservativen Verfahren ist, daß die Komponenten K2 und K3 zwischen den Kollisionsprüfungen des Monitors K1 immer nur einen Berechnungsschritt durchführen können. Jeder weitere Berechnungsschritt ist nicht garantiert, da das Ereignis eines Stoßes dazwischen liegen könnte.

Es sei nun angenommen, daß sich alle drei Komponenten auf unterschiedlichen Rechnern in einem verteilten, parallelisierten System laufen. Der Komponente K3 sei ein schneller Rechner als der Komponente K2 zugeteilt.

Für die Auslastung der Prozessoren der Komponenten K2 und K3 wird sich ein Bild, wie in Abbildung 2.4 schematisch dargestellt, ergeben.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2.4 Prozessorauslastungen, konservatives Verfahren

T2 steht dabei für die Rechenzeit, die Komponente K2 für einen Berechnungsschritt benötigt. Für T3 gilt sinngemäß das Gleiche. T1 steht für die Rechenzeit, die der Monitor für die Stoßüberprüfung und gegebenenfalls für die Ereignisgenerierung und Übermittlung benötigt. Die Tatsache, daß die Rechenzeiten für Integrationsschritte, wo ein Stoß berechnet werden muß, höher sind, wurde in der Darstellung und auch im noch folgenden Beispiel vernachlässigt.

2.8.5 Optimistisches Verfahren

Da es sich um eine kontinuierliche Simulation mit Ereignissen handelt, soll es mittels Zustandslisten ermöglicht werden, die beim optimistischen Verfahren auftretenden Verletzungen in der Kausalordnung zu korrigieren. Dafür wird für die Komponente K2 die Liste ZL2 und für die Komponente K3 die Liste ZL3 angelegt. In diesen Listen werden die Zustandswerte der Komponenten gemeinsam mit dem zugehörigen Simulationszeitpunkt abgelegt. Dadurch ist es möglich, nach Erkennung einer Verletzung in der Kausalordnung zum letzten Simulationszeitpunkt vor der Kausalordnungsverletzung zurückzugehen.

Ein optimistisches Verfahren für das obige Beispiel kann folgendermaßen umgesetzt werden:

1. Die Komponenten K2 und K3 integrieren ohne zu warten, so schnell sie können, und tragen ihre Ergebnisse in ihre Zustandsliste ein. Dabei wird die Komponente K3, der ein schnellerer Rechner zugeteilt ist, ihre Zustandsliste schneller beschreiben als K2.
2. Die Komponente K1 kann nun ZL2 und ZL3 auslesen und prüfen, ob sich Kollisionen ergeben haben. Ist dies der Fall, werden die Stöße von K1 erkannt und berechnet. Bei dieser Berechnung werden aus den beiden Werten Abbildung in dieser Leseprobe nicht enthalten und Abbildung in dieser Leseprobe nicht enthalten die beiden Werte Abbildung in dieser Leseprobe nicht enthalten und Abbildung in dieser Leseprobe nicht enthalten berechnet. K1 generiert für K2 und K3 je ein Ereignis.
3. Die Auswertung dieser Ereignisse bewirkt, daß die Integration mit den Werten Abbildung in dieser Leseprobe nicht enthalten und Abbildung in dieser Leseprobe nicht enthalten, als Startwerte, von jenem Simulationszeitpunkt wo der Stoß erkannt wurde, fortgesetzt wird. Die beiden Komponenten werden dazu gebracht, ihre Zustandslisten ab diesem Simulationszeitpunkt zu löschen und neu zu beschreiben.

Man erkennt den etwas größeren Aufwand im Vergleich zum konservativen Verfahren. Der Vorteil besteht in der besseren zeitlichen Verteilung der Auslastung der einzelnen Prozessoren, wie es in Abbildung 2.5 dargestellt ist.

[...]


[1] Als Differentialgleichungen sollen hier solche gemeint sein, welche Ableitungen nach der Zeit beinhalten.

Details

Seiten
81
Jahr
1999
ISBN (eBook)
9783638101264
Dateigröße
694 KB
Sprache
Deutsch
Katalognummer
v170
Institution / Hochschule
Technische Universität Graz – Institut für Mechanik
Note
1
Schlagworte
Simulation CORBA Mechanik mechanische Systeme

Autor

Teilen

Zurück

Titel: Vergleich konservativer und optimistischer Verfahren bei der verteilten Simulation mechanischer Systeme mittels CORBA