MCPcopy
hub / github.com/tum-pbs/PhiFlow / FFT_solve_numpy

Function FFT_solve_numpy

tests/commit/test_poisson_solver.py:10–20  ·  view source on GitHub ↗

Inverse operation to `fourier_laplace`.

(tensor, dx, times=1)

Source from the content-addressed store, hash-verified

8
9# NumPy
10def 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
23def divide_no_nan(x, y):

Callers 1

test_poissonMethod · 0.85

Calls 4

to_complexFunction · 0.85
fftfreqFunction · 0.85
divide_no_nanFunction · 0.85
shapeMethod · 0.45

Tested by

no test coverage detected