Conservazione di una quantità fisica quando si usano le condizioni al contorno di Neumann applicate all'equazione di diffusione-avanzamento


25

Non capisco il diverso comportamento dell'equazione diffusione-avviso quando applico diverse condizioni al contorno. La mia motivazione è la simulazione di una quantità fisica reale (densità delle particelle) sotto diffusione e consulenza. La densità delle particelle deve essere conservata all'interno, a meno che non fuoriesca dai bordi. Secondo questa logica, se impongo le condizioni al contorno di Neumann, le estremità del sistema come ϕx=0(sui lati sinistro e destro), il sistema dovrebbe essere"chiuso",ovvero se ilflussoal limite è zero, nessuna particella può fuoriuscire.

Per tutte le simulazioni seguenti, ho applicato la discretizzazione di Crank-Nicolson all'equazione di diffusione-avanzamento e tutte le simulazioni hanno ϕx=0condizioni al contorno. Tuttavia, per la prima e l'ultima riga della matrice (le righe delle condizioni al contorno) consento aβdi essere modificato indipendentemente dal valore interno. Ciò consente agli end point di essere completamente impliciti.

Di seguito discuto 4 diverse configurazioni, solo una di queste è quella che mi aspettavo. Alla fine discuto della mia implementazione.

Limite solo diffusione

Qui i termini dell'avviso vengono disattivati ​​impostando la velocità su zero.

Solo diffusione, con = 0,5 (Crank-Niscolson) in tutti i puntiβ

Solo diffusione (confini di Neumann con beta = 0,5)

La quantità non viene conservata come si può vedere dalla riduzione dell'area degli impulsi.

Solo diffusione, con = 0,5 (Crank-Niscolson) nei punti interni e = 1 (completamente implicito) ai confiniβββ

Solo diffusione (confini di Neumann con beta = 0,5 per interno, beta = 1 completamente implicito) i confini

Usando l'equazione completamente implicita sui confini ottengo ciò che mi aspetto: nessuna fuga di particelle . Lo si può vedere dall'area conservata come la particella diffusa. Perché la scelta di nei punti di confine dovrebbe influenzare la fisica della situazione? È un bug o previsto?β

Diffusione e consulenza

Quando viene incluso il termine di avviso, il valore di ai confini non sembra influenzare la soluzione. Tuttavia, per tutti i casi in cui i confini sembrano "aperti", cioè le particelle possono sfuggire ai confini. Perché è così?β

Advection and Diffusion con = 0,5 (Crank-Niscolson) in tutti i puntiβ

Advection-Diffusion (confini di Neumann con beta = 0,5)

Advection and Diffusion con = 0,5 (Crank-Niscolson) nei punti interni e = 1 (completamente implicito) ai confiniβββ

Advection and Diffusion (confini di Neumann con beta = 0,5 per interni, beta = 1 completamente implicito) i confini

Implementazione dell'equazione avanzamento-diffusione

A partire dall'equazione advection-diffusion,

ϕt=D2ϕx2+vϕx

Scrivere usando Crank-Nicolson dà,

ϕjn+1ϕjnΔt=D[1β(Δx)2(ϕj1n2ϕjn+ϕj+1n)+β(Δx)2(ϕj1n+12ϕjn+1+ϕj+1n+1)]+v[1β2Δx(ϕj+1nϕj1n)+β2Δx(ϕj+1n+1ϕj1n+1)]

Si noti che = 0,5 per Crank-Nicolson, = 1 per completamente implicito e, = 0 per completamente esplicito.β ββββ

Per semplificare la notazione facciamo la sostituzione,

s=DΔt(Δx)2r=vΔt2Δx

e sposta il valore noto della derivata del tempo sul lato destro,ϕjn

ϕjn+1=ϕjn+s(1β)(ϕj1n2ϕjn+ϕj+1n)+sβ(ϕj1n+12ϕjn+1+ϕj+1n+1)+r(1β)(ϕj+1nϕj1n)+rβ(ϕj+1n+1ϕj1n+1)

Fattorizzando i termini ,ϕ

β(rs)ϕj1n+1+(1+2sβ)ϕjn+1β(s+r)ϕj+1n+1Aϕn+1=(1β)(sr)ϕj1n+(12s[1β])ϕjn+(1β)(s+r)ϕj+1nMϕn

che possiamo scrivere in forma di matrice come dove,Aϕn+1=Mϕn

