Physikalisch basierte Simulationen ∗ Seminararbeit Computergrafik und Computer Vision WS 06/07 Marco Ament Graphisch Interaktive Systeme Wilhelm-Schickard-Institut für Informatik Universität Tübingen [email protected] Kurzfassung Physikalisch basierte Simulationen haben in den letzten Jahren einen festen Platz in der Computergrafik eingenommen. Dabei werden physikalische Vorgänge aus der Natur durch deren mathematische Beschreibung nachgebildet, um eine virtuelle Darstellung möglichst realistisch erscheinen zu lassen. Die Anwendungen reichen von hochrealistischen Animationen in Filmen bis zur interaktiven Gestaltung in Spielen und Entertainmentsystemen. In dieser Seminararbeit werden zunächst allgemeine Grundlagen dieser Simulationen erörtert und im Anschluss speziell auf Textil -und ganz besonders auf Fluidsimulationen eingegangen. Hier werden zwei unterschiedliche Ansätze untersucht, nämlich das partikelbasierte Verfahren Smoothed Particle Hydrodynamics sowie das Semi-Lagrange-Verfahren, das eine Mischung aus der gitterbasierten Euler’schen Sichtweise und dem partikelbasierten Lagrange-Ansatz darstellt. Schlüsselwörter Physikalische Simulation, Differentialgleichungen, Numerische Zeitintegration, Textilsimulation, Fluidsimulation, NavierStokes-Gleichungen, Smoothed Particle Hydrodynamics, SemiLagrange 1. EINLEITUNG In der Computergrafik gewinnen realistische Bewegungen immer mehr an Bedeutung. Früher hatte man nicht die Rechenleistung, um mit akzeptablem Aufwand realistische Bewegungen zu berechnen. Mit zunehmend schnelleren Rechnern und eigens für physikalische Effekte entwickelte Hardwarebeschleuniger kann man heutzutage in vielen Fällen die authentischen physikalischen Gesetze als Grundlage für Simulationen verwenden. In der Physik und in vielen Ingenieurswissenschaften ist dies bereits seit geraumer Zeit gängige Praxis. Hier werden mit sehr hohem Rechenaufwand Experimente auf rein numerische Weise durchgeführt. In diesen Disziplinen ist eine hohe Genauigkeit erforderlich, ∗Betreut von Dipl.-Inform. Bernhard Thomaszewski um aussagekräftige Ergebnisse zu erzielen, während die Rechenzeit nur eine untergeordnete Rolle spielt. Im Gegensatz dazu ist aus Sicht eines Computergrafikers die Genauigkeit von kleiner Bedeutung, so lange das Ergebnis optisch realistisch wirkt. Ungenauigkeiten im Ergebnis, die ohnehin nicht sichtbar sind aufgrund von beschränkter Auflösung oder Renderingtechniken werden in Kauf genommen, um eine höhere Effizienz zu erzielen. Diese Tatsachen werden gezielt benutzt, um speziell für die Computergrafik adäquate Verfahren zu entwickeln. Diese Modelle basieren also auf physikalischen Gesetzen, sind aber oft vereinfacht, um die Laufzeit zu minimieren. Für die Computergrafik ist in der Regel auch nur ein kleiner Teil der Physik von Interesse. Dies beinhaltet z.B. Teile der klassischen Mechanik und der Hydrodynamik. Die Modelle werden normalerweise auf makroskopischer Ebene erstellt, d.h. Effekte auf molekularer oder atomarer Ebene werden nicht berücksichtigt. Aus diesem Grund spielt die Kontinuumsmechanik eine große Rolle in diesen Simulationen. Als Abgrenzung zu nicht-physikalischen Simulationen seien hier z.B. geometrische Verfahren erwähnt, die mit Heuristiken versuchen das gewünschte Bild zu erzeugen. Ein gutes Beispiel hierfür ist die geometrische Modellierung von Textilien von Weil [26]. Sie basiert auf der Beobachtung, dass sich Textilien wie „hängende Ketten“ verhalten. Aus diesem Grund kann die Oberfläche mit hyperbolischen trigonometrischen Funktionen beschrieben werden. In dieser Seminararbeit wird zunächst ein allgemeiner Einstieg in physikalisch basierte Simulationen präsentiert. Dies beinhaltet das Aufstellen eines mathematischen Modells mit Hilfe von Differentialgleichungen. Sie beschreiben wie sich physikalische Größen räumlich und zeitlich ändern und somit zu der gewünschten Dynamik führen. Hierbei entstehen in der Regel sehr komplexe Gleichungen, die ggf. auch gekoppelt sein können. Deshalb ist es nur in wenigen Fällen möglich eine analytische Lösung dieser Bewegungsgleichungen anzugeben und man muss auf numerische Verfahren zurückgreifen. Im Rahmen dieser Arbeit wird ein Einstieg in die Lösungsmöglichkeiten von gewöhnlichen Differentialgleichungen gegeben. Nach dieser allgemeinen Einführung wird speziell auf die Simulation von Textilien und Fluiden eingegangen. In der Simulation von Stoffen und Garnen hat es in den letzten Jahren große Fortschritte gegeben. Es gibt derzeit zwei grundsätzlich unterschiedliche Ansätze Textilien zu simulieren, zum einen mittels Kontinuumsmechanik und zum anderen mittels Masse-Feder-Systemen. Die Kontinuumsmechanik bedient sich den Materialgesetzen aus der Elastizitäts- theorie und löst diese partiellen Differentialgleichungen z.B. mit Hilfe von Finiten Elementen. Diesem Verfahren steht das Modell aus Massenpunkten und Federn gegenüber. Das Textil wird hier mit endlich vielen Massenpunkten modelliert, die über ein System aus massenlosen Federn verbunden sind. Durch summieren aller einwirkenden Kräfte erhält man ein System aus gewöhnlichen Differentialgleichungen, die relativ einfach und schnell gelöst werden können. Nachteilig an diesem Verfahren ist jedoch die komplizierte Modellierung von nicht-linearem Verhalten des Stoffs und die schwierige Kontrolle von Materialparametern. Eine gute allgemeine Referenz über gängige Verfahren hinsichtlich deformierbarer Materialien findet sich z.B. in [16]. Der Hauptschwerpunkt dieser Arbeit ist jedoch die Simulation von Fluiden. Es werden zunächst grundlegende Kenntnisse aus der Strömungsmechanik vermittelt, die nötig sind, um ein Verständnis der Problematik zu erlangen. Im Anschluss werden zwei unterschiedliche Sichtweisen vorgestellt, wie ein Fluid simuliert werden kann. Dies ist zum einen die Sichtweise nach Lagrange, bei der die Physik ausschließlich in Partikeln wiederzufinden ist. Hier werden alle beeinflussbaren Größen, wie z.B. Druck oder Viskosität in Kräfte zurückgeführt, die dann die Bahn der Partikel bestimmen. In dieser Arbeit wird das Verfahren Smoothed Particle Hydrodynamics vorgestellt, das ursprünglich für astrophysikalische Berechnungen von Gingold und Monaghan [11] entwickelt wurde. Auf der anderen Seite wird noch das SemiLagrange-Verfahren vorgestellt, das die gitterbasierte Sichtweise nach Euler und den partikelbasierten Ansatz nach Lagrange vereint. Bei diesem Verfahren werden die einzelnen Teile der inkompressiblen Navier-Stokes-Gleichungen getrennt berechnet. Die nicht-lineare Advektion dieser Gleichungen wird durch die implizite Rückverfolgung eines Partikels, sowie durch Interpolation des Geschwindigkeitsfeldes in diesem Punkt berechnet. Der Vorteil dieses Verfahrens liegt in der bedingungslosen Stabilität, auch für große Zeitschritte. Ursprünglich wurde dieses Verfahren von Courant, Isaacson und Rees bereits 1952 [2] entwickelt und von Stam 1999 [20] in der Computergrafik eingesetzt. Dieses Verfahren wurde sukzessive weiterentwickelt und gipfelte in der kommerziellen Nutzung in MAYA zur realisitischen Animation von Fluiden. 2. DIFFERENTIALGLEICHUNGEN 2.1 Grundlagen Die meisten physikalischen Gesetze beruhen auf Differentialgleichungen (DGLen). Sie sind ein geeignetes mathematisches Werkzeug, um die räumliche und zeitliche Änderung von physikalischen Größen zu beschreiben. Die Lösungen dieser DGLen sind Funktionen, die für jede Position x im Raum und jeden Zeitpunkt t den Wert einer bestimmten Größe liefern. Physikalisch basierte Simulationen bedienen sich dieser Gleichungen, um realitätsnahe Bewegungen zu erzielen. Jedoch gibt es nur in den wenigsten Fällen analytische Lösungen, weshalb man in der Praxis auf numerische Lösungsverfahren zurückgreifen muss. In diesem Abschnitt werden zunächst grundlegende Kenntnisse vermittelt, insbesondere die Unterscheidung zwischen gewöhnlichen und partiellen DGLen. Auf die numerischen Verfahren wird dann in Abschnitt 3 eingegangen. 2.2 Gewöhnliche Differentialgleichungen Kommt in einer DGL nur die Ableitung nach einer Variablen vor, so nennt man sie gewöhnliche Differentialgleichung. Ihre Ordnung n wird durch die höchste vorkommende Ableitung bestimmt. Ist y(x) die gesuchte Lösungsfunktion und f eine beliebige Funktion, dann ist dies eine explizite Darstellung einer gewöhnlichen DGL der Ordnung n: dn y(x) =f dxn „ « dy(x) d2 y(x) dn−1 y(x) x, , , . . . , dx dx2 dxn−1 Eine wichtige Eigenschaft für die Anwendungen ist die Zerlegung dieser DGL in ein äquivalentes System von DGLen erster Ordnung. Man führt n Hilfsfunktionen y1 (x), . . . , yn (x) ein und baut folgendes System auf: dy1 (x) dx dy2 (x) dx = y2 (x) = y3 (x) .. . dyn (x) dx = f (x, y1 (x), y2 (x), . . . , yn (x)) Man nennt die Suche nach Lösungen Anfangswertproblem (AWP), falls n Anfangswerte y1 (x0 ), y2 (x0 ), . . . , yn (x0 ) für dieses System gegeben sind. Ob ein solches System eine eindeutige Lösung hat, hängt von f ab. Nach dem Existenzund Eindeutigkeitssatz von Picard-Lindelöf ist dies der Fall, falls f Lipschitz-stetig ist. Diese Bedingung ist für die hier betrachteten physikalischen DGLen immer erfüllt. Das Finden von analytischen Lösungen ist in der Regel sehr schwierig und in sehr vielen Fällen unmöglich. So besitzt bereits das Drei-Körper-Problem, also die gravitative Wechselwirkung von drei Körpern, keine analytische Lösung. Aus diesem Grund werden numerische Verfahren zur zeitlichen Integration benötigt, um approximative Lösungen zu bestimmen. Abschnitt 3 gibt einen Einblick in diese Thematik und stellt einige gängige Verfahren vor. Eine fundamental wichtige gewöhnliche Differentialgleichung für physikalisch basierte Simulationen ist die Newton’sche Bewegungsgleichung für einen Massenpunkt: ẍ(t) = F(t, x(t), ẋ(t)) m Dabei bezeichnet x(t) die Position des Punktes im Raum, die beiden Punkte die zweite Ableitung nach der Zeit t, F die resultierende Kraft und m die Masse des Punktes. Diese DGL zweiter Ordnung lässt sich somit auf folgendes System erster Ordnung reduzieren: ẋ(t) = v̇(t) = v(t) F(t, x(t), v(t)) m Eine Anwendung dieser DGL ist z.B. die Simulation einer Galaxie mit der Annahme, dass die Sterne Punktmassen sind. Die Kraft, die ein Stern i mit Masse mi durch einen anderen Stern j mit Masse mj erfährt, wird durch die Newton’sche Gravitationskraft beschrieben: Fij (t) = γ xj (t) − xi (t) mi mj |xj (t) − xi (t)|2 |xj (t) − xi (t)| Bei n Sternen ergibt sich für Stern i also die resultierende Gesamtkraft: n X Fi (t) = Fik (t) k=1 k6=i 2.3 Partielle Differentialgleichungen Viele physikalische Prozesse hängen sowohl vom Ort als auch von der Zeit ab. Die Wellen, die durch einen fallenden Wassertropfen auf der Oberfläche entstehen, hängen sowohl von der Zeitableitung (Geschwindigkeit der Welle) als auch von der Raumableitung (Profil der Welle) ab. Da Ableitungen nach mehreren Variablen auftauchen ist also eine partielle Differentialgleichung zur Beschreibung des Vorgangs notwendig. Eine implizite Darstellung ist dann: « „ ∂ 2 u(x, y) ∂u(x, y) ∂u(x, y) , ,..., ,... = 0 f x, y, u(x, y), ∂x ∂y ∂x∂y Dabei ist u(x, y) die gesuchte Lösungsfunktion und f eine beliebige Funktion. Partielle DGLen haben nur in den seltensten Fällen eine analytische Lösung. Sie werden in der Praxis daher immer mit numerischen Verfahren gelöst. Gängige Verfahren sind z.B. die Methoden der Finiten Elemente und der Finiten Differenzen. Allen Verfahren gemein, ist die räumliche Diskretisierung durch ein Gitter mit endlich vielen Zellen. Durch die Diskretisierung erhält man ein Gleichungssystem, dessen Lösungen die gesuchten Werte sind. Ein Einstieg in die Finite-Elemente-Methode findet sich z.B. in [23]. Eine andere Möglichkeit diese Gleichungen anzunähern, ist das Aufstellen eines vereinfachten Modells, das mit gewöhnlichen DGLen auskommt. Diese Systeme können dann mit den einfachen Verfahren der numerischen Zeitintegration gelöst werden. Beispiele hierfür werden in den nachfolgenden Abschnitten in der Textil -und Fluidsimulation vorgestellt. Ein Beispiel für partielle DGLen sind die inkompressiblen Navier-Stokes-Gleichungen auf die in Abschnitt 5 noch näher eingegangen wird. ∇·u = 0 ∂u = −(u · ∇)u − ∇p + ν∆u + f ∂t Dabei ist u(x, t) das gesuchte Geschwindigkeitsvektorfeld. Die anderen Größen werden im Abschnitt über Fluide eingeführt. 3. NUMERISCHE ZEITINTEGRATION 3.1 Grundlagen In diesem Abschnitt werden einige Methoden zur numerischen Lösung von gewöhnlichen DGLen vorgestellt. Man unterscheidet explizite und implizite Verfahren. Bei den Erstgenannten bekommt man die Lösung des nächsten Zeitschrittes explizit aus den vorher berechneten Zeitschritten, während man bei impliziten Methoden eine im Allgemeinen nicht-lineare Gleichung lösen muss. Zunächst sollen jedoch Grundlagenkenntnisse vermittelt werden, um die Verfahren besser verstehen zu können. Bei der numerischen Zeitintegration handelt es sich um Näherungsverfahren. Dabei werden unweigerlich Fehler gemacht aufgrund der Diskretisierung der Zeit. Änderungen, die zwischen zwei Zeitschritten bei der exakten Lösung auftreten, können nur approximiert werden. Es gibt zwei Kriterien, die von fundamentaler Bedeutung sind, nämlich die Stabilität und die Genauigkeit eines Verfahrens. Die Stabilität gibt Auskunft, ob die numerische Lösung beschränkt ist oder nicht. Besonders explizite Verfahren haben Bedingungen an die Schrittweite, um stabile Lösungen zu erhalten. Damit man die Stabilität der unterschiedlichen Methoden miteinander vergleichen kann, wendet man sie auf die Dahlquist-Testgleichung an: dy(x) = λy(x) dx Definition 1. Der Stabilitätsbereich eines numerischen Verfahrens ist gegeben durch die Menge der λ ∈ C, für die die numerische Lösung der Dahlquist-Testgleichung beschränkt bleibt. In der Computergrafik ist man besonders daran interessiert mit möglichst großen Zeitschritten rechnen zu können, um eine hohe Effizienz zu erzielen. Daher ist die Stabilität eines Verfahrens in der Regel das wichtigere Kriterium. Insbesondere gibt es Verfahren, die bedingungslos stabil sind. Definition 2. Ein numerisches Verfahren heißt A-stabil, falls die numerische Lösungsfolge (Yn )n∈N beschränkt bleibt, wenn das Verfahren mit beliebiger Schrittweite auf das Anfangswertproblem der Dahlquist-Testgleichung für <(λ) ≤ 0 angewandt wird. Wählt man jedoch den Zeitschritt zu groß, so verhält sich die Simulation nicht mehr realistisch, selbst wenn sie stabil läuft. Die Genauigkeit eines Verfahrens ist ein Maß für den Fehler, der bei der numerischen Berechnung im Vergleich zur exakten Lösung auftritt und wird in der Größenordnung der Schrittweite angegeben. Da gewöhnliche DGLen beliebiger Ordnung immer auf ein System erster Ordnung reduziert werden können (siehe 2.2), werden alle Verfahren auf folgende DGL angewandt: dy(t) = f (t, y(t)) dt Die Funktion f sei beliebig gewählt, jedoch sei sie Lipschitzstetig, um dem Satz von Picard-Lindelöf zu genügen. Ferner sei im Folgenden die Schrittweite mit h gekennzeichnet. Es wird angenommen, dass der Funktionswert für den Zeitpunkt t bekannt ist, entweder aus der Anfangsbedingung oder aus einem vorherigen Berechnungsschritt. 3.2 Explizite Verfahren Diese Methoden zeichnen sich dadurch aus, dass der neue Wert zur Zeit t + h explizit durch Berechnung der rechten Seite, die nur von Werten zur Zeit t abhängt, erhalten wird. Die Auswertung der rechten Seite ist im Allgemeinen deutlich schneller als das Lösen eines Gleichungssystems, wie es bei impliziten Verfahren nötig ist. Aufgrund der eingeschränkten Stabilität sind diese Verfahren jedoch mit Vorsicht zu genießen. Die Schrittweite darf eine obere Schranke nicht überschreiten, um eine stabile Simulation zu gewährleisten. In diesem Abschnitt werden einige gängige Verfahren vorgestellt und verglichen. 3.2.1 Euler-Verfahren (explizit) Dieses sehr einfache Verfahren bedient sich der Steigung der gesuchten Funktion y(t) zum Zeitpunkt t. Sie wird durch die finite Differenz dy(t) ≈ y(t+h)−y(t) approximiert. Daraus dt h ergibt sich: y(t + h) = y(t) + h · f (t, y(t)) Dieses Verfahren ist sehr leicht zu implementieren und sehr effizient, da die Funktion f nur einmal ausgewertet werden muss. Hauptnachteil ist jedoch die bedingte Stabilität. Damit die Folge der Lösungen (Yn )n∈N beschränkt bleibt muss allgemein gelten: ˛ ˛ ˛ Yn+1 ˛ ˛ ˛ ˛ Yn ˛ ≤ 1 Mit der Dahlquist-Testgleichung ergibt sich für das explizite Eulerverfahren also folgende Stabilitätsbedingung: Yn+1 = Yn + hλYn der Taylorreihe zeigt, dass das Verfahren auch quadratische Terme miteinbezieht, daher ist die Genauigkeit O(h2 ). Das Heun-Verfahren stellt also eine deutliche Verbesserung gegenüber dem expliziten Euler-Verfahren dar. Jedoch ist der Berechnungsaufwand gestiegen, da die Funktion f in jedem Schritt zweimal evaluiert werden muss. 3.2.3 Runge-Kutta-Verfahren (explizit) Hierbei handelt es sich, um eine ganze Familie von Verfahren. In der Regel verbindet man mit dem Runge-KuttaVerfahren jedoch den 4-stufigen Spezialfall dieser Familie auf den auch hier eingegangen wird. Das Verfahren berechnet eine Sekante aus der gewichteten Summe der vier Steigungen m1 , m2 , m3 , m4 zu den Zeitpunkten t, t + h2 und t + h. Dabei wird die Quadraturformel von Simpson eingesetzt, um die Lösungsfunktion durch lokale Parabeln anzunähern. Die unbekannten Funktionswerte zu den Zeitpunkten t + h2 und t + h werden mit den folgenden Verfahren angenähert: (1 + hλ)Yn ˛ ˛ ˛ Yn+1 ˛ ˛ = ⇒ ˛˛ Yn ˛ |1 + hλ| ≤ 1 Mit der komplexwertigen Variablen hλ ergibt sich der innere Stabilitätsbereich aus Abbildung 1. Um die Genauigkeit des Verfahrens zu bestimmen, wird die Taylorreihe der exakten Lösungsfunktion mit der Berechnungsvorschrift verglichen: dy(t) 1 d2 y(t) 2 y(t + h) = y(t) + h+ h + ... dt 2! dt2 Das Euler-Verfahren berücksichtigt nur Terme linearer Ordnung, deswegen ist die Genauigkeit nur O(h). 3.2.2 Heun-Verfahren (explizit) Diese Methode ist auch als Prädiktor-Korrektor-Verfahren bekannt. Dabei wird die Steigung zum Zeitpunkt t und t+h gemittelt, um eine Sekante zu finden. Der Prädiktor-Schritt entspricht dem impliziten Trapezverfahren 3.3.2. Damit das Heun-Verfahren explizit bleibt, wird die Steigung zum Zeitpunkt t + h mit einem expliziten Euler-Schritt durch den Korrektor angenähert. Prädiktor, impliziter Trapez-Schritt: h y(t + h) = y(t) + (f (t, y(t)) + f (t + h, y ∗ (t + h))) 2 Korrektor, expliziter Euler-Schritt: y ∗ (t + h) = y(t) + h · f (t, y(t)) Mit der Dahlquist-Testgleichung ergibt sich folgende Stabilitätsbedingung: Yn+1 = = = ˛ ˛ ˛ Yn+1 ˛ ˛ = ⇒ ˛˛ Yn ˛ h (λYn + λ(Yn + hλYn )) 2 1 1 1 Yn + hλYn + hλYn + h2 λ2 Yn 2 2 2 ` ´ 1 + hλ + h2 λ2 Yn ˛ ˛ ˛1 + hλ + h2 λ2 ˛ ≤ 1 Yn + Mit der komplexwertigen Variablen hλ ergibt sich der innere Stabilitätsbereich aus Abbildung 1. Ein Vergleich mit Expliziter Euler-Schritt: ´ ` h y ∗ t + h2 = y(t) + · f (t, y(t)) 2 Impliziter Euler-Schritt: ` ´ ` ` ´´ h y ∗∗ t + h2 = y(t) + · f t + h2 , y ∗ t + h2 2 Mittelpunkt-Schritt: ´´ ` ` y ∗∗∗ (t + h) = y(t) + h · f t + h2 , y ∗∗ t + h2 Daraus kann man die Steigungen wie folgt annähern: m1 m2 = = m3 = f (t, y(t)) ` ` ´´ f t + h2 , y ∗ t + h2 ` ` ´´ f t + h2 , y ∗∗ t + h2 m4 = f (t + h, y ∗∗∗ (t + h)) Mit der Quadraturformel von Simpson folgt für die Berechnung des neuen Funktionswertes: y(t + h) = y(t) + h (m1 + 2m2 + 2m3 + m4 ) 6 Mit der Dahlquist-Testgleichung erhält man für die Stabilitätsbedingung folgende Darstellung: ˛ ˛ ˛ ˛ ˛ Yn+1 ˛ ˛ ˛ ˛ ˛ = ˛1 + hλ + 1 h2 λ2 + 1 h3 λ3 + 1 h4 λ4 ˛ ≤ 1 ˛ ˛ Yn ˛ ˛ 2 6 24 Der innere Stabilitätsbereich ist in Abbildung 1 geplottet. Der Vergleich mit der Taylorreihenentwicklung zeigt, dass das Verfahren bereits eine Genauigkeit von O(h4 ) hat. Es wird deutlich, dass das Runge-Kutta-Verfahren den beiden vorherigen Verfahren überlegen ist hinsichtlich Genauigkeit und Stabilität. Jedoch hat es auch den höchsten Rechenaufwand, da die Funktion f viermal ausgewertet werden muss. 3.3.2 Trapez-Verfahren (implizit) Das Trapez-Verfahren mittelt die Steigungen des aktuellen Zeitpunktes t sowie des neuen Zeitpunktes t + h, um eine Sekante zu berechnen. Der neue Funktionswert berechnet sich somit: h y(t + h) = y(t) + (f (t, y(t)) + f (t + h, y(t + h))) 2 Für die Stabilität des Verfahrens wird wieder die DahlquistTestgleichung benutzt: Yn+1 = = h ⇔ Yn+1 − λYn+1 = „2 « h ⇔ Yn+1 1 − = 2 ˛ ˛ ˛ Yn+1 ˛ ˛ ˛ ⇒ ˛ Yn ˛ = h (λYn + λYn+1 ) 2 h h Yn + λYn + λYn+1 2 2 h Yn + λYn 2 « „ h 1 + λ Yn 2 ˛ ˛ ˛1 + hλ˛ ˛ 2 ˛ ˛≤1 ˛ ˛ 1 − h2 λ ˛ Yn + Daraus folgt, dass das Trapezverfahren auch A-stabil ist, da diese Bedingung für beliebig große h erfüllt ist, falls <(λ) ≤ 0. Die Genauigkeit der Methode ist O(h2 ). 3.3.3 Abbildung 1: Explizite Stabilitätsdiagramme 3.3 Implizite Verfahren Bei dieser Art von Verfahren, kann der neue Wert zum Zeitpunkt t + h nicht direkt durch Auswertung der rechten Seite berechnet werden. Stattdessen muss eine im Allgemeinen nicht-lineare Gleichung bzw. Gleichungssystem numerisch gelöst werden. Es wird also ein zusätzliches Verfahren zum effizienten Lösen dieser Gleichungen benötigt. Eine sehr gängige Methode hierfür ist das iterative Newtonverfahren. 3.3.1 Euler-Verfahren (implizit) Im Gegensatz zur expliziten Variante wird hier die noch unbekannte Steigung zum Zeitpunkt t + h ausgewertet. Die Berechnung des neuen Funktionswertes ist dann: y(t + h) = y(t) + h · f (t + h, y(t + h)) Diese Gleichung ist genau dann nicht-linear, wenn f nichtlinear ist. Sie muss nach y(t + h) aufgelöst werden, um den neuen Wert zu erhalten. Für die Stabilität des Verfahrens folgt mit der Dahlquist-Testgleichung: Yn+1 = Yn + hλYn+1 ⇔ Yn+1 − hλYn+1 = Yn ⇔ ⇒ Yn+1 = ˛ ˛ ˛ Yn+1 ˛ ˛ ˛ ˛ Yn ˛ = 1 Yn (1 − hλ) ˛ ˛ ˛ ˛ 1 ˛ ˛ ˛ (1 − hλ) ˛ ≤ 1 Diese Bedingung ist für beliebig große h erfüllt, falls <(λ) ≤ 0, somit ist das Verfahren A-stabil. Die Genauigkeit ist, genau wie bei der expliziten Variante, O(h). BDF-Verfahren (implizit) Die Abkürzung BDF steht für Backward Differential Formula und bezeichnet eine ganze Familie von Mehrschrittverfahren. Im Gegensatz zu den bisher vorgestellten Verfahren wird hier nicht nur der aktuelle Funktionswert zum Zeitpunkt t zur Berechnung des neuen Wertes benutzt, sondern auch bereits zuvor berechnete Werte bei t − ih, i = 1, 2, .... Exemplarisch wird hier das BDF2-Verfahren vorgestellt, bei dem sowohl der aktuelle Wert als auch der Wert des vorherigen Zeitschritts verwendet wird. Die Idee ist, dass man die gesuchte Lösungskurve durch eine Parabel p(t) = p0 + p1 t + p2 t2 an den Stützstellen t − h, t, t + h annähert. Um die Ableitung zum Zeitpunkt t + h berechnen zu können, wird sie durch die Ableitung der Parabel ersetzt: dp(t + h) = f (t + h, y(t + h)) dt Um das Interpolationspolynom p(t) zu bestimmen, wird praktischerweise die Lagrange-Basis verwendet. Aus Übersichtsgründen wird für y(t) = yj , y(t + h) = yj+1 , t = tj , t + h = tj+1 usw. gesetzt. li (t) = 2 Y j=0,j6=i t − tj ti − t j Das Polynom hat somit die Darstellung: p(t) = yj+1 lj+1 (t) + yj lj (t) + yj−1 lj−1 (t) Differenziert man p(t) bei t = tj+1 , ersetzt alle Differenzen tj − tj−1 = h, so erhält man folgende implizite Darstellung: 3y(t + h) − 4y(t) + y(t − h) = 2hf (t + h, y(t + h)) Um die Stabilität dieses Verfahrens zu bestimmen, wird die geschlossene Darstellung dieser linearen Rekursion mit der Dahlquist-Testgleichung untersucht: yi+1 = 1 4 yj − yj−1 3 − 2hλ 3 − 2hλ Gesucht werden die Nullstellen z1 , z2 ∈ C des charakteristischen Polynoms: z2 − 4 1 z+ =0 3 − 2hλ 3 − 2hλ Damit ist also (1, z1 , z12 , . . .), (1, z2 , z22 , . . .) eine Basis des Lösungsraums. Jede Lösung yi der Rekursion lässt sich somit als Linearkombination darstellen: yi = c1 z1i + c2 z2i Die Koeffizienten c1 , c2 sind durch die Startwerte eindeutig bestimmt. Damit diese Folge beschränkt bleibt muss also |z1 | , |z2 | ≤ 1 sein. Formt man das charakteristische Polynom nach hλ um, so erhält man: 3 2 1 − + 2 2 z 2z Findet man also alle hλ ∈ C unter der Voraussetzung, dass |z| ≤ 1 ist, so hat man alle stabilen Lösungen bestimmt. Diese Bedingung ist auch als Wurzelbedingung von Dahlquist bekannt. In Abbildung 2 ist der Instabilitätsbereich des BDF2-Verfahrens dargestellt. Ausserhalb dieses Bereichs ist das Verfahren stabil, insbesondere ist es auch A-stabil. hλ = Dadurch ist man in der Lage, ausschließlich mit gewöhnlichen DGLen rechnen zu können. Ein solches System besteht aus Massepunkten, die keine räumliche Ausdehnung haben und mit masselosen Federn verbunden sind. Der Zustand dieses Netzwerks ist zu jedem Zeitpunkt t durch die Positionen xi (t) und Geschwindigkeiten vi (t) aller Partikel bestimmt. Die Bewegung xi (t), die jedes Partikel der Masse mi beschreibt, wird durch die Newton’sche Bewegungsgleichung Fi (t) = mi ẍi (t) beschrieben. Dabei ist Fi (t) die Summe aller auf das Partikel wirkenden Kräfte. Bei klassischen Feder-Systemen sind die internen Kräfte durch das Hooke’sche Federgesetz beschrieben. Die Kraft Fij (t) die auf ein Partikel i durch ein damit verbundenes Partikel j ausgeübt wird, ist: « „ xj (t) − xi (t) Fij (t) = kij (xj (t) − xi (t)) − lij |xj (t) − xi (t)| Dabei ist kij die Federkonstante der Feder, die Partikel i mit Partikel j verbindet und lij deren natürliche Länge. Eine Verallgemeinerung dieser internen Kräfte kann durch Einführung eines Potentialgradienten erreicht werden: F = −∇V wobei V ein Skalarfeld ist. Dadurch können Bedingungen in der Form C(x1 , . . . , xn ) = 0 aufgestellt werden und das dazugehörige Potential mit V = 12 kC(x1 , . . . , xn )2 berechnet werden. Damit ist: F = −∇V = −kC(x1 , . . . , xn )T · ∂C(x1 , . . . , xn ) ∂x So erreicht man mit der Bedingung C(xi , xj ) = |xj − xi | − lij , dass die beiden Partikel i und j den Abstand lij einhalten sollen die lineare Federkraft der obigen Gleichung. Die verallgemeinerte gewöhnliche DGL für Partikel i ist dann: ẍi (t) = 1 (−∇V + Fe (t)) mi mit der externen Kraft Fe wie z.B. Gravitation. Stellt man für jedes Partikel diese DGL auf, erhält man ein System von gekoppelten DGLen, das man mit numerischen Zeitintegrationsverfahren, wie aus Abschnitt 3, lösen kann. 4.2 Abbildung 2: BDF2-Stabilitätsdiagramm Die Genauigkeit des BDF2-Verfahrens ist O(h2 ). Eine detailierte Analyse der BDFi-Verfahren findet sich z.B. in [3]. Abschließend sei noch bemerkt, dass das BDF1-Verfahren identisch mit dem impliziten Euler-Verfahren ist. 4. MASSE-FEDER-SYSTEME 4.1 Grundlagen Masse-Feder-Systeme stellen ein sehr einfach zu verstehendes Modell für deformierbare Materialien dar. Im Gegensatz zur Kontinuumsmechanik, wo der Verformungszustand durch eine partielle Differentialgleichung beschrieben ist, wird hier von Beginn an mit einem diskreten Modell gearbeitet. Textilsimulation Als praktische Anwendung von Masse-Feder-Systemen wird hier die Simulation von Textilien erläutert. Eine alternativer Ansatz ist die Simulation basierend auf der Elastizitätstheorie und der Methode der Finiten Elemente, auf die hier aber nicht weiter eingegangen wird. Stattdessen wird das bekannte Modell von Provot [17] vorgestellt, das von einem regelmäßigen quadratischen Gitter ausgeht. Die Massenpunkte liegen im Anfangszustand jeweils auf den Eckpunkten eines Quadrats und sind mit drei verschiedenen Typen von Federn miteinander verbunden: • Struktur-Federn: Direkte Nachbarn innerhalb des quadratischen Gitters werden verbunden, um Dehnungen und Stauchungen zu simulieren • Scher-Federn: Diagonale Nachbarn innerhalb des quadratischen Gitters werden verbunden, um Scherkräfte zu simulieren • Biege-Federn: Indirekte Nachbarn werden verbunden, um Biegekräfte zu simulieren, d.h. ein direkter Nachbar wird ausgelassen mit der Erdbeschleunigung g = 9.81 sm2 . Die Dissipation von Energie kann durch eine Dämpfungskraft simuliert werden: damp Diese Komponenten sind jedoch nicht unabhängig voneinander, so dass eine Dehnung auch die Scher -und Biegefedern auslenkt und nicht nur die Strukturfedern. Diese drei Typen von Federn sind in Abbildung 3 schematisch dargestellt. Fi,j (t) = kd X „ vi,j,k,l xi,j,k,l « xi,j,k,l xi,j,k,l xi,j,k,l (k,l)∈Σ Damit wird die Geschwindigkeitsdifferenz auf den Verbindungsvektor der Massepunkte projiziert, so dass rigide Bewegungen des Textils nicht gedämpft werden. Kennt man die Flächennormale ni,j in jedem Partikel, so kann man z.B. eine Windkraft angeben: Fwind (t) = kw (ni,j · (ui,j − vi,j )) ni,j i,j wobei ui,j die lokale Strömungsgeschwindigkeit des Windes ist. Summiert man alle diese Kräfte auf, so ergibt sich die resultierende Gesamtkraft auf ein Partikel: grav damp in Fres (t) + Fwind (t) i,j (t) = Fi,j (t) + Fi,j (t) + Fi,j i,j Daraus erhält man für jedes Partikel die Newton’sche Bewegungsgleichung: ẍi,j (t) = Abbildung 3: Textilienmodell Die interne Federkraft Fin i,j (t), die auf ein Partikel bei Position (i, j) wirkt, erhält man durch Summierung aller an diesem Partikel angreifenden Einzelkräfte: « „ X xi,j,k,l (t) 0 Fin ki,j,k,l (xi,j,k,l (t)) − li,j,k,l i,j (t) = |xi,j,k,l (t)| (k,l)∈Ω wobei gilt: • Ω ist die Menge aller Partikel, die eine Federverbindung zum aktuellen Partikel (i, j) haben • xi,j,k,l (t) ist der Verbindungsvektor von Partikel (i, j) zu (k, l) 0 • li,j,k,l ist die natürliche Länge der Verbindungsfeder von Partikel (i, j) zu (k, l) Fres i,j (t) mi,j Dieses System kann mit einem der Verfahren aus Abschnitt 3 gelöst werden. Man erhält zunächst die Geschwindigkeiten und durch nochmalige Integration schließlich die Positionen aller Partikel im neuen Zeitschritt. Diese sehr einfache Modell geht von linearen Kräften zwischen den Partikeln aus, jedoch zeigen reale Textilien nichtlineares Verhalten. Simuliert man das obige Modell ohne weitere Änderungen, kommt es zu einer unnatürlich großen Dehnung des Stoffs, dem „Superelasticity Effect“. Provot schlug vor, dieses Problem nicht etwa durch besonders steife Federn zu lösen, was zu sehr kleinen Zeitschritten geführt hätte, sondern durch eine Begrenzung der maximalen Auslenkung einer Feder. Wird ein definierter Schwellwert überschritten, so werden die Positionen der beiden betreffenden Partikel so angepasst, dass der Schwellwert nicht überschritten wird. Die Vorgehensweise ist für zwei lose Partikel in Abbildung 4 gezeigt. Beide Partikel werden um dieselbe Strecke verschoben, um den Grenzwert einzuhalten. Für den Fall, dass einer der Partikel fixiert ist, wird die Korrektur entsprechend Abbildung 5 vorgenommen. Hier wird nur das frei bewegliche Partikel entlang des Federvektors verschoben. • ki,j,k,l ist die Federkonstante der Verdindungsfeder von Partikel (i, j) zu (k, l) Als externe Kräfte kommen Einflüsse wie Gravitation, Dämpfung oder Wind in Frage. Es gibt unterschiedliche Möglichkeiten diese Kräfte zu simulieren, je nachdem wie akkurat und effizient das Modell sein soll. Für die Schwerkraft gilt: Fgrav i,j (t) = mi,j g Abbildung 4: Anpassung von zwei losen Partikeln zu simulieren. Hierfür ist das Modell aus der Elastizitätstheorie deutlich besser geeignet. Für die reine Animation in Filmen oder Spielen ist diese Technik jedoch in der Regel ausreichend, um zufriedenstellende Ergebnisse mit akzeptablem Aufwand zu erreichen. Es gibt eine Reihe von Verbesserungen in diesem Modell auf die aber hier nicht weiter eingegangen wird. Besonders erwähnenswert ist noch die verallgemeinerte Sichtweise über den Potentialgradienten und implizite Integrationsverfahren, die erstmals von Baraff und Witkin [1] in der Textilsimulation verwendet wurden. Abbildung 5: Anpassung von einem losen Partikel Durch diese Korrektur kann es aber dazu kommen, dass eine andere Feder ihren Grenzwert überschreitet. Unter Umständen pflanzt sich dieses Problem fort und das System konvergiert nicht. Die Reihenfolge, mit der man die Partikel korrigiert spielt hier eine große Rolle. Besonders bei fixierten Partikeln ist dieses Problem besonders groß. Wenn eine fortgesetzte Korrektur einen fixierten Punkt erreicht, darf weder das Partikel bewegt werden, noch können die entsprechenden Federlängen korrigiert werden. Dochev und Vassilev [5] haben einen Algorithmus entwickelt, der die Reihenfolge bestimmt, mit der die Partikel korrigiert werden sollten. Damit die gerade korrigierten Federn im nächsten Zeitschritt nicht wieder sofort überdehnt werden, schlugen Vassilev et al. [25] vor die Geschwindigkeiten der Partikel ebenfalls zu korrigieren. Durch eine Zerlegung des Geschwindigkeitsvektors in eine zum Federvektor parallele und senkrechte Komponente, kann der Anteil, der die Feder überdehnt, korrigiert werden. In Abbildung 6 ist diese Zerlegung dargestellt. 5. FLUIDE 5.1 Grundlagen Die Simulation von Fluiden stellt eine große Herausforderung dar. Die DGLen, die das Verhalten von Strömungsfeldern beschreiben, wurden bereits in der ersten Hälfte des 19. Jahrhunderts von Claude Navier und George Stokes formuliert. Das Bestimmen von allgemeinen Lösungen ist jedoch erst seit Erfindung des Computers mit akzeptablem Aufwand möglich. Die numerische Strömungsmechanik (CFD, Computational Fluid Dynamics) hat in den letzten 50 Jahren sehr große Fortschritte bei der Genauigkeit von Lösungen gemacht, jedoch ist der Rechenaufwand extrem hoch. Für die Computergrafik stehen andere Aspekte im Vordergrund. Die Stabilität für große Zeitschritte und realistische Optik spielen eine größere Rolle als physikalische Exaktheit. Grundsätzlich unterscheidet man zwei Sichtweisen bei der Simulation von Fluiden, nämlich den partikelbasierten Ansatz von Lagrange und die gitterbasierte Sichtweise von Euler. Bei Ersterem wird die gesamte Physik in den Partikeln realsiert. Das Fluid besteht aus endlich vielen Partikeln, die sich näherungsweise wie ein Fluid verhalten. Für das Rendering kann man mit dem Marching-Cubes-Algorithmus [12] die Oberfläche des Fluids rekonstruieren. Der gitterbasierte Ansatz nach Euler betrachtet die zeitliche Entwicklung von physikalischen Größen an räumlich festen Punkten. Diese Sichtweise spiegelt sich auch in den NavierStokes-Gleichungen wieder, die in Abschnitt 5.2 erläutert werden. In Abbildung 7 sind die beiden Ansätze schematisch dargestellt. Abbildung 6: Zerlegung der Geschwindigkeit Eine einfache Möglichkeit dies zu tun, ist z.B. den Durchschnitt der beiden parallelen Komponenten zu bilden: ´ 1` p v (t) + vpk,l (t) vpi,j (t) = vpk,l (t) = 2 i,j Mit diesem Modell können bereits optisch ansprechende Ergebnisse erzielt werden. Der Hauptnachteil dieses Verfahrens ist jedoch die fehlende Kontrolle über Materialparameter des Stoffes. So verhält sich z.B. Wolle ganz anders als Seide. Auch die Webstruktur eines Textils spiegelt sich nicht unbedingt in dem regelmäßigen Gitter aus Abbildung 3 wieder. Deshalb ist das Verfahren in der Regel nicht so gut geeignet, um möglichst realitätsnahes Verhalten von Stoffen Abbildung 7: Links: Lagrange, Rechts: Euler Alternativ zum Marching-Cubes-Algorithmus kann auch die Levelset-Methode [6] für die Oberflächenrekonstruktion eingesetzt werden. 5.2 Navier-Stokes-Gleichungen In diesem Abschnitt werden die Bewegungsgleichungen für inkompressible Newton’sche Fluide erläutert. Sie zeichnen sich dadurch aus, dass die Scherspannung τ proportional zur Änderung der Strömungsgeschwindigkeit ux ist. Folgender Versuchsaufbau verdeutlicht diese Eigenschaft. Die Kontinuitätsgleichung liefert eine Aussage über die Erhaltung der Masse. Sie bringt zum Ausdruck, dass für eine Volumeneinheit die Summe der pro Zeiteinheit ein- und ausfließenden Massen gleich der Massenänderung pro Zeiteinheit durch Dichteänderung ist: Dρ + ρ∇ · u = 0 Dt Für Inkompressibilität gilt, dass sich die Dichte substantiell nicht ändert, d.h. Dρ = 0 und da sinnvollerweise ρ 6= 0 ist, Dt folgt: ∇·u=0 Abbildung 8: Geschwindigkeitsverteilung Man hat zwei parallele Platten mit einem Fluid im Zwischenraum. Hält man die untere Platte fest und bewegt obere Platte mit der Geschwindigkeit Ux , so verteilt sich die Strömungsgeschwindigkeit ux proportional zu deren Abstand in y-Richtung. Damit gilt: τ =µ dux dy Dies ist die allgemein bekannte Bedingung an ein inkompressibles Fluid. Für die zweite Gleichung wird der allgemeine Spannungszustand eines Volumenelements dV = dx · dy · dz benötigt. Dazu wird zunächst der Spannungsvektor eingeführt. dF pn = dA Er beschreibt die Oberflächenkraft pro Flächeneinheit und hängt von der Normalen n des Flächenelements ab. In einem Punkt des Kontinuums gibt es unendlich viele Spannungsvektoren, jedoch sind sie nicht unabhängig. Man kann sie mit Hilfe des Spannungstensors σ für jede beliebige Normale bestimmen. pn = σn Der Proportionalitätsfaktor µ ist eine Materialkonstante des Fluids und wird Viskosität genannt. Das Fluid wird als Kontinuum angenommen, d.h. ein Volumenelement dV sei immer noch sehr groß gegenüber dem mittleren Molekülabstand. Für die Navier-Stokes-Gleichungen wird die substanD benötigt, die hier eingeführt wird. Dazu tielle Ableitung Dt betrachtet man zunächst ein stationäres Strömungsfeld u. Für die Beschleunigung in x-Richtung erhält man für eine Verschiebung um ∂x bzw. ∂y die Situation in Abbildung 9. Der Spannungstensor enthält die Spannungen entlang der kartesischen Achsen für senkrecht aufeinander stehende Flächenelemente. In Abbildung 10 sind diese Elemente für ein Volumenelement dV eingezeichnet. Der Spannungstensor ist also eine 3x3-Matrix. 1 0 τxx − p τxy τxz τyy − p τyz A σ = @ τyx τzx τzy τzz − p Der erste Index kennzeichnet die Achse zu der die Fläche orthogonal ist, der Zweite die Richtung der Spannungskomponente. Der Druck p wirkt den Normalenspannungen jeweils von außen entgegen und wird deshalb abgezogen. Damit das Volumenelement insgesamt nicht rotiert, muss für die Scherspannungen τxy = τyx , τxz = τyx und τyz = τzy gelten. Abbildung 9: Beschleunigung bei Verschiebungen Es gilt also: dux dt dux dt = = ∂ux ux ∂x ∂ux uy ∂y Alle Verschiebungen zusammen und ein instationäres Strömungsfeld ergeben die substantielle Ableitung: Dux ∂ux ∂ux ∂ux ∂ux = + ux + uy + uz Dt ∂t ∂x ∂y ∂z Für alle Komponenten der Beschleunigung folgt daraus: Du = Dt ∂u ∂t |{z} Lokale Beschleunigung + (u · ∇) u | {z } Konvektive Beschleunigung Abbildung 10: Spannungen am Volumenelement Um die resultierende Oberflächenkraft P pro Volumeneinheit dV berechnen zu können, betrachtet man die Spannungen auf die einzelnen Flächen. Auf die beiden Flächen senkrecht zur x-Achse der Größe dy ·dz wirken die resultierenden Spannungen: ∂px dx ∂x Die Oberflächenkraft auf die Ebene senkrecht zur x-Achse ist dann: ∂px dx · dy · dz ∂x Die Anteile in y- und z-Richtung erhält man analog. Die resultierende Oberflächenkraft P pro Volumeneinheit ist dann: px P= und px + ∂py ∂px ∂pz + + ∂x ∂y ∂z Mit dem Spannungstensor und der proportionalen Beziehung für Newton’sche Fluide zwischen Scherspannung und Strömungsgeschwindigkeit folgt: 0 0 0 ∂ux 11 1 −p τ −p ∂x ∂px ∂ @ xx ∂ ∂u y AA @µ @ τyx A = = ∂x ∂x ∂x ∂x ∂uz τ zx 0 = B µ@ ∂p ∂ 2 ux − ∂x ∂x2 2 ∂ uy ∂x2 ∂ 2 uz ∂x2 ∂x 1 C A 5.3 Smoothed Particle Hydrodynamics Das Smoothed Particle Hydrodynamics (SPH) Verfahren wurde ursprünglich 1977 von Monaghan, Gingold [11] und Lucy [13] für die Berechnung von interstellaren Gasströmungen in der Astrophysik entwickelt. Es ist ein partikelbasiertes Verfahren, das zur Berechnung von Fluiden aller Art verwendet wird. In der Computergrafik wurde SPH erstmals von Stam und Fiume [22] 1995 für die Simulation von Feuer eingesetzt. Eine sehr gute Referenz für die Fluidsimulation in Echtzeit ist [14] von Müller, Charypar und Gross. Die Grundidee ist, eine beliebige skalare Feldgröße A(x) bei einer beliebigen Position x im Raum durch eine gewichtete Summe aus umliegenden, diskreten Werten Aj = A(xj ) zu interpolieren. Die Partikel haben eine Masse mj , eine Dichte ρj , eine Position xj und den Wert der Feldgröße Aj als Attribute. Die Interpolation in einem beliebigen Punkt berechnet man mit: X mj · Aj · W (x − xj , h) A(x) = ρj j wobei W (r, h) eine Gewichtungsfunktion, auch Smoothing Kernel genannt, ist mit Radius h, auch Smoothing Length genannt. Die Summe läuft nur über Partikel, die innerhalb dieses Radius liegen und es werden ausschließlich Kernel mit endlichem Träger verwendet, d.h. ausserhalb des Radius ist W = 0. Die Terme für die beiden anderen Komponenten folgen analog. Insgesamt gilt: 0 2 1 0 ∂p 1 ∂ ux ∂ 2 ux ∂ 2 ux 2 + ∂y 2 + ∂z 2 ∂x B ∂∂x C 2 2 2 u ∂ u ∂ u y y y C @ ∂p A P = µB ∂y @ ∂x2 + ∂y2 + ∂z2 A − ∂p ∂ 2 uz ∂ 2 uz ∂ 2 uz + + ∂z 2 2 2 ∂x ∂y ∂z = µ∆u − ∇p Mit dieser Vorarbeit kann jetzt die Impulsgleichung aufgestellt werden. Sie ist die zweite fundamentale Gleichung zur Beschreibung von Fluiden. Danach ist Masse mal Beschleunigung gleich der Summe der Kräfte. In diesem Fall sind äußere Kräfte F wie z.B. Gravitation und die Oberflächenkräfte P wie Druck und Reibung wirksam. Betrachtet man die Kräfte pro Volumeneinheit, dann gilt z.B. für die Schwerkraft Fg = ρg mit der Dichte ρ und der Fallbeschleunigung g. Die Impulsgleichung hat dann die Gestalt: F P Du = + Dt ρ ρ Setzt man die substantielle Ableitung und die Oberflächenkraft ein so erhält man die typische Darstellung der zweiten Navier-Stokes-Gleichung: ∂u = −(u · ∇)u − ∇p + ν∆u + f ∂t Dabei ist ν = µρ die kinematische Viskosität. In dieser sehr gängigen Darstellung steht p und f jeweils für den Quotient aus physikalischem Druck und Dichte beziehungsweise Kraft und Dichte. Dem interessierten Leser sei an dieser Stelle das bekannte Werk Grenzschicht-Theorie von Hermann Schlichting und Klaus Gertsen [18] empfohlen, das einen umfassenden Einblick in die Strömungsmechanik und die Theorie umströmter Körper liefert. Abbildung 11: Smoothing Length Der Quotient aus Masse und Dichte liefert das Volumen m Vj = ρjj , das jedem Partikel zugeordnet wird. Die Masse eines Partikels bleibt zeitlich konstant, während die Dichte in jeden Schritt neu berechnet werden muss. Setzt man die Dichte als Feldgröße in die Interpolation ein, so erhält man: X mj X ρ(x) = ρj W (x − xj , h) = mj W (x − xj , h) ρ j j j Eine wichtige Eigentschaft dieser Interpolation ist, dass der Gradient der Feldgröße auf der rechten Seite nur die Berechnung des Gradienten des Kernels beinhaltet: X mj · Aj · ∇W (x − xj , h) ∇A(x) = ρj j Genauso gilt für den Laplace-Operator: X mj · Aj · ∆W (x − xj , h) ∆A(x) = ρj j Auf die Wahl des Kernels wird später noch genauer eingegangen, jedoch sei hier bereits erwähnt, dass diese Operationen besonders einfach auf die ausgewählten Kernel anzuwenden sind. Ausgehend von den inkompressiblen NavierStokes-Gleichungen aus Abschnitt 5.2 werden jetzt Kräfte hergeleitet, die für eine Partikelsimulation benötigt werden. Mit der Newton’schen Bewegungsgleichung und einem Zeitintegrationsverfahren aus Abschnitt 3 können dann die Trajektorien berechnet werden. Die Simulation mit einer endlichen und konstanten Anzahl von Partikeln vereinfacht die Gleichungen, da die Massenerhaltung der Kontinuitätsgleichung implizit gegeben ist. Damit ist die Divergenzfreiheit automatisch sichergestellt und die erste Navier-StokesGleichung muss in der Berechnung nicht mehr berücksichtigt werden. Da sich die Partikel mit dem Fluid mitbewegen, kann die substantielle Ableitung der zweiten Gleichung durch die gewöhnliche Ableitung nach der Zeit ersetzt werden. Dadurch fällt der nicht-lineare Konvektionsterm (u · ∇)u weg. Insgesamt bleibt folgende Gleichung für die Berechnung übrig: ∇p µ∆u F du =− + + dt ρ ρ ρ Die drei Summanden auf der rechten Seite der Gleichung liefern Anteile zur resultierenden Gesamtkraft. Die Anteile sind Druckkraft Fp , Viskositätskraft Fv und die externe Kraft F. Nachfolgend werden diese Kräfte mit dem SPHVerfahren herlgeleitet. 5.3.1 Druck Um symmetrische Kräfte zu erhalten, wird die allgemeine Produktregel für Ableitungen bzw. Gradienten benutzt. Nach Umformungen erhält man: „ « p p ∇p =∇ + 2 ∇ρ ρ ρ ρ 5.3.2 Viskosität Führt man dieselbe Rechnung für den Viskositätsterm durch so kommt man auf folgende Kraft: X vj ∆W (xi − xj , h) FVi = µ mi mj ρ i ρj j Diese Kraft ist asymmetrisch, aber eine einfache Möglichkeit sie symmetrisch zu gestalten ist: X vj − v i FVi = µ mi mj ∆W (xi − xj , h) ρi ρj j Diese Vorgehensweise ist sinnvoll, da Viskositätskräfte nur von Geschwindigkeitsdifferenzen abhängen. 5.3.3 Oberflächenspannung Die Oberflächenspannung taucht nicht in den Navier-StokesGleichungen auf. Sie wird deshalb explizit als externe Kraft betrachtet. Für das SPH-Verfahren entwickelte Morris [15] ein Modell für die Oberflächenspannung. Sie ist z.B. für die Tropfenbildung verantwortlich und kommt durch intermolekulare Kräfte zustande. Innerhalb des Fluids wirken diese Bindungskräfte in alle Richtungen gleichzeitig und sind ausgeglichen, aber an der Oberfläche ist dies nicht der Fall. Diese Kohäsionskräfte bewirken, dass die Moleküle an der Oberfläche in Richtung der negativen Normalen gedrückt werden. In Abbildung 12 ist dies für 3 Moleküle dargestellt. Für die Druckkraft auf Partikel i gilt mit dem Druckgradient, der Produktregel und der Interpolation für die Dichte: FP i = = = = = = dup (xi ) dt ∇pi −mi ρi « „ „ « pi pi + 2 ∇ρi −mi ∇ ρi ρi X mj pj −mi ∇W (xi − xj , h) ρj ρj j pi X mj ρj ∇W (xi − xj , h) −mi 2 ρi j ρj X pj − mi mj 2 ∇W (xi − xj , h) ρ j j X pi − mi mj 2 ∇W (xi − xj , h) ρi j „ « X pi pj − mi mj + ∇W (xi − xj , h) ρ2i ρ2j j mi · Abbildung 12: Kohäsionsdruck Der Wirkungsradius bestimmt bis zu welcher Tiefe der Kohäsionsdruck wirksam ist. Der Radius von Molekül M1 ist vollständig innerhalb des Fluids und alle Kräfte heben sich auf. Auf M2 und M3 wirken dagegen die eingezeichneten Kohäsionskräfte. Eine Folge daraus ist die Tendenz zur Minimierung der Oberfläche, da dies einen energetisch günstigeren Zustand zur Folge hat. Je nach Vorzeichen der Oberflächenkrümmung wird der Kohäsionsdruck vergrößert, verkleinert oder bleibt konstant. In Abbildung 13 ist dies dargestellt. Da die Partikel den Druck p nicht als Attribut haben, kann er mit der temperaturabhängigen Gaskonstanten k über die ideale Gasgleichung berechnet werden: pi = kρi Zusammen mit dem Gradienten des Kernels sind jetzt alle Größen auf der rechten Seite der Gleichung bekannt. Abbildung 13: Änderung des Drucks Der Kohäsionsdruck auf Molekül M1 ist konstant, da die Krümmung in seiner Umgebung verschwindet. In der konkaven Region um Molekül M2 wird der Druck verkleinert während er in der konvexen Umgebung von M3 vergrößert wird. Um die Partikel für das SPH-Verfahren in Oberflächennähe zu bestimmen, wird ein weiteres Skalarfeld c(x) eingeführt, das den Wert 1 liefert an den Positionen der Partikel und 0 überall sonst. Das interpolierte Feld in einem Partikel i ist damit: X mj · 1 · W (xi − xj , h) c(xi ) = ρj j Der Gradient dieses Skalarfeldes liefert ein Vektorfeld, das innerhalb des Fluids sehr klein ist, da das Skalarfeld hier nahezu konstant ist. Je näher man der Oberfläche kommt, desto größer wird der Betrag der Vektoren, da das interpolierte Skalarfeld hier stark abfällt und schließlich verschwindet. Die Richtung der Vektoren zeigt in Richtung des FluidInneren und damit in negativer Richtung der Oberflächennormalen. X mj ni = ∇c(xi ) = · 1 · ∇W (xi − xj , h) ρj j al. [14] folgenden Kernel vor: ( r3 15 − 2h V 3 + W (r, h) = 2πh3 0 r2 h2 + h 2r −1 ,0 ≤ r ≤ h , sonst Bei anderen Kerneln kann es vorkommen, dass ∆W < 0 wird, was dazu führt, dass die relative Geschwindigkeit zweier nahe gelegenen Partikel zunimmt, obwohl sie, durch Viskosität bedingt, abnehmen sollte. Mit der hier vorgestellen Gewichtungsfunktion W V wird dies verhindert, da die zweite Ableitung auf dem gesamten Träger positiv ist. Mit dem SPH-Verfahren können optisch gute Resultate in Echtzeit erzielt werden. Modelliert man die Partikel mit kleinen Kugeln, so hat das Verfahren auch den Vorteil, dass Kollisionsdetektion besonders effizient durchgeführt werden kann. Zur Oberflächenrekonstruktion kann z.B. der MarchingCubes-Algorithmus [12] verwendet werden. Die nachfolgenden Bilder stammen aus [14] und wurden mit 3000 Partikeln und 5 FPS auf einem 1.8 GHz Pentium IV mit einer GForce4-Grafikkarte berechnet. Mit aktueller Hardware wäre dies problemlos in Echtzeit möglich. Betrachtet man also nur diejenigen Partikel, die eine Normale mit |n| ≥ δ für einen gewissen Schwellwert δ > 0 haben, so hat man die oberflächennahen Teilchen identifiziert. Um die Krümmung κi zu bestimmen bildet man die Divergenz des Normalenfeldes: κi = −∇ni = −∆c(xi ) Das Minus wird benötigt, um eine positive Krümmung für konvexe Regionen zu erhalten. Die Kraft, die auf ein Partikel wirkt, kann dann auf folgende Weise angenähert werden: ( ni , |ni | ≥ δ −σ∆c(xi ) |n O i| Fi = 0 , sonst Dabei ist σ ein Spannungskoeffizient, der von der Art des Fluids abhängt. Diese Kraft ist in konvexen Regionen in Richtung der Oberflächennormalen gerichtet und in konkaven Regionen in Richtung des Fluid-Inneren. Man beachte, dass ni die negativen Normalen sind. 5.3.4 Kernel Bislang wurde noch nicht auf die Wahl des Kernels W eingegangen. Es wurde aber bereits erwähnt, dass er einen endlichen Träger haben sollte und die Berechnung der Ableitungen sollte möglichst einfach sein. In der Regel werden kubische Splines eingesetzt, die eine gewisse Ähnlichkeit zur Gauß-Funktion haben. Um auch unter Koordinatentransformationen invariant zu bleiben, werden räumlich symmetrische Funktionen bevorzugt. Desbrun [4] schlug für die Berechnung der Druckkraft folgenden Kernel vor: ( 15 (h − r)3 , 0 ≤ r ≤ h P W (r, h) = πh6 0 , sonst Dieser Kernel hat auch in Zentrumsnähe einen von Null verschiedenen Gradienten und behebt damit das Problem der Häufungsbildung von Partikeln unter hohem Druck, wie es bei Kerneln mit Nullgradient in Zentrumsnähe vorkommt. Für die Berechnung der Viskositätskraft schlugen Müller et Abbildung 14: SPH mit 5 FPS Das Video zu diesen Bildern kann unter [19] gefunden werden. 5.4 Semi-Lagrange-Verfahren Das zweite Verfahren zur Fluidsimulation, das hier vorgestellt wird, basiert auf der Kombination des Euler’schen Gitters und der Lagrange-basierten Sichtweise. Es wurde erstmals von Stam [20] in der Computergrafik verwendet und hat ein großes Potential für hochrealistische Simulationen mit akzeptablem Rechenaufwand. Deshalb ist es nicht verwunderlich, dass dieses Verfahren für die kommerzielle Nutzung in MAYA eingesetzt wird. In [21] wird eine Implementierung in 2D des Verfahrens in Echtzeit vorgestellt, die auch Interaktion ermöglicht und daher z.B. auch für Computerspiele in gewissem Umfang geeignet ist. Der Ausgangspunkt für das Verfahren sind die inkompressiblen Navier-Stokes-Gleichung aus Abschnitt 5.2: ∇u ∂u ∂t = 0 = −(u · ∇)u − ∇p + ν∆u + f Zunächst wird ein mathematischer Satz benötigt, der aussagt, dass ein beliebiges Vektorfeld w eindeutig zerlegt werden kann in einen divergenzfreien Anteil u und einen Potentialgradienten ∇q mit einem Skalarfeld q. Man nennt dies die Helmholtz-Hodge-Zerlegung: w = u + ∇q wobei ∇ · u = 0 ist. Somit kann ein Operator P definiert werden, der ein beliebiges Vektorfeld w auf seinen divergenzfreien Teil u projiziert. Dadurch lassen sich die beiden Navier-Stokes-Gleichungen auf eine reduzieren: ∂u = P (−(u · ∇)u − ∇p + ν∆u + f) ∂t Mit der Tatsache, dass Pu = u und P∇p = 0 ist, folgt: P auf einen anderen Gitterpunkt fällt, interpoliert man die Geschwindigkeiten der umliegenden Gitterpunkte. Gibt p(x, t) den Ort eines Partikels zum Zeitpunkt t an, das jetzt am Ort x ist, so berechnet sich der neue Wert der Geschwindigkeit als: w2 (x) = w1 (p(x, t − h)) Die Rückverfolgung des Partikels is in Abbildung 15 illustriert. ∂u = P (−(u · ∇)u + ν∆u + f) ∂t Diese Gleichung ist der Ansatzpunkt für das weitere Vorgehen. Man löst diese partielle Differentialgleichung, indem man sie aufteilt und die Teile separat löst. Diese Vorgehensweise wird auch Operator Splitting genannt. In diesem Fall wird die rechte Seite der Gleichung in 4 Schritte aufgeteilt: die externen Kräfte f, der Konvektionsterm −(u · ∇)u, der Viskositätsterm ν∆u und die Projektion P. Ausgehend vom Strömungsfeld u(x, t) zur Zeit t, ist man an der Berechnung des Feldes u(x, t + h) im nächsten Zeitschritt interessiert. Um den Ablauf der Berechnung besser illustrieren zu können, werden Variablen w0 (x), . . . , w4 (x) eingeführt, wobei w0 (x) = u(x, t) und w4 (x) = u(x, t + h) ist: w0 ext. Kräfte Konvektion z}|{ −→ z}|{ −→ w1 Viskosität w2 z}|{ −→ w3 Projektion z}|{ −→ w4 Nachfolgend wird gezeigt, wie die einzelnen Teile gelöst werden können. 5.4.1 Externe Kräfte Dieser Term ist der einfachste von allen und kann mit einem beliebigen Zeitintegrationsverfahren aus Abschnitt 3 gelöst werden. Ein expliziter Euler-Schritt ist z.B. dann: Abbildung 15: Partikelrückverfolgung Die Interpolation der Geschwindigkeit ist in Abbildung 16 dargestellt. w1 (x) = w0 (x) + h · f(x, t) Typischerweise hat man hier Gravitations -und Kollisionskräfte und ggf. die Interaktion des Benutzers. Wenn man eine stark temperaturabhängige Simulation durchführt, wie z.B. heißes Gas, kann an dieser Stelle auch eine Auftriebskraft modelliert werden. Im nachfolgenden Abschnitt kommt noch eine künstliche Wirbelkraft hinzu, die die numerische Dissipation des Semi-Lagrange-Verfahrens ausgleicht. 5.4.2 Konvektion Der Konvektionsterm ist der interessanteste und ist für die Namensgebung des Verfahrens verantwortlich. Er ist nichtlinear in u und beschreibt die räumliche Änderung des Strömungsfeldes durch sich selber. Foster und Metaxas [10] lösten diesen Term mit einem Finiten-Differenzen-Schema, das jedoch nur für ausreichend kleine Zeitschritte stabil war. Das Ziel war also eine bedingungslos stabile Methode zu finden, was Stam [20] durch die Rückverfolgung von Partikeln realisierte. Ist man an der Strömungsgeschwindigkeit u(xi , t) an einem Gitterpunkt i interessiert, so berechnet man den Pfad, den ein Partikel im letzten Zeitschritt genommen hätte, um auf dem Gitterpunkt zu landen. Der Ursprung des Pfades ist der Ausgangspunkt des Partikels zum Zeitpunkt t − h. Die Geschwindigkeit in diesem Punkt ist für die Geschwindigkeit im Gitterpunkt i zum Zeitpunkt t verantwortlich. Da diese Position im Allgemeinen nicht Abbildung 16: Interpolation Diese Vorgehensweise ist bedingungslos stabil, da der neue Wert der Geschwindkeit niemals den Maximalwert des alten Zeitschritts übersteigen kann. Man hat auf diese Weise ein einfaches Werkzeug, den komplizierten nicht-linearen Term zu lösen. Alles was benötigt wird, ist die Verfolgung eines Partikels und eine Interpolation. Führt man die Simulation in dieser Weise durch, stellt man fest, dass turbulente Anteile des Strömungsfeldes sehr schnell gedämpft werden. Dieser nicht-physikalischen numerischen Dissipation kann auf einer einfachen Weise entgegen gewirkt werden, wie Fedkiw, Stam und Jensen [9] gezeigt haben. Dazu wird zunächst die Wirbelstärke ω, auch Vortizität genannt, eines Vektorfeldes eingeführt. Sie ist ein Maß dafür, wie schnell und um welche Achse ein mitschwimmender Körper rotieren würde. Im Allgemeinen muss jedoch keine Rotation im Sinne einer Drehbewegung im Spiel sein. Für die Wirbelstärke des Strömungsfeldes u(x, t) gilt dann: ω(x, t) = ∇ × u(x, t) Berechnet man nun den Betrag dieser Vektoren, erhält man ein Skalarfeld, das die lokale Wirbelstärke beschreibt. Bildet man davon den Gradienten, bekommt man ein Vektorfeld η(x, t), dessen Vektoren in die Zentren von Wirbeln zeigen, da das Skalarfeld in diesen Positionen lokale Maxima hat: ausgegangen mit dem Gitterabstand d. Daraus folgt für den diskretisierten Laplace-Operator δ: „ 2 « δ δ2 + δ= δx2 δy 2 mit den finiten Differenzen 2. Ordnung: δ 2 f (x, y) δx2 δ 2 f (x, y) δy 2 wi,j 3 i−1,j w3 wi+1,j 3 i,j−1 w3 wi,j+1 3 Da man zunächst nur die Richtung zu den Wirbelzentren benötigt, normiert man dieses Vektorfeld: η(x, t) |η(x, t)| = f (x + d, y) − 2f (x, y) + f (x − d, y) d2 f (x, y + d) − 2f (x, y) + f (x, y − d) d2 Im weiteren Verlauf werden folgende Schreibweisen verwendet: η(x, t) = ∇ |ω(x, t)| N(x, t) = = := w3 (x, y) := w3 (x − d, y) := w3 (x + d, y) := w3 (x, y − d) := w3 (x, y + d) Ausgehend von einer Gitterzelle (i, j) sieht die Diskretisierung also so aus: Um die Wirbelstärke künstlich zu erhöhen und damit der numerischen Dissipation entgegen zu wirken, berechnet man Kräfte, die senkrecht zu diesen Vektoren verlaufen. Die Richtung und den Betrag dieser Kraft FW (x, t) berechnet man mit: FW (x, t) = · d · (N(x, t) × ω(x, t)) Dabei ist > 0 ein Koeffizient, um die Stärke dieser Kraft beeinflussen zu können. Der Faktor d ist der Gitterabstand der äquidistanten Diskretisierung und sorgt dafür, dass die physikalisch korrekte Lösung auch bei einer Gitterverfeinerung erhalten bleibt. Diese Kraft wird einfach als zusätzliche externe Kraft in den Berechnungszyklus aufgenommen. Die Vorgehensweise wurde ursprünglich von Steinhoff [24] entwickelt, um sehr komplexe Strömungsfelder bei Propellern zu modellieren, da der Rechenaufwand zu groß war, um mit der benötigten Gitterauflösung zu rechnen, die diese feinen Strukturen berücksichtigt hätte. 5.4.3 Viskosität Der Viskositätsterm gleicht dem folgenden Diffusionsterm: ∂w2 (x) = ν∆w2 (x) ∂t mit der Diffusionskonstanten ν. Um auch hier bedingungslos stabil rechnen zu können wird ein implizites Verfahren benutzt. Dazu geht man davon aus, dass man den neuen Wert der Geschwindigkeit w3 (x) bereits kennt und zieht die Änderung, die seit dem letzten Zeitschritt hinzugekommen ist, wieder ab. Das Ergebnis ist dann die alte Geschwindigkeit: (I − h · ν∆) w3 (x) = w2 (x) wobei I die Identität ist. Aus Übersichtsgründen wird hier nur die 2D-Variante der Berechnung präsentiert, jedoch sind alle Vorgänge ohne Einschränkungen auch in 3D möglich. Es wird von einer äquidistanten Diskretisierung im Raum Abbildung 17: Diskretisierung Damit bekommt man für die Gitterzelle (i, j) eine Gleichung: „ i+1,j « w3 + wi−1,j + wi,j+1 + wi,j−1 − 4wi,j 3 3 3 3 wi,j −hν = wi,j 3 2 d2 Für jede Gitterzelle bekommt man eine solche Gleichung, was insgesamt zu einem linearen Gleichungssystem Aw3 = w2 führt. Dieses Gleichungssystem ist sehr groß, aber in jeder Gleichung kommen höchstens 5 Variablen vor. Daraus folgt, dass die Matrix A nur sehr dünn besetzt ist. Solche Systeme lassen sich z.B. mit der Methode der Conjugierten Gradienten (CG) sehr effizient lösen. 5.4.4 Projektion Der letzte Schritt ist die Projektion des bislang berechneten Strömungsfeldes auf seinen divergenzfreien Teil, um die Massenerhaltung und damit die Inkompressibilität des Fluids zu gewährleisten. Dazu betrachtet man die Helmholtz-HodgeZerlegung des bisher berechneten Strömungsfeldes w3 (x) in den divergenzfreien Anteil w4 (x) und den Potentialgradienten ∇q(x) mit dem Skalarfeld q(x): w3 (x) = w4 (x) + ∇q(x) Zunächst wird das noch unbekannte Skalarfeld q berechnet, indem die obige Gleichung beidseitig mit ∇ multipliziert wird. Da w4 (x) durch diese Zerlegung divergenzfrei ist, folgt, dass ∇ · w4 (x) = 0. Es bleibt also folgende PoissonGleichung übrig: ∇ · w3 (x) = ∆q(x) Die Diskretisierung des Nabla-Operators wird mit der beidseitigen finiten Differenz 1. Ordnung vorgenommen: f (x + d, y) − f (x − d, y) δf (x, y) = δx 2d δf (x, y) f (x, y + d) − f (x, y − d) = δy 2d Damit nimmt die diskretisierte Poisson-Gleichung folgende Gestalt an: ” d “ i+1,j w3,x − wi−1,j + wi,j+1 − wi,j−1 3,x 3,y 3,y 2 = q i+1,j + q i−1,j + q i,j+1 + q i,j−1 − 4q i,j Genau wie bei der Berechnung der Viskosität erhält man ein großes, aber sehr dünn besetztes lineares Gleichungssystem. Man kann es mit demselben Verfahren nach q lösen wie bei der Viskosität. Der letzte Schritt besteht aus der Berechnung des divergenzfreien Vektorfeldes w4 aus dem gerade berechneten Skalarfeld q: w4 = w3 − ∇q Die Diskretisierung führt zu: « „ i+1,j 1 q − q i−1,j i,j i,j w4 = w3 − q i,j+1 − q i,j−1 2d Nach dieser Berechnung für jede Zelle, hat man das Endergebnis u(x, t + h) = w4 (x) für den nächsten Zeitschritt. Die nachfolgenden Bilder zeigen einige Ergebnisse von Fedkiw et al. [6], die mit dem Levelset-Verfahren gerendert wurden. Die Videos dazu können unter [8] und [7] gefunden werden. Abbildung 18: Ball in Wasser Abbildung 19: Wasserglas Die Gitterauflösung der Wasserglassimulation war 55x120x55 Zellen und die Rechendauer betrug ca. 15 Minuten pro Frame. Das Rendering wurde mit Photon-Maps und MonteCarlo-Integration durchgeführt, um die hohe Transparenz und die daraus folgenden Kaustiken möglichst realisitsch darstellen zu können. 6. REFERENZEN [1] D. Baraff and A. Witkin. Large steps in cloth simulation. SIGGRAPH Computer Graphics Proceedings, pages 43–54, 1998. [2] R. Courant, E. Isaacson, and M. Rees. On the solution of nonlinear hyperbolic differential equations by finite differences. Communication on Pure and Applied Mathematics, 5:243–255, 1952. [3] C. Cryer. On the instability of high order backward-difference multistep methods. BIT Numerical Mathematics, 12(1):17–25, März 1972. [4] M. Desbrun and M. Cani. Smoothed particles; a new paradigm for animating highly deformable bodies. In Computer Animation and Simulation ’96, pages 61–76, August 1996. [5] V. Dochev and T. Vassilev. Efficient super-elasticity handling in mass-spring systems. Proceedings of the 4th International Conference on Computer Systems and Technologies, pages 483–490, 2003. [6] D. Enright, S. Marschner, and R. Fedkiw. Animation and rendering of complex water surfaces. In SIGGRAPH, pages 736–744, 2002. [7] http://graphics.stanford.edu/ fedkiw/animations/glass00.avi. [8] http://graphics.stanford.edu/ fedkiw/animations/splash640.avi. [9] R. Fedkiw, J. Stam, and H. Jensen. Visual simulation of smoke. In SIGGRAPH, pages 15–22, 2001. [10] N. Foster and D. Metaxas. Realistic animation of liquids. Graphical Models and Image Processing, 58(5):471–483, 1996. [11] R. A. Gingold and J. J. Monaghan. Smoothed particle hydrodynamics - theory and application to non-spherical stars. Royal Astronomical Society, pages 375–389, 1977. [12] W. Lorensen and H. Cline. Marching cubes: a high resolution 3d surface contruction algorithm. Proceedings of the 14th annual conference on computer graphics and interactive techniques, pages 163–169, 1987. [13] L. Lucy. A numerical approach to the testing of the fission hypothesis. The Astronomical Journal, 82:1013–1024, 1977. [14] M. Müller, D. Charypar, and M. Gross. Particle-based fluid simulation for interactive applications. Proceedings of SIGGRAPH, pages 154–159, 2003. [15] J. Morris. Simulating surface tension with smoothed particle hydrodynamics. International Journal for Numerical Methods in Fluids, 33(3):333–353, 2000. [16] A. Nealen, M. Müller, R. Keiser, E. Boxerman, and M. Carlson. Physically based deformable models in computer graphics. Eurographics, 2005. [17] X. Provot. Deformation contraints in a mass-spring-model to describe rigid cloth behavior. Graphics Interface, pages 147–155, 1995. [18] H. Schlichting and K. Gertsen. Grenzschicht-Theorie. Springer Verlag, 1997. [19] http://graphics.ethz.ch/ mattmuel/videos/sph.avi. [20] J. Stam. Stable fluids. In SIGGRAPH 99 Conference Proceedings, pages 121–128, August 1999. [21] J. Stam. Real-time fluid dynamics for games. In Proceedings of the Game Developer Conference, März 2003. [22] J. Stam and E. Fiume. Depicting fire and other gaseous phenomena using diffusion processes. In SIGGRAPH, pages 129–136, 1995. [23] R. Steinbuch. Finite Elemente - Ein Einstieg. Springer Verlag, 1998. [24] J. Steinhoff and D. Underhill. Modification of the euler equations for vorticity confinement: Application to the computation of interacting vortex rings. Physics of Fluids, 6(8):2738–2744, 1994. [25] T. Vassilev, B. Spanlang, and Y. Chrysanthou. Fast cloth animation on walking avatars. Proceedings of Eurographics, 20(3), September 2001. [26] J. Weil. The synthesis of cloth objects. ACM SIGGRAPH Computer Graphics, 20(4):49–54, August 1986.