Physikalisch basierte Simulationen - Institut für Visualisierung und

Werbung
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.
Herunterladen