10. Kapitel
2D-Systeme gekoppelter Differentialgleichungen
Große Verbünde von Differentialgleichungen
Punktuell befestigte Netze oder Gewebe
Das Netz als eine 2D-Anordnung von Feder-Masse-Systemen ist der typische Anwendungsfall für 2D-Systeme gekoppelter Differentialgleichungen. Als Grundlage für textile Objekte ist das Netz in der Spielewelt unverzichtbar. Gibt es ein solches Netz, kann mittels geeigneter images ein textiler Stoff nachgebildet werden.Vom Seil zum Netz ist es nur ein kleiner Schritt. Ein Netz kann aus parallelen Seilen, deren Knoten zusätzlich horizontal durch Federn verbunden sind, zusammengesetzt werden ().

Abb. a) Struktur

Abb. b) und Detail eines Netzes
Aus den Kraftgleichungen bis des Seils werden nun die Gleichungen a) und b) des Netzes:
Achtung!
Wird die Formel nicht angezeigt, dann bitte die Browser-Daten löschen!
Achtung!
Wird die Formel nicht angezeigt, dann bitte die Browser-Daten löschen!
Da es nun im Netz K · N Knoten gibt, müssen auch K · N Differenzialgleichungen gelöst werden. Dies erfolgt, indem zwei Schleifen zu durchlaufen sind. In der äußeren Schleife mit dem Index n werden die "Seile" angesprochen und in der inneren mit dem Index k die einzelnen Knoten ().
Abb. Listing Berechnung der Gradientenfunktion
Mehr noch als beim Seil ist den Knoten, die sich am Rande des Netzes befinden, Aufmerksamkeit zu schenken. Weil es die unterschiedlichsten Befestigungspunkte des Netzes geben kann (z.B. Tuch an Wäscheleine, Fahne an Fahnenstange, fliegendes Netz usw.) wäre es sinnlos, alle Randknoten fest zu Programmieren. Ich habe eine Methode gewählt, die die Eigenschaften jedes Knoten in einer zum Netz deckungsgleichen Matrix definiert ():

Abb. Festlegung von Knotenpositionen
darin bedeuten:
| Bezeichner | Knotentyp | Bedeutung |
| 'f': | fix (fixierter Knoten) | Befestigung, Geschwindigkeitskomponenten sind gleich Null |
| 'm': | middle (mittlerer Knoten) | Kräfte greifen allseitig an |
| 't': | top (oberer Knoten) | keine Krafteinwirkung von oben |
| 'b': | bottom (unterer Knoten) | keine Krafteinwirkung von unten |
| 'l': | left (linker Knoten) | keine Krafteinwirkung von links |
| 'r': | right (rechter Knoten) | keine Krafteinwirkung von rechts |
| '1': | linke, obere Ecke | keine Krafteinwirkung von oben und links |
| '2': | rechte, obere Ecke | keine Krafteinwirkung von oben und rechts |
| '3': | rechte, untere Ecke | keine Krafteinwirkung von unten und rechts |
| '4': | linke, untere Ecke | keine Krafteinwirkung von unten und links |
In der Implementierung werden die jeweiligen Beschleunigungen entsprechend der in der Matrix place[K+2][N+2] festgelegten Eigenschaft über eine switch/case-Anweisung selektiv aus den Teilbeschleunigungen zusammengesetzt (). Der Sonderfall 'f' wird in einer separaten Abfrage abgehandelt, dort soll überhaupt keine Beschleunigung wirken und die Geschwindigkeitskomponenten müssen gleich Null sein.
Das Beispielprogramm zeigt ein Netz bestehend aus 10 x 10 Knoten. Jedes Segment ist im Ruhezustand 7,5 cm lang und breit.
In bekannter Weise kann die Steifigkeit der Feder-Masse-Systeme, also des Netzes, mit Hilfe der Schieberegler Eigenfrequenz f0 und Dämpfung d verändert werden. Ebenso kann die Gravitation wie gehabt zu- bzw. abgeschaltet werden. Jeder Knoten des Netzes kann mit der Maus bewegt werden. Der Button mode ermöglicht die Auswahl von drei vorprogrammierten place-Matrizen und damit unterschiedliche Gestaltungsmöglichkeiten des Netzes. Auch hier kann ein Windeinfluss geltend gemacht werden. Der Wind bläst nicht konstant, sondern nach einem vorgegebenen Rhythmus. Seine Stärke kann aber per Schieberegler verändert werden.
Ergebnisdiskussion: Ebenso wie das Seil, ist auch das Netz nur eine erste Näherung der Realität. Grund hierfür ist, dass die Federn des Systems nicht steif genug gemacht werden können. Bei zu großer Steifigkeit verliert das System an Stabilität, was bis zum völligen Zusammenbruch der Rechnung führen kann. Mit der Dämpfung kann diesem Mangel nur bedingt abgeholfen werden.
Noch ein anderes nachteiliges Phänomen kann beobachtet werden: Nach einer Deformation des Netzes kann es vorkommen, dass einige Maschen sich nicht mehr in den Ausgangszustand zurück falten. Ursache hierfür ist die Geometrie der Maschen. Eine rechteckige Masche hat zwei stabile Zustände (a) u. b)), die nur durch eine äußere Kraft, etwa die Gravitation oder eine kräftige Bewegung mit der Maus, in den natürlichen der beiden stabilen Zustände gebracht werden kann. Darum ist die Behandlung von Oberflächen mit Hilfe dreieckiger Segmente (c)), die nur einen stabilen Zustand kennen, anstelle viereckiger Segmente, sinnvoll.

