Inverse operation to `fourier_laplace`.
(tensor, dx, times=1)
| 8 | |
| 9 | # NumPy |
| 10 | def FFT_solve_numpy(tensor, dx, times=1): |
| 11 | """ Inverse operation to `fourier_laplace`. """ |
| 12 | tensor = tensor.reshape(1, *tensor.shape, 1) |
| 13 | frequencies = np.fft.fft2(to_complex(tensor), axes=[1, 2]) |
| 14 | k = fftfreq(np.shape(tensor)[1:-1], mode="square") |
| 15 | fft_laplace = -((2 * np.pi) ** 2) * k |
| 16 | fft_laplace[(0,) * len(k.shape)] = np.inf |
| 17 | result = np.real( |
| 18 | np.fft.ifft2(divide_no_nan(frequencies, fft_laplace ** times), axes=[1, 2]) |
| 19 | ).astype(tensor.dtype)[0, ..., 0] |
| 20 | return result * dx ** 2 |
| 21 | |
| 22 | |
| 23 | def divide_no_nan(x, y): |
no test coverage detected