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.916326941482 -0.69 4.2 675ms
2 -7.921170508787 -2.31 -1.52 1.0 302ms
3 -7.921409083422 -3.62 -2.48 1.5 350ms
4 -7.921440945646 -4.50 -2.86 2.3 453ms
5 -7.921441791054 -6.07 -3.20 1.0 306ms
6 -7.921442006509 -6.67 -4.41 1.1 311ms
7 -7.921442022003 -7.81 -4.91 2.5 491ms
8 -7.921442022130 -9.90 -5.18 1.8 384ms
9 -7.921442022142 -10.94 -5.67 1.0 307ms
10 -7.921442022144 -11.66 -6.42 1.1 319ms
11 -7.921442022144 -12.68 -6.97 2.0 502ms
12 -7.921442022144 -13.94 -7.23 1.8 1.12s
13 -7.921442022144 -14.75 -8.01 1.0 300ms
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.99s Non-interacting
1 0 1 1.03 15.1 12.5s
2 0 2 0.53 14.5 1.21s
3 0 3 -0.01 14.1 1.14s
4 0 4 -0.87 13.7 1.12s
5 0 5 -1.74 11.8 999ms
6 0 6 -2.43 10.0 877ms
7 0 7 -3.33 8.9 802ms
8 0 8 -4.02 7.8 734ms
9 0 9 -5.04 6.4 644ms
10 0 10 -6.06 3.9 464ms
11 0 11 -7.08 2.3 378ms
12 0 12 -8.28 1.0 294ms
13 1 1 -7.52 17.8 1.77s Restart
14 1 2 -7.88 3.2 394ms
15 1 3 -8.70 2.1 326ms
19.2 2.06s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.36s Non-interacting
1 0 1 1.03 15.1 1.28s
2 0 2 0.53 14.5 1.16s
3 0 3 -0.01 14.1 1.14s
4 0 4 -0.87 13.8 1.92s
5 0 5 -1.74 11.8 993ms
6 0 6 -2.43 10.0 936ms
7 0 7 -3.33 8.9 796ms
8 0 8 -4.02 7.8 726ms
9 0 9 -5.04 6.4 626ms
10 0 10 -6.06 3.9 466ms
11 0 11 -7.08 2.3 372ms
12 0 12 -8.28 1.0 302ms
13 1 1 -7.53 17.9 1.62s Restart
14 1 2 -7.89 3.1 373ms
15 1 3 -8.68 2.0 328ms
19.2 1.46s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.35s Non-interacting
1 0 1 1.03 15.1 1.26s
2 0 2 0.53 14.5 1.20s
3 0 3 -0.01 14.1 1.12s
4 0 4 -0.87 13.8 1.12s
5 0 5 -1.74 11.8 994ms
6 0 6 -2.43 10.0 867ms
7 0 7 -3.33 8.9 790ms
8 0 8 -4.02 7.8 738ms
9 0 9 -5.04 6.4 632ms
10 0 10 -6.06 3.9 463ms
11 0 11 -7.08 2.3 377ms
12 0 12 -8.27 1.0 295ms
13 1 1 -7.54 17.9 1.59s Restart
14 1 2 -7.89 3.1 372ms
15 1 3 -8.67 2.1 323ms
19.2 1.47s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.34s Non-interacting
1 0 1 1.03 15.1 2.06s
2 0 2 0.53 14.5 1.15s
3 0 3 -0.01 14.1 1.18s
4 0 4 -0.87 13.7 1.10s
5 0 5 -1.74 11.8 982ms
6 0 6 -2.43 10.0 866ms
7 0 7 -3.33 8.9 803ms
8 0 8 -4.02 7.8 737ms
9 0 9 -5.04 6.4 633ms
10 0 10 -6.06 3.9 470ms
11 0 11 -7.08 2.3 375ms
12 0 12 -8.28 1.0 295ms
13 1 1 -7.52 17.8 1.61s Restart
14 1 2 -7.88 3.2 374ms
15 1 3 -8.70 2.1 335ms
19.2 1.46s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.37s Non-interacting
1 0 1 1.03 15.1 1.29s
2 0 2 0.53 14.5 1.17s
3 0 3 -0.01 14.1 1.15s
4 0 4 -0.87 13.8 1.13s
5 0 5 -1.74 11.8 1.01s
6 0 6 -2.43 10.0 880ms
7 0 7 -3.33 8.9 803ms
8 0 8 -4.02 7.8 744ms
9 0 9 -5.04 6.4 639ms
10 0 10 -6.06 3.9 474ms
11 0 11 -7.08 2.3 374ms
12 0 12 -8.28 1.0 295ms
13 1 1 -7.53 17.9 1.61s Restart
14 1 2 -7.89 3.1 378ms
15 1 3 -8.69 2.0 402ms
19.2 1.44s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.34s Non-interacting
1 0 1 1.03 15.1 1.26s
2 0 2 0.53 14.6 1.15s
3 0 3 -0.01 14.1 1.13s
4 0 4 -0.87 13.8 1.12s
5 0 5 -1.74 11.8 993ms
6 0 6 -2.43 10.0 875ms
7 0 7 -3.33 8.9 794ms
8 0 8 -4.02 7.8 736ms
9 0 9 -5.04 6.4 631ms
10 0 10 -6.06 3.9 469ms
11 0 11 -7.08 2.3 373ms
12 0 12 -8.27 1.0 295ms
13 1 1 -7.54 17.9 1.59s Restart
14 1 2 -7.88 3.1 377ms
15 1 3 -8.67 2.1 323ms
19.2 1.47s Final orbitals
132.356987 seconds (143.92 M allocations: 31.714 GiB, 3.70% gc time, 25.14% 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