Nie znam zbyt dobrze wspólnych schematów dyskretyzacji dla PDE. Wiem, że Crank-Nicolson jest popularnym schematem dyskretyzacji równania dyfuzji. Czy jest to również dobry wybór na okres doradztwa?
Interesuje mnie rozwiązanie równania Reakcja-Dyfuzja-Doradztwo ,
gdzie to współczynnik dyfuzji substancji a to prędkość.
Dla mojej konkretnej aplikacji równanie można zapisać w postaci,
Oto schemat Crank-Nicolson, który zastosowałem,
Zwróć uwagę na warunki i . Umożliwia to przełączanie schematu między:
- Crank-Niscolson,
- jest w pełni niejawny
- jest w pełni jawny
Wartości mogą być różne, co pozwala, aby wyrazem dyfuzji był Crank-Nicolson, a słowem wskazującym coś innego. Jakie jest najbardziej stabilne podejście, co byś polecił?
źródło
Ogólnie rzecz biorąc, będziesz chciał zastosować metodę niejawną dla równań parabolicznych (część dyfuzyjna) - wyraźne schematy parabolicznego PDE muszą mieć bardzo krótki czas, aby być stabilnym. I odwrotnie, dla części hiperbolicznej (porady) będziesz potrzebować jawnej metody, ponieważ jest ona tańsza i nie zakłóca symetrii układu liniowego, którą musisz rozwiązać za pomocą niejawnego schematu dyfuzji. W takim przypadku chcesz uniknąć wyśrodkowanych różnic, takich jak i przełącz się na różnice jednostronne ze względu na stabilność.(uj+1−uj−1)/2Δt (uj−uj−1)/Δt
Proponuję spojrzeć na książkę Randy'ego Leveque'a lub książkę Dale'a Durrana „Analiza stabilności von Neumanna”. Jest to ogólne podejście do ustalania stabilności programu dyskretyzacji, pod warunkiem, że masz okresowe warunki brzegowe. (Jest to także dobry artykuł wiki tutaj ).
Podstawową ideą jest założenie, że dyskretne przybliżenie można zapisać jako sumę fal płaskich , gdzie to liczba fal, a częstotliwość. Wpychasz falę samolotu w przybliżenie do PDE i modlisz się, żeby nie wybuchła. Możemy przepisać falę płaską jako i chcemy się upewnić, że .ei(kjΔx−ωnΔt) k ω ξneikjΔx |ξ|≤1
Jako przykład rozważmy równanie dyfuzji zwykłej z całkowicie niejawnym różnicowaniem:
Jeśli podstawimy falę płaską, a następnie podzielimy przez i , otrzymamy równanieξn eikjΔx
Wyczyść to teraz trochę, a otrzymamy:
Jest to zawsze mniej niż jeden, więc masz pewność. Spróbuj zastosować to do jawnego, wyśrodkowanego schematu równania porady:
i zobaczyć, co otrzymujemy. (Tym razem będzie to część wyobrażona.) Przekonasz się, że , co jest smutnym czasem. Stąd moje upomnienie, że go nie używasz. Jeśli możesz to zrobić, nie powinieneś mieć większych problemów ze znalezieniem stabilnego schematu dla pełnego równania rada-dyfuzja.ξ |ξ|2>1
To powiedziawszy, użyłbym w pełni niejawnego schematu dla części dyfuzyjnej. Zmień różnicowanie w części na jeśli i jeśli i wybierz aby . (Jest to warunek Courant-Friedrichs-Lewy .) Jest dokładny tylko pierwszego rzędu, więc jeśli chcesz, możesz sprawdzić schematy dyskretyzacji wyższego rzędu.uj−uj−1 v>0 uj−uj+1 v<0 VΔt/Δx≤1
źródło