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.
o perfil de cobrança (o termo de origem) é fornecido por,
e as condições de contorno são,
e o domínio é .
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.
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).