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.916333300542 -0.69 4.2 806ms
2 -7.921175305656 -2.31 -1.52 1.0 312ms
3 -7.921409044632 -3.63 -2.48 1.5 373ms
4 -7.921440935292 -4.50 -2.85 2.2 475ms
5 -7.921441773567 -6.08 -3.17 1.0 448ms
6 -7.921442007463 -6.63 -4.55 1.0 1.22s
7 -7.921442022084 -7.84 -5.11 2.7 538ms
8 -7.921442022139 -10.26 -5.45 1.8 391ms
9 -7.921442022143 -11.42 -6.04 1.1 336ms
10 -7.921442022144 -12.14 -6.17 1.5 397ms
11 -7.921442022144 -12.80 -7.52 1.0 308ms
12 -7.921442022144 -14.05 -7.74 2.8 585ms
13 -7.921442022144 -14.75 -8.51 1.0 339ms
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 2.13s Non-interacting
1 0 1 1.03 15.2 10.0s
2 0 2 0.53 14.5 1.51s
3 0 3 -0.01 14.1 1.41s
4 0 4 -0.87 13.8 1.39s
5 0 5 -1.74 11.8 1.25s
6 0 6 -2.43 10.0 1.08s
7 0 7 -3.33 8.9 975ms
8 0 8 -4.02 7.8 894ms
9 0 9 -5.04 6.4 775ms
10 0 10 -6.06 3.9 563ms
11 0 11 -7.08 2.3 417ms
12 0 12 -8.28 1.0 331ms
13 1 1 -7.52 17.9 2.15s Restart
14 1 2 -7.87 3.2 458ms
15 1 3 -8.68 2.2 386ms
19.2 2.40s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 2.76s Non-interacting
1 0 1 1.03 15.2 1.56s
2 0 2 0.53 14.5 1.41s
3 0 3 -0.01 14.1 1.38s
4 0 4 -0.87 13.7 1.40s
5 0 5 -1.74 11.8 1.25s
6 0 6 -2.43 10.0 1.07s
7 0 7 -3.33 8.9 982ms
8 0 8 -4.02 7.8 881ms
9 0 9 -5.04 6.4 770ms
10 0 10 -6.06 3.9 541ms
11 0 11 -7.08 2.3 436ms
12 0 12 -8.28 1.0 325ms
13 1 1 -7.54 17.9 1.94s Restart
14 1 2 -7.88 3.1 448ms
15 1 3 -8.64 2.1 360ms
19.2 1.83s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.74s Non-interacting
1 0 1 1.03 15.2 1.55s
2 0 2 0.53 14.5 1.45s
3 0 3 -0.01 14.1 1.41s
4 0 4 -0.87 13.7 1.39s
5 0 5 -1.74 11.8 1.24s
6 0 6 -2.43 10.0 1.06s
7 0 7 -3.33 8.9 972ms
8 0 8 -4.02 7.8 889ms
9 0 9 -5.04 6.4 756ms
10 0 10 -6.06 3.9 545ms
11 0 11 -7.08 2.3 423ms
12 0 12 -8.27 1.0 320ms
13 1 1 -7.53 17.9 1.94s Restart
14 1 2 -7.88 3.1 423ms
15 1 3 -8.67 2.1 367ms
19.2 1.85s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 2.75s Non-interacting
1 0 1 1.03 15.2 1.54s
2 0 2 0.53 14.5 1.43s
3 0 3 -0.01 14.1 1.39s
4 0 4 -0.87 13.8 1.38s
5 0 5 -1.74 11.8 1.23s
6 0 6 -2.43 10.0 1.08s
7 0 7 -3.33 8.9 972ms
8 0 8 -4.02 7.8 904ms
9 0 9 -5.04 6.4 756ms
10 0 10 -6.06 3.9 543ms
11 0 11 -7.08 2.3 423ms
12 0 12 -8.28 1.0 321ms
13 1 1 -7.52 17.8 1.94s Restart
14 1 2 -7.89 3.1 431ms
15 1 3 -8.69 2.1 376ms
19.2 1.85s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.74s Non-interacting
1 0 1 1.03 15.2 1.57s
2 0 2 0.53 14.5 1.44s
3 0 3 -0.01 14.1 1.41s
4 0 4 -0.87 13.7 1.39s
5 0 5 -1.74 11.8 1.23s
6 0 6 -2.43 10.0 1.07s
7 0 7 -3.33 8.9 985ms
8 0 8 -4.02 7.8 893ms
9 0 9 -5.04 6.4 761ms
10 0 10 -6.06 3.9 542ms
11 0 11 -7.08 2.3 423ms
12 0 12 -8.28 1.0 322ms
13 1 1 -7.54 17.9 1.96s Restart
14 1 2 -7.89 3.1 431ms
15 1 3 -8.65 2.1 371ms
19.2 1.85s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 2.79s Non-interacting
1 0 1 1.03 15.2 1.54s
2 0 2 0.53 14.5 1.44s
3 0 3 -0.01 14.1 1.40s
4 0 4 -0.87 13.7 1.38s
5 0 5 -1.74 11.8 1.21s
6 0 6 -2.43 10.0 1.07s
7 0 7 -3.33 8.8 972ms
8 0 8 -4.02 7.8 915ms
9 0 9 -5.04 6.4 773ms
10 0 10 -6.06 3.9 575ms
11 0 11 -7.08 2.3 432ms
12 0 12 -8.27 1.0 330ms
13 1 1 -7.53 17.9 1.96s Restart
14 1 2 -7.88 3.1 433ms
15 1 3 -8.67 2.1 379ms
19.2 1.88s Final orbitals
149.623452 seconds (102.14 M allocations: 30.818 GiB, 4.61% gc time, 20.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