Não estou muito familiarizado com os esquemas comuns de discretização para PDEs. Eu sei que Crank-Nicolson é um esquema popular para discretizar a equação de difusão. Também é uma boa escolha para o termo de advecção?
Eu sou interessante em resolver a equação Reação-Difusão-Advecção ,
onde é o coeficiente de difusão da substância e é a velocidade.
Para minha aplicação específica, a equação pode ser escrita no formulário
Aqui está o esquema Crank-Nicolson que apliquei,
Observe os termos e . Isso permite que o esquema se mova entre:
- Crank-Niscolson,
- está totalmente implícito
- é totalmente explícito
Os valores podem ser diferentes, o que permite que o termo de difusão seja Crank-Nicolson e o termo de advecção seja outra coisa. Qual é a abordagem mais estável, o que você recomendaria?
fonte
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:
Se substituirmos em uma onda plana, então dividimos por e , obtemos a equaçãoe i k j Δ xξn eikjΔx
Limpe isso um pouco agora e teremos:
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:
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−1 v>0 uj−uj+1 v<0 VΔt/Δx≤1
fonte