Added more timing. Fixed whitification.
This commit is contained in:
parent
401ddc8a8b
commit
a6b08dfe8f
7 changed files with 95 additions and 30 deletions
|
@ -6,15 +6,50 @@ def fourier_analysis(borg_vol):
|
|||
|
||||
return np.fft.rfftn(borg_vol.density)*(L/N)**3, L, N
|
||||
|
||||
def borg_upgrade_sampling(dhat, supersample):
|
||||
N = dhat.shape[0]
|
||||
N2 = N * supersample
|
||||
dhat_new = np.zeros((N2, N2, N2/2+1), dtype=np.complex128)
|
||||
|
||||
hN = N/2
|
||||
dhat_new[:hN, :hN, :hN+1] = dhat[:hN, :hN, :]
|
||||
dhat_new[:hN, (N2-hN):N2, :hN+1] = dhat[:hN, hN:, :]
|
||||
dhat_new[(N2-hN):N2, (N2-hN):N2, :hN+1] = dhat[hN:, hN:, :]
|
||||
dhat_new[(N2-hN):N2, :hN, :hN+1] = dhat[hN:, :hN, :]
|
||||
|
||||
return dhat_new, N2
|
||||
|
||||
def half_pixel_shift(borg, doshift=False):
|
||||
|
||||
dhat,L,N = fourier_analysis(borg)
|
||||
if not doshift:
|
||||
return dhat, L
|
||||
|
||||
return bare_half_pixel_shift(dhat, L, N)
|
||||
|
||||
def bare_half_pixel_shift(dhat, L, N, doshift=False):
|
||||
|
||||
# dhat_new,N2 = borg_upgrade_sampling(dhat, 2)
|
||||
# d = (np.fft.irfftn(dhat_new)*(N2/L)**3)[1::2,1::2,1::2]
|
||||
# del dhat_new
|
||||
# dhat = np.fft.rfftn(d)*(L/N)**3
|
||||
# return dhat, L
|
||||
|
||||
# dhat2 = np.zeros((N,N,N),dtype=np.complex128)
|
||||
# dhat2[:,:,:N/2+1] = dhat
|
||||
# dhat2[N:0:-1, N:0:-1, N:N/2:-1] = np.conj(dhat[1:,1:,1:N/2])
|
||||
# dhat2[0, N:0:-1, N:N/2:-1] = np.conj(dhat[0, 1:, 1:N/2])
|
||||
# dhat2[N:0:-1, 0, N:N/2:-1] = np.conj(dhat[1:, 0, 1:N/2])
|
||||
# dhat2[0,0,N:N/2:-1] = np.conj(dhat[0, 0, 1:N/2])
|
||||
|
||||
ik = np.fft.fftfreq(N,d=L/N)*2*np.pi
|
||||
phi = 0.5*L/N*(ik[:,None,None]+ik[None,:,None]+ik[None,None,:(N/2+1)])
|
||||
# phi %= 2*np.pi
|
||||
phase = np.cos(phi)+1j*np.sin(phi)
|
||||
dhat = dhat*phase
|
||||
dhat[N/2,:,:] = 0
|
||||
dhat[:,N/2,:] = 0
|
||||
dhat[:,:,N/2] = 0
|
||||
|
||||
return dhat*phase, L
|
||||
return dhat, L
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue