def kfilter(ar, kf, lx=2*pi, ly=2*pi, lz=2*pi):
"""
Function to filter a 3D array by zeroing out larger k values
"""
while len(ar.shape) < 3:
ar = ar.reshape(ar.shape + (1,))
# COMPUTE THE ARRAY SIZE
kx, ky, kz, km = create_kgrid(*ar.shape, lx=lx, ly=ly, lz=lz)
# FOURIER TRANSFORM THE ARRAY
far = nf.fftshift(nf.fftn(ar))
# SET VALUES ABOVE kf AS 0+0i
far = (np.sign(km - kf) - 1.)/(-2.)*far
# BACK TRANSFORM TO REAL SPACE
arf = np.real(nf.ifftn(nf.ifftshift(far)))
return arf
#==================================================
评论列表
文章目录