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 (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 condizioni al contorno. Tuttavia, per la prima e l'ultima riga della matrice (le righe delle condizioni al contorno) consento adi 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
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β
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 and Diffusion con = 0,5 (Crank-Niscolson) nei punti interni e = 1 (completamente implicito) ai confiniβ
Implementazione dell'equazione avanzamento-diffusione
A partire dall'equazione advection-diffusion,
Scrivere usando Crank-Nicolson dà,
Si noti che = 0,5 per Crank-Nicolson, = 1 per completamente implicito e, = 0 per completamente esplicito.β β
Per semplificare la notazione facciamo la sostituzione,
e sposta il valore noto della derivata del tempo sul lato destro,
Fattorizzando i termini ,
che possiamo scrivere in forma di matrice come dove,
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),
Scrivere questo come una differenza centrata dà,
pertanto,
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,
Sostituendo il valore di trovato dalla condizione al contorno si ottiene il seguente risultato per la riga = 1,
Eseguendo la stessa procedura per i rendimenti della riga finale (at = ),
Infine, rendendo implicite le righe di confine (impostazione = 1),
Pertanto, con le condizioni al contorno di Neumann possiamo scrivere l'equazione di matrice, ,
dove,
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.
Sei d'accordo?