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.916338637934 -0.69 4.2 516ms
2 -7.921174228864 -2.32 -1.52 1.0 233ms
3 -7.921409502879 -3.63 -2.48 1.5 228ms
4 -7.921440882380 -4.50 -2.85 2.2 304ms
5 -7.921441789981 -6.04 -3.20 1.1 216ms
6 -7.921442006907 -6.66 -4.39 1.1 226ms
7 -7.921442021992 -7.82 -4.90 2.4 417ms
8 -7.921442022127 -9.87 -5.17 1.6 769ms
9 -7.921442022143 -10.81 -5.98 1.1 219ms
10 -7.921442022144 -11.83 -6.37 2.0 289ms
11 -7.921442022144 -12.89 -7.02 1.1 219ms
12 -7.921442022144 -13.82 -7.67 2.0 305ms
13 -7.921442022144 + -15.05 -8.20 1.9 286ms
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.32s Non-interacting
1 0 1 1.03 15.1 8.24s
2 0 2 0.53 14.5 927ms
3 0 3 -0.01 14.1 840ms
4 0 4 -0.87 13.8 842ms
5 0 5 -1.74 11.8 765ms
6 0 6 -2.43 10.0 649ms
7 0 7 -3.33 8.9 639ms
8 0 8 -4.02 7.8 558ms
9 0 9 -5.04 6.5 492ms
10 0 10 -6.06 3.9 355ms
11 0 11 -7.08 2.3 290ms
12 0 12 -8.28 1.0 238ms
13 1 1 -7.53 17.9 1.39s Restart
14 1 2 -7.87 3.1 315ms
15 1 3 -8.68 2.1 277ms
19.2 1.52s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.06s Non-interacting
1 0 1 1.03 15.1 951ms
2 0 2 0.53 14.5 1.49s
3 0 3 -0.01 14.1 876ms
4 0 4 -0.87 13.7 837ms
5 0 5 -1.74 11.8 750ms
6 0 6 -2.43 10.0 673ms
7 0 7 -3.33 8.9 613ms
8 0 8 -4.02 7.8 584ms
9 0 9 -5.04 6.4 503ms
10 0 10 -6.06 3.9 357ms
11 0 11 -7.08 2.3 306ms
12 0 12 -8.28 1.0 243ms
13 1 1 -7.54 17.9 1.22s Restart
14 1 2 -7.90 3.1 291ms
15 1 3 -8.70 2.1 289ms
19.2 1.22s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.05s Non-interacting
1 0 1 1.03 15.1 1.03s
2 0 2 0.53 14.5 918ms
3 0 3 -0.01 14.1 928ms
4 0 4 -0.87 13.7 882ms
5 0 5 -1.74 11.8 806ms
6 0 6 -2.43 10.0 691ms
7 0 7 -3.33 8.9 703ms
8 0 8 -4.02 7.8 622ms
9 0 9 -5.04 6.4 560ms
10 0 10 -6.06 3.9 432ms
11 0 11 -7.08 2.2 342ms
12 0 12 -8.27 1.0 261ms
13 1 1 -7.53 17.9 1.33s Restart
14 1 2 -7.88 3.1 317ms
15 1 3 -8.66 2.1 269ms
19.2 1.80s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.05s Non-interacting
1 0 1 1.03 15.1 968ms
2 0 2 0.53 14.5 944ms
3 0 3 -0.01 14.1 918ms
4 0 4 -0.87 13.8 865ms
5 0 5 -1.74 11.8 780ms
6 0 6 -2.43 10.0 690ms
7 0 7 -3.33 8.9 629ms
8 0 8 -4.02 7.8 569ms
9 0 9 -5.04 6.4 515ms
10 0 10 -6.06 3.9 366ms
11 0 11 -7.08 2.3 319ms
12 0 12 -8.28 1.0 265ms
13 1 1 -7.53 17.9 1.25s Restart
14 1 2 -7.86 3.1 306ms
15 1 3 -8.67 2.2 266ms
19.2 1.15s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.08s Non-interacting
1 0 1 1.03 15.1 1.01s
2 0 2 0.53 14.5 926ms
3 0 3 -0.01 14.1 897ms
4 0 4 -0.87 13.7 894ms
5 0 5 -1.74 11.8 817ms
6 0 6 -2.43 10.0 709ms
7 0 7 -3.33 8.9 683ms
8 0 8 -4.02 7.8 606ms
9 0 9 -5.04 6.5 511ms
10 0 10 -6.06 3.9 413ms
11 0 11 -7.08 2.3 331ms
12 0 12 -8.28 1.0 243ms
13 1 1 -7.54 17.9 1.29s Restart
14 1 2 -7.88 3.1 414ms
15 1 3 -8.65 2.1 816ms
19.2 1.11s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.05s Non-interacting
1 0 1 1.03 15.1 991ms
2 0 2 0.53 14.5 942ms
3 0 3 -0.01 14.1 916ms
4 0 4 -0.87 13.7 924ms
5 0 5 -1.74 11.8 790ms
6 0 6 -2.43 10.0 695ms
7 0 7 -3.33 8.9 623ms
8 0 8 -4.02 7.8 582ms
9 0 9 -5.04 6.4 506ms
10 0 10 -6.06 3.9 356ms
11 0 11 -7.08 2.2 313ms
12 0 12 -8.27 1.0 241ms
13 1 1 -7.52 17.9 1.26s Restart
14 1 2 -7.87 3.2 299ms
15 1 3 -8.66 2.1 282ms
19.2 1.13s Final orbitals
101.735449 seconds (73.37 M allocations: 29.676 GiB, 4.52% gc time, 22.69% 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