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.916322523815 -0.69 4.2 649ms
2 -7.921170019852 -2.31 -1.52 1.0 282ms
3 -7.921408582202 -3.62 -2.48 1.4 356ms
4 -7.921440896929 -4.49 -2.85 2.3 416ms
5 -7.921441775588 -6.06 -3.18 1.0 279ms
6 -7.921442007515 -6.63 -4.43 1.1 316ms
7 -7.921442022013 -7.84 -4.94 2.4 450ms
8 -7.921442022131 -9.93 -5.26 1.8 359ms
9 -7.921442022143 -10.95 -6.05 1.1 278ms
10 -7.921442022144 -11.94 -6.10 2.0 392ms
11 -7.921442022144 -12.59 -7.05 1.0 279ms
12 -7.921442022144 -13.80 -7.45 2.1 403ms
13 -7.921442022144 -14.75 -8.05 1.1 281ms
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.93s Non-interacting
1 0 1 1.03 15.2 12.9s
2 0 2 0.53 14.5 1.97s
3 0 3 -0.01 14.1 1.21s
4 0 4 -0.87 13.7 1.17s
5 0 5 -1.74 11.8 1.04s
6 0 6 -2.43 10.0 927ms
7 0 7 -3.33 8.9 846ms
8 0 8 -4.02 7.8 785ms
9 0 9 -5.04 6.4 672ms
10 0 10 -6.06 4.0 502ms
11 0 11 -7.08 2.3 401ms
12 0 12 -8.27 1.0 316ms
13 1 1 -7.52 17.8 1.89s Restart
14 1 2 -7.89 3.1 411ms
15 1 3 -8.71 2.1 357ms
19.2 2.16s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.46s Non-interacting
1 0 1 1.03 15.2 1.36s
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.18s
5 0 5 -1.74 11.8 1.07s
6 0 6 -2.43 10.0 917ms
7 0 7 -3.33 8.9 856ms
8 0 8 -4.02 7.9 802ms
9 0 9 -5.04 6.4 688ms
10 0 10 -6.06 3.9 485ms
11 0 11 -7.08 2.3 404ms
12 0 12 -8.27 1.0 312ms
13 1 1 -7.54 17.8 2.49s Restart
14 1 2 -7.90 3.1 387ms
15 1 3 -8.69 2.0 334ms
19.2 1.51s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.42s Non-interacting
1 0 1 1.03 15.2 1.34s
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.19s
5 0 5 -1.74 11.8 1.06s
6 0 6 -2.43 10.0 932ms
7 0 7 -3.33 8.9 855ms
8 0 8 -4.02 7.8 783ms
9 0 9 -5.04 6.4 670ms
10 0 10 -6.06 3.9 485ms
11 0 11 -7.08 2.3 403ms
12 0 12 -8.27 1.0 307ms
13 1 1 -7.52 17.8 1.68s Restart
14 1 2 -7.90 3.1 408ms
15 1 3 -8.71 2.1 342ms
19.2 1.59s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.46s Non-interacting
1 0 1 1.03 15.2 1.36s
2 0 2 0.53 14.6 1.25s
3 0 3 -0.01 14.1 1.22s
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 929ms
7 0 7 -3.33 8.9 861ms
8 0 8 -4.02 7.8 786ms
9 0 9 -5.04 6.4 672ms
10 0 10 -6.06 4.0 501ms
11 0 11 -7.08 2.3 477ms
12 0 12 -8.27 1.0 1.06s
13 1 1 -7.52 17.8 1.67s Restart
14 1 2 -7.88 3.1 389ms
15 1 3 -8.71 2.2 338ms
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.2 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.8 1.19s
5 0 5 -1.74 11.8 1.08s
6 0 6 -2.43 10.0 933ms
7 0 7 -3.33 8.9 849ms
8 0 8 -4.02 7.9 786ms
9 0 9 -5.04 6.5 671ms
10 0 10 -6.06 3.9 503ms
11 0 11 -7.08 2.3 402ms
12 0 12 -8.27 1.0 315ms
13 1 1 -7.53 17.9 1.72s Restart
14 1 2 -7.88 3.1 394ms
15 1 3 -8.67 2.1 352ms
19.2 1.57s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.47s Non-interacting
1 0 1 1.03 15.2 1.36s
2 0 2 0.53 14.6 1.25s
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 10.0 927ms
7 0 7 -3.33 8.9 1.68s
8 0 8 -4.02 7.8 762ms
9 0 9 -5.04 6.4 658ms
10 0 10 -6.06 3.9 480ms
11 0 11 -7.08 2.3 396ms
12 0 12 -8.27 1.0 307ms
13 1 1 -7.52 17.8 1.68s Restart
14 1 2 -7.90 3.1 395ms
15 1 3 -8.69 2.1 342ms
19.2 1.59s Final orbitals
139.383511 seconds (143.72 M allocations: 31.716 GiB, 4.37% gc time, 24.34% 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