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.916297462299 -0.69 4.2 647ms
2 -7.921168397484 -2.31 -1.52 1.0 266ms
3 -7.921407894430 -3.62 -2.48 1.5 299ms
4 -7.921440899418 -4.48 -2.85 2.3 427ms
5 -7.921441775215 -6.06 -3.17 1.1 275ms
6 -7.921442008045 -6.63 -4.48 1.1 268ms
7 -7.921442022063 -7.85 -5.13 2.6 459ms
8 -7.921442022140 -10.12 -5.56 2.0 364ms
9 -7.921442022143 -11.43 -6.03 1.2 291ms
10 -7.921442022144 -12.17 -6.24 1.4 310ms
11 -7.921442022144 -12.91 -7.72 1.1 282ms
12 -7.921442022144 -13.94 -7.86 3.0 508ms
13 -7.921442022144 + -14.75 -8.59 1.0 273ms
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.94s Non-interacting
1 0 1 1.03 15.1 13.2s
2 0 2 0.53 14.5 1.28s
3 0 3 -0.01 14.1 1.21s
4 0 4 -0.87 13.8 1.20s
5 0 5 -1.74 11.8 1.89s
6 0 6 -2.43 9.9 882ms
7 0 7 -3.33 8.9 830ms
8 0 8 -4.02 7.8 765ms
9 0 9 -5.04 6.4 671ms
10 0 10 -6.06 3.9 491ms
11 0 11 -7.08 2.3 391ms
12 0 12 -8.28 1.0 307ms
13 1 1 -7.52 17.9 1.86s Restart
14 1 2 -7.88 3.2 416ms
15 1 3 -8.68 2.1 355ms
19.2 2.16s 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.35s
2 0 2 0.53 14.5 1.23s
3 0 3 -0.01 14.0 1.20s
4 0 4 -0.87 13.7 1.19s
5 0 5 -1.74 11.8 1.05s
6 0 6 -2.43 9.9 922ms
7 0 7 -3.33 8.8 836ms
8 0 8 -4.02 7.8 780ms
9 0 9 -5.04 6.5 680ms
10 0 10 -6.06 3.9 490ms
11 0 11 -7.08 2.3 395ms
12 0 12 -8.28 1.0 310ms
13 1 1 -7.53 17.8 1.69s Restart
14 1 2 -7.89 3.2 399ms
15 1 3 -8.66 2.1 340ms
19.2 1.56s 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.23s
3 0 3 -0.01 14.1 2.03s
4 0 4 -0.87 13.8 1.14s
5 0 5 -1.74 11.8 988ms
6 0 6 -2.43 9.9 917ms
7 0 7 -3.33 8.9 858ms
8 0 8 -4.02 7.8 765ms
9 0 9 -5.04 6.5 658ms
10 0 10 -6.06 3.9 502ms
11 0 11 -7.08 2.3 394ms
12 0 12 -8.27 1.0 315ms
13 1 1 -7.53 17.9 1.70s Restart
14 1 2 -7.87 3.2 408ms
15 1 3 -8.66 2.1 346ms
19.2 1.57s 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.36s
2 0 2 0.53 14.5 1.22s
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.07s
6 0 6 -2.43 9.9 927ms
7 0 7 -3.33 8.9 841ms
8 0 8 -4.02 7.8 777ms
9 0 9 -5.04 6.4 675ms
10 0 10 -6.06 3.9 501ms
11 0 11 -7.08 2.3 399ms
12 0 12 -8.28 1.0 314ms
13 1 1 -7.53 17.8 1.70s Restart
14 1 2 -7.88 3.2 399ms
15 1 3 -8.68 2.1 347ms
19.2 1.57s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 2.30s Non-interacting
1 0 1 1.03 15.1 1.28s
2 0 2 0.53 14.5 1.18s
3 0 3 -0.01 14.0 1.16s
4 0 4 -0.87 13.7 1.16s
5 0 5 -1.74 11.8 1.06s
6 0 6 -2.43 9.9 914ms
7 0 7 -3.33 8.8 846ms
8 0 8 -4.02 7.8 777ms
9 0 9 -5.04 6.5 679ms
10 0 10 -6.06 3.9 494ms
11 0 11 -7.08 2.3 393ms
12 0 12 -8.28 1.0 321ms
13 1 1 -7.53 17.8 1.70s Restart
14 1 2 -7.87 3.2 399ms
15 1 3 -8.67 2.1 345ms
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.36s
2 0 2 0.53 14.5 1.22s
3 0 3 -0.01 14.1 1.21s
4 0 4 -0.87 13.8 1.19s
5 0 5 -1.74 11.8 1.07s
6 0 6 -2.43 9.9 926ms
7 0 7 -3.33 8.9 855ms
8 0 8 -4.02 7.8 792ms
9 0 9 -5.04 6.5 677ms
10 0 10 -6.06 3.9 490ms
11 0 11 -7.08 2.3 406ms
12 0 12 -8.27 1.0 318ms
13 1 1 -7.55 17.8 1.70s Restart
14 1 2 -7.88 3.2 492ms
15 1 3 -8.66 2.1 1.10s
19.2 1.47s Final orbitals
139.741357 seconds (102.77 M allocations: 30.868 GiB, 4.21% gc time, 25.84% 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