The FFT simulation currently executes the FFT plan each time functions such as ElevationAt are called, and updates the amplitudes when the time is updated.
This causes an issue with the new varieties of the function that allow access to individual elements because the optimised version of the FFT using Hermitian symmetry destroys the input storage during the calculation. Calling fftw_execute twice will give erroneous results the second time. The previous complex to complex plan does not have this problem.
The proposal is to implement lazy evaluation, so the FFT for each plan is only executed once after a time update.
The FFT simulation currently executes the FFT plan each time functions such as
ElevationAt
are called, and updates the amplitudes when the time is updated.This causes an issue with the new varieties of the function that allow access to individual elements because the optimised version of the FFT using Hermitian symmetry destroys the input storage during the calculation. Calling
fftw_execute
twice will give erroneous results the second time. The previous complex to complex plan does not have this problem.The proposal is to implement lazy evaluation, so the FFT for each plan is only executed once after a time update.