O Crank-Nicolson é um esquema estável de discretização para a equação de reação à difusão-advecção (convecção)?


26

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 ,

ut+(vuDu)=f

onde D é o coeficiente de difusão da substância u e v é a velocidade.

Para minha aplicação específica, a equação pode ser escrita no formulário

ut=D2ux2Diffusion+vuxAdvection (convection)+f(x,t)Reaction

Aqui está o esquema Crank-Nicolson que apliquei,

ujn+1ujnΔt=D[1β(Δx)2(uj1n2ujn+uj+1n)+β(Δx)2(uj1n+12ujn+1+uj+1n+1)]+v[1α2Δx(uj+1nuj1n)+α2Δx(uj+1n+1uj1n+1)]+f(x,t)

Observe os termos α e β . Isso permite que o esquema se mova entre:

  • β=α=1/2 Crank-Niscolson,
  • β=α=1 está totalmente implícito
  • β=α=0 é 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?

Respostas:


15

Esta é uma pergunta bem estruturada e uma coisa muito útil para entender. Korrok está correto em encaminhá-lo à análise de von Neumann e ao livro de LeVeque. Eu posso adicionar um pouco mais a isso. Gostaria de escrever uma resposta detalhada, mas no momento só tenho tempo para uma resposta curta:

Com , você obtém um método absolutamente estável para tamanhos de etapas arbitrariamente grandes, além de precisão de segunda ordem. No entanto, o método não é estável em L , portanto, frequências muito altas não serão amortecidas, o que não é físico.α=β=1/2

Com , você obtém um método que também é incondicionalmente estável, mas com precisão de primeira ordem. Este método é muito dissipativo. É estável em L.α=β=1

Se você usar , seu método pode ser entendido como a aplicação de um método aditivo de Runge-Kutta à semi-discretização de diferença centralizada. A análise de estabilidade e precisão de tais métodos é consideravelmente mais complicada. Um artigo muito bom sobre esses métodos está aqui .αβ

Qual abordagem a recomendar depende fortemente da magnitude de , do tipo de dados iniciais com que você lida e da precisão que você procura. Se uma precisão muito baixa for aceitável, então é uma abordagem muito robusta. Se é moderado ou grande, o problema é dominado pela difusão e muito rígido; normalmente dará bons resultados. Se for muito pequeno, pode ser vantajoso usar um método explícito e um upwinding de ordem superior para os termos convectivos.α = β = 1 D α = β = 1 / 2 DDα=β=1Dα=β=1/2D


A respostas muito perspicazes, obrigado! Existe uma maneira de definir os diferentes regimes de dominar a difusão e a advecção? Além de comparar a magnitude dos termos? Por exemplo, comparando apenas coeficientes? Qual é o significado do termo técnico L-estabilidade. Todo mundo recomenda este livro, devo comprá-lo!
boyfarrell

O critério que eu dei a você envolve apenas os coeficientes. Resumidamente, a estabilidade L significa que as altas frequências serão fortemente amortecidas.
David Ketcheson

Portanto, quando é uma função suave (como no sentido em que não possui componentes Fourier de alta frequência), a Crank-Nicolson é uma boa escolha. Se, no entanto, tiver arestas vivas, então é uma boa opção. u ( x ) β = 1u(x)u(x)β=1
precisa saber é o seguinte

Essa é uma generalização razoável, embora muito grosseira. Essas opções funcionarão pelo menos se você não precisar de muita precisão.
precisa saber é o seguinte

10

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+1uj1)/2Δt(ujuj1)/Δ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:

ujn+1ujnΔt=Duj1n+12ujn+1+uj+1n+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=DeikΔx2+eikΔxΔx2ξ

Limpe isso um pouco agora e teremos:

ξ=11+2DΔtΔx2(1coskΔ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:

ujn+1ujnΔt=vuj1nuj+1n2Δ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 1ujuj1v>0ujuj+1v<0VΔt/Δx1


Essa é uma resposta realmente detalhada, obrigado.
boyfarrell

Esta resposta considera apenas discretizações baseadas nos métodos Euler para frente e para trás no tempo. A pergunta é sobre Crank-Nicholson.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.