Skalierbare Seilsimulation mit beliebiger Genauigkeit


12

Ich versuche ein Seilobjekt zu simulieren. Die Formulierung, die ich verstehe, ist eine Anordnung von Partikeln, die durch Federn verbunden sind. Diese Federn haben sehr große k-Werte, so dass sich die Leine verformt, sich aber nur sehr wenig dehnt. Ich bin zu dem Schluss gekommen, dass eine Lösung in Abhängigkeit von der Zeit nicht in geschlossener Form möglich ist, da ein Seil eine Verallgemeinerung eines Pendels ist (das nicht in geschlossener Form vorliegt).

Dann sollten wir uns auf ungefähre Lösungen einigen. Ich brauche einen Algorithmus, der gut skaliert. Beispiele, die ich gesehen habe, verwenden entweder explizite oder implizite Euler-Integration, um die Partikel zu bewegen. Dies skaliert nicht.

Betrachten Sie dazu ein Seil mit n Knoten. Üben Sie eine große Kraft auf ein Ende aus. Da sich das Seil nicht sehr stark dehnen sollte, muss die Beschleunigung am anderen Ende sofort erfolgen.

Bei der Euler'schen Integration sind jedoch n Schritte erforderlich , um eine Kraft an das andere Ende zu bringen. Ich stelle einen exponentiellen Abfall fest: Wenn der erste Knoten einen bestimmten Betrag beschleunigt, beschleunigen die benachbarten Knoten weniger (wenn sie mit derselben Geschwindigkeit beschleunigen, ist der Algorithmus nicht stabil). Folglich sind die benachbarten Knoten dieses beschleunigen Knoten noch langsamer!

Für n entfernte Knoten ist die Beschleunigung daher nahezu vernachlässigbar. Dies führt zu einem Seil, das sich erheblich dehnt. Wenn Sie die Auflösung der Simulation nur verdoppeln möchten, müssen Sie plötzlich zehn- oder hundertfach kleinere Zeitschritte ausführen, um ein ähnliches Verhalten zu erzielen.

Ich suche nach einer einfachen Methode, die dieses Problem löst - dh Simulationen mit höherer Auflösung konvergieren zur Lösung nur mit zusätzlicher Polynomzeitberechnung. Eine vollständige Bibliothek von Matrix- und linearen Algebratechniken ist verfügbar. Meine Kenntnisse der klassischen Mechanik sind sehr gut und ich kenne einige numerische Analysen.


Es scheint, dass RK-ähnliche Unterschritt-Algorithmen die Kommunikation (gemessen in Knoten / Schritt) um einen Faktor beschleunigen, der in etwa der Anzahl der Unterschritte entspricht, aber dies ist in Bezug auf die tatsächliche Rechenzeit möglicherweise kein großer Gewinn . Um wirklich allgemein zu sein, müssen Sie wahrscheinlich berechnen, wie weit sich der Effekt in einem Zeitschritt ausbreiten soll (dh ), und mit einer heuristischen Anwendung der Belastung über diese Länge beginnen und dann entspannen. vsdt
dmckee --- Ex-Moderator Kätzchen

@dmckee, ja bitte! Als Antwort auf Ihren zweiten Kommentar sollte sich die Kraft im Idealfall in jedem Zeitschritt unendlich weit ausbreiten.
Imallett

Nun, die Schallgeschwindigkeit ist wahrscheinlich ziemlich hoch ... aber wenn Ihre Zeitschritte weniger als 10 ms betragen, beträgt diese Ausbreitungslänge immer noch nur einige Meter.
dmckee --- Ex-Moderator Kätzchen

Ich bin gespannt, ob die Vorschläge, die Sie hier erhalten haben, hilfreich waren. Ich gehe davon aus, dass die mangelnde Akzeptanz bedeutet, dass Sie entweder noch weiterverfolgen oder dass keine der Antworten genau das ist, was Sie sich erhofft haben, aber haben sie Ihnen einen Weg nach vorne gezeigt?
dmckee --- Ex-Moderator Kätzchen

Sie waren hilfreich, aber viele Dinge fielen gerade gleichzeitig auf. Ich habe meine Absichten in Bezug auf einige Antworten klargestellt, und wenn ich eine Verschnaufpause bekomme, kann ich sie weiterverfolgen. Vielen Dank
imallett

Antworten:


4

Zunächst sollten Sie , wie von Jed Brown erwähnt, ein implizites Zeitschrittschema verwenden, da Ihr Problem ziemlich starr oder zumindest stabiler und doch genauso einfach zu sein scheint, wie beispielsweise die Leapfrog-Integration oder die Verlet-Integration .

Wie interessiert sind Sie an der Dehnung des Körpers? Anstatt die Partikel mit steifen Federn zu verbinden, können Sie holonome Bedingungen verwenden , z. B. um sicherzustellen, dass der Abstand zwischen den Partikelpaaren konstant bleibt. Die Einschränkungen müssen für jeden Zeitschritt gelöst werden, und es gibt effiziente Algorithmen für genau Ihr Setup, dh eine lange Kette von Einschränkungen. Siehe zum Beispiel dieses Papier .

Verwenden Sie aus Neugier auch Winkelpotentiale entlang der Länge des Seils, um dessen Flexibilität zu modellieren?


