Skip to content

Commit a8e576c

Browse files
minor change (tried using similar instead, but CUDA assigment does not work)
1 parent 3b5f9d0 commit a8e576c

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

src/fourier_shear.jl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ function shear!(arr::TA, Δ, shear_dir_dim=1, shear_dim=2; fix_nyquist=false, as
4646

4747
# stores the maximum amount of shift
4848
TR = real_arr_type(TA)
49+
# shift = similar(arr, real(eltype(arr)), select_sizes(arr, shear_dir_dim))
4950
# shift = TR(reshape(fftfreq(size(arr, shear_dir_dim)), NDTools.select_sizes(arr, shear_dir_dim)))
5051
shift = TR(reorient(fftfreq(size(arr, shear_dir_dim)),shear_dir_dim, Val(N)))
5152

@@ -65,12 +66,13 @@ function shear!(arr::TA, Δ, shear_dir_dim=1, shear_dim=2; fix_nyquist=false, as
6566

6667
# stores the maximum amount of shift
6768
TR = real_arr_type(TA)
69+
# shift = similar(arr, real(eltype(arr_ft)), select_sizes(arr_ft, shear_dir_dim))
6870
# shift = TR(reshape(rfftfreq(size(arr, shear_dir_dim)), NDTools.select_sizes(arr_ft, shear_dir_dim)))
6971
shift = TR(reorient(rfftfreq(size(arr, shear_dir_dim)),shear_dir_dim, Val(N)))
7072

7173
apply_shift_strength!(arr_ft, arr, shift, shear_dir_dim, shear_dim, Δ, fix_nyquist)
7274
# go back to real space
73-
75+
7476
# overwrites arr in-place
7577
ldiv!(arr, p, arr_ft)
7678
if assign_wrap
@@ -110,9 +112,9 @@ end
110112

111113
function apply_shift_strength!(arr::TA, arr_orig, shift, shear_dir_dim, shear_dim, Δ, fix_nyquist=false) where {T, N, TA<:AbstractArray{T, N}}
112114
#applies the strength to each slice
113-
# shift_strength = reshape(fftpos(1, size(arr, shear_dim), CenterFT), NDTools.select_sizes(arr, shear_dim))
114-
# TR = real_arr_type(typeof(collect(arr[1:1]))) # There is a problem with circshifted arrays and this way of finding the type.
115-
shift_strength = reorient(fftpos(1, size(arr, shear_dim), CenterFT), shear_dim, Val(N))
115+
# The TR trick does not seem to work for the code below due to a call with a PaddedArray.
116+
shift_strength = similar(arr, real(eltype(arr)), select_sizes(arr, shear_dim))
117+
shift_strength .= (real(eltype(TA))).(reorient(fftpos(1, size(arr, shear_dim), CenterFT), shear_dim, Val(N)))
116118

117119
# do the exp multiplication in place
118120
e = cispi.(2 .* Δ .* shift .* shift_strength)

src/fourier_shifting.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ function shift_by_1D_FT!(arr::TA, shifts; soft_fraction=0, take_real=false, fix_
8888
end
8989
# better use reorient from NDTools here?
9090
TR = real_arr_type(TA)
91+
# freqs = similar(arr, real(eltype(arr)), select_sizes(arr, d))
9192
freqs = TR(reorient(fftfreq(size(arr, d)),d, Val(N)))
9293
# freqs = TR(reshape(fftfreq(size(arr, d)), ntuple(i -> 1, Val(d-1))..., size(arr,d)))
9394
# @show size(freqs)
@@ -142,8 +143,10 @@ function shift_by_1D_RFT!(arr::TA, shifts; soft_fraction=0, fix_nyquist_frequenc
142143
s = size(arr_ft,d); # s1[d]
143144
# @show size(arr, d) ÷ 2 + 1
144145
# freqs = TR(reshape(fftfreq(size(arr, d))[1:s], ntuple(i -> 1, d-1)..., s1))
146+
145147
TR = real_arr_type(TA)
146-
freqs = TR(reorient(fftfreq(size(arr, d))[1:s],d, Val(N)))
148+
# freqs = similar(arr, real(eltype(arr_ft)), select_sizes(arr_ft, d))
149+
freqs = TR(reorient(fftfreq(size(arr, d))[1:s], d, Val(N)))
147150
if iszero(soft_fraction)
148151
ϕ = cispi.(-freqs .* 2 .* shift)
149152
else

0 commit comments

Comments
 (0)