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.916285152075 -0.69 4.0 632ms
2 -7.921172157863 -2.31 -1.52 1.0 288ms
3 -7.921410908085 -3.62 -2.47 1.5 312ms
4 -7.921440948051 -4.52 -2.87 2.2 424ms
5 -7.921441814236 -6.06 -3.24 1.1 301ms
6 -7.921442008625 -6.71 -4.46 1.1 287ms
7 -7.921442022033 -7.87 -4.96 2.5 477ms
8 -7.921442022130 -10.01 -5.22 1.5 324ms
9 -7.921442022142 -10.91 -5.86 1.1 284ms
10 -7.921442022144 -11.83 -6.35 1.7 342ms
11 -7.921442022144 -12.88 -6.96 1.2 304ms
12 -7.921442022144 -13.80 -7.59 1.9 373ms
13 -7.921442022144 + -Inf -8.44 1.9 456ms
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.89s Non-interacting
1 0 1 1.03 15.1 10.9s
2 0 2 0.53 14.5 1.25s
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.08s
6 0 6 -2.43 10.0 932ms
7 0 7 -3.33 8.9 852ms
8 0 8 -4.02 7.8 782ms
9 0 9 -5.04 6.4 686ms
10 0 10 -6.06 3.9 497ms
11 0 11 -7.08 2.3 398ms
12 0 12 -8.28 1.0 314ms
13 1 1 -7.55 17.9 1.87s Restart
14 1 2 -7.87 3.2 424ms
15 1 3 -8.70 2.1 359ms
19.2 2.12s 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.97s
2 0 2 0.53 14.5 1.17s
3 0 3 -0.01 14.1 1.20s
4 0 4 -0.87 13.8 1.16s
5 0 5 -1.74 11.8 1.09s
6 0 6 -2.43 10.0 951ms
7 0 7 -3.33 8.9 875ms
8 0 8 -4.02 7.8 805ms
9 0 9 -5.04 6.4 681ms
10 0 10 -6.06 3.9 502ms
11 0 11 -7.08 2.3 398ms
12 0 12 -8.27 1.0 326ms
13 1 1 -7.54 17.9 1.74s Restart
14 1 2 -7.88 3.2 410ms
15 1 3 -8.67 2.1 346ms
19.2 1.58s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
19.9 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.20s
4 0 4 -0.87 13.8 1.19s
5 0 5 -1.74 11.8 1.05s
6 0 6 -2.43 10.0 924ms
7 0 7 -3.33 8.9 855ms
8 0 8 -4.02 7.9 774ms
9 0 9 -5.04 6.4 664ms
10 0 10 -6.06 3.9 498ms
11 0 11 -7.08 2.3 394ms
12 0 12 -8.27 1.0 310ms
13 1 1 -7.55 17.9 2.30s Restart
14 1 2 -7.87 3.2 380ms
15 1 3 -8.68 2.1 307ms
19.2 1.48s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.38s Non-interacting
1 0 1 1.03 15.1 1.34s
2 0 2 0.53 14.5 1.20s
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.06s
6 0 6 -2.43 10.0 914ms
7 0 7 -3.33 8.9 842ms
8 0 8 -4.02 7.8 781ms
9 0 9 -5.04 6.4 672ms
10 0 10 -6.06 3.9 486ms
11 0 11 -7.08 2.3 392ms
12 0 12 -8.28 1.0 308ms
13 1 1 -7.55 17.9 1.68s Restart
14 1 2 -7.86 3.2 393ms
15 1 3 -8.68 2.1 351ms
19.2 1.55s 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.25s
3 0 3 -0.01 14.1 1.22s
4 0 4 -0.87 13.8 1.22s
5 0 5 -1.74 11.8 1.07s
6 0 6 -2.43 10.0 937ms
7 0 7 -3.33 8.9 864ms
8 0 8 -4.02 7.8 1.45s
9 0 9 -5.04 6.4 671ms
10 0 10 -6.06 3.9 456ms
11 0 11 -7.08 2.3 353ms
12 0 12 -8.27 1.0 276ms
13 1 1 -7.53 17.9 1.66s Restart
14 1 2 -7.87 3.2 398ms
15 1 3 -8.67 2.1 331ms
19.2 1.52s 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.36s
2 0 2 0.53 14.5 1.23s
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.07s
6 0 6 -2.43 9.9 931ms
7 0 7 -3.33 8.9 853ms
8 0 8 -4.02 7.9 795ms
9 0 9 -5.04 6.4 670ms
10 0 10 -6.06 3.9 499ms
11 0 11 -7.08 2.3 392ms
12 0 12 -8.27 1.0 319ms
13 1 1 -7.54 18.0 1.71s Restart
14 1 2 -7.85 3.2 399ms
15 1 3 -8.65 2.1 356ms
19.2 1.57s Final orbitals
135.262738 seconds (62.28 M allocations: 32.992 GiB, 4.25% gc time, 24.74% 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