Selbst wenn implizite Zeitschritte verwendet werden (was hilfreich ist), tritt Dehnung auf. Tatsächlich bin ich daran interessiert, mich nur insoweit zu dehnen, als ich versuche, es loszuwerden. Die Mathematik in der Zeitung geht mir im Grunde über den Kopf, aber ich lerne den fortran-Code. Verwenden Sie noch keine Winkeleinschränkungen.
Imallett

@ IanMallett: Ok, dann sind Einschränkungen der Weg, dh es gibt überhaupt keine Dehnung mit Einschränkungen.
Pedro

5

Sie haben ein steifes System mit der aktuellen Formulierung. Die dynamische Dehnung und Vibration in der Saite sind (vermutlich) uninteressant, steuern aber den expliziten Zeitschritt. Dies zeigt die Verwendung einer impliziten Zeitintegrationsmethode an. Sie können die Dämpfung verwenden, um die Schwingungen zu verhindern, die die adaptive Fehlerkontrolle für die implizite Methode durcheinander bringen.

Wenn es wichtig ist, die feinskaligen Schwingungen zu modellieren, obwohl Sie diese überschreiten möchten (z. B. für die Ermüdungsmodellierung), sollten Sie neue Multiskalenmethoden wie die heterogene Multiskalenmethode (Engquist, Tsai usw.) oder die Halbskalenmethode ausprobieren. spektrale zeitliche Methoden. Die Verwendung solcher Methoden ist ein Thema auf Forschungsebene, und Sie müssen Ihr Problem und die Fähigkeiten der Methode gut verstehen, um entscheiden zu können, ob sie geeignet sind. Wenn Sie Energie sparen möchten, zum Beispiel, dass bestimmte Schwingungsmoden nicht abgebaut werden sollen, sollten Sie sich symplektische Integratoren wie Verlet ansehen.

Sie können die Null-Dehnungsgrenze auch lösen, wenn Sie möchten. Mit Trägheitsbegriffen kann das Modell in Bezug auf Winkel umformuliert werden, was zu einem nicht steifen ODE-System führt. Wie Faleichik betonte, ist dies das ROPETestproblem, das in Hairer, Nørsett und Wanners Buch behandelt wird. Wenn Sie die Trägheit des Seils selbst verwerfen, aber Spiel zulassen (leichtes, dehnungsarmes Seil mit diskreter Belastung; kein gängiges Modell), wird das Problem zu einer Differentialvariationsungleichung (DVI), und Sie können im Allgemeinen keine höhere Genauigkeit als die erste Ordnung erzielen Zeit.


2
HMM ist im Wesentlichen eine projektionsbasierte Modellreduktionsmethode. Ich empfehle solche Methoden nur, wenn eine Anwendung dies ausdrücklich verlangt. man muss bereit sein, Genauigkeit für Geschwindigkeit zu opfern. Das Bestimmen "guter" Auswahlen der Komprimierungs- und Rekonstruktionsoperatoren (unter Verwendung der Nomenklatur von HMM) ist für einige Anwendungen nicht trivial (Verbrennung ist ein solches Beispiel).
Geoff Oxberry

@GeoffOxberry Einverstanden, ich habe eine Warnung hinzugefügt. Ein klassisches Problem ist, wie mechanische Schwingungen in einer Uhr eine Drift verursachen. Ein Beispielproblem, das ich für angemessen halte, ist das Modellieren des Kriechens / Rutschens eines Seils um eine Winde, die durch Vibrationsmoden von der belasteten Seite beschleunigt wird. Nicht alles ist Verbrennung. ;-)
Jed Brown

Das Zero-Stretch-Limit ist im Grunde das Einzige, wonach ich mich wirklich bemühe. Feinskalige Schwingungen wären schön, aber ein unelastisches Tuch, das zu glatt ist, ist derzeit vorzuziehen. Ich habe implizite Zeitschritte versucht (über OpenCloths Formulierung), und das Problem tritt leider immer noch auf. Können Sie Links zur Ausführung Ihres letzten Absatzes erstellen? Vielen Dank
imallett

2

Wenn Sie an einer schnellen, ungefähren Lösung interessiert sind, sind möglicherweise die Methoden für digitale Effekte wie die diskrete Differentialgeometrie für Sie von Interesse. Mir ist eine quasistatische Formulierung in Discrete Elastic Rods bekannt , einer Veröffentlichung von 2008 von Grinspun's Gruppe an der Columbia University, aber es gibt wahrscheinlich neuere Literatur in diesem Bereich.


2

Die Bewegung des hängenden Seils ist ein beliebtes Testproblem von Hairer und Wanner, das im zweiten (steifen) Band von "Solving Ordinary Differential Equations" und in der zweiten Ausgabe des ersten Bandes (1993) auftrat. Ich empfehle die letzte Option, Seite 247. Die Gleichungen sind schwierig abzuleiten und der Algorithmus der numerischen Lösung ist nicht sehr einfach. Obwohl am Ende konventionelle explizite Zeitschrittmacher wie DOPRI, RK45 oder ODEX angewendet werden und sich ziemlich gut verhalten, ist das Problem nicht wirklich schwergängig.


1
Das ROPEProblem aus dem Buch modelliert ein Seil, das sich nicht dehnt, wobei die Dynamik von Trägheitseffekten dominiert wird. Die Frage scheint nach Seilen zu sein, die sich ausdehnen.
Jed Brown
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.