Abb. Einfluss der Segmentform auf Rückbildbarkeit von Maschen
Elastische Körper
Kompressible Körper
Die folgenden Ausführungen werden wir am Beispiel eines Quaders besprechen. Bei einer 2D-Darstellung von Körper
zu sprechen ist eigentlich ein Widerspruch. Dennoch lohnt eine approximative Behandlung eines Körpers durch ein
gekoppeltes Feder-Masse-System. Wir betrachten optisch den Körper hier als
flächige Projektion auf die x-y-Ebene, also als Rechteck. Wohingegen die Elemente (Federn und
Massen) Volumen-Elemente repräsentieren, also die Eigenschaften eines
Volumen-Elements in sich vereinigen. Die mit einer Verformung verbundene Volumen-(Flächen)-Änderung wird bei der Besprechung des Quaders nicht
berücksichtigt. Anders ausgedrückt, wir behandeln hier einen kompressiblen Körper.
Im Gegensatz zu Netzen haben Körper eine Steifigkeit (der Begriff "Steifigkeit" wird auch im Zusammenhang mit ODE-Solvern verwendet, um deutlich zu machen, dass hier Lösungen von Differentialgleichungen steifer Anordnungen, z.B. Feder-Masse-Systeme gesucht werden). Diese Eigenschaft macht sich besonders dann bemerkbar, wenn die Gravitation oder andere Flächenlasten wirken.
Um solche Körper modellieren zu können genügt die Anordnung der Feder-Masse-Elemente, wie wir Sie für die Nachbildung eines Netzes verwendet haben, nicht aus. Denn die Koppelpunkte können keine Drehmomente übertragen, weil sie als Gelenke ausgeführt sind. Damit auch steife, elastische Körper nachgebildet werden können, müssen neue, stützende Verbindungen zwischen den einzelnen Knoten eingeführt werden (). Zu den schon bekannten Verbindungen zwischen den Knoten kommen neue, diagonale Verbindungen hinzu: lprevious left, lprevious right, lnext left sowie lnext-right, die ebenfalls durch Federn vermittelt werden, allerdings sind deren Ruhefederlängen um den Faktor länger als die horizontal bzw. vertikal angeordneten Federn!
Außerdem erweitern wir die Konstruktionsfähigkeit der Modelle um
Diese zusätzlichen Eigenschaften ermöglichen eine bewegliche Einspannung der Modelle am oberen Rand ('h') bzw. am rechten Rand ('v'). So können statische Effekte wie Knickung oder Stauchung untersucht werden.
Grundsätzlich ist aber zu bemerken, dass die Nachbildung eines Körpers durch diskrete Feder-Masse-Systeme immer nur eine begrenzt richtige Approximation liefern kann. Einerseits werden die verwendeten Federn als ideal angesehen, d.h. das Hooksche Gesetz gilt uneingeschränkt. Das hat Auswirkungen auf das statische Verhalten des Körpers. Andererseits werden die dynamischen Eigenschaften durch die sehr komplexen Differentialgleichungen und deren Lösung mittes ODE-Solver bestimmt. Insbesondere hier ist ein Kompromiss zwischen Genauigkeit und Rechenaufwand zu finden.
Im Gegensatz zu Netzen haben Körper eine Steifigkeit (der Begriff "Steifigkeit" wird auch im Zusammenhang mit ODE-Solvern verwendet, um deutlich zu machen, dass hier Lösungen von Differentialgleichungen steifer Anordnungen, z.B. Feder-Masse-Systeme gesucht werden). Diese Eigenschaft macht sich besonders dann bemerkbar, wenn die Gravitation oder andere Flächenlasten wirken.
Um solche Körper modellieren zu können genügt die Anordnung der Feder-Masse-Elemente, wie wir Sie für die Nachbildung eines Netzes verwendet haben, nicht aus. Denn die Koppelpunkte können keine Drehmomente übertragen, weil sie als Gelenke ausgeführt sind. Damit auch steife, elastische Körper nachgebildet werden können, müssen neue, stützende Verbindungen zwischen den einzelnen Knoten eingeführt werden (). Zu den schon bekannten Verbindungen zwischen den Knoten kommen neue, diagonale Verbindungen hinzu: lprevious left, lprevious right, lnext left sowie lnext-right, die ebenfalls durch Federn vermittelt werden, allerdings sind deren Ruhefederlängen um den Faktor länger als die horizontal bzw. vertikal angeordneten Federn!
Außerdem erweitern wir die Konstruktionsfähigkeit der Modelle um
| Bezeichner | Knotentyp | Bedeutung |
| 'h': | horizontal oben verbunden | alle Knoten werden gemeinsam in y-Richtung bewegt |
| 'v': | vertikal rechts verbunden | alle Knoten werden gemeinsam in x-Richtung bewegt |
Diese zusätzlichen Eigenschaften ermöglichen eine bewegliche Einspannung der Modelle am oberen Rand ('h') bzw. am rechten Rand ('v'). So können statische Effekte wie Knickung oder Stauchung untersucht werden.
Grundsätzlich ist aber zu bemerken, dass die Nachbildung eines Körpers durch diskrete Feder-Masse-Systeme immer nur eine begrenzt richtige Approximation liefern kann. Einerseits werden die verwendeten Federn als ideal angesehen, d.h. das Hooksche Gesetz gilt uneingeschränkt. Das hat Auswirkungen auf das statische Verhalten des Körpers. Andererseits werden die dynamischen Eigenschaften durch die sehr komplexen Differentialgleichungen und deren Lösung mittes ODE-Solver bestimmt. Insbesondere hier ist ein Kompromiss zwischen Genauigkeit und Rechenaufwand zu finden.

