วิธีการหลอกของสเปกตรัมฟูริเยร์และการกระจายเชิงตัวเลข


9

ทำการจำลองเชิงตัวเลขโดยตรงของความปั่นป่วนของไอโซโทรปิกด้วยวิธีการฟูริเยร์หลอก - สเปกตรัม (Orzag & Patterson, PRL, 1972) โดยใช้ FFT สำหรับพื้นหลังของวิธีการซึ่งใช้กันอย่างแพร่หลายในชุมชนปั่นป่วนคุณสามารถดูหลักสูตรนี้: http://www.math.ualberta.ca/~bowman/m655/lab3d.pdf

ใช้กฎเรียกว่าสำหรับการจัดการซึ่งประกอบด้วยการทำ start ที่ไหน2/3

ยู^(k,เสื้อ)=0              ผม   k>23kMAX
เสื้อ เป็นเวลา k คือหมายเลขคลื่น kMAX คือจำนวนคลื่นสูงสุดและ ยู^ คือแอมพลิจูดสเปกตรัมของความเร็ว

การแจกไพ่ทำหน้าที่เสมือนการกระจายตัวเลขหรือไม่? กล่าวอีกนัยหนึ่งมีพลังงานรั่วเนื่องจากการจัดการหรือไม่


ยังไม่ชัดเจนว่าคำถามของคุณถามอะไร คุณช่วยอธิบายได้ไหม
Geoff Oxberry

แล้วตอนนี้ล่ะ ?
ucsky

คำตอบ:


6

การเจรจาต่อรองของการโน้มน้าวใจนั้นไม่ได้เป็นการกระจายตัวเลข ในความเป็นจริงพลังงานจะอนุรักษ์ได้ก็ต่อเมื่อคุณเปิดเผยข้อกำหนดที่เป็นนามแฝงเท่านั้น

แนวคิดที่อยู่เบื้องหลังการจัดการกับความเชื่อมั่นของ FFT คือการกำจัดข้อกำหนดเพิ่มเติมที่ FFT เพิ่มเข้ามา การบิดเป็นเพียงผลรวมและคุณสามารถคำนวณได้โดยเพียงแค่คำนวณผลรวม อย่างไรก็ตามนี่ช้ามากดังนั้นจึงเป็นการดีกว่าถ้าคุณแปลงฟูริเยร์ให้อินพุทและคูณผลลัพธ์แล้วแปลงอินเวอร์เตอร์การแปลงฟูริเยร์ซึ่งโดยทฤษฎีสังวัตนา

But the convolution theorem only works when the inputs are of infinite length; for finite length inputs, extra terms (aliases) show up which aren't physical. The point of dealiasing is to get back the original equation that you were trying to calculate, while still allowing you to use FFTs to speed up the computation.


Malcolm ไม่ได้พูดถึงห้องสมุด FFTW ++ ที่เขาร่วมประพันธ์ แต่มันช่วยให้คุณดำเนินการโน้มน้าวใจได้อย่างรวดเร็วโดยจัดการช่องว่างภายในโดยนัย (เหนือสิ่งอื่นใด) ดูfftwpp.sourceforge.net
Matthew Emmett

Oh yeah, thanks Matt! The convolution routines in FFTW++ really reduce the cost of computing dealiased convolutions. There is a reference on the sourceforge page and more on my web page. I worked on these with John Bowman, whose 3D turbulence lab is linked in the OP.
Malcolm

4

Understanding what the dealiasing does requires understanding why you're taking FFTs in the first place. For me, the method of weighted residuals approach provides the simplest framework:

  1. You're expanding a solution as a sum of Fourier modes and dropping it into the Navier--Stokes equations. Your test functions are also a Fourier basis.
  2. When you multiply the trial and test functions together and take the inner product (i.e. integrate with an appropriate conjugation), you'll see that you have one integral you cannot simply evaluate because it is nonlinear.
  3. You can approximate that integral using a uniform quadrature scheme where you simply sum the value at uniform collocation points.
  4. Notice your quadrature is exact for a quadratic nonlinearity if you use 1.5 times as many quadrature points as you had Fourier modes. This is the three-halves factor.
  5. Finally, notice the quadrature can be efficiently computed as a FFT.

All the FFT magic can be thought of as an efficient, approximate quadrature scheme which can be made exact for quadratic nonlinearities. Other dealiasing variants play other tricks to make the quadrature exact for the same class of nonlinearities.

So, to answer your question, dealiasing adds no dissipation. This can be seen because every step in the procedure was exact.


1

@Malcolm gave an expert explanation of the dealiasing of the FFT based convolution sums. My intuition tells me however that this is still not the complete answer @abberation needed, so I'll give few more sentences that reflect my own struggle for understanding of numerical methods.

Dealiasing doesn't act as a numerical dissipation, but it does the same thing as numerical dissipation - it prevents your simulation to blow-up.

How does your simulation blow-up?

There is an unphysical transfer of energy from high to low wavenumbers which causes, first the instability (often followed by a simptome - 2h waves, h-grid node distance, the smallest waves that can be represented on a grid).

The reason behind this is aliasing of high wave numbers to those low wavenumbers that can be represented by the grid. This causes "spectral blocking" - the unphysical increase of the amplitudes (read energy) of the high wavenumbers, which gets worse as you approach the upper limit of the represented wavenumbers.

First remedy (Philips, 1959): Filter out, or make equal to zero, upper half of the represented wavenumber spectrum.

Second remedy (Orszag, 1971): The remedy known as the Orszag's Two-Thirds rule. Steven said "filtering out half of the wavenumbers is a waste, we should keep 2/3N and filter out only the upper 1/3N."

The conclusion.

Our simulations sometimes tend to blow-up. If you live in second order, finite volume universe (like the author of these lines did), and know nothing about Spectral Methods, they tell you "Oh your simulation is blowing up? Try using first order upwind instead of central scheme, or blend your central scheme with 10% of upwind in deffered correction approach. That will add dissipation but will prevent your simulation from blowing-up! Oh you're doing LES? Then you shouldn't use upwind, unless you are performing ILES, use just central scheme and Smagorinsky will model the physical dissipation that happens on lowest scales." If you live in the Spectral Methods universe, you learn how unphysical transfer of energy takes place, and you find the remedy in dealiasing by Two-Thirds Rule or "padding".

My inspiration for this post is a wonderfull book by J. Boyd "Chebyshev and Fourier Spectral Methods", section 11.

My advice is:

Act physically or spectrally, but think spectrally! (To paraphrase well known "Think globally, act locally.")


1

There is no energy leak associated with "dealiasing" per se, but there is energy leak associated with truncation that is always performed with or without dealiasing. Let me explain:

if you have two function f and g, both having spectral content up to mode k, the product f.g will have spectral content up to mode 2k. However, you don't want the spectral content of your representation to double at each time-step. Hence you want to truncate the product f.g to the first k modes. By doing this, you lose the energy contained in the modes higher than k.

Dealiasing (or anti-aliasing) ensures that the modes up to k are correct in the representation of f.g, but not the modes larger than k, because anyway they will be discarded.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.