Jak mogę sprawdzić poprawność mojego wyniku symulacji płynów?

9

Napisałem program do symulacji płynów oparty na cząsteczkach. Trudno powiedzieć, czy otrzymam właściwy wynik. Wizualizowany wynik wydaje się rozsądny, ale jego część wygląda dziwnie. Nie wiem, czy to jest cecha płynu. Czy istnieje jakaś dokładna metoda sprawdzenia, czy mój program ma rację?

Zmiana niektórych szczegółów :

Mój program jest programem do symulacji cząstek 2D. Płyn jest ściśliwy. Implementacja jest prawie oparta na klasycznej pracy:

Müller, Matthias, David Charypar i Markus Gross. „Symulacja płynów oparta na cząsteczkach dla aplikacji interaktywnych”. Postępowanie w sprawie ACM SIGGRAPH 2003

Rozwiązałem równanie Naviera-Stokesa metodą iteracyjną. Uwzględniono jedynie nacisk, grawitację, lepkość i napięcie powierzchniowe.

Yyao
źródło
Może uda ci się ponownie obliczyć warunki równania NS za pomocą numerycznego zróżnicowania i sprawdzić, jak się one znoszą.
Yves Daoust,

Odpowiedzi:

2

Porównaj to z czyimś oprogramowaniem. Przeprowadź standardowy test i sprawdź, czy otrzymujesz mniej więcej tę samą odpowiedź, co inne. Jeśli otrzymasz tę samą odpowiedź, prawdopodobieństwo poprawnego kodu jest dość wysokie.

Niektóre testy:

  1. Przepłyń obok cylindra. W 2d weź prostokątną domenę, cylinder na środku, napływ po lewej, odpływ w walce i oblicz siłę na cylindrze. Oto test porównujący garść kodów.

  2. Przepływ wyporu. Zamknięte pudełko, gorąca płyta na dole, zimna płyta na górze, gorący płyn zaczyna rosnąć z powodu siły wyporu. Oto punkt odniesienia .

  3. Rosnąca bańka, punkt odniesienia .

Ale niestety porównanie tych kodów z kodami naukowymi może być dość trudne. Wydaje mi się, że wprowadziłeś coś takiego jak SPH lub stabilne płyny, które nie są stworzone dla dokładności, ale dla stabilności.

Weźmy na przykład przepływ obok cylindra. Rozpocząłbym test od bardzo małej liczby Reynoldsa, a następnie mierzyłem siłę działającą na cylinder w miarę zwiększania dokładności symulacji (niższy krok czasowy, zwiększenie podziału lub zwiększenie liczby cząstek). Czy siła zbiega się z jakąś liczbą? Jeśli nie, to masz problem, a jeśli tak, to spójrz na papier porównawczy i porównaj swój wynik z innymi.


Ta metoda jest bardzo podobna do tej, której używam do testowania mojego raytracera. Po prostu renderuję scenę testową za pomocą renderera innej osoby i porównuję ją z moim wynikiem. Czy zbliżają się do tego samego rezultatu? Jeśli tak, to mam rację, jeśli nie, to mam rację.

Tomek
źródło
Zamiast oprogramowania do testowania w porównaniu ze znanymi rzeczywistymi pomiarami i znakami dynamiki płynów. W przeciwnym razie twój błąd zostanie skażony. Widziałem to samo pytanie opublikowane w innym miejscu na stosie zmień sieć btw
joojaa
1
Myślę, że testowanie na podstawie pomiarów w świecie rzeczywistym jest dobre do testowania, jeśli masz odpowiednią fizykę. Jeśli chcesz tylko debugować program, lepszym pomysłem jest testowanie na innych kodach. Dodatkowo w symulacji komputerowej możesz zmierzyć wszystko bez wpływu na eksperyment. Na przykład pomiar prędkości płynu w dowolnym punkcie jest po prostu niemożliwy w eksperymencie w świecie rzeczywistym, ale banalny w symulacji komputerowej.
tom
Tak, ale dziedziczysz również problemy z ich rozwiązaniami. Przyznaję, że zrobiłem to kilka razy, opracowując symulator wielu ciał i porównując wyniki z MSC Adams, ale z perspektywy czasu nie było to tak naprawdę szczególnie przydatne
joojaa
Sprawdzanie eksperymentu w prawdziwym świecie było lepsze? Wątpię, ale mogę się mylić. Sytuacja z fizyką wielu ciał jest zupełnie inna niż fizyki płynów. Nawet coś tak prostego jak bilard ma chaotyczne zachowanie. Co więcej, sztywna dynamika ciała z kontaktami nie jest nawet dobrze postawionym problemem matematycznym, czy znasz paradoks Painlevego? Zatem wykonywanie numerycznej symulacji fizyki wielu ciał jest ogólnie skazane na niepowodzenie. Niektóre odniesienia: plus.maths.org/content/chaos-billiard-table en.wikipedia.org/wiki/Painlev%C3%A9_paradox
tom
1
Tak, jestem świadomy tego, jak działa dynamika wielu ciał, w pewnym sensie uczę go (i krótko badałem przez rok lub dwa). Ale łatwiejsze było sprawdzanie w porównaniu ze znanymi rozwiązaniami analitycznymi. Ale prawdziwy płyn jest podobnie chaotyczny jak dynamika wielu ciał. Powinno być więc możliwe sprawdzenie sytuacji z przepływem laminarnym itp. Tarcie jest jednak suką.
joojaa,