De um modo geral, convém usar um método implícito para equações parabólicas (a parte da difusão) - esquemas explícitos para PDE parabólico precisam ter um tempo muito curto para serem estáveis. Por outro lado, para a parte hiperbólica (advecção), você desejará um método explícito, pois é mais barato e não interrompe a simetria do sistema linear que você precisa resolver usando um esquema implícito de difusão. Nesse caso, você deseja evitar diferenças centralizadas como mudar para diferenças unilaterais por razões de estabilidade.( u j - u j - 1 ) / Δ t(uj+1−uj−1)/2Δt(uj−uj−1)/Δt
Eu sugiro que você olhe o livro de Randy Leveque ou o livro de Dale Durran para "análise de estabilidade de von Neumann". É uma abordagem geral para determinar a estabilidade do seu esquema de discretização, desde que você tenha condições de contorno periódicas. (Há também um bom artigo wiki aqui .)
A idéia básica é supor que sua aproximação discreta possa ser escrita como uma soma das ondas planas , onde é o número da onda e a frequência. Você coloca uma onda plana na sua aproximação ao PDE e reza para que ela não exploda. Podemos reescrever a onda plana como e queremos garantir que . k ω ξ n e i k j Δ x | ξ | ≤ 1ei(kjΔx−ωnΔt)kωξneikjΔx|ξ|≤1
A título de ilustração, considere a equação de difusão comum com diferenciação totalmente implícita:
un+1j−unjΔt=Dun+1j−1−2un+1j+un+1j+1Δx2
Se substituirmos em uma onda plana, então dividimos por e , obtemos a equaçãoe i k j Δ xξneikjΔx
ξ−1Δt=De−ikΔx−2+eikΔxΔx2ξ
Limpe isso um pouco agora e teremos:
ξ=11+2DΔtΔx2(1−coskΔx) .
Isso é sempre menos que um, então você está limpo. Tente aplicar isso no esquema explícito e centrado da equação de advecção:
un+1j−unjΔt=vunj−1−unj+12Δx
e ver o que você começa. (Desta vez, terá uma parte imaginária.) Você verá que , que são momentos tristes. Daí minha advertência de que você não a usa. Se você puder fazer isso, não deverá ter muita dificuldade em encontrar um esquema estável para a equação completa de difusão de advecção.ξ|ξ|2>1
Dito isto, eu usaria um esquema totalmente implícito para a parte da difusão. Altere a diferenciação na parte de advecção para se e se e escolha um timestep para que . (Essa é a condição de Courant-Friedrichs-Lewy .) É apenas de primeira ordem, portanto, convém procurar esquemas de discretização de ordem superior, se isso lhe interessar. v > 0 u j - u j + 1 v < 0 V Δ t / Δ x ≤ 1uj−uj−1v>0uj−uj+1v<0VΔt/Δx≤1