Phonon computations

This is a quick sketch how to run a simple phonon calculation using DFTK. First we run an SCF calculation.

using AtomsBuilder
using DFTK
using PseudoPotentialData

pseudopotentials = PseudoFamily("cp2k.nc.sr.lda.v0_1.semicore.gth")
model  = model_DFT(bulk(:Si); pseudopotentials, functionals=LDA())
basis  = PlaneWaveBasis(model; Ecut=10, kgrid=[4, 4, 4])
scfres = self_consistent_field(basis, tol=1e-8);
n     Energy            log10(ΔE)   log10(Δρ)   Diag   Δtime
---   ---------------   ---------   ---------   ----   ------
  1   -7.916446899127                   -0.69    4.8    113ms
  2   -7.921209278045       -2.32       -1.52    1.0   53.2ms
  3   -7.921403513301       -3.71       -2.50    1.2   55.7ms
  4   -7.921440994101       -4.43       -2.82    2.6   77.7ms
  5   -7.921441569645       -6.24       -2.96    1.1   54.3ms
  6   -7.921442006287       -6.36       -4.53    1.0   52.5ms
  7   -7.921442021827       -7.81       -4.62    3.0   81.6ms
  8   -7.921442022128       -9.52       -5.27    1.0   64.5ms
  9   -7.921442022142      -10.84       -5.82    1.5   60.3ms
 10   -7.921442022144      -11.84       -5.95    1.4   79.5ms
 11   -7.921442022144      -12.46       -6.65    1.0   60.0ms
 12   -7.921442022144      -13.46       -7.90    2.0   68.3ms
 13   -7.921442022144   +    -Inf       -7.85    2.6   89.2ms
 14   -7.921442022144      -14.57       -8.21    1.0   54.4ms

Next we compute the phonon modes at the q-point [1/4, 1/4, 1/4].

scfres = DFTK.unfold_bz(scfres)
phret_q0 = @time DFTK.phonon_modes(scfres; q=[0.25, 0.25, 0.25]);
119.438016 seconds (107.44 M allocations: 102.070 GiB, 9.13% gc time, 0.00% compilation time)

These are the final phonon frequencies:

phret_q0.frequencies
6-element Vector{Float64}:
 -0.0034981553601745783
 -0.002977451158936035
 -0.0029774511588415375
  0.004302230618921831
  0.004302230619126334
  0.004353201751741694