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.916351613577 -0.69 4.3 724ms
2 -7.921173837847 -2.32 -1.52 1.0 290ms
3 -7.921408556160 -3.63 -2.48 1.5 331ms
4 -7.921440962351 -4.49 -2.86 2.2 436ms
5 -7.921441791534 -6.08 -3.19 1.0 291ms
6 -7.921442008282 -6.66 -4.51 1.1 299ms
7 -7.921442022070 -7.86 -5.09 2.6 488ms
8 -7.921442022137 -10.17 -5.37 1.9 380ms
9 -7.921442022143 -11.22 -6.09 1.0 298ms
10 -7.921442022144 -12.20 -6.11 1.8 378ms
11 -7.921442022144 -12.65 -7.10 1.0 298ms
12 -7.921442022144 -13.80 -7.49 2.1 424ms
13 -7.921442022144 + -Inf -8.31 1.0 386ms
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.85s Non-interacting
1 0 1 1.03 15.1 14.0s
2 0 2 0.53 14.6 1.29s
3 0 3 -0.01 14.1 1.20s
4 0 4 -0.87 13.7 1.20s
5 0 5 -1.74 11.8 1.07s
6 0 6 -2.43 10.0 928ms
7 0 7 -3.33 8.9 845ms
8 0 8 -4.02 7.8 789ms
9 0 9 -5.04 6.4 671ms
10 0 10 -6.06 3.9 499ms
11 0 11 -7.08 2.3 396ms
12 0 12 -8.28 1.0 314ms
13 1 1 -7.54 17.8 1.87s Restart
14 1 2 -7.88 3.1 411ms
15 1 3 -8.69 2.1 357ms
19.2 2.18s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.46s Non-interacting
1 0 1 1.03 15.1 1.35s
2 0 2 0.53 14.6 1.23s
3 0 3 -0.01 14.1 1.22s
4 0 4 -0.87 13.7 1.19s
5 0 5 -1.74 11.8 2.14s
6 0 6 -2.43 10.0 904ms
7 0 7 -3.33 8.9 822ms
8 0 8 -4.02 7.8 767ms
9 0 9 -5.04 6.5 682ms
10 0 10 -6.06 3.9 481ms
11 0 11 -7.08 2.3 397ms
12 0 12 -8.28 1.0 311ms
13 1 1 -7.53 17.9 1.68s Restart
14 1 2 -7.89 3.1 397ms
15 1 3 -8.70 2.1 357ms
19.2 1.57s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.44s Non-interacting
1 0 1 1.03 15.1 1.35s
2 0 2 0.53 14.6 1.24s
3 0 3 -0.01 14.1 1.20s
4 0 4 -0.87 13.8 1.19s
5 0 5 -1.74 11.8 1.06s
6 0 6 -2.43 10.0 930ms
7 0 7 -3.33 8.9 851ms
8 0 8 -4.02 7.8 796ms
9 0 9 -5.04 6.4 671ms
10 0 10 -6.06 3.9 500ms
11 0 11 -7.08 2.3 395ms
12 0 12 -8.27 1.0 314ms
13 1 1 -7.53 17.9 1.70s Restart
14 1 2 -7.88 3.1 448ms
15 1 3 -8.66 2.1 353ms
19.2 1.57s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.43s Non-interacting
1 0 1 1.03 15.1 2.38s
2 0 2 0.53 14.6 1.21s
3 0 3 -0.01 14.1 1.21s
4 0 4 -0.87 13.7 1.18s
5 0 5 -1.74 11.8 1.05s
6 0 6 -2.43 10.0 922ms
7 0 7 -3.33 8.9 840ms
8 0 8 -4.02 7.8 787ms
9 0 9 -5.04 6.4 674ms
10 0 10 -6.06 3.9 502ms
11 0 11 -7.08 2.3 396ms
12 0 12 -8.28 1.0 315ms
13 1 1 -7.53 17.8 1.71s Restart
14 1 2 -7.88 3.1 401ms
15 1 3 -8.68 2.1 348ms
19.2 1.57s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.45s Non-interacting
1 0 1 1.03 15.1 1.36s
2 0 2 0.53 14.6 1.24s
3 0 3 -0.01 14.1 1.20s
4 0 4 -0.87 13.7 1.19s
5 0 5 -1.74 11.8 1.06s
6 0 6 -2.43 10.0 927ms
7 0 7 -3.33 8.9 848ms
8 0 8 -4.02 7.8 774ms
9 0 9 -5.04 6.5 670ms
10 0 10 -6.06 3.9 499ms
11 0 11 -7.08 2.3 396ms
12 0 12 -8.28 1.0 313ms
13 1 1 -7.54 17.8 1.71s Restart
14 1 2 -7.89 3.1 495ms
15 1 3 -8.70 2.1 1.34s
19.2 1.52s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.43s Non-interacting
1 0 1 1.03 15.1 1.33s
2 0 2 0.53 14.6 1.22s
3 0 3 -0.01 14.1 1.19s
4 0 4 -0.87 13.8 1.19s
5 0 5 -1.74 11.8 1.06s
6 0 6 -2.43 10.0 922ms
7 0 7 -3.33 8.9 844ms
8 0 8 -4.02 7.8 773ms
9 0 9 -5.04 6.4 667ms
10 0 10 -6.06 3.9 495ms
11 0 11 -7.08 2.3 391ms
12 0 12 -8.27 1.0 312ms
13 1 1 -7.53 17.9 1.69s Restart
14 1 2 -7.88 3.1 396ms
15 1 3 -8.66 2.1 351ms
19.2 1.55s Final orbitals
143.608848 seconds (143.91 M allocations: 31.726 GiB, 5.13% gc time, 25.88% 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