Let $u_n$ be an array containing discrete values of the function $u(x,y)$. Performing a 2D FFT to this array we obtain $\hat{u_n}$ representing the values of $\hat{u}(k_x,k_y)$. I would like to perform something like the 2/3 rule often used in pseudospectral methods for fluid dynamics:

$$\hat{u}(k)=0\qquad if \quad k>(2/3)k_{max} $$

I know how to do this in 1D, but I am having trouble implementing it in 2D. I have tried setting to zero all $\hat{u}(k_x,k_y)$ for which $k=\sqrt{k_x^2+k_y^2}>(2/3)k_{max}$ but this method is affecting the energy of my lower frequencies, which I would like to be preserved without numerical dissipation. I would like to obtain something like this:

enter image description here

Which I have only been able to obtain setting a filter in terms of the dependent magnitude (Normalized Energy), and not regarding the wavenumber $k=\sqrt{k_x^2+k_y^2}$ as I would want.

I would appreciate if someone pointed me in the right direction to tackle my problem.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.