Smoothed-particle hydrodynamics (SPH; deutsch: geglättete Teilchen-Hydrodynamik) ist eine numerische Methode, um die Hydrodynamischen Gleichungen zu lösen. Sie wird unter anderem in der Astrophysik, der Ballistik und bei Tsunami-Berechnungen eingesetzt. SPH ist eine Lagrange-Methode, d. h. die benutzten Koordinaten bewegen sich mit dem Fluid mit. SPH ist eine besonders einfach zu implementierende und robuste Methode.
In Smoothed Particle Hydrodynamics wird die zu simulierende Flüssigkeit in Elemente aufgeteilt. Dabei werden, ähnlich den Monte-Carlo-Methoden, die Elemente zufällig über die Flüssigkeit verteilt. Dies minimiert den zu erwartenden Fehler. Der mittlere Abstand dieser Elemente wird durch die Smoothing Length (Glättlänge) $ h $ repräsentiert. Sie ist der wichtigste Parameter der Methode. Zwischen den Teilchen wird das Fluid durch den Kernel geglättet, daher der Name. Jede Größe (z. B. die Dichte $ \rho $) wird durch Summation über alle Teilchen berechnet. Jedes einzelne Teilchen erhält einen Anteil, in Form eines Skalars an dieser Größe. Dadurch werden aus den partiellen Differentialgleichungen der Hydrodynamik gewöhnliche Differentialgleichungen, was die Berechnungen sehr vereinfacht. SPH ist eine sehr empirische Methode. Das bedeutet, dass viele Dinge gemacht werden, weil sie funktionieren, nicht, weil es eine strenge mathematische Herleitung gibt.
Die formale Herleitung läuft entweder über eine Lagrange-Funktion oder über eine Integralinterpolation. Bei der Integralinterpolation für eine Größe $ A_{1} $ geht man von einer Identität aus, wobei $ \delta ({\vec {r}}) $ die Diracsche Deltadistribution bezeichnet:
Dann wird die $ \delta $-Distribution durch einen Kern $ W({\vec {r}}-{\vec {r}}\,',h) $ angenähert, wobei $ h $ die Glättungslänge ist. Damit die Näherung im Grenzfall gültig bleibt, kann man Normierung und Identität mit der $ \delta $-Distribution im Grenzwert für h → 0 fordern:
Tatsächlich ist dies bei den meisten verwendeten Kernen nicht mehr der Fall. Um daraus die Aufteilung in Massenelemente zu erhalten, erweitert man mit der Dichte $ \rho $ und belässt $ h $ größer als 0. Für den Fall unendlich vieler, unendlich kleiner Teilchen geht die Summe in das Integral über. Numerisch wird man sich immer mit endlich vielen Teilchen zufriedengeben müssen:
Dabei ist $ m_{b} $ die Masse des Teilchens b und $ \rho _{b} $ die Dichte am Ort des Teilchens b:
Damit haben wir die Grundgleichung der Smoothed Particle Hydrodynamics hergeleitet (rechter Teil). Die Größe A wird durch eine Summe über alle Teilchen berechnet. Man sieht, dass aus der von r abhängigen Größe $ A_{S} $ ein Skalar $ A_{b} $ multipliziert mit dem Kernel geworden ist. Dies führt zu einer starken Vereinfachung von Differentialgleichungen, da eine Ableitung nun nicht mehr auf die Größe, sondern nur noch auf den Kernel wirkt:
Der wohl wichtigste Parameter der SPH ist die Glättungslänge $ h $. Sie legt die Auflösung der Methode fest und hat damit starken Einfluss auf Genauigkeit und Rechenaufwand bei Simulationen. Bei entsprechender Wahl des Kernels (siehe unten) legt sie auch die Anzahl der bei Berechnung mit einzubeziehenden Nachbarn fest. Üblich sind bis zu einige zehn Teilchen pro Größe. Für gute Ergebnisse orientiert man sich an der mittleren Dichte des Fluids:
mit $ n $ Teilchen, $ \nu $ Dimensionen und
In modernen Codes wählt man $ h=h(t) $ zeitabhängig. Mit
nutzt man dann in Gebieten großer Dichten eine höhere Auflösung, während in Bereichen geringer Dichten die Smoothing Length größer wird. Dadurch lässt sich der Rechenaufwand bei gleich bleibender Genauigkeit verringern.
Der Kern ist die wohl wichtigste Struktur der SPH-Methode. Verschiedene Kerne entsprechen verschiedenen Differenzenschemata in Gittermethoden. Zur Interpretation von SPH-Gleichungen ist es vorteilhaft, einen Kern in Form einer gaußschen Kurve zu verwenden:
Numerisch ist dieser Ansatz allerdings nicht sehr geeignet, da man in diesem Fall oft auf ein klares Verhalten bezüglich der Reichweite des Kerns Wert legt. D. h. man wählt einen Kern, der ab einem gewissen $ {\vec {r}} $ null ist, um die Anzahl der Nachbarn, die bei der Berechnung mit einbezogen werden, klar festlegen zu können. Damit kann man den benötigten Rechenaufwand eingrenzen. Wie bereits erwähnt, ist SPH eine sehr empirische Methode, d. h. für unterschiedliche Anwendungen werden sehr unterschiedliche Kerne benötigt. Die genaue Wahl ist Erfahrungssache und erfolgt oft nach dem Versuch-und-Irrtum-Prinzip. Da ein Kern oft in einer eigenen Funktion implementiert wird, ist der Aufwand ihn auszutauschen oder zu verändern minimal. Oft werden Kerne auf Basis von Splines verwendet:
Mit $ q={\vec {r}}-{\vec {r}}\,' $, einer Normierungskonstante $ \sigma $ und der Anzahl der Dimensionen $ \nu $. Hier werden nur Teilchen bis zum übernächsten Nachbarn in die Berechnung mit einbezogen. Außerdem ist die 2. Ableitung dieses Kerns nicht konstant, weshalb er nicht von der Unordnung der Teilchen abhängt.
Bei der Herleitung über Integralinterpolationsfunktionen wurden zwei Näherungen gemacht. Erstens wurde $ h>0 $ angenommen, und die Summation erfolgt nur über eine endliche Zahl von Teilchen.
Damit ist man bei Simulationen mit SPH immer auf den Vergleich mit anderen Simulationen angewiesen, zumindest für eine Fehlereinschätzung. Einige Veröffentlichungen erwähnen, dass die Fehler meist deutlich unter denen einer Monte-Carlo-Simulation liegen, auch dies ist Erfahrungssache. Generell neigt SPH zur Ausschmierung von Diskontinuitäten, ist also gerade im Falle von Simulationen mit wenigen Teilchen lokal recht ungenau. Für große Teilchenzahlen wird das Verhalten aber deutlich besser. Allerdings ist das globale Verhalten schon bei geringen Teilchenzahlen, was geringem Rechenaufwand entspricht, sehr gut. D. h., globale Größen wie die Energie sind gut wiedergegeben. Oft lässt sich mit SPH eine global gute Simulation mit wenig Aufwand programmieren, die in akzeptabler Zeit auf Workstations gerechnet werden kann.
Vorteile:
Nachteile:
Um die Hydrodynamik in SPH zu formulieren, ist der scheinbar einfachste Ansatz die Grundgleichung in die hydrodynamischen Gleichungen wie z. B. die Navier-Stokes-Gleichung einzusetzen. Die daraus resultierenden Gleichungen sind allerdings nicht symmetrisch gegenüber Teilchenvertauschung. Deshalb gelten in diesem Fall viele Erhaltungssätze für Energie, Drehimpuls etc., nicht mehr. Oft ist es allerdings möglich, diese zu retten, indem man die Dichte in den jeweiligen Differentialoperator herein schreibt und die Produktregel nutzt:
Oft lassen sich so symmetrische Gleichungen herleiten. All dies geschieht nicht streng formal, sondern nur, weil es bessere Ergebnisse liefert.
Die einfachste Möglichkeit ist die Verwendung der Definition der Geschwindigkeit:
Dabei ist die Bewegung eines Teilchens nicht an die der anderen gekoppelt, was oft zu Problemen führen kann. Deshalb hat man die XSPH-Methode ("Extended SPH") entwickelt:
mit einer gemittelten Dichte:
und einem Kopplungsparameter ε. Damit wird die Ordnung der Teilchen besser erhalten, ohne dass zusätzlich Viskosität eingeführt werden muss.
Setzen wir die Dichte in die Grundgleichung ein, so erhalten wir
für ein Teilchen a. Daraus lässt sich die SPH-Kontinuitätsgleichung ausrechnen
Für die Euler-Gleichung ergibt sich:
Diese Gleichung ist nicht symmetrisch gegenüber Teilchenaustausch: Impuls und Drehmoment sind nicht erhalten. Deswegen verwenden wir den oben angedeuteten Trick für den Druckgradienten:
Woraus wir die gewünschte symmetrische Gleichung erhalten:
Setzen wir einen Gauß-Funktion ein ergibt sich eine Zentralkraft, die auf beide Teilchen gleich stark wirkt:
Wie fast jede numerische Methode erzeugt auch SPH durch Rechenungenauigkeiten Viskosität. Zur Modellierung ist diese oftmals aber nicht ausreichend. Deswegen führt man, ähnlich wie beim Übergang von der Euler-Gleichung zur Navier-Stokes-Gleichung, einen Viskositätstensor ein. Die genaue Wahl dieses Tensors hängt stark vom Modell ab.
SPH wird in vielen verschiedenen Bereichen wie der Astrophysik angewendet. Es existieren auch relativistische und magnetische SPH-Methoden: