Wie kann ich die Richtigkeit meines Ergebnisses der Flüssigkeitssimulation überprüfen?

9

Ich habe ein partikelbasiertes Flüssigkeitssimulationsprogramm geschrieben. Es ist schwer zu sagen, ob ich das richtige Ergebnis bekomme. Das visualisierte Ergebnis scheint vernünftig, aber ein Teil davon sieht seltsam aus. Ich weiß nicht, ob es ein Merkmal von Flüssigkeit ist. Gibt es eine genaue Methode, um zu überprüfen, ob mein Programm richtig ist?

Einige Details ändern:

Mein Programm ist ein 2D-Partikel-basiertes Simulationsprogramm. Die Flüssigkeit ist komprimierbar. Die Implementierung basiert fast auf einem klassischen Papier:

Müller, Matthias, David Charypar und Markus Gross. "Partikelbasierte Flüssigkeitssimulation für interaktive Anwendungen." Verfahren des ACM SIGGRAPH 2003

Ich habe die Navier-Stokes-Gleichung mit der Iterationsmethode gelöst. Es wurden nur Druck, Schwerkraft, Viskosität und Oberflächenspannung berücksichtigt.

Yyao
quelle
Vielleicht können Sie die Terme der NS-Gleichung mit numerischer Differenzierung neu berechnen und überprüfen, wie sie sich aufheben.
Yves Daoust

Antworten:

2

Vergleichen Sie es mit der Software eines anderen. Führen Sie einen standardisierten Test durch und finden Sie heraus, ob Sie ungefähr die gleiche Antwort wie andere erhalten. Wenn Sie die gleiche Antwort erhalten, ist die Wahrscheinlichkeit, dass Ihr Code richtig ist, ziemlich hoch.

Einige Tests:

  1. Am Zylinder vorbeifließen. In 2d nehmen Sie rechteckige Domäne, Zylinder in der Mitte, Zufluss links, Abfluss im Kampf und berechnen Sie die Kraft auf den Zylinder. Hier ist ein Benchmark , der eine Handvoll Codes vergleicht.

  2. Auftriebsfluss. Geschlossene Box, Heizplatte unten, Kühlplatte oben, heiße Flüssigkeit steigt aufgrund der Auftriebskraft auf. Hier ist Benchmark .

  3. Steigende Blase, Benchmark .

Leider kann es schwierig sein, Ihren Code mit wissenschaftlichen Codes in diesen Benchmarks zu vergleichen. Ich denke, Sie haben etwas als SPH oder stabile Flüssigkeiten implementiert, die nicht auf Genauigkeit, sondern auf Stabilität ausgelegt sind.

Nehmen Sie zum Beispiel die Strömung an einem Zylinder vorbei. Ich würde den Test mit einer sehr kleinen Reynolds-Zahl beginnen und dann die Kraft auf den Zylinder messen, wenn Sie die Genauigkeit Ihrer Simulation erhöhen (Zeitschritt verringern, Unterteilung erhöhen oder Anzahl der Partikel erhöhen). Konvergiert die Kraft gegen eine bestimmte Zahl? Wenn nein, dann haben Sie ein Problem, wenn ja, dann schauen Sie sich das Benchmark-Papier an und vergleichen Sie Ihr Ergebnis mit anderen.


Diese Methode ist einer Technik sehr ähnlich, die ich zum Testen meines Raytracers verwende. Ich rendere einfach die Testszene mit dem Renderer eines anderen und vergleiche sie mit meinem Ergebnis. Konvergieren sie zum gleichen Ergebnis? Wenn ja, dann habe ich es richtig, wenn nein, dann habe ich es falsch.

Tom
quelle
Anstelle von Software zum Testen gegen Yest gegen bekannte reale Messungen und Fluiddynamik-Bechmarks. Andernfalls ist Ihr Fehler fehlerhaft. Ich habe die gleiche Frage an anderer Stelle im Stackexhange-Netzwerk gesehen, übrigens
joojaa
1
Ich denke, dass das Testen gegen reale Messungen gut zum Testen ist, wenn Sie die richtige Physik haben. Wenn Sie nur Ihr Programm debuggen möchten, ist es besser, mit anderen Codes zu testen. Außerdem können Sie in der Computersimulation alles messen, ohne das Experiment zu beeinflussen. Zum Beispiel ist das Messen der Flüssigkeitsgeschwindigkeit an jedem Punkt im realen Experiment einfach unmöglich, in der Computersimulation jedoch trivial.
Tom
Ja, aber Sie erben auch Probleme ihrer Löser. Ich gebe zu, dass ich dies einige Male getan habe, um einen Mehrkörpersimulator zu entwickeln und die Ergebnisse von MSC Adams zu überprüfen, aber im Nachhinein war das nicht wirklich nützlich
joojaa
Es war besser, gegen Experimente aus der realen Welt zu prüfen? Ich bezweifle es, aber ich könnte mich irren. Die Situation mit der Mehrkörperphysik ist ganz anders als mit der Strömungsphysik. Sogar etwas so Einfaches wie Billard hat chaotisches Verhalten. Darüber hinaus ist die Dynamik des starren Körpers mit Kontakten nicht einmal ein gut gestelltes mathematisches Problem. Kennen Sie das Painlevé-Paradoxon? Die numerische Simulation der Mehrkörperphysik ist daher zum Scheitern verurteilt. Einige Referenzen: plus.maths.org/content/chaos-billiard-table en.wikipedia.org/wiki/Painlev%C3%A9_paradox
Tom
1
Ja, ich bin mir bewusst, wie Mehrkörperdynamik funktioniert, ich unterrichte sie (und habe sie ein oder zwei Jahre lang kurz recherchiert). Eine Überprüfung mit bekannten analytischen Lösungen war jedoch nicht einfacher. Aber eine echte Flüssigkeit ist ähnlich chaotisch wie eine Mehrkörperdynamik. Man sollte also in der Lage sein, sich gegen laminare Strömungssituationen usw. zu schützen. Reibung ist jedoch eine Hündin.
Jojaja