Não entendo o comportamento diferente da equação de advecção-difusão quando aplico diferentes condições de contorno. Minha motivação é a simulação de uma quantidade física real (densidade de partículas) sob difusão e advecção. A densidade de partículas deve ser conservada no interior, a menos que saia pelas bordas. Por essa lógica, se eu aplicar as condições de fronteira de Neumann, os fins do sistema, como (nos lados esquerdo e direito), o sistema deve estar"fechado",isto é, se ofluxono limite for zero, nenhuma partícula poderá escapar.
Para todas as simulações abaixo, apliquei a discretização de Crank-Nicolson à equação de difusão de advecção e todas as simulações têm condições de contorno. No entanto, para a primeira e a última linha da matriz (as linhas de condição de contorno), permito que seja alterado independentemente do valor interno. Isso permite que os pontos finais sejam totalmente implícitos.
Abaixo, discuto 4 configurações diferentes, apenas uma delas é o que eu esperava. No final, discuto minha implementação.
Limite apenas de difusão
Aqui, os termos de advecção são desativados, definindo a velocidade como zero.
Somente difusão, com = 0,5 (Crank-Niscolson) em todos os pontos
A quantidade não é conservada, como pode ser visto pela redução da área de pulso.
Somente difusão, com = 0,5 (Crank-Niscolson) nos pontos internos e = 1 (totalmente implícito) nos limitesβ
Usando uma equação totalmente implícita nos limites, alcanço o que espero: nenhuma partícula escapa . Você pode ver isso pela área sendo conservada à medida que a partícula se difunde. Por que a escolha de nos pontos de fronteira influencia a física da situação? Isso é um bug ou é esperado?
Difusão e advecção
Quando o termo de advecção é incluído, o valor de nos limites parece não influenciar a solução. No entanto, para todos os casos em que os limites parecem estar "abertos", isto é, partículas podem escapar dos limites. Por que esse é o caso?
Orientação e difusão com = 0,5 (Crank-Niscolson) em todos os pontos
Orientação e difusão com = 0,5 (Crank-Niscolson) nos pontos internos e = 1 (totalmente implícito) nos limitesβ
Implementação da equação advecção-difusão
Começando com a equação advecção-difusão,
Escrever usando Crank-Nicolson fornece,
Observe que = 0,5 para Crank-Nicolson, = 1 para totalmente implícito e = 0 para totalmente explícito.β β
Para simplificar a notação, vamos fazer a substituição,
e mova o valor conhecido da derivada de tempo para o lado direito,
A consideração dos termos fornece,
que podemos escrever na forma de matriz como onde,
Aplicando condições de contorno de Neumann
NB está trabalhando com a derivação novamente, acho que percebi o erro. Eu assumi um esquema totalmente implícito ( = 1) ao escrever a diferença finita da condição de contorno. Se você assumir um esquema Crank-Niscolson aqui, a complexidade se tornará muito grande e eu não poderia resolver as equações resultantes para eliminar os nós que estão fora do domínio. No entanto, parece possível, existem duas equações com duas incógnitas, mas não consegui. Isso provavelmente explica a diferença entre o primeiro e o segundo gráfico acima. Penso que podemos concluir que apenas os gráficos com = 0,5 nos pontos de limite são válidos.β
Assumindo que o fluxo no lado esquerdo seja conhecido (assumindo uma forma totalmente implícita),
Escrever isso como uma diferença centralizada dá,
portanto,
Observe que isso introduz um nó que está fora do domínio do problema. Este nó pode ser eliminado usando uma segunda equação. Podemos escrever o nó como,
Substituindo o valor de encontrado na condição de limite, obtém o seguinte resultado para a linha = 1,
A execução do mesmo procedimento para a linha final (em = ) produz,
Por fim, tornar as linhas de limite implícitas (configuração = 1) fornece,
Portanto, com condições de contorno de Neumann, podemos escrever a equação da matriz, ,
Onde,
Meu entendimento atual
Penso que a diferença entre o primeiro e o segundo gráficos é explicada pela observação do erro descrito acima.
Em relação à conservação da quantidade física. Acredito que a causa é que, como apontado aqui , a equação de advecção na forma que escrevi não permite propagação na direção reversa, de modo que a onda passa apenas mesmo com condições de contorno de fluxo zero . Minha intuição inicial em relação à conservação só se aplica quando o termo de advecção é zero (esta é a solução no gráfico 2, onde a área é conservada).Mesmo com condições de limite de fluxo zero de Neumann a massa ainda pode sair do sistema, isso ocorre porque as condições de contorno corretas nesse caso são as condições de Robin nas quais o fluxo total é especificado . Além disso, a condição de Neunmann especifica que a massa não pode deixar o domínio por difusão , mas não diz nada sobre advecção. Em essência, o que ouvimos são condições de contorno fechado para difusão e condições de contorno aberto para advecção. Para obter mais informações, consulte a resposta aqui: Implementação de condições de gradiente de limite zero na equação de advecção-difusão.
Você concordaria?