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.
quelle
Antworten:
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:
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.
Auftriebsfluss. Geschlossene Box, Heizplatte unten, Kühlplatte oben, heiße Flüssigkeit steigt aufgrund der Auftriebskraft auf. Hier ist Benchmark .
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.
quelle