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.916286247410 -0.69 4.0 573ms
2 -7.921172360294 -2.31 -1.52 1.0 327ms
3 -7.921410928682 -3.62 -2.47 1.5 309ms
4 -7.921440946072 -4.52 -2.87 2.2 389ms
5 -7.921441814026 -6.06 -3.24 1.1 303ms
6 -7.921442009321 -6.71 -4.46 1.2 278ms
7 -7.921442022048 -7.90 -5.01 2.5 431ms
8 -7.921442022134 -10.07 -5.29 1.7 313ms
9 -7.921442022143 -11.04 -6.21 1.1 275ms
10 -7.921442022144 -12.12 -6.20 2.1 388ms
11 -7.921442022144 -12.77 -6.88 1.0 264ms
12 -7.921442022144 -13.82 -7.85 1.7 327ms
13 -7.921442022144 -14.57 -8.29 2.1 405ms
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.10s Non-interacting
1 0 1 1.03 15.1 12.3s
2 0 2 0.53 14.5 1.18s
3 0 3 -0.01 14.1 1.11s
4 0 4 -0.87 13.7 1.09s
5 0 5 -1.74 11.8 1.58s
6 0 6 -2.43 10.0 832ms
7 0 7 -3.33 8.9 777ms
8 0 8 -4.02 7.9 704ms
9 0 9 -5.04 6.4 608ms
10 0 10 -6.06 3.9 475ms
11 0 11 -7.08 2.3 366ms
12 0 12 -8.27 1.0 293ms
13 1 1 -7.56 17.8 1.71s Restart
14 1 2 -7.88 3.2 390ms
15 1 3 -8.69 2.1 340ms
19.2 2.21s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.35s Non-interacting
1 0 1 1.03 15.1 1.25s
2 0 2 0.53 14.5 1.13s
3 0 3 -0.01 14.1 1.12s
4 0 4 -0.87 13.8 1.10s
5 0 5 -1.74 11.8 973ms
6 0 6 -2.43 10.0 868ms
7 0 7 -3.33 8.9 781ms
8 0 8 -4.02 7.8 729ms
9 0 9 -5.04 6.4 622ms
10 0 10 -6.06 3.9 457ms
11 0 11 -7.08 2.3 374ms
12 0 12 -8.27 1.0 293ms
13 1 1 -7.53 17.9 1.58s Restart
14 1 2 -7.88 3.2 372ms
15 1 3 -8.65 2.1 322ms
19.2 1.44s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
19.9 1.32s Non-interacting
1 0 1 1.03 15.1 1.86s
2 0 2 0.53 14.5 1.11s
3 0 3 -0.01 14.1 1.11s
4 0 4 -0.87 13.8 1.08s
5 0 5 -1.74 11.8 971ms
6 0 6 -2.43 10.0 852ms
7 0 7 -3.33 8.9 782ms
8 0 8 -4.02 7.9 726ms
9 0 9 -5.04 6.4 621ms
10 0 10 -6.06 3.9 461ms
11 0 11 -7.08 2.3 370ms
12 0 12 -8.27 1.0 294ms
13 1 1 -7.54 17.9 1.57s Restart
14 1 2 -7.87 3.2 377ms
15 1 3 -8.66 2.1 323ms
19.2 1.46s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.32s Non-interacting
1 0 1 1.03 15.1 1.25s
2 0 2 0.53 14.5 1.15s
3 0 3 -0.01 14.1 1.11s
4 0 4 -0.87 13.7 1.12s
5 0 5 -1.74 11.8 979ms
6 0 6 -2.43 10.0 857ms
7 0 7 -3.33 8.9 783ms
8 0 8 -4.02 7.9 726ms
9 0 9 -5.04 6.4 625ms
10 0 10 -6.06 3.9 466ms
11 0 11 -7.08 2.3 370ms
12 0 12 -8.27 1.0 294ms
13 1 1 -7.56 17.9 1.57s Restart
14 1 2 -7.88 3.2 458ms
15 1 3 -8.68 2.1 868ms
19.2 1.39s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.31s Non-interacting
1 0 1 1.03 15.1 1.23s
2 0 2 0.53 14.5 1.14s
3 0 3 -0.01 14.1 1.12s
4 0 4 -0.87 13.8 1.10s
5 0 5 -1.74 11.8 989ms
6 0 6 -2.43 10.0 856ms
7 0 7 -3.33 8.9 784ms
8 0 8 -4.02 7.8 730ms
9 0 9 -5.04 6.4 626ms
10 0 10 -6.06 3.9 462ms
11 0 11 -7.08 2.3 378ms
12 0 12 -8.27 1.0 293ms
13 1 1 -7.54 17.9 1.57s Restart
14 1 2 -7.88 3.2 372ms
15 1 3 -8.64 2.1 324ms
19.2 1.44s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
19.9 1.32s Non-interacting
1 0 1 1.03 15.1 1.25s
2 0 2 0.53 14.5 1.15s
3 0 3 -0.01 14.1 1.11s
4 0 4 -0.87 13.8 1.11s
5 0 5 -1.74 11.8 990ms
6 0 6 -2.43 10.0 861ms
7 0 7 -3.33 8.9 789ms
8 0 8 -4.02 7.9 721ms
9 0 9 -5.04 6.4 623ms
10 0 10 -6.06 3.9 464ms
11 0 11 -7.08 2.3 368ms
12 0 12 -8.27 1.0 356ms
13 1 1 -7.54 17.9 2.07s Restart
14 1 2 -7.87 3.2 360ms
15 1 3 -8.67 2.1 327ms
19.2 1.41s Final orbitals
129.604249 seconds (74.23 M allocations: 33.429 GiB, 3.88% gc time, 26.97% 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