Abb. Maschen eines kompressiblen Quaders
Im Beispielprogramm können durch mehrfaches Anklicken des Buttons mode unterschiedliche Modelle bzw.
Einspannungen ausgewählt werden:
- dünner Balken: Feste Einspannung links, bewegliche Einspannung rechts.
- Wird der Balken einer punktuell wirkenden Kraft ausgesetzt, verformt sich der Balken punktuell, aber auch in Gänze.
- Wird der Balken von rechts (verschieben der rechten Einspannung per Maus) unter Druck gesetzt, knickt der Balken ein.
- Unter Gravitationseinfluss (Flächenlast) biegt sich der Balken wie theoretisch vorhergesagt durch.
- dünner Balken: Feste Einspannung links.
- Wird der Balken einer punktuell wirkenden Kraft ausgesetzt, verformt sich der Balken punktuell, aber auch in Gänze. Ein Verbiegen des Balkens in beliebige Richtung ist möglich. Wird der Biegeradius zu klein, sind Wulst ähnliche Kompressionen sichtbar.
- Unter Gravitationseinfluss (Flächenlast) hängt der Balken wie theoretisch vorhergesagt herab.
- Würfel: Feste Einspannung am Boden.
- Wird der Würfel einer punktuell wirkenden Kraft ausgesetzt, verformt sich der Balken punktuell, aber auch in Gänze. Ein Verbiegen des Würfels in beliebige Richtung ist begrenzt möglich
- Unter Gravitationseinfluss (Flächenlast) wird der Würfel komprimiert.
- Würfel: Feste Einspannung am Boden, bewegliche Einspannung oben.
- Der Würfel wird von oben unter Druck (Flächenlast) gesetzt, das verstärkt die Wirkung der Gravitation. Die Kompressionswirkung ist deutlich erkennbar.
- Wird der Würfel einer punktuell wirkenden Kraft ausgesetzt, verformt sich der Balken punktuell, aber auch in Gänze. Ein Scheren des Würfels nach links oder rechts ist möglich
- dicker Balken: Feste Einspannung links.
- Wird der Balken einer punktuell wirkenden Kraft ausgesetzt, verformt sich der Balken punktuell, aber auch in Gänze. Ein Verbiegen des Balkens in beliebige Richtung ist möglich
- Unter Gravitationseinfluss (Flächenlast) hängt der Balken wie theoretisch vorhergesagt herab. Wird die Gravitation wieder abgeschaltet, richtet sich der Balken wieder auf.
Ergebnisdiskussion: Alle Effekte, die aus der Statik-Lehre, wie Stauchung, Knickung oder Biegung von Balken können bei moderaten Belastungen beobachtet werden. Problematisch sind große Auslenkungen oder Belastungen, da die gemachten Voraussetzungen z.B. Geltung des HOOKschen Gesetzes nicht mehr erfüllt sind. Unter diesen Bedingungen kann es vorkommen, dass einzelne Federn sich nach "innen" einstülpen, was bei soliden Körpern nicht passieren kann.
Auch im dynamischen Verhalten kommt es bei großen Federkonstanten, d.h. hohen Eigenschwingungen, zu Instabilitäten. So kann die Simulation mit Hilfe von Feder-Masse-Systemen nur Körper aus relativ weichen Materialien (z.B. Gummi) abbilden.
Inkompressible Körper
Anders als im voran gegangenen Thema wollen wir hier die mit einer Verformung verbundene Volumen-(Flächen)-Änderung berücksichtigen. Wir behandeln am Beispiel einer Kugel
(respektive Kreis) das Verhalten eines inkompressiblen Körpers bei Verformung. D.h. eine Formänderung ist auch mit einer Volumenänderung verbunden.
Wieder erfolgt eine Approximation durch ein gekoppeltes Feder-Masse-System. Diesmal durch einen in sich geschlossenen Ring von Federn und Masseelementen sowie einem zentralen Masseelement, welches wiederum mittels Federn mit jedem einzelnen Element des äußeren Rings verbunden ist (Abb. ). Wie wir sehen können erfolgt die Approximation durch J = 6 über die gesamte Ober"fläche" gleichverteilte Masseelemente ms (surface) und einem zentralen Masseelement mc (center). Entsprechend ergeben sich die Federlängen lp (previous) und ln (next) der J Oberflächen-Federn aus den Abständen zwischen benachbarten Oberflächen-Elementen sowie den J Radial-Federn, die das zentrale Masseelement mit jedem der Oberflächen-Elemente verbindet.
Sollen nun die Bewegungsgleichungen für jedes der J + 1 Masseelemente berechnet werden, so sind dafür 2·(J + 1) Differentialgleichungen erforderlich. Wie solche Differentialgleichungen aufgestellt werden, ist ausführlich im Kapitel Das hängende Seil beschrieben worden. Deshalb verweise ich hier für weitere Details auf das beigefügte Beispielprogramm.
Was unterscheidet nun die inkompressiblen Körper von den kompressiblen? Im ersten Fall bleibt das Volumen des Körpers bei Ausübung eines Druckes unveränderlich, während im anderen Fall eine mehr oder weniger starke Volumenänderung zu verzeichnen ist. D.h. als Kriterium für eine Volumenänderung wird die Volumendifferenz zwischen unbeeinflusstem Körper V0 und unter Druck gesetzten Körper V heran gezogen:
Wie können wir die beiden Volumina aus den gegebenen Abständen der Punktmassen bestimmen? In den weiteren Betrachtungen beziehen wir uns der Einfachheit halber auf ein 2D-Modell.
Das hat zur Folge, dass wir statt der Volumina Flächen vergleichen können. So wird aus zu :
Zunächst sei noch einmal daran erinnert, dass wir die Kreis durch ein Polygon approximieren.
Mit dieser Vereinfachung können nunmehr die Flächeninhalte des Polygons gemäß berechnet werden. So stellt sich nur noch die Frage, wie sich die
Volumenänderung auf die Änderung der Abstände der nicht unter Druck gesetzten Masseelemente zum zentralen Masseelement auswirkt.
Wieder erfolgt eine Approximation durch ein gekoppeltes Feder-Masse-System. Diesmal durch einen in sich geschlossenen Ring von Federn und Masseelementen sowie einem zentralen Masseelement, welches wiederum mittels Federn mit jedem einzelnen Element des äußeren Rings verbunden ist (Abb. ). Wie wir sehen können erfolgt die Approximation durch J = 6 über die gesamte Ober"fläche" gleichverteilte Masseelemente ms (surface) und einem zentralen Masseelement mc (center). Entsprechend ergeben sich die Federlängen lp (previous) und ln (next) der J Oberflächen-Federn aus den Abständen zwischen benachbarten Oberflächen-Elementen sowie den J Radial-Federn, die das zentrale Masseelement mit jedem der Oberflächen-Elemente verbindet.
Sollen nun die Bewegungsgleichungen für jedes der J + 1 Masseelemente berechnet werden, so sind dafür 2·(J + 1) Differentialgleichungen erforderlich. Wie solche Differentialgleichungen aufgestellt werden, ist ausführlich im Kapitel Das hängende Seil beschrieben worden. Deshalb verweise ich hier für weitere Details auf das beigefügte Beispielprogramm.
Was unterscheidet nun die inkompressiblen Körper von den kompressiblen? Im ersten Fall bleibt das Volumen des Körpers bei Ausübung eines Druckes unveränderlich, während im anderen Fall eine mehr oder weniger starke Volumenänderung zu verzeichnen ist. D.h. als Kriterium für eine Volumenänderung wird die Volumendifferenz zwischen unbeeinflusstem Körper V0 und unter Druck gesetzten Körper V heran gezogen:
Achtung!
Wird die Formel nicht angezeigt, dann bitte die Browser-Daten löschen!
Achtung!
Wird die Formel nicht angezeigt, dann bitte die Browser-Daten löschen!

