initial commit

This commit is contained in:
2026-08-07 15:56:42 +09:00
commit 91ad25aca9
1012 changed files with 159314 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
from numpy import *
from numpy.fft import *
import pyfftw
class shift_fftw:
"""Shift function via FFT"""
def __init__(self, dk_x, dk_y, N):
kx = linspace(-floor(N/2.0),ceil(N/2.0)-1,N)
kx = ifftshift(kx)
[self.kX, self.kY] = meshgrid(kx,kx)
self.kX = self.kX*dk_x
self.kY = self.kY*dk_y
self.f = pyfftw.empty_aligned((N,N),dtype='complex128',n=16)
self.r = pyfftw.empty_aligned((N,N),dtype='complex128',n=16)
self.N_tot = N*N
self.fft_forward = pyfftw.FFTW(self.r, self.f, axes=(0,1))
self.fft_inverse = pyfftw.FFTW(self.f, self.r, direction='FFTW_BACKWARD', axes=(0,1))
def shift(self, func, px, py):
self.r[:,:] = ifftshift(func)
self.fft_forward.update_arrays(self.r, self.f)
self.fft_forward.execute()
self.f = self.f*exp(-2*pi*1j*px*self.kX)*exp(-2*pi*1j*py*self.kY)
self.fft_inverse.update_arrays(self.f, self.r)
self.fft_inverse.execute();
return fftshift(self.r) / self.N_tot #fix normalization