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:
un+1j−unjΔt=Dun+1j−1−2un+1j+un+1j+1Δx2
Jeśli podstawimy falę płaską, a następnie podzielimy przez i , otrzymamy równanieξneikjΔx
ξ−1Δt=De−ikΔx−2+eikΔxΔx2ξ
Wyczyść to teraz trochę, a otrzymamy:
ξ=11+2DΔtΔx2(1−coskΔx) .
Jest to zawsze mniej niż jeden, więc masz pewność. Spróbuj zastosować to do jawnego, wyśrodkowanego schematu równania porady:
un+1j−unjΔt=vunj−1−unj+12Δx
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−1v>0uj−uj+1v<0VΔt/Δx≤1