Advanced Games Physics
Inhaltsverzeichnis zum
Inhalt

Systeme von verkoppelten Differentialgleichungen

Das Seil: ein System verkoppelter Differentialgleichungen

Große Verbünde von Differentialgleichungen

Das Seil ist eine Kombination von Feder-Masse-Systemen, die mit einem System verkoppelter Differentialgleichungen beschrieben werden kann. Die Aufstellung der Differential­gleichungen für ein umfangreiches System verkoppelter Elemente kann schnell in einem unübersichtlichen Gleichungswust enden, verliert doch die große Anzahl von Elementen, Kräften und Koordinaten schnell an Übersicht­lichkeit. Eine systematische Lösung muss gefunden werden!

Das Lösungsprinzip besteht in der Vereinzelung der vielfach auftretenden und miteinander verbundenen Elemente. Das ermöglicht ein einfaches und vor allem übersichtliches Aufstellen der Differential­gleichung für jedes der vereinzelten Elemente. Da nun aber die Elemente miteinander verbunden sind, muss es noch weitere Bestimmungs­größen geben, die die Wechsel­wirkung zwischen den Elementen beschreiben. Dies sind die sog. Schnittkräfte oder, bei rotatorischen Systemen, Schnittmomente. zeigt, wie eine Anordnung, die uns bereits aus bekannt ist, durch gezielte Schnitte in einzelne Elemente zerlegt werden kann. Im rechten Teilbild ist zu sehen, dass die obere Masse von den Federn getrennt wurde. Um aber die Gesamt­situation nicht zu verändern, treten Anstelle der Federn die vektoriellen Schnittkräfte Fprevious und Fnext. Damit kann nun das Kräftegleichgewicht für eine solche Masse aufgestellt werden:
()
Formel
Worin G die Gewichtskraft, FT die Trägheits­kraft und FR die Reibungs­kraft bedeuten. Die vektoriellen Schnitt­kräfte Fprevious und Fnext errechnen sich aus den jeweiligen Feder­spannungen, als dem wirksamen Federweg Δl multipliziert mit der Feder­konstanten n.
Bei einer Anordnung bestehend aus vielen gleichartigen Elementen werden die Schnitt­kräfte für jede Masse (Knoten) bestimmt und zur Aufstellung einer Differential­gleichung für diese Masse verwendet. In der Gesamtheit handelt es sich wieder um ein System verkoppelter Differential­gleichungen, wobei die Verkopplung über die Schnittkräfte erfolgt.
Auftrennung eines verkoppelten Feder-Masse-Systems

Abb. Auftrennung eines verkoppelten Feder-Masse-Systems

Ein weiterer Vorteil dieser Methode bestaht darin, dass zusätzliche Kräfte, wie etwa der Einfluss von Wind, sehr einfach den Schnitt­kräften hinzugefügt werden können.

Im Beispielprogramm wird das Prinzip der verkoppelten Federn mit einer größeren Anzahl von Gliedern wiederholt, nur dass die Schnittkräft eingeführt werden.
download p5.js
run program

Das hängende Seil

Hängendes Seil

Abb. Hängendes Seil

Ein Seil kann nun durch wiederholte Verwendung der Feder-Masse-Anordnung nach generiert werden. An jedem Knoten, mit Ausnahme des letzten Knotens, greift eine Schnittkraft F p r e v i o u s = F k 1 und eine weitere Schnittkraft F n e x t = F k sowie die Gravitationskraft G an. Am letzten Knoten wirken nur die Schnittkraft F p r e v i o u s = F k 1 und die Gravitationskraft G . Massenträgheit und Reibung wirken in bekannter Weise:
()
Formel
Wie schon oben erwähnt, sind die Schnittkräfte proportional der jeweiligen Federdehnung, so dass daraus ein Paar verkoppelter Differential­gleichungen abgeleitet werden kann:
(a)
Formel
(b)
Formel
Worin die X k 1 ; X k ; X k + 1 die Ortsvektoren der jeweiligen Knoten bzw. Massen repräsentieren.
Nun müssen wir die Schnitt­kräfte in ihre x- bzw. y-Komponenten zerlegen, um je ein partiell wirksames Paar von Differentialgleichungen zu erhalten:
(a)
Formel
(b)
Formel
Geistesblitz
on/off

worin l k = | X k X k 1 | die aktuelle Federlänge der k-ten Feder bezeichnen.
Damit steht endlich je Knoten ein Paar verkoppelter Differentialgleichungen für die x- bzw. y-Komponenten zur Verfügung:
(a)
Formel
(b)
Formel
Etwa wirkende Windkräfte, die z.B. in x-Richtung wehen, können einfach zu der für diese Richtung zuständige Differential­gleichung additiv hinzu gefügt werden.

Und hier die Implementierung der Differential­gleichungen zur Berechnung der x- und y-Komponenten der Geschwindigkeit des Knotens (f1) bzw. der Komponenten des Knotenortes (f2). Mit der Variablen kActive wird der Knoten erkannt, der z.Z. von der Maus (oder touch) festgehalten wird. Dort sind selbst­verständlich die Geschwindig­keits­komponenten gleich Null und der Ort ist identisch mit dem Mausort. Im Programm werden nicht die Kräfte Fxk bzw. Fyk verwendet, sondern die damit verbundenen Beschleunigungen axk bzw. ayk, weil die Normalform der Differential­gleichung stets die Beschleunigungen zu Grunde legt. Vom rechen­technischen her ist es einfacher, die Beschleunigungs­werte stets für den jeweils betrachteten Knoten vollständig zu berechnen, auch wenn dadurch der Vorteil actio = reactio-Methode nicht genutzt werden kann. So bleiben die berechneten Beschleunigungen nur innerhalb einer Knotenrechnung gültig und müssen nicht zwischen­gespeichert werden. Statt der Beschleunigungen axk bzw. ayk genügt dann die Berechnung von ax bzw. ay, die aus den Abständen der Knoten xprevious bzw. yprevious, x bzw. y und xnext bzw. ynext erfolgt.

