Crank-Nicolson è uno schema di discretizzazione stabile per l'equazione Reazione-Diffusione-Avanzamento (convezione)?


26

Non ho molta familiarità con i comuni schemi di discretizzazione per le PDE. So che Crank-Nicolson è uno schema popolare per discretizzare l'equazione di diffusione. È anche una buona scelta per il termine di consulenza?

Sono interessante nel risolvere l' equazione Reazione-Diffusione-Advection ,

ut+(vuDu)=f

dove è il coefficiente di diffusione della sostanza e è la velocità.Duv

Per la mia specifica applicazione l'equazione può essere scritta nel modulo,

ut=D2ux2Diffusion+vuxAdvection (convection)+f(x,t)Reaction

Ecco lo schema Crank-Nicolson che ho applicato,

ujn+1ujnΔt=D[1β(Δx)2(uj1n2ujn+uj+1n)+β(Δx)2(uj1n+12ujn+1+uj+1n+1)]+v[1α2Δx(uj+1nuj1n)+α2Δx(uj+1n+1uj1n+1)]+f(x,t)

Nota i termini e . Ciò consente allo schema di spostarsi tra:αβ

  • β=α=1/2 Crank-Niscolson,
  • β=α=1 è completamente implicito
  • β=α=0 è completamente esplicito

I valori possono essere diversi, il che consente al termine di diffusione di essere Crank-Nicolson e il termine di avanzamento di essere qualcos'altro. Qual è l'approccio più stabile, cosa consiglieresti?

Risposte:


15

Questa è una domanda ben strutturata e una cosa molto utile da capire. Korrok ha ragione a riferirti all'analisi di von Neumann e al libro di LeVeque. Posso aggiungere un po 'di più a quello. Vorrei scrivere una risposta dettagliata, ma al momento ho solo tempo per una breve:

Con , ottieni un metodo assolutamente stabile per passi di dimensioni arbitrariamente grandi e accurato del secondo ordine. Tuttavia, il metodo non è stabile a L , quindi le frequenze molto alte non verranno smorzate, il che non è fisico.α=β=1/2

Con , ottieni un metodo che è anche incondizionatamente stabile, ma solo accurato del 1 ° ordine. Questo metodo è molto dissipativo. È stabile a L.α=β=1

Se prendi , il tuo metodo può essere inteso come applicazione di un metodo additivo Runge-Kutta alla semi-discretizzazione a differenza centrata. L'analisi di stabilità e accuratezza per tali metodi è notevolmente più complicata. Un ottimo documento su tali metodi è qui .αβ

L'approccio da raccomandare dipende fortemente dalla grandezza di , dal tipo di dati iniziali che hai a che fare e dalla precisione che cerchi. Se l'accuratezza molto bassa è accettabile, allora è un approccio molto solido. Se è moderato o grande, allora il problema è dominato dalla diffusione e molto rigido; in genere darà buoni risultati. Se è molto piccolo, può essere vantaggioso utilizzare un metodo esplicito e un riavvolgimento di ordine superiore per i termini convettivi.Dα=β=1Dα=β=1/2D


A risposte molto perspicaci, grazie! C'è un modo per definire i diversi regimi di dominazione della diffusione e dominazione dell'avvento? Oltre a confrontare l'entità dei termini? Ad esempio, confrontando solo i coefficienti? Qual è il significato del termine tecnico L-stabilità. Tutti raccomandano questo libro, devo comprarlo!
boyfarrell

Il criterio che ti ho dato riguarda solo i coefficienti. In breve, la stabilità a L significa che le alte frequenze saranno fortemente smorzate.
David Ketcheson,

Quindi quando è una funzione regolare (come nel senso, non ha componenti di Fourier ad alta frequenza) Crank-Nicolson è una buona scelta. Se tuttavia, ha spigoli vivi, allora è una buona scelta. u(x)u(x)β=1
boyfarrell

È una generalizzazione ragionevole, sebbene molto approssimativa. Quelle scelte funzioneranno almeno se non hai bisogno di molta precisione.
David Ketcheson,

10

In generale, ti consigliamo di utilizzare un metodo implicito per le equazioni paraboliche (la parte di diffusione) - gli schemi espliciti per la PDE parabolica devono avere un tempo molto breve per essere stabili. Al contrario, per la parte iperbolica (consigli) vorrai un metodo esplicito in quanto è più economico e non interrompe la simmetria del sistema lineare che devi risolvere usando uno schema implicito per la diffusione. In tal caso, si desidera evitare differenze centrate come passare a differenze unilaterali per motivi di stabilità.(uj+1uj1)/2Δt(ujuj1)/Δt

Suggerirei di guardare il libro di Randy Leveque o il libro di Dale Durran per "Analisi della stabilità di von Neumann". È un approccio generale per accertare la stabilità del tuo schema di discretizzazione, a condizione che tu abbia periodiche condizioni al contorno. (C'è anche un buon articolo wiki qui .)

L'idea di base è assumere che la tua approssimazione discreta possa essere scritta una somma di onde piane , dove è il numero d'onda e la frequenza. Accumuli un'onda piana nella tua approssimazione alla PDE e preghi che non esploda. Possiamo riscrivere l'onda piana come e vogliamo assicurarci che .ei(kjΔxωnΔt)kωξneikjΔx|ξ|1

A titolo illustrativo, considerare l'equazione di diffusione ordinaria con la differenziazione completamente implicita:

ujn+1ujnΔt=Duj1n+12ujn+1+uj+1n+1Δx2

Se sostituiamo in un'onda piana, quindi dividiamo per ed , otteniamo l'equazioneξneikjΔx

ξ1Δt=DeikΔx2+eikΔxΔx2ξ

Puliscilo un po 'ora e otteniamo:

ξ=11+2DΔtΔx2(1coskΔx) .

Questo è sempre meno di uno, quindi sei in chiaro. Prova ad applicare questo per lo schema esplicito e centrato per l'equazione di avanzamento:

ujn+1ujnΔt=vuj1nuj+1n2Δx

e vedere cosa si ottiene. (Questa volta avrà una parte immaginaria.) Lo troverai , che è un periodo triste. Da qui la mia ammonizione di non usarla. Se riesci a farlo, non dovresti avere molti problemi a trovare uno schema stabile per l'equazione completa di diffusione-avanzamento.ξ|ξ|2>1

Detto questo, utilizzerei uno schema completamente implicito per la parte di diffusione. Cambia la differenza nella parte di in se e se e scegli un timestep in modo che . (Questa è la condizione di Courant-Friedrichs-Lewy .) È solo accurata al primo ordine, quindi potresti voler cercare schemi di discretizzazione di ordine superiore se ciò ti riguarda.ujuj1v>0ujuj+1v<0VΔt/Δx1


Questa è una risposta davvero dettagliata, grazie.
boyfarrell

Questa risposta considera solo le discretizzazioni basate sui metodi di Eulero avanti e indietro nel tempo. La domanda riguarda Crank-Nicholson.
David Ketcheson
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.