Spectral prolongation

I've written a routine that can take a coarse grid, do a fourier transform, extrapolate in fourier space, and tranform back to real space resulting in a spectrally prolongated fine mesh. This could be useful for avoiding excess power in AMR spectra.

The fourier prolongation in 1D is fairly straightforward. The only tricky part is that every other fine mesh point does not coincide with the coarser mesh - as would be the case for finite element instead of finite volume. As a result each wave needs to be shifted by the offset between the 1st fine cell and the 1st coarse cell (which works out to be .5*dx_fine)

Here is the result without any shifting…

To shift each wave by .5*dx_fine we have to add a phase = k*dx to each wave. For each element in fourier space we have to determine the corresponding wave vector and then multiply by .5*dx*k.

I also added the ability to do linear prolongation as well as spectral prolongation of layouts for use with FFTs. Here are view of what the data looks like going into the FFT. Constant interpolation is lower left, than linear (monotone center) interpolaton lower right, parabolic interpolation is upper left, and spectral interpolation is upper right

And here are the spectra for those four methods

And here are the side by side view of the spectral prolongation and the fixed grid version.

I also looked at the colliding flow runs. Of course without windowing there ends up being ringing in the spectral prolongation due to the non-periodic nature of the region.

Windowing before doing the spectral prolongation reduces this dramatically

And here is the same window for a later frame

And a comparison between the resulting spectra with and without spectral prolongation

Attachments (10)

Download all attachments as: .zip

Comments

No comments.