Besondere Beachtung verdienen die Enden des Seils. Das obere Ende - die Aufhängung - nimmt an der Bewegung nicht teil, die x, y-Koordinate ist fixiert! Im beigefügten Programmbeispiel kann diese Koordinate allerdings mit der Maus verschoben werden, was aber an der Fixierung nichts ändert. Am unteren Ende des Seils fehlt die Rückwirkung vom nächsten Segment, weil es ja nicht vorhanden ist, also gibt es auch keine Kräft aus dieser Richtung. Wegen der Allgemein­gültigkeit der Gradienten­funktion werden aber die Koordinaten dieses, nicht vorhanden, Segments aufgerufen. Damit aber der Aufruf der Gradienten­funktion vom Compiler nicht bemängelt wird, wird das Feld der x, y-Koordinaten um jeweils einen Speicherplatz verlängert. Innerhalb der Gradientenfunktion wird dann getestet, ob es sich um das untere Ende des Seils handelt. Ist dies der Fall, wird die Rückwirkung vom nächsten Segment nicht mehr berücksichtigt.

Wegen der Benutzung des leapfrog-Algorithmus zur Lösung der DGl. werden noch die Zwischenergebnisse vx' und vy' benötigt. Diese werden ebenfalls in Vektoren abgelegt.
Wenn auch in den Gln. a) und b) von Kräften die Rede ist, werden in der Implementierung die den Kräften zugeordneten Beschleunigungen verwendet, weil die Normalform der Differentialgleichung stets die Beschleunigungen zu Grunde legt. So wirkt hier also nicht die Windkraft FW sondern die Beschleunigung aW ().
Als Reibungsprinzip wird die STOKESsche Reibung verwendet, weil die Relativ­geschwindigkeiten der Knoten klein sind.



Abb. Implementierung der Differentialgleichungen eines Knotens

Das Beispielprogramm zeigt ein ruhend hängendes, unbelastetes Seil. Es wird durch ein Set von 40 Knoten dargestellt. Das Seil kann an jeder beliebigen Stelle mit der Maus angefasst und bewegt werden. Schon jetzt kann durch eine Mausaktion das Seil in Bewegung versetzt werden. Mit dem Button Gravitation kann die Schwerkraft eingeschaltet werden, in deren Folge sich das Seil streckt. Mit den Schiebereglern f0 (Eigenfrequenz) und δ (Dämpfung) kann das zeitliche Verhalten des Seils verändert werden. Und der Schieberegler Windstärke lässten den Wind gleichmäßig mit der eingestellten Geschwindigkeit aus der x-Richtung wehen. Die Stärke des Windes ist an der Windrose zu ersehen.
download processing
download p5.js
run program


Ergebnisdiskussion: Na, ein richtiges Seil verhält sich schon etwas anders. Das, was wir hier sehen können, ähnelt mehr einem Gummiseil. Unter dem Einfluss der Schwerkraft dehnt es sich wohl etwas zu stark für ein Hanfseil. Durch eine Erhöhung der Eigenfrequenz f0 kann das Seil fester gemacht werden, aber mehr als ein Kletterseil kommt nicht dabei raus! Wie Du am Beispiel sehen kannst, wird die Anordnung mit steigende Eigenfrequenz f0 immer steifer, also instabiler. Im Extremfall, z.B. einer Kette, sind die verbindenden Federn überhaupt nicht mehr dehnbar. Dann würden die "Feder"-Kräfte unendlich groß werden, was zu einem nicht mehr lösbaren Gleichungssystem führt. Der Grund für Instabilitäten der Lösung liegt prinzipiell in der numerischen Lösung der Differential­gleichungen. Im vorliegenden Programm­beispiel wurde das LeapFrog-Verfahren angewendet. Es stellt einen vernünftigen Kompromiss zwischen Rechenaufwand und Stabilität dar. Verfahren höherer Genauigkeit, wie z.B. das RUNGE-KUTTA-Verfahren treiben den Rechenaufwand enorm in die Höhe, ohne eine überzeugende Steigerung der Stabiltät der Lösung zu zeitigen.
Ein weiterer Grund für die nicht ganz überzeugende Simulation ist darin zu sehen, dass die einzelnen Segmente wohl in Richtung der Schnittkräfte wechselwirken, aber nicht im Winkel zwischen den Segmenten. Dort fehlt noch eine Biegesteifigkeit, die das Verbiegen oder Verformen des Seiles erschwert. Aber trotzdem: eine ganze Reihe von Eigenschaften eines realen Seils kann durch die Simulation nachgebildet werden. So z.B. kann die laufende Welle auf dem Seil demonstriert werden, wenn das Seilende ruckartig bewegt wird. Auch die Reflexion der Welle am freien oder fixierten Ende des Seils kann beobachtet werden. Wie Du beobachten kannst, hängt die Fort­pflanzungs­geschwindigkeit der Welle von der eingestellten Eigenfrequenz f0 ab. Je höherer f0 desto schneller läuft die Welle. Und je geringer die Dämpfung δ, desto länger läuft die Welle hin und her!
Ebenfalls gut zu beobachten ist die Wirkung des Seitenwinds, der das Seil aus seiner Ruhelage drückt.