Abb. Maschen einer inkompressiblen Kugel
Achtung!
Wird die Formel nicht angezeigt, dann bitte die Browser-Daten löschen!
Achtung!
Wird die Formel nicht angezeigt, dann bitte die Browser-Daten löschen!
Achtung!
Wird die Formel nicht angezeigt, dann bitte die Browser-Daten löschen!
Achtung!
Wird die Formel nicht angezeigt, dann bitte die Browser-Daten löschen!
Wie können wir dem begegnen? Die hier vorgschlagene Lösung stammt aus der Regelungstechnik. Wir verwenden das Prinzip des Integralreglers in einer digitalen Regelschleife. Danach werden die Änderungen, die ja positiv wie negativ sein können, aufsummiert. Damit die Wirkung infolge der Zeitdiskretisierung nicht zu heftig ausfällt, wird die jeweils aktuelle Änderung um den dimensionslosen Faktor τ < 1 abgeschwächt in den Integrator eingespeist:
Achtung!
Wird die Formel nicht angezeigt, dann bitte die Browser-Daten löschen!
(dies ist keine Formel, sondern die Code-Anweisung für den numerischen Integrator!)
Im nebenstehenden Beispiel wird eine "Kugel" in 2D durch J = 14 äußere Masseelemente approximiert. Statt der Angaben von Federkonstante und Masse der Segmente
wird hier wieder mit dem Quadrat der Eigenfrequenz ω0 gearbeitet. Dieser Wert kann zur Simulation der Steifigkeit der Kugel mittels Schieberegler
in einem Bereich von 5.0Hz ≤ f0 ≤ 15Hz variiert werden. Ebenfalls per Schieberegler ist die Dämpfung des Systems beeinflussbar. Als Wert für die
Integrationszeitkonstante wird τ = 0,2 gewählt. Bei dieser Wahl bleibt das System stets stabil!
Mit dem Button Gravitation kann die Kugel frei schwebend oder fallend beobachtet werden. Alle Punkte auf der Oberfläche und der Mittelpunkt sind Maus aktiv, was verschiedene Szenarien der Ausübung von Druck ermöglicht. Besonders eindrucksvoll ist das Anpressen der Kugel an den Untergrund (dazu wird die Kugel als Ganzes am zentralen roten Punkt mit der Maus bewegt). In diesem Fall ist das konstant Halten des Volumens gut zu beobachten. Ein hellblauer Kreis zeigt die unveränderte Kugelform an.
Die Lösung der Gekoppelten Differentialgleichungen erfolgt wieder mit dem Leap-Frog-Algorithmus, wobei je frame I = 4 Berechnungen zwecks Steigerung der Genauigkeit erfolgen.
Mit dem Button Gravitation kann die Kugel frei schwebend oder fallend beobachtet werden. Alle Punkte auf der Oberfläche und der Mittelpunkt sind Maus aktiv, was verschiedene Szenarien der Ausübung von Druck ermöglicht. Besonders eindrucksvoll ist das Anpressen der Kugel an den Untergrund (dazu wird die Kugel als Ganzes am zentralen roten Punkt mit der Maus bewegt). In diesem Fall ist das konstant Halten des Volumens gut zu beobachten. Ein hellblauer Kreis zeigt die unveränderte Kugelform an.
Die Lösung der Gekoppelten Differentialgleichungen erfolgt wieder mit dem Leap-Frog-Algorithmus, wobei je frame I = 4 Berechnungen zwecks Steigerung der Genauigkeit erfolgen.
Zur Kontrolle werden links oben Informationen zur Deformation eingeblendet. Besondere Beachtung verdient der Vergleich der aktuellen Fläche A mit der Ruhefläche A0. Bei diesem Vergleich zeigt sich das inkompressible Verhalten des Körpers. Besonders deutlich bei eingeschalteter Gravitation zu beobachten.
Wird der Debug-Button angeschaltet, wird die Approximationsstruktur deutlich gemacht und weitere Informationen werden angezeigt.
Ergebnisdiskussion: Das Programmbeispiel zeigt, wie ein inkompressibler Körper Programm technisch dargestellt werden kann. Infolge der Zeitdiskretisierung und der Rechengenauigkeit des verwendeten Leap-Frog-Algorithmus sind der erreichbaren Steifigkeit des Feder-Masse-Systems Grenzen gesetzt. Gleiches gilt für die Integrationszeitkonstante τ, daher erfolgt die - an sich gute Volumenkonstanz - immer mit sichtbarer zeitlicher Verzögerung. So ist das Verhalten der Kugel eher einem aufgeblasenen Luftballon ähnlich, denn einer Bowling-Kugel! Auch ist der Rechenaufwand nicht unerheblich, so dass eine gleichzeitige mehrfache Nutzung dieser Lösung wohl nicht innerhalb eines Projektes möglich ist.

