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.916314783657 -0.69 4.2 697ms
2 -7.921169748190 -2.31 -1.52 1.0 286ms
3 -7.921408518355 -3.62 -2.48 1.4 337ms
4 -7.921440899272 -4.49 -2.85 2.3 429ms
5 -7.921441780068 -6.06 -3.18 1.0 298ms
6 -7.921442007162 -6.64 -4.46 1.0 294ms
7 -7.921442022041 -7.83 -4.99 2.5 474ms
8 -7.921442022135 -10.03 -5.27 1.9 372ms
9 -7.921442022143 -11.09 -5.94 1.0 300ms
10 -7.921442022144 -11.94 -6.21 1.6 350ms
11 -7.921442022144 -12.73 -7.09 1.1 305ms
12 -7.921442022144 -13.82 -7.78 2.0 418ms
13 -7.921442022144 + -14.75 -8.40 1.8 402ms
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.73s Non-interacting
1 0 1 1.03 15.1 12.7s
2 0 2 0.53 14.5 1.28s
3 0 3 -0.01 14.1 1.22s
4 0 4 -0.87 13.8 1.21s
5 0 5 -1.74 11.8 1.07s
6 0 6 -2.43 10.0 939ms
7 0 7 -3.33 8.9 858ms
8 0 8 -4.02 7.8 801ms
9 0 9 -5.04 6.4 696ms
10 0 10 -6.06 3.9 504ms
11 0 11 -7.08 2.3 407ms
12 0 12 -8.28 1.0 320ms
13 1 1 -7.55 17.8 1.90s Restart
14 1 2 -7.88 3.1 420ms
15 1 3 -8.69 2.1 365ms
19.2 2.16s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
19.9 1.46s Non-interacting
1 0 1 1.03 15.1 1.38s
2 0 2 0.53 14.5 1.26s
3 0 3 -0.01 14.0 1.22s
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 946ms
7 0 7 -3.33 8.9 857ms
8 0 8 -4.02 7.8 793ms
9 0 9 -5.04 6.4 677ms
10 0 10 -6.06 3.9 507ms
11 0 11 -7.08 2.3 419ms
12 0 12 -8.27 1.0 319ms
13 1 1 -7.53 17.8 1.72s Restart
14 1 2 -7.88 3.1 403ms
15 1 3 -8.68 2.1 436ms
19.2 2.31s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.39s 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.0 1.23s
4 0 4 -0.87 13.7 1.19s
5 0 5 -1.74 11.8 1.08s
6 0 6 -2.43 10.0 941ms
7 0 7 -3.33 8.9 861ms
8 0 8 -4.02 7.8 793ms
9 0 9 -5.04 6.4 690ms
10 0 10 -6.06 3.9 507ms
11 0 11 -7.08 2.3 402ms
12 0 12 -8.27 1.0 323ms
13 1 1 -7.54 17.8 1.72s Restart
14 1 2 -7.88 3.1 407ms
15 1 3 -8.69 2.1 351ms
19.2 1.60s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.45s Non-interacting
1 0 1 1.03 15.1 1.37s
2 0 2 0.53 14.5 1.25s
3 0 3 -0.01 14.1 1.23s
4 0 4 -0.87 13.8 1.22s
5 0 5 -1.74 11.8 1.10s
6 0 6 -2.43 10.0 950ms
7 0 7 -3.33 8.9 861ms
8 0 8 -4.02 7.8 807ms
9 0 9 -5.04 6.4 690ms
10 0 10 -6.06 3.9 504ms
11 0 11 -7.08 2.3 409ms
12 0 12 -8.28 1.0 322ms
13 1 1 -7.55 17.8 1.72s Restart
14 1 2 -7.89 3.1 406ms
15 1 3 -8.70 2.1 1.25s
19.2 1.57s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
19.9 1.36s Non-interacting
1 0 1 1.03 15.1 1.36s
2 0 2 0.53 14.5 1.26s
3 0 3 -0.01 14.0 1.23s
4 0 4 -0.87 13.7 1.19s
5 0 5 -1.74 11.8 1.08s
6 0 6 -2.43 10.0 949ms
7 0 7 -3.33 8.9 839ms
8 0 8 -4.02 7.8 802ms
9 0 9 -5.04 6.4 689ms
10 0 10 -6.06 3.9 507ms
11 0 11 -7.08 2.3 410ms
12 0 12 -8.27 1.0 322ms
13 1 1 -7.53 17.8 1.73s Restart
14 1 2 -7.89 3.1 403ms
15 1 3 -8.69 2.1 359ms
19.2 1.58s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.46s Non-interacting
1 0 1 1.03 15.1 1.38s
2 0 2 0.53 14.5 1.27s
3 0 3 -0.01 14.1 1.23s
4 0 4 -0.87 13.7 1.22s
5 0 5 -1.74 11.8 1.09s
6 0 6 -2.43 10.0 946ms
7 0 7 -3.33 8.9 869ms
8 0 8 -4.02 7.8 798ms
9 0 9 -5.04 6.4 689ms
10 0 10 -6.06 3.9 495ms
11 0 11 -7.08 2.3 366ms
12 0 12 -8.27 1.0 305ms
13 1 1 -7.54 17.8 2.53s Restart
14 1 2 -7.88 3.1 374ms
15 1 3 -8.70 2.1 319ms
19.2 1.50s Final orbitals
140.152095 seconds (96.41 M allocations: 30.475 GiB, 4.18% gc time, 24.91% 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