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.916446071362                   -0.69    4.9    108ms
  2   -7.921205790430       -2.32       -1.52    1.0   51.5ms
  3   -7.921404550928       -3.70       -2.49    1.5   57.3ms
  4   -7.921440945971       -4.44       -2.82    2.5   89.6ms
  5   -7.921441599849       -6.18       -2.98    1.1   57.6ms
  6   -7.921442008168       -6.39       -4.53    1.0   56.2ms
  7   -7.921442021744       -7.87       -4.57    2.8   85.0ms
  8   -7.921442022125       -9.42       -5.27    1.0   56.6ms
  9   -7.921442022143      -10.73       -5.96    1.6   72.4ms
 10   -7.921442022144      -12.17       -6.06    2.1   71.7ms
 11   -7.921442022144      -12.60       -6.86    1.0   56.9ms
 12   -7.921442022144      -13.97       -7.08    1.6   65.4ms
 13   -7.921442022144   +  -14.75       -7.57    1.0   64.5ms
 14   -7.921442022144      -14.57       -8.21    1.2    112ms

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.170792 seconds (110.23 M allocations: 102.085 GiB, 8.86% gc time, 0.00% compilation time)

These are the final phonon frequencies:

phret_q0.frequencies
6-element Vector{Float64}:
 -0.0034981553604699436
 -0.0029774511649070974
 -0.0029774511634876877
  0.004302230635376008
  0.004302230636669572
  0.004353201767357237