A=(1+2sββ(s+r)0β(rs)1+2sββ(s+r)β(rs)1+2sββ(s+r)0β(rs)1+2sβ)

M=(12s(1β)(1β)(s+r)0(1β)(sr)12s(1β)(1β)(s+r)(1β)(sr)12s(1β)(1β)(s+r)0(1β)(sr)12s(1β))

Applicazione delle condizioni al contorno di Neumann

NB sta lavorando di nuovo attraverso la derivazione Penso di aver individuato l'errore. Ho assunto uno schema completamente implicito ( = 1) quando scrivevo la differenza finita della condizione al contorno. Se si assume uno schema Crank-Niscolson qui la complessità diventa troppo grande e non potrei risolvere le equazioni risultanti per eliminare i nodi che sono al di fuori del dominio. Tuttavia, sembrerebbe possibile, ci sono due equazioni con due incognite, ma non sono riuscito a gestirlo. Questo probabilmente spiega la differenza tra il primo e il secondo diagramma sopra. Penso che possiamo concludere che sono validi solo i grafici con = 0,5 ai punti di confine.βββ

Supponendo che il flusso sul lato sinistro sia noto (assumendo una forma pienamente implicita),

ϕ1n+1x=σL

Scrivere questo come una differenza centrata dà,

ϕ1n+1xϕ2n+1ϕ0n+12Δx=σL

pertanto, ϕ0n+1=ϕ2n+12ΔxσL

Si noti che ciò introduce un nodo che è al di fuori del dominio del problema. Questo nodo può essere eliminato usando una seconda equazione. Possiamo scrivere il nodo come,ϕ0n+1j=1

β(rs)ϕ0n+1+(1+2sβ)ϕ1n+1β(s+r)ϕ2n+1=(1β)(sr)ϕj1n+(12s[1β])ϕjn+(1β)(s+r)ϕj+1n

Sostituendo il valore di trovato dalla condizione al contorno si ottiene il seguente risultato per la riga = 1,ϕ0n+1j

(1+2sβ)ϕ1n+12sβϕ2n+1=(1β)(sr)ϕj1n+(12s[1β])ϕjn+(1β)(s+r)ϕj+1n+2β(rs)ΔxσL

Eseguendo la stessa procedura per i rendimenti della riga finale (at = ),jJ

2sβϕJ1n+1+(1+2sβ)ϕJn+1=(1β)(sr)ϕJ1n+(12s(1β))ϕJn+2β(s+r)ΔxσR

Infine, rendendo implicite le righe di confine (impostazione = 1),β

(1+2s)ϕ1n+12sϕ2n+1=ϕj1n+1ϕjn+2(rs)ΔxσL

2sϕJ1n+1+(1+2s)ϕJn+1=ϕJn+2(s+r)ΔxσR

Pertanto, con le condizioni al contorno di Neumann possiamo scrivere l'equazione di matrice, ,Aϕn+1=Mϕn+bN

dove,

A=(1+2s2s0β(rs)1+2sββ(s+r)β(rs)1+2sββ(s+r)02s1+2s)

M=(100(1β)(sr)12s(1β)(1β)(s+r)(1β)(sr)12s(1β)(1β)(s+r)001)

bN=(2(rs)ΔxσL002(s+r)ΔxσR)T

