Skip to content

Commit

Permalink
revise method for grid_pad index
Browse files Browse the repository at this point in the history
  • Loading branch information
ArrogantGao committed Jan 13, 2024
1 parent 2f0d2f5 commit 0528793
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 42 deletions.
4 changes: 2 additions & 2 deletions src/gather.jl
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ function gather_single(q::T, pos::NTuple{N, T}, gridinfo::GridInfo{N, T}, gridbo

for i in gridinfo.iter_list
image_id = near_id_image.id .+ i
potential_i += real(get_pad(gridbox.pad_grid, idl, image_id)) * prod(cheb_value[1][i[j] + gridinfo.w[1] + 1] for j in 1:N)
potential_i += real(gridbox.pad_grid[ntuple(j -> idl[j][image_id[j]], N)...]) * prod(cheb_value[1][i[j] + gridinfo.w[1] + 1] for j in 1:N)
end

return q * 4π * prod(gridinfo.h) * potential_i
Expand Down Expand Up @@ -48,7 +48,7 @@ function gather_single_direct(q::T, pos::NTuple{N, T}, gridinfo::GridInfo{N, T},

for i in gridinfo.iter_list
image_id = near_id_image.id .+ i
potential_i += real(get_pad(gridbox.pad_grid, idl, image_id)) * prod(cheb_value[1][i[j] + gridinfo.w[1] + 1] for j in 1:N)
potential_i += real(gridbox.pad_grid[ntuple(j -> idl[j][image_id[j]], N)...]) * prod(cheb_value[1][i[j] + gridinfo.w[1] + 1] for j in 1:N)
end

return q * 4π * prod(gridinfo.h) * potential_i
Expand Down
6 changes: 2 additions & 4 deletions src/interpolate.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ function interpolate_single!(q::T, pos::NTuple{N, T}, gridinfo::GridInfo{N, T},

for i in gridinfo.iter_list
image_id = near_id_image.id .+ i
value = Complex{T}(q * prod(cheb_value[1][i[j] + gridinfo.w[1] + 1] for j in 1:N))
revise_pad!(gridbox.pad_grid, idl, image_id, value)
gridbox.pad_grid[ntuple(j -> idl[j][image_id[j]], N)...] += Complex{T}(q * prod(cheb_value[1][i[j] + gridinfo.w[1] + 1] for j in 1:N))
end

return nothing
Expand Down Expand Up @@ -45,8 +44,7 @@ function interpolate_single_direct!(q::T, pos::NTuple{N, T}, gridinfo::GridInfo{

for i in gridinfo.iter_list
image_id = near_id_image.id .+ i
value = Complex{T}(q * prod(cheb_value[1][i[j] + gridinfo.w[1] + 1] for j in 1:N))
revise_pad!(gridbox.pad_grid, idl, image_id, value)
gridbox.pad_grid[ntuple(j -> idl[j][image_id[j]], N)...] += Complex{T}(q * prod(cheb_value[1][i[j] + gridinfo.w[1] + 1] for j in 1:N))
end

return nothing
Expand Down
36 changes: 0 additions & 36 deletions src/utils.jl
Original file line number Diff line number Diff line change
Expand Up @@ -56,40 +56,4 @@ end
"""
function FWkb(k::T, width::T, β::T) where{T}
return T(2 * width * sinh(sqrt^2 - (k * width)^2)) / (besseli(0, β) * sqrt^2 - (k * width)^2)))
end

function revise_pad!(pad_grid::Array{Complex{T}, 1}, idl::Vector{Vector{Int}}, image_id::NTuple{1, Int}, value::Complex{T}) where{T}
pad_grid[idl[1][image_id[1]]] += value
return nothing
end

function revise_pad!(pad_grid::Array{Complex{T}, 2}, idl::Vector{Vector{Int}}, image_id::NTuple{2, Int}, value::Complex{T}) where{T}
pad_grid[idl[1][image_id[1]], idl[2][image_id[2]]] += value
return nothing
end

function revise_pad!(pad_grid::Array{Complex{T}, 3}, idl::Vector{Vector{Int}}, image_id::NTuple{3, Int}, value::Complex{T}) where{T}
pad_grid[idl[1][image_id[1]], idl[2][image_id[2]], idl[3][image_id[3]]] += value
return nothing
end

function revise_pad!(pad_grid::Array{Complex{T}, N}, idl::Vector{Vector{Int}}, image_id::NTuple{N, Int}, value::Complex{T}) where{N, T}
pad_grid[[idl[i][image_id[i]] for i in 1:N]...] += value
return nothing
end

function get_pad(pad_grid::Array{Complex{T}, 1}, idl::Vector{Vector{Int}}, image_id::NTuple{1, Int}) where{T}
return pad_grid[idl[1][image_id[1]]]
end

function get_pad(pad_grid::Array{Complex{T}, 2}, idl::Vector{Vector{Int}}, image_id::NTuple{2, Int}) where{T}
return pad_grid[idl[1][image_id[1]], idl[2][image_id[2]]]
end

function get_pad(pad_grid::Array{Complex{T}, 3}, idl::Vector{Vector{Int}}, image_id::NTuple{3, Int}) where{T}
return pad_grid[idl[1][image_id[1]], idl[2][image_id[2]], idl[3][image_id[3]]]
end

function get_pad(pad_grid::Array{Complex{T}, N}, idl::Vector{Vector{Int}}, image_id::NTuple{N, Int}) where{N, T}
return pad_grid[[idl[i][image_id[i]] for i in 1:N]...]
end

0 comments on commit 0528793

Please sign in to comment.