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 ,

∂u∂t+∇⋅(vu−D∇u)=f

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

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

∂u∂t=D∂2u∂x2⏟Diffusion+v∂u∂x⏟Advection (convection)+f(x,t)⏟Reaction

Ecco lo schema Crank-Nicolson che ho applicato,

ujn+1−ujnΔt=D[1−β(Δx)2(uj−1n−2ujn+uj+1n)+β(Δx)2(uj−1n+1−2ujn+1+uj+1n+1)]+v[1−α2Δx(uj+1n−uj−1n)+α2Δx(uj+1n+1−uj−1n+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+1−uj−1)/2Δt(uj−uj−1)/Δ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+1−ujnΔt=Duj−1n+1−2ujn+1+uj+1n+1Δx2

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

ξ−1Δt=De−ikΔx−2+eikΔxΔx2ξ

Puliscilo un po 'ora e otteniamo:

ξ=11+2DΔtΔx2(1−cos⁡kΔ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+1−ujnΔt=vuj−1n−uj+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.uj−uj−1v>0uj−uj+1v<0VΔt/Δx≤1


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.