always fftshift+iffshift for Fraunhofer propagation #658
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses what I think may be a bug in the
accel_math.fft_2dimplementation, where fftshifts weren't being performed before and after every fft2, leading to checkboard patterns in the complex fields.You can reproduce this with a simple code block:
the output of which is

vs the expected output of

My proposed fix is to always have
accel_math.fft_2dperform an ifftshift and fftshift whenfftshift=True, regardless of whether forward or inverse FFTs are being performed.I added test coverage by modifying
test_matrixDFT.test_MFT_FFT_equivalence_in_OpticalSystemto explicitly check agreement between the complex outputs of the MFT and FFT (instead of just intensities).All tests appear to be passing locally, but it's not 100% obvious to me that this couldn't have an unintended consequence that's not getting test coverage!