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.
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.
Odpowiedzi:
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.
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.
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ć.
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.
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].
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
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.
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 :)