0
$\begingroup$

Spectral methods for pulse propagation usually require at least one FFT and one iFFT for each step. In my case I have a two-dimensional radially symmetric electric field (one dimension in space, one in time) describing a strongly focused light pulse (i.e. NA > 0.5) while being relatively long in time (> 1 ps).
Due to the strong focusing the pulse will experience a large curvature in time, which in turn results in a broad window in time and will create a lower limit for the resolution along the r-axis. Moreover, due to the large time window size I also have to have a high resolution in time to support the main frequency of my pulse after the FFT.
In total this leads to matrix sizes of > 8192 x 32768 elements in the r x t-dimension, i.e. I have to conduct 8192 FFT-calculations with a size of 32768 elements each for each step, in both directions, which is quite cumbersome.
I know that I can not reduce the amount of points along the r-axis, but I also know that my pulse (for a pulse duration of 1 ps) usually only has a bandwidth of ~4 nm, and therefore should not need such a high resolution in time. Therefore, is there a way to improve the efficiency of the FFT such that I do not have to calculate an FFT over 32768 points, but fewer instead?

$\endgroup$
1
  • 1
    $\begingroup$ It may be worth noting that 32768 is a power of two, which is ideal for FFT algorithms. I believe the term you are looking for is a "pruned" DFT. See the link below for more details. "If you have a transform of size N where only K outputs are desired, the complexity is in general O(N log K), vs. O(N log N) for the full FFT, thus saving only a small additive factor...Turning these arithmetic gains into actual performance improvements is much more difficult, however." fftw.org/pruned.html $\endgroup$ – Charlie S May 3 at 17:11
0
$\begingroup$

If your signal is truly band limited than yes you can do the computation over the frequencies in your pulse. You could do a SVD to figure out how many frequencies you need to run the truncated FFT over. Another thing to keep in mind is FFT libraries are very efficient, so is your band limited code going to be more efficient than those? Is the input to your FFT complex or real? What language are you doing this in? What library?

cuPY might be your friend here.

$\endgroup$
1
  • $\begingroup$ I am using FFTW, with code written in C++/C, the input is complex. Due to the amount of involved FFTs it is not possible to move the code to the GPU, unfortunately. $\endgroup$ – arc_lupus May 13 at 21:18

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.