Skip to content

Commit 3e8d219

Browse files
committed
Rebased onto current master
1 parent 102079e commit 3e8d219

4 files changed

Lines changed: 13 additions & 26 deletions

File tree

src/elements.jl

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,6 @@ function core_kinetic_energy_density_fourier(::Element, ::T)::T where {T <: Real
6464
error("Abstract elements do not necesesarily provide core kinetic energy density.")
6565
end
6666

67-
# Generic vectorized version of local_potential_fourier, GPU-safe
68-
function local_potential_fourier(el::Element, ps::AbstractVector{T}) where {T <: Real}
69-
arch = architecture(ps)
70-
to_device(arch, map(p -> local_potential_fourier(el, p), to_cpu(ps)))
71-
end
72-
7367
Base.show(io::IO, el::Element) = print(io, "$(typeof(el))(:$(species(el)))")
7468

7569
#
@@ -189,7 +183,7 @@ function valence_charge_density_fourier(el::ElementPsp, p)
189183
gaussian_valence_charge_density_fourier(el, p)
190184
end
191185
end
192-
core_charge_density_fourier(el::ElementPsp, p) = eval_psp_density_core_fourier(el.psp, p)
186+
core_charge_density_fourier(el::ElementPsp, p) = eval_psp_core_density_fourier(el.psp, p)
193187

194188
#
195189
# ElementCohenBergstresser

src/pseudo/NormConservingPsp.jl

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,12 @@ abstract type NormConservingPsp end
2323
# eval_psp_energy_correction(T::Type, psp)
2424

2525
#### Optional methods:
26-
#TODO: check that the new core_kinetic functions are well listed (i.e. vectorized)
2726
# eval_psp_valence_density_real(psp, r::Real)
2827
# eval_psp_valence_density_fourier(psp, p::Real)
2928
# eval_psp_core_density_real(psp, r::Real)
3029
# eval_psp_core_density_fourier(psp, p::Real)
3130
# eval_psp_core_kinetic_energy_density_real(psp, r::Real)
3231
# eval_psp_core_kinetic_energy_density_fourier(psp, p::Real)
33-
# eval_psp_density_valence_real(psp, r::Real)
34-
# eval_psp_density_valence_fourier(psp, p::Real)
35-
# eval_psp_density_core_real(psp, r::Real)
36-
# eval_psp_density_core_fourier(psp, p::Real)
37-
# eval_psp_density_core_fourier(psp, ps::AbstractArray{<Real})
38-
# eval_psp_core_kinetic_energy_density_real(psp, r::Real)
39-
# eval_psp_core_kinetic_energy_density_fourier(psp, p::Real)
4032
# eval_psp_pswfc_real(psp, i::Int, l::Int, p::Real)
4133
# eval_psp_pswfc_fourier(psp, i::Int, l::Int, p::Real)
4234
# count_n_pswfc(psp, l::Integer)
@@ -48,10 +40,12 @@ abstract type NormConservingPsp end
4840
# eval_psp_projector_fourier(psp, i, l, p::AbstractVector{<Real})
4941
# eval_psp_local_real(psp, r::AbstractVector{<Real})
5042
# eval_psp_local_fourier(psp, p::AbstractVector{<Real})
51-
# eval_psp_density_valence_real(psp, r::AbstractVector{<Real})
52-
# eval_psp_density_valence_fourier(psp, p::AbstractVector{<Real})
53-
# eval_psp_density_core_real(psp, r::AbstractVector{<Real})
54-
# eval_psp_density_core_fourier(psp, p::AbstractVector{<Real})
43+
# eval_psp_valence_density_real(psp, r::AbstractVector{<Real})
44+
# eval_psp_valence_density_fourier(psp, p::AbstractVector{<Real})
45+
# eval_psp_core_density_real(psp, r::AbstractVector{<Real})
46+
# eval_psp_core_density_fourier(psp, p::AbstractVector{<Real})
47+
# eval_psp_core_kinetic_energy_density_real(psp, r::AbstractVector{<Real})
48+
# eval_psp_core_kinetic_energy_density_fourier(psp, p::AbstractVector{<Real})
5549
# eval_psp_pswfc_real(psp, i, l, p::AbstractVector{<Real})
5650
# eval_psp_pswfc_fourier(psp, i, l, p::AbstractVector{<Real})
5751

src/pseudo/PspLinComb.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ macro make_psplincomb_call(fn)
7777
end
7878
end
7979

80-
<<<<<<< HEAD
8180
macro make_psplincomb_call_vectorized(fn)
8281
quote
8382
function $fn(psp::PspLinComb, arg::AbstractVector{<:Real})
@@ -86,7 +85,6 @@ macro make_psplincomb_call_vectorized(fn)
8685
end
8786
end
8887

89-
#TODO: core kinetic here too
9088
@make_psplincomb_call DFTK.eval_psp_local_real
9189
@make_psplincomb_call DFTK.eval_psp_local_fourier
9290
@make_psplincomb_call DFTK.eval_psp_valence_density_real

src/pseudo/PspUpf.jl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,6 @@ function eval_psp_projector_fourier(psp::PspUpf, i, l, p::T)::T where {T<:Real}
193193
r2_proj = @view psp.r2_projs[l+1][i][1:ircut_proj]
194194
hankel(rgrid, r2_proj, l, p)
195195
end
196-
@vectorize_psp_projector_function PspUpf DFTK.eval_psp_projector_fourier
197196

198197
# Vectorized version of the above, GPU compatible
199198
function eval_psp_projector_fourier(psp::PspUpf, i, l, ps::AbstractVector{T}) where {T<:Real}
@@ -269,19 +268,19 @@ end
269268
function eval_psp_valence_density_real(psp::PspUpf, r::T) where {T<:Real}
270269
psp.r2_ρion_interp(r) / r^2 # TODO if r is below a threshold, return zero
271270
end
272-
@vectorize_psp_function PspUpf DFTK.eval_psp_density_valence_real
271+
@vectorize_psp_function PspUpf DFTK.eval_psp_valence_density_real
273272

274273
function eval_psp_valence_density_fourier(psp::PspUpf, p::T) where {T<:Real}
275274
rgrid = @view psp.rgrid[1:psp.ircut]
276275
r2_ρion = @view psp.r2_ρion[1:psp.ircut]
277276
return hankel(rgrid, r2_ρion, 0, p)
278277
end
279-
@vectorize_psp_function PspUpf DFTK.eval_psp_density_valence_fourier
278+
@vectorize_psp_function PspUpf DFTK.eval_psp_valence_density_fourier
280279

281280
function eval_psp_core_density_real(psp::PspUpf, r::T) where {T<:Real}
282281
psp.r2_ρcore_interp(r) / r^2 # TODO if r is below a threshold, return zero
283282
end
284-
@vectorize_psp_function PspUpf DFTK.eval_psp_density_core_real
283+
@vectorize_psp_function PspUpf DFTK.eval_psp_core_density_real
285284

286285
function eval_psp_core_density_fourier(psp::PspUpf, p::T) where {T<:Real}
287286
rgrid = @view psp.rgrid[1:psp.ircut]
@@ -290,7 +289,7 @@ function eval_psp_core_density_fourier(psp::PspUpf, p::T) where {T<:Real}
290289
end
291290

292291
# Vectorized version of the above, GPU optimized
293-
function eval_psp_density_core_fourier(psp::PspUpf, ps::AbstractVector{T}) where {T<:Real}
292+
function eval_psp_core_density_fourier(psp::PspUpf, ps::AbstractVector{T}) where {T<:Real}
294293
quadrature = default_psp_quadrature(psp.rgrid)
295294
arch = architecture(ps)
296295
rgrid = to_device(arch, @view psp.rgrid[1:psp.ircut])
@@ -305,12 +304,14 @@ end
305304
function eval_psp_core_kinetic_energy_density_real(psp::PspUpf, r::T) where {T<:Real}
306305
psp.r2_τcore_interp(r) / r^2 # TODO if r is below a threshold, return zero
307306
end
307+
@vectorize_psp_function PspUpf DFTK.eval_psp_core_kinetic_energy_density_real
308308

309309
function eval_psp_core_kinetic_energy_density_fourier(psp::PspUpf, p::T) where {T<:Real}
310310
rgrid = @view psp.rgrid[1:psp.ircut]
311311
r2_τcore = @view psp.r2_τcore[1:psp.ircut]
312312
return hankel(rgrid, r2_τcore, 0, p)
313313
end
314+
@vectorize_psp_function PspUpf DFTK.eval_psp_core_kinetic_energy_density_fourier
314315

315316
function eval_psp_energy_correction(T, psp::PspUpf)
316317
rgrid = @view psp.rgrid[1:psp.ircut]

0 commit comments

Comments
 (0)