Jaka jest najprostsza metoda rozwiązywania nieściśliwych równań Naviera-Stokesa?

9

Przez „najprostszy” rozumiem najprostszy do nauczenia się i wdrożenia od zera. Mam nadzieję, że na moje pytanie można odpowiedzieć mniej więcej tak.

Vehsakul
źródło
1
W jakiej geometrii?
Rhys Ulerich,
@ Rhys Ulerich Zgaduję najprostszy?
James
@ user2697246 Nieskończona domena z jednolitym warunkiem początkowym? Trywialny. To nie miało być pytanie lekceważące.
Rhys Ulerich,
1
Aby rozpocząć korzystanie z symulacji NS, sprawdź to, lorenabarba.com/blog/cfd-python-12-steps-to-navier-stokes
Subodh

Odpowiedzi:

10

W dwóch wymiarach sformułowanie prędkości-wirowości jest najłatwiejsze do wdrożenia, ponieważ zmienne są kolokowane, ale warunki brzegowe mogą być skomplikowane i jest to mniej bezpośrednie określenie problemu. W przypadku pierwotnych formuł zmiennych zmienna metoda Harlowa i Welcha (1965) z naprzemienną różnicą siatki jest świetnym miejscem do rozpoczęcia.

Jed Brown
źródło
2
Bardzo jasny opis tego algorytmu wraz z warunkami brzegowymi podał Pozrikidis .
John Stockie
10

Można znaleźć w pełni udokumentowany realizację bardzo prosty, ale bardzo skuteczny, sposób rozwiązania (metoda rozszczepiania Chorin'S) tutaj .

Aby wybrać inne popularne metody, zapoznaj się z rozdziałem 21 w tej książce .

Uwaga: Jestem (współ) autorem zarówno programu demonstracyjnego, jak i książki. Książkę można pobrać bezpłatnie.

Anders Logg
źródło
5

Najprostsze zawsze będzie zależało od twoich szczególnych zainteresowań i potrzeb. Zgadzam się z Anders, że w przypadku nieściśliwego przepływu w domenach o prostej geometrii trudno byłoby pokonać metodę projekcji (tj. Metodę podziału Chorina), jeśli priorytetem jest zarówno łatwość użycia, jak i dokładność.

Aby przejść do bardziej szczegółowych informacji, metoda jest wprowadzona w [1]. Bardziej nowoczesna metoda projekcji przybliżonej drugiego rzędu jest dobrze wyjaśniona w [2]. Motywacja polega na tym, że rozwiązanie pełnego nieściśliwego równania Naviera-Stokesa wymaga jednoczesnego rozwiązania pola prędkości i ciśnienia, a powstały układ liniowy jest raczej źle uwarunkowany. Metoda rzutowania eliminuje ten problem, dzieląc każdy krok na rozwiązanie prędkości, wykorzystując ciśnienie z poprzedniego pomiaru czasu, a następnie aktualizację ciśnienia, która zasadniczo wymusza, że ​​pole prędkości pozostaje nieściśliwe.

Aby to zaimplementować, będziesz potrzebować kilku innych komponentów, ale wszystkie można się łatwo nauczyć i zaprogramować.

  1. Aby rozwiązać problem ciśnienia, zakładając, że interesują Cię układy o stałej gęstości, musisz rozwiązać równanie Poissona. Istnieje oczywiście kilkadziesiąt algorytmów do rozwiązania tego problemu, ale zdecydowanie najłatwiejszym do wdrożenia - jeśli nie do końca zrozumiałym - jest algorytm gradientu sprzężonego (CG). Jedno z najlepszych wyjaśnień CG, które przeczytałem, napisał Jonathan Shewchuk i można je znaleźć tutaj . Jednak z pewnością nie musisz czytać całego artykułu, aby móc po prostu zaimplementować algorytm.

  2. Będziesz potrzebował innego algorytmu, aby obsłużyć termin porady w Navier-Stokes. W kilku wymiarach programowanie niezawodnych implementacji najbardziej elastycznych metod, np. Godunowa, może być dość trudne. Jednak pod warunkiem, że interesują Cię przepływy o stosunkowo skromnej liczbie Reynoldsa (tj. O nieistotnej lepkości), jedna z metod zasadniczo nieoscylacyjnych (ENO) dobrze pasuje do rachunku pod względem łatwości implementacji. Istnieje doskonały przegląd zarówno teorii, jak i implementacji w [3].

  3. Będziesz musiał poradzić sobie z lepkim terminem przy użyciu metody niejawnej, zwykle Crank-Nicolson. Wyjaśniono to szczegółowo w dokumentach dotyczących metody projekcji i można łatwo użyć CG do rozwiązania matrycy, pod warunkiem, że lepkość jest stała.

[1] AJ Chorin, Numeryczne rozwiązanie równań Naviera-Stokesa , J. Math. Comput., 22 (1968), s. 745–762

[2] A. Almgren, JB Bell i W. Szymczak, Metoda numeryczna nieściśliwych równań Naviera-Stokesa na podstawie przybliżonego rzutu , SIAM J. Sci. Comput. 17 (1996), s. 258–369.

[3] S. Osher i R. Fedkiw, Metody ustalania poziomu i dynamiczne niejawne powierzchnie . Springer-Verlag Nowy Jork ,. Applied Mathematical Sciences, 153, 2002

Ben
źródło
Do tej ładnej odpowiedzi dodam, że zaktualizowane zrozumienie natury presji w metodach projekcji (dyskretnej czasowo) znajduje się w: J.-G. Liu, J. Liu, RL Pego, Stabilne i dokładne przybliżenie ciśnienia dla niestabilnego nieściśliwego przepływu lepkiego, J. Comp. Phys. 229 (2010) 3428–3453.
Bob Pego
4

W ostatnich latach grafika i gry komputerowe cieszyły się ogromnym zainteresowaniem w zakresie symulacji płynów. Oto świetny artykuł Josa Stama, który omawia implementację solvera do aplikacji w czasie rzeczywistym. Pochodzi z bardzo łatwym do zrozumienia kodem źródłowym. Nie wiem, jak dokładna jest, ale może być tym, czego szukasz.

DaleyPaley
źródło
1

Inną naprawdę fajną i prostą metodą jest użycie automatów komórkowych do dyskretyzacji. Istnieje wiele takich modeli, w tym LBA, FHP i wiele innych. Są naprawdę fajne, ponieważ mogą zapewnić symulację w czasie rzeczywistym na nowoczesnych komputerach, a także mogą być ładnie sparaliżowane i obsługiwane na procesorach graficznych. Mają także pewne wady, a wyniki są silnie zależne od kształtu zastosowanej sieci. Kwadratowa sieć jest niewystarczająca, ponieważ brakuje jej swobody obrotowej i tzn. Wiry von kaarmana będą miały kwadratowy kształt, co nie jest fajne :)

Max
źródło