Phonon computations
This is a quick sketch how to run a simple phonon calculation using DFTK.
Practical phonon computations have only seen rudimentary testing as of now. As of now we do not yet recommend relying on this feature for production calculations. Some of the limitations are:
- symmetries must be disabled (pass
symmetries=falseto the model) - only LDA functionals are supported
- non-linear core corrections from the pseudopotentials are not supported
- MPI parallelization over k-points is not supported (due to $k$ and $k+q$ interactions)
We appreciate any issues, bug reports or PRs.
First we run an SCF calculation.
using AtomsBuilder
using DFTK
using Printf
using PseudoPotentialData
pseudopotentials = PseudoFamily("cp2k.nc.sr.lda.v0_1.semicore.gth")
# Make sure to disable symmetries:
model = model_DFT(bulk(:Si); pseudopotentials, functionals=LDA(), symmetries=false)
basis = PlaneWaveBasis(model; Ecut=10, kgrid=[4, 4, 4])
scfres = self_consistent_field(basis, tol=1e-8);
nothing # hiden Energy log10(ΔE) log10(Δρ) Diag Δtime
--- --------------- --------- --------- ---- ------
1 -7.916284257731 -0.69 4.0 318ms
2 -7.921172234654 -2.31 -1.52 1.0 159ms
3 -7.921410280505 -3.62 -2.47 1.5 152ms
4 -7.921440920553 -4.51 -2.86 2.2 198ms
5 -7.921441804369 -6.05 -3.23 1.0 135ms
6 -7.921442007853 -6.69 -4.43 1.1 149ms
7 -7.921442022003 -7.85 -4.90 2.5 228ms
8 -7.921442022125 -9.92 -5.16 1.4 155ms
9 -7.921442022142 -10.75 -5.87 1.1 142ms
10 -7.921442022144 -11.78 -6.30 1.8 246ms
11 -7.921442022144 -12.83 -7.03 1.1 658ms
12 -7.921442022144 -13.91 -7.74 2.0 180ms
13 -7.921442022144 -14.45 -8.41 1.9 185ms
Next we compute the phonon modes at the q-point [1/4, 1/4, 1/4].
phret_q0 = @time DFTK.phonon_modes(scfres; q=[0.25, 0.25, 0.25]);
nothing # hideIter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.07s Non-interacting
1 0 1 1.03 15.1 7.41s
2 0 2 0.53 14.5 627ms
3 0 3 -0.01 14.1 564ms
4 0 4 -0.87 13.7 562ms
5 0 5 -1.74 11.8 512ms
6 0 6 -2.43 10.0 455ms
7 0 7 -3.33 8.9 405ms
8 0 8 -4.02 7.8 366ms
9 0 9 -5.04 6.4 320ms
10 0 10 -6.06 3.9 239ms
11 0 11 -7.08 2.3 188ms
12 0 12 -8.27 1.0 148ms
13 1 1 -7.55 17.8 918ms Restart
14 1 2 -7.89 3.2 214ms
15 1 3 -8.68 2.1 163ms
19.2 1.14s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 681ms Non-interacting
1 0 1 1.03 15.1 645ms
2 0 2 0.53 14.5 593ms
3 0 3 -0.01 14.1 590ms
4 0 4 -0.87 13.8 583ms
5 0 5 -1.74 11.8 504ms
6 0 6 -2.43 10.0 436ms
7 0 7 -3.33 8.9 464ms
8 0 8 -4.02 7.8 918ms
9 0 9 -5.04 6.4 308ms
10 0 10 -6.06 3.9 226ms
11 0 11 -7.08 2.3 177ms
12 0 12 -8.27 1.0 138ms
13 1 1 -7.54 17.9 773ms Restart
14 1 2 -7.90 3.2 181ms
15 1 3 -8.68 2.1 158ms
19.2 734ms Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
19.9 678ms Non-interacting
1 0 1 1.03 15.1 649ms
2 0 2 0.53 14.5 583ms
3 0 3 -0.01 14.1 616ms
4 0 4 -0.87 13.8 554ms
5 0 5 -1.74 11.8 496ms
6 0 6 -2.43 10.0 432ms
7 0 7 -3.33 8.9 391ms
8 0 8 -4.02 7.9 381ms
9 0 9 -5.04 6.4 322ms
10 0 10 -6.06 3.9 230ms
11 0 11 -7.08 2.3 189ms
12 0 12 -8.27 1.0 148ms
13 1 1 -7.54 17.9 793ms Restart
14 1 2 -7.88 3.2 193ms
15 1 3 -8.66 2.1 164ms
19.2 730ms Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 673ms Non-interacting
1 0 1 1.03 15.1 637ms
2 0 2 0.53 14.5 581ms
3 0 3 -0.01 14.1 580ms
4 0 4 -0.87 13.7 554ms
5 0 5 -1.74 11.8 495ms
6 0 6 -2.43 10.0 433ms
7 0 7 -3.33 8.9 400ms
8 0 8 -4.02 7.8 363ms
9 0 9 -5.04 6.4 315ms
10 0 10 -6.06 3.9 232ms
11 0 11 -7.08 2.3 796ms
12 0 12 -8.27 1.0 143ms
13 1 1 -7.54 17.9 809ms Restart
14 1 2 -7.87 3.2 182ms
15 1 3 -8.67 2.1 161ms
19.2 739ms Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 657ms Non-interacting
1 0 1 1.03 15.1 626ms
2 0 2 0.53 14.5 574ms
3 0 3 -0.01 14.1 571ms
4 0 4 -0.87 13.8 568ms
5 0 5 -1.74 11.8 508ms
6 0 6 -2.43 10.0 447ms
7 0 7 -3.33 8.9 409ms
8 0 8 -4.02 7.8 375ms
9 0 9 -5.04 6.4 321ms
10 0 10 -6.06 3.9 235ms
11 0 11 -7.08 2.3 194ms
12 0 12 -8.27 1.0 153ms
13 1 1 -7.54 17.8 796ms Restart
14 1 2 -7.90 3.2 204ms
15 1 3 -8.68 2.1 172ms
19.2 774ms Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
19.9 714ms Non-interacting
1 0 1 1.03 15.1 672ms
2 0 2 0.53 14.5 613ms
3 0 3 -0.01 14.1 605ms
4 0 4 -0.87 13.8 588ms
5 0 5 -1.74 11.8 528ms
6 0 6 -2.43 10.0 454ms
7 0 7 -3.33 8.9 426ms
8 0 8 -4.02 7.9 389ms
9 0 9 -5.04 6.4 331ms
10 0 10 -6.06 3.9 245ms
11 0 11 -7.08 2.3 194ms
12 0 12 -8.27 1.0 156ms
13 1 1 -7.53 17.8 906ms Restart
14 1 2 -7.88 3.2 754ms
15 1 3 -8.66 2.1 167ms
19.2 754ms Final orbitals
73.280298 seconds (63.60 M allocations: 33.058 GiB, 5.65% gc time, 31.66% compilation time)
These are the final phonon frequencies:
for (i, ω) in enumerate(phret_q0.frequencies)
@printf("Mode %2d: %8.3f cm-1\n", i, ω .* DFTK.hartree_to_cm⁻¹)
endMode 1: 93.616 cm-1
Mode 2: 93.616 cm-1
Mode 3: 223.147 cm-1
Mode 4: 478.527 cm-1
Mode 5: 484.617 cm-1
Mode 6: 484.617 cm-1