Metodo pseudo-spettrale di Fourier e dissipazione numerica


9

Esecuzione di una simulazione numerica diretta della turbolenza isotropa con il metodo pseudo-spettrale di Fourier (Orzag & Patterson, PRL, 1972) utilizzando FFT. Per uno sfondo del metodo, ampiamente utilizzato nella comunità delle turbolenze, puoi vedere questo corso: http://www.math.ualberta.ca/~bowman/m655/lab3d.pdf

Utilizzare le cosiddette regole per la dealiasing che consiste nel fare dove è l'ora, è il numero d'onda, è il numero d'onda massimo e è l'ampiezza spettrale della velocità.2/3

u^(k,t)=0              if   k>23kMAX
tkkMAXu^

Il dealiasing agisce come una dissipazione numerica? In altre parole, c'è una perdita di energia dovuta alla dealiasing?


Non è chiaro quale sia la tua domanda. Potresti chiarire?
Geoff Oxberry,

e adesso?
ucsky,

Risposte:


6

Il dealiasing della convoluzione non agisce come dissipazione numerica. In effetti, l'energia viene preservata solo se si eliminano i termini con alias.

L'idea alla base delle convenzioni basate sulla FFT è quella di sbarazzarsi di termini extra che vengono aggiunti dalla FFT. Una convoluzione è solo una somma e puoi calcolarla semplicemente calcolando la somma. Tuttavia, questo è molto lento, quindi è meglio trasformare Fourier in input e moltiplicare il risultato e quindi invertire la trasformata di Fourier, che, con il teorema di convoluzione, è la stessa cosa di una convoluzione.

Ma il teorema di convoluzione funziona solo quando gli input sono di lunghezza infinita; per input di lunghezza finita, vengono visualizzati termini extra (alias) che non sono fisici. Il punto di dealiasing è di recuperare l'equazione originale che stavi cercando di calcolare, pur consentendo di utilizzare gli FFT per accelerare il calcolo.


Malcolm non ha menzionato la libreria FFTW ++ di cui è stato autore, ma ti aiuta a eseguire rapidamente convoluzioni convenzionate gestendo il riempimento implicitamente (tra le altre cose). Vedi fftwpp.sourceforge.net .
Matthew Emmett,

Oh sì, grazie Matt! Le routine di convoluzione in FFTW ++ riducono davvero il costo del calcolo delle convoluzioni convenzionali. C'è un riferimento sulla pagina di sourceforge e altro sulla mia pagina web. Ho lavorato su questi con John Bowman, il cui laboratorio di turbolenza 3D è collegato all'OP.
Malcolm,

4

Capire cosa fa il dealiasing richiede capire perché stai prendendo FFT in primo luogo. Per me, il metodo dell'approccio dei residui ponderati fornisce il quadro più semplice:

  1. Stai espandendo una soluzione come somma delle modalità di Fourier e la rilasci nelle equazioni di Navier - Stokes. Le tue funzioni di test sono anche una base di Fourier.
  2. Quando si moltiplicano le funzioni di prova e test e si prende il prodotto interno (ovvero si integra con una coniugazione appropriata), si vedrà che si possiede un integrale che non si può semplicemente valutare perché non è lineare.
  3. È possibile approssimare quell'integrale usando uno schema di quadratura uniforme in cui si somma semplicemente il valore in punti di collocazione uniformi.
  4. Nota che la tua quadratura è esatta per una non linearità quadratica se usi 1,5 volte più punti di quadratura rispetto alle modalità di Fourier. Questo è il fattore delle tre metà.
  5. Si noti infine che la quadratura può essere calcolata in modo efficiente come FFT.

Tutta la magia della FFT può essere pensata come uno schema di quadratura efficiente e approssimativo che può essere reso esatto per le non linearità quadratiche. Altre varianti di dealiasing giocano altri trucchi per rendere esatta la quadratura per la stessa classe di non linearità.

Quindi, per rispondere alla tua domanda, il dealiasing non aggiunge dissipazione. Questo può essere visto perché ogni fase della procedura era esatta.


1

@Malcolm ha fornito una spiegazione esperta della dealiasing delle somme di convoluzione basate su FFT. La mia intuizione mi dice tuttavia che questa non è ancora la risposta completa necessaria alla @berberazione, quindi fornirò qualche altra frase che rifletta la mia lotta per la comprensione dei metodi numerici.

La dealiasing non agisce come una dissipazione numerica, ma fa la stessa cosa della dissipazione numerica: impedisce alla simulazione di esplodere.

Come esplode la tua simulazione?

Esiste un trasferimento non fisico di energia dai numeri d'onda alti a quelli bassi che causa, in primo luogo, l'instabilità (spesso seguita da un sintomo - onde 2h, distanza del nodo della griglia h, le onde più piccole che possono essere rappresentate su una griglia).

Il motivo alla base di questo è l'alias dei numeri di onde alte a quei numeri di onde basse che possono essere rappresentati dalla griglia. Ciò provoca il "blocco spettrale" - l'aumento non fisico delle ampiezze (energia di lettura) dei numeri d'onda alti, che peggiora quando ti avvicini al limite superiore dei numeri d'onda rappresentati.

Primo rimedio (Philips, 1959): filtrare o rendere uguale a zero la metà superiore dello spettro del numero d'onda rappresentato.

Secondo rimedio (Orszag, 1971): il rimedio noto come regola dei due terzi di Orszag. Steven ha detto che "filtrare metà dei wavenumbers è uno spreco, dovremmo tenere 2 / 3N e filtrare solo il 1 / 3N superiore."

La conclusione.

Le nostre simulazioni a volte tendono a esplodere. Se vivi in ​​un universo a volume finito del secondo ordine (come ha fatto l'autore di queste righe) e non sai nulla dei metodi spettrali, ti dicono "Oh, la tua simulazione sta esplodendo? Prova a usare controvento del primo ordine invece di schema centrale, o mescola il tuo schema centrale con il 10% di controvento in un approccio di correzione approfondito. Ciò aggiungerà dissipazione ma impedirà l'esplosione della simulazione! Oh, stai facendo LES? Quindi non dovresti usare controvento, a meno che tu non stia eseguendo ILES, usa solo schema centrale e Smagorinsky modelleranno la dissipazione fisica che avviene sulle scale più basse ". Se vivi nell'universo dei Metodi spettrali, impari come avviene il trasferimento non fisico dell'energia e trovi il rimedio nella dealiasazione secondo la regola dei due terzi o "imbottitura".

La mia ispirazione per questo post è un meraviglioso libro di J. Boyd "Chebyshev e Fourier Spectral Methods", sezione 11.

Il mio consiglio è:

Agisci fisicamente o spettralmente, ma pensa spettralmente! (Per parafrasare il noto "Pensa globalmente, agisci localmente").


1

Non vi è alcuna perdita di energia associata al "dealiasing" di per sé, ma c'è una perdita di energia associata al troncamento che viene sempre eseguita con o senza dealiasing. Lasciatemi spiegare:

se si hanno due funzioni f e g , entrambi con contenuto spettrale fino alla modalità k , il prodotto fg avrà contenuto spettrale fino alla modalità 2k . Tuttavia, non si desidera raddoppiare il contenuto spettrale della propria rappresentazione ad ogni passaggio temporale. Quindi vuoi troncare il prodotto fg nelle prime modalità k . In questo modo, si perde l'energia contenuta nelle modalità superiori a k .

Dealiasing (o anti-aliasing) garantisce che le modalità fino a k siano corrette nella rappresentazione di fg , ma non le modalità più grandi di k , perché comunque verranno scartate.

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.