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.916332110811 -0.69 4.2 578ms
2 -7.921173986183 -2.31 -1.52 1.0 337ms
3 -7.921408706324 -3.63 -2.48 1.5 322ms
4 -7.921440952758 -4.49 -2.85 2.2 440ms
5 -7.921441785326 -6.08 -3.18 1.0 321ms
6 -7.921442008551 -6.65 -4.53 1.1 289ms
7 -7.921442022064 -7.87 -5.02 2.7 487ms
8 -7.921442022136 -10.14 -5.34 1.7 343ms
9 -7.921442022143 -11.18 -6.01 1.1 294ms
10 -7.921442022144 -12.01 -6.21 1.7 357ms
11 -7.921442022144 -12.77 -7.26 1.0 287ms
12 -7.921442022144 -13.97 -7.53 2.1 449ms
13 -7.921442022144 -15.05 -8.44 1.0 290ms
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.86s Non-interacting
1 0 1 1.03 15.1 11.4s
2 0 2 0.53 14.5 1.28s
3 0 3 -0.01 14.1 1.22s
4 0 4 -0.87 13.7 1.78s
5 0 5 -1.74 11.8 1.02s
6 0 6 -2.43 10.0 905ms
7 0 7 -3.33 8.9 842ms
8 0 8 -4.02 7.8 780ms
9 0 9 -5.04 6.4 680ms
10 0 10 -6.06 3.9 497ms
11 0 11 -7.08 2.3 402ms
12 0 12 -8.27 1.0 316ms
13 1 1 -7.53 17.8 1.87s Restart
14 1 2 -7.89 3.1 417ms
15 1 3 -8.70 2.1 361ms
19.2 2.10s 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.34s
2 0 2 0.53 14.5 1.25s
3 0 3 -0.01 14.1 1.19s
4 0 4 -0.87 13.7 1.19s
5 0 5 -1.74 11.8 1.07s
6 0 6 -2.43 10.0 929ms
7 0 7 -3.33 8.9 839ms
8 0 8 -4.02 7.8 786ms
9 0 9 -5.04 6.4 684ms
10 0 10 -6.06 3.9 501ms
11 0 11 -7.08 2.3 400ms
12 0 12 -8.27 1.0 318ms
13 1 1 -7.53 17.9 1.69s Restart
14 1 2 -7.89 3.1 406ms
15 1 3 -8.68 2.1 349ms
19.2 1.57s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 2.03s Non-interacting
1 0 1 1.03 15.1 1.28s
2 0 2 0.53 14.5 1.23s
3 0 3 -0.01 14.1 1.18s
4 0 4 -0.87 13.8 1.20s
5 0 5 -1.74 11.8 1.07s
6 0 6 -2.43 10.0 927ms
7 0 7 -3.33 8.9 845ms
8 0 8 -4.02 7.8 783ms
9 0 9 -5.04 6.4 674ms
10 0 10 -6.06 3.9 501ms
11 0 11 -7.08 2.3 399ms
12 0 12 -8.27 1.0 317ms
13 1 1 -7.53 17.9 1.70s Restart
14 1 2 -7.89 3.1 397ms
15 1 3 -8.66 2.1 354ms
19.2 1.55s 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.5 1.24s
3 0 3 -0.01 14.1 1.21s
4 0 4 -0.87 13.7 1.20s
5 0 5 -1.74 11.8 1.06s
6 0 6 -2.43 10.0 937ms
7 0 7 -3.33 8.9 851ms
8 0 8 -4.02 7.8 796ms
9 0 9 -5.04 6.4 675ms
10 0 10 -6.06 3.9 500ms
11 0 11 -7.08 2.3 405ms
12 0 12 -8.27 1.0 318ms
13 1 1 -7.52 17.8 2.28s Restart
14 1 2 -7.89 3.1 401ms
15 1 3 -8.70 2.1 324ms
19.2 1.51s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.39s Non-interacting
1 0 1 1.03 15.1 1.36s
2 0 2 0.53 14.5 1.24s
3 0 3 -0.01 14.1 1.21s
4 0 4 -0.87 13.7 1.20s
5 0 5 -1.74 11.8 1.08s
6 0 6 -2.43 10.0 940ms
7 0 7 -3.33 8.9 852ms
8 0 8 -4.02 7.8 777ms
9 0 9 -5.04 6.5 676ms
10 0 10 -6.06 3.9 494ms
11 0 11 -7.08 2.3 408ms
12 0 12 -8.28 1.0 320ms
13 1 1 -7.53 17.9 1.71s Restart
14 1 2 -7.89 3.1 405ms
15 1 3 -8.68 2.1 351ms
19.2 1.58s 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.37s
2 0 2 0.53 14.6 1.24s
3 0 3 -0.01 14.1 1.22s
4 0 4 -0.87 13.8 1.20s
5 0 5 -1.74 11.8 1.08s
6 0 6 -2.43 10.0 931ms
7 0 7 -3.33 8.9 861ms
8 0 8 -4.02 7.8 787ms
9 0 9 -5.04 6.4 678ms
10 0 10 -6.06 3.9 505ms
11 0 11 -7.08 2.3 398ms
12 0 12 -8.27 1.0 335ms
13 1 1 -7.53 17.9 2.29s Restart
14 1 2 -7.88 3.1 374ms
15 1 3 -8.67 2.1 331ms
19.2 1.53s Final orbitals
137.028616 seconds (75.46 M allocations: 29.759 GiB, 3.53% gc time, 24.23% 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