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.916279824294 -0.69 4.0 612ms
2 -7.921170428829 -2.31 -1.52 1.0 268ms
3 -7.921410789655 -3.62 -2.47 1.5 349ms
4 -7.921440967467 -4.52 -2.87 2.2 381ms
5 -7.921441818132 -6.07 -3.25 1.0 271ms
6 -7.921442009684 -6.72 -4.48 1.1 282ms
7 -7.921442022053 -7.91 -5.00 2.5 414ms
8 -7.921442022134 -10.09 -5.29 1.6 317ms
9 -7.921442022143 -11.07 -6.01 1.0 271ms
10 -7.921442022144 -12.00 -6.27 1.8 340ms
11 -7.921442022144 -12.86 -6.93 1.0 264ms
12 -7.921442022144 -13.80 -7.75 1.9 348ms
13 -7.921442022144 -14.57 -8.47 2.0 389ms
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 12.5s
2 0 2 0.53 14.5 1.15s
3 0 3 -0.01 14.1 1.08s
4 0 4 -0.87 13.8 1.05s
5 0 5 -1.74 11.8 985ms
6 0 6 -2.43 10.0 835ms
7 0 7 -3.33 8.9 763ms
8 0 8 -4.02 7.8 702ms
9 0 9 -5.04 6.4 599ms
10 0 10 -6.06 3.9 453ms
11 0 11 -7.08 2.3 361ms
12 0 12 -8.28 1.0 284ms
13 1 1 -7.54 17.8 1.64s Restart
14 1 2 -7.87 3.2 384ms
15 1 3 -8.71 2.2 337ms
19.2 2.11s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.25s Non-interacting
1 0 1 1.03 15.1 1.19s
2 0 2 0.53 14.5 1.09s
3 0 3 -0.01 14.1 1.06s
4 0 4 -0.87 13.7 1.06s
5 0 5 -1.74 11.8 893ms
6 0 6 -2.43 10.0 781ms
7 0 7 -3.33 8.9 722ms
8 0 8 -4.02 7.8 670ms
9 0 9 -5.04 6.4 574ms
10 0 10 -6.06 3.9 421ms
11 0 11 -7.08 2.3 336ms
12 0 12 -8.28 1.0 270ms
13 1 1 -7.53 17.9 1.44s Restart
14 1 2 -7.87 3.2 349ms
15 1 3 -8.67 2.1 300ms
19.2 1.34s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.23s Non-interacting
1 0 1 1.03 15.1 1.15s
2 0 2 0.53 14.5 1.05s
3 0 3 -0.01 14.1 1.03s
4 0 4 -0.87 13.7 1.02s
5 0 5 -1.74 11.8 897ms
6 0 6 -2.43 10.0 790ms
7 0 7 -3.33 8.9 722ms
8 0 8 -4.02 7.9 668ms
9 0 9 -5.04 6.4 564ms
10 0 10 -6.06 3.9 430ms
11 0 11 -7.08 2.3 333ms
12 0 12 -8.27 1.0 273ms
13 1 1 -7.55 17.8 1.44s Restart
14 1 2 -7.88 3.2 341ms
15 1 3 -8.70 2.1 301ms
19.2 1.33s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.22s Non-interacting
1 0 1 1.03 15.1 1.14s
2 0 2 0.53 14.5 1.05s
3 0 3 -0.01 14.1 1.03s
4 0 4 -0.87 13.8 1.02s
5 0 5 -1.74 11.8 898ms
6 0 6 -2.43 10.0 884ms
7 0 7 -3.33 8.9 1.61s
8 0 8 -4.02 7.8 629ms
9 0 9 -5.04 6.4 615ms
10 0 10 -6.06 3.9 403ms
11 0 11 -7.08 2.3 350ms
12 0 12 -8.28 1.0 291ms
13 1 1 -7.54 18.0 1.51s Restart
14 1 2 -7.85 3.2 384ms
15 1 3 -8.66 2.1 308ms
19.2 1.40s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.28s Non-interacting
1 0 1 1.03 15.1 1.22s
2 0 2 0.53 14.5 1.11s
3 0 3 -0.01 14.1 1.09s
4 0 4 -0.87 13.7 1.08s
5 0 5 -1.74 11.8 949ms
6 0 6 -2.43 10.0 835ms
7 0 7 -3.33 8.9 767ms
8 0 8 -4.02 7.8 724ms
9 0 9 -5.04 6.4 607ms
10 0 10 -6.06 3.9 450ms
11 0 11 -7.08 2.3 360ms
12 0 12 -8.28 1.0 281ms
13 1 1 -7.52 18.0 1.54s Restart
14 1 2 -7.85 3.2 375ms
15 1 3 -8.65 2.1 304ms
19.2 1.42s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.29s Non-interacting
1 0 1 1.03 15.1 1.22s
2 0 2 0.53 14.5 1.13s
3 0 3 -0.01 14.1 1.09s
4 0 4 -0.87 13.7 1.09s
5 0 5 -1.74 11.8 966ms
6 0 6 -2.43 10.0 842ms
7 0 7 -3.33 8.9 777ms
8 0 8 -4.02 7.9 725ms
9 0 9 -5.04 6.4 616ms
10 0 10 -6.06 3.9 458ms
11 0 11 -7.08 2.3 361ms
12 0 12 -8.27 1.0 288ms
13 1 1 -7.53 18.0 1.54s Restart
14 1 2 -7.86 3.2 367ms
15 1 3 -8.65 2.1 321ms
19.2 1.41s Final orbitals
128.305821 seconds (62.71 M allocations: 33.017 GiB, 4.72% gc time, 29.02% 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