Erro peculiar ao resolver a equação de Poisson em um método de volume finito de malha não uniforme (somente 1D)

9

Eu tenho tentado debugar este erro nos últimos dias que eu quis saber se alguém tem o conselho em como proceder.

Estou resolvendo a equação de Poisson para uma distribuição de carga escalonada (um problema comum em física eletrostática / semicondutora) em uma malha de volume finito não uniforme, onde o desconhecido é definido nos centros celulares e os fluxos nas faces das células.

0=(ϕx)x+ρ(x)

o perfil de cobrança (o termo de origem) é fornecido por,

ρ(x)={1,if 1x01,if 0x10,otherwise

e as condições de contorno são,

ϕ(xL)=0ϕx|xR=0

e o domínio é .[10,10]

Estou usando o código desenvolvido para resolver a equação advecção-difusão-reação (eu mesmo escrevi, veja minhas anotações aqui, http://danieljfarrell.github.io/FVM ). A equação de advecção-difusão-reação é um caso mais geral da equação de Poisson. De fato, a equação de Poisson pode ser recuperada ajustando a velocidade de advecção para zero e removendo o termo transitório.

O código foi testado em várias situações para grades uniformes, não uniformes e aleatórias e sempre produz soluções razoáveis ​​( http://danieljfarrell.github.io/FVM/examples.html ) para a equação de reação de advecção-difusão.

Para mostrar onde o código se decompõe, fiz o seguinte exemplo. Eu configurei uma malha uniforme de 20 células e depois a tornei não uniforme removendo uma única célula. Na figura esquerda, removi a célula e, à direita, foi removida. A nona célula abrange a região onde o termo de origem (ou seja, a carga) muda de sinal. O erro aparece quando a grade não é uniforme em uma região onde o termo da reação muda de sinal . Como você pode ver abaixo.Ω8Ω9

Alguma idéia do que poderia estar causando esse problema? Deixe-me saber se mais informações sobre a discretização seriam úteis (eu não quis incluir muitos detalhes nesta questão).

Erro peculiar ao resolver a equação de Poisson

boyfarrell
fonte
x=0ρ=1
Como é o termo reação?
Janeiro
Que esquema você usa para aproximar as integrais do termo de origem? Esse comportamento também pode ser causado por amostragem insuficiente da fonte. (Qual, provavelmente, é o mesmo mecanismo mencionado na resposta da @JLC.) #
:
ρρ
@JLC os Dirichlet BCs são impostos usando uma abordagem de célula fantasma (minhas anotações online estão desatualizadas em relação a este detalhe de implementação), veja aqui como faço isso, scicomp.stackexchange.com/questions/8538/…
boyfarrell

Respostas:

9

Apenas como um aparte, sua documentação do github é fantástica.

Isso é apenas um palpite dos métodos DG, que podem ter problemas semelhantes se os fluxos numéricos não forem escolhidos com cuidado (eu acho que os métodos FV são um subconjunto dos métodos DG). Se você estiver usando a interpolação dos centros celulares para definir seus fluxos, isso deve ser equivalente a usar a média como fluxo numérico no DG e usar a base constante por partes. Para métodos DG padrão para Poisson, isso leva a soluções numericamente não exclusivas - você pode obter um espaço nulo não trivial para o operador discreto, que eu acho que é o que está causando seus problemas no segundo exemplo. Veja este documento da DG para a sua teoria do lado da DG.

Vou tentar simular um exemplo para FV, que mostra como isso entra em jogo.

ρ(x)=0f(x20)=0f(x19)==f(x11)=0ϕ(x)

f(xi+1)f(xi)=0f(10)=0f(10)=ϕ9.5ϕghost=ϕ9.5f(xi)=f(10)=ϕ9.5

f(10)ϕ(9.5)

x=10

Jesse Chan
fonte
A partir das experiências, posso demonstrar que o método FVM só é estável quando as células de ambos os lados da descontinuidade (alteração de sinal) da função de origem têm volumes iguais. Sua análise concorda com isso? Isso significa que devo prestar mais atenção à geração de uma grade sensata dos meus problemas que já fiz antes. Talvez eu deva considerar aprender o método FEM a seguir?
boyfarrell
Um artigo relevante, embora eu não entendo bem todos os detalhes, jstor.org/discover/10.2307/2157873
boyfarrell
O método FVM é estável apenas neste caso quando a grade está alinhada com a função de origem de alguma forma. Se sua função de fonte mudar, será necessário ajustar sua grade novamente. Não acho que gerar uma grade sensível seja a abordagem correta para esse problema - você tem um método instável.
precisa saber é o seguinte
Essa é uma boa descoberta. Suli é um analista sólido. Eu diria que aprender FEM pode ser divertido, mas FD também deve funcionar para qualquer problema elíptico de 1D. Você também pode ver o que as pessoas que fazem FV (talvez aumentem seus fluxos com termos de penalidade) para obter convergência para problemas elípticos de 2ª ordem em redes gerais. A sabedoria popular matemática costuma dizer que o FV / DF a favor do vento é ótimo para problemas hiperbólicos, enquanto o FEM / DF central diff é ótimo para os elípticos.
precisa saber é o seguinte
Estou revisando esse problema. Relendo sua resposta, devo dizer que é fantástico! Entendo que o método deve mudar porque essa é a raiz do problema (não a grade). Você tem alguma sugestão ou algo que eu possa seguir (acessível a um não especialista) sobre como melhor aproximar o fluxo nesse caso. Ou seja, de uma maneira que possa torná-lo mais estável. Se possível, eu gostaria de encontrar uma FVM melhor para esta equação.
boyfarrell
0

A primeira coisa a notar são suas condições de contorno. Como você pode alterar a inclinação e o valor, não possui condições de Dirichlet nem Neumann.

Então, toda linha reta é uma solução em que o lado direito é zero. Você conseguiu essa parte.

hh

Guido Kanschat
fonte
11
ρ0ϕ0