La mia attuale comprensione

  • Penso che la differenza tra il primo e il secondo grafico sia spiegata notando l'errore sopra indicato.

  • Per quanto riguarda la conservazione della quantità fisica. Credo che la causa sia che, come sottolineato qui , l'equazione di avanzamento nella forma che ho scritto non consente la propagazione nella direzione opposta, quindi l'onda attraversa anche con condizioni al contorno a flusso zero . La mia intuizione iniziale riguardo alla conservazione si applicava solo quando il termine di avanzamento è zero (questa è la soluzione nel diagramma numero 2 in cui l'area è conservata).

  • Anche con le condizioni al contorno del flusso zero di Neumann la massa può ancora lasciare il sistema, questo perché le condizioni al contorno corrette in questo caso sono condizioni al contorno di Robin in cui il flusso totale è specificato . Inoltre la condizione di Neunmann specifica che la massa non può lasciare il dominio per diffusione , non dice nulla sull'avvezione. In sostanza, ciò che abbiamo sentito sono le condizioni al contorno chiuse alla diffusione e le condizioni al confine all'avvento. Per ulteriori informazioni, consultare la risposta qui, Implementazione del conditone del confine zero gradiente nell'equazione di diffusione-avanzamentoϕx=0j=Dϕx+vϕ=0.

Sei d'accordo?


Sembra che le condizioni al contorno non siano implementate correttamente. Potresti mostrarci come hai imposto le condizioni al contorno?
David Ketcheson,

OK Ho aggiornato con l'implementazione e penso di aver individuato l'errore relativo all'applicazione di = 0,5 solo nelle righe di confine. Ho aggiornato la mia "comprensione attuale" in fondo alla domanda. Hai qualche commento? β
boyfarrell

Quindi ... come appare la discretizzazione sui confini nel caso dei confini di Robin? L'hai mostrato per i confini di Neumann, ma non per i confini di Robin.

Risposte:


15

Penso che uno dei tuoi problemi sia che (come hai osservato nei tuoi commenti) le condizioni di Neumann non sono le condizioni che stai cercando , nel senso che non implicano la conservazione della tua quantità. Per trovare la condizione corretta, riscrivi il tuo PDE come

ϕt=x(Dϕx+vϕ)+S(x,t).

Ora, il termine che appare tra parentesi, è il flusso totale e questa è la quantità che devi mettere a zero sui confini per conservare . (Ho aggiunto per motivi di generalità e per i tuoi commenti.) Le condizioni al contorno che devi imporre sono quindi (supponendo che il tuo dominio spaziale sia )Dϕx+vϕ=0ϕS(x,t)(10,10)

Dϕx(10)+vϕ(10)=0

per il lato sinistro e

Dϕx(10)+vϕ(10)=0

per il lato destro. Queste sono le cosiddette condizioni al contorno di Robin (si noti che Wikipedia afferma esplicitamente che queste sono le condizioni isolanti per le equazioni di diffusione-avanzamento).

Se imposti queste condizioni al contorno, otterrai le proprietà di conservazione che stavi cercando. In effetti, integrandoci nel dominio dello spazio, abbiamo

ϕtdx=x(Dϕx+vϕ)dx+S(x,t)dx

Usando l' integrazione per parti sul lato destro, abbiamo

ϕtdx=(Dϕx+vϕ)(10)(Dϕx+vϕ)(10)+S(x,t)dx

Ora, i due termini centrali svaniscono grazie alle condizioni al contorno. Integrando nel tempo, otteniamo

0Tϕtdxdt=0TS(x,t)dxdt

e se ci è permesso cambiare i primi due integrali ,

ϕ(x,T)dxϕ(x,0)dx=0TS(x,t)dx

Ciò dimostra che il dominio è isolato dall'esterno. In particolare, se , otteniamo la conservazione di .ϕS=0ϕ


Ora capisco perché ha funzionato solo quando = 0; perché ciò implicherebbe la conservazione seguendo il tuo approccio sopra. Quale sarebbe la conseguenza dell'uso di questa condizione al contorno su quanto sopra, l'onda dovrebbe riflettere? Ho pensato che questo non sarebbe stato possibile perché non c'è nulla nell'equazione che mi darebbe una velocità negativa? v
boyfarrell

Il modo migliore per sapere è probabilmente provare! Ma se questo si comporta correttamente (e IMO lo fa), dovresti vedere una certa quantità di che inizia ad accumularsi sul lato sinistro del dominio: l'avviso spinge in quella direzione ma il confine è chiuso. L'accumulo si interrompe quando la diffusione è sufficientemente grande da bilanciarla. Quindi no, non ci dovrebbero essere onde riflesse. ϕϕ
Dr_Sam

@DrSam Solo una domanda relativa all'implementazione. Capisco il tuo punto su come rendere la quantità zero sul lato sinistro. Ma quando dici "a destra solo un termine" che cosa significa? Pensavo che le condizioni al contorno dovessero essere Neumann o Dirichlet (o un mix di entrambi)?
boyfarrell,

@boyfarrell La sinistra / destra nella risposta si riferiva a una derivazione delle condizioni al contorno corrette, non al modo in cui è implementata (modificata per chiarezza). Le condizioni di Robin sono condizioni classiche, sebbene siano meno conosciute di Dirichlet e Neumann.
Dr_Sam

Quindi, per quanto riguarda l'implementazione, pensi che dovrei derivare le condizioni al contorno di Robin per entrambi i confini? Inoltre, se l'equazione ha un termine di reazione (es. la condizione al contorno deve includere anche questo termine?
ϕt=x(Dϕx+vϕ)+S(x,t)
boyfarrell
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.