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.916280160412 -0.69 4.0 637ms
2 -7.921169338030 -2.31 -1.52 1.0 263ms
3 -7.921410494958 -3.62 -2.47 1.5 303ms
4 -7.921440947668 -4.52 -2.87 2.2 390ms
5 -7.921441817536 -6.06 -3.24 1.1 277ms
6 -7.921442009715 -6.72 -4.49 1.1 283ms
7 -7.921442022051 -7.91 -5.00 2.5 422ms
8 -7.921442022134 -10.08 -5.29 1.6 324ms
9 -7.921442022143 -11.03 -5.98 1.0 276ms
10 -7.921442022144 -11.96 -6.34 1.8 424ms
11 -7.921442022144 -12.95 -6.96 1.1 1.15s
12 -7.921442022144 -13.82 -7.77 1.9 354ms
13 -7.921442022144 + -14.75 -8.52 2.0 383ms
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.91s Non-interacting
1 0 1 1.03 15.2 12.9s
2 0 2 0.53 14.5 1.20s
3 0 3 -0.01 14.1 1.11s
4 0 4 -0.87 13.7 1.10s
5 0 5 -1.74 11.8 999ms
6 0 6 -2.43 10.0 864ms
7 0 7 -3.33 8.9 792ms
8 0 8 -4.02 7.8 752ms
9 0 9 -5.04 6.4 645ms
10 0 10 -6.06 3.9 466ms
11 0 11 -7.08 2.3 376ms
12 0 12 -8.27 1.0 297ms
13 1 1 -7.55 17.8 1.72s Restart
14 1 2 -7.89 3.2 393ms
15 1 3 -8.70 2.1 346ms
19.2 2.11s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.35s Non-interacting
1 0 1 1.03 15.2 1.28s
2 0 2 0.53 14.5 1.16s
3 0 3 -0.01 14.1 1.14s
4 0 4 -0.87 13.8 1.13s
5 0 5 -1.74 11.8 990ms
6 0 6 -2.43 10.0 868ms
7 0 7 -3.33 8.9 803ms
8 0 8 -4.02 7.8 736ms
9 0 9 -5.04 6.4 634ms
10 0 10 -6.06 3.9 466ms
11 0 11 -7.08 2.3 379ms
12 0 12 -8.27 1.0 300ms
13 1 1 -7.52 17.8 2.50s Restart
14 1 2 -7.88 3.2 328ms
15 1 3 -8.68 2.1 329ms
19.2 1.30s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
19.9 1.25s Non-interacting
1 0 1 1.03 15.2 1.25s
2 0 2 0.53 14.5 1.14s
3 0 3 -0.01 14.1 1.13s
4 0 4 -0.87 13.8 1.11s
5 0 5 -1.74 11.8 988ms
6 0 6 -2.43 10.0 871ms
7 0 7 -3.33 8.9 782ms
8 0 8 -4.02 7.9 730ms
9 0 9 -5.04 6.4 620ms
10 0 10 -6.06 3.9 464ms
11 0 11 -7.08 2.3 372ms
12 0 12 -8.27 1.0 293ms
13 1 1 -7.53 18.0 1.59s Restart
14 1 2 -7.87 3.2 379ms
15 1 3 -8.64 2.1 326ms
19.2 1.46s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.34s Non-interacting
1 0 1 1.03 15.2 1.25s
2 0 2 0.53 14.5 1.16s
3 0 3 -0.01 14.1 1.13s
4 0 4 -0.87 13.7 1.12s
5 0 5 -1.74 11.8 1.00s
6 0 6 -2.43 10.0 863ms
7 0 7 -3.33 8.9 796ms
8 0 8 -4.02 7.8 732ms
9 0 9 -5.04 6.4 635ms
10 0 10 -6.06 3.9 460ms
11 0 11 -7.08 2.3 371ms
12 0 12 -8.27 1.0 300ms
13 1 1 -7.55 17.7 1.58s Restart
14 1 2 -7.89 3.2 368ms
15 1 3 -8.71 2.1 324ms
19.2 1.46s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.33s Non-interacting
1 0 1 1.03 15.2 1.26s
2 0 2 0.53 14.5 1.15s
3 0 3 -0.01 14.1 1.12s
4 0 4 -0.87 13.8 1.12s
5 0 5 -1.74 11.8 1.08s
6 0 6 -2.43 10.0 1.69s
7 0 7 -3.33 8.9 742ms
8 0 8 -4.02 7.8 727ms
9 0 9 -5.04 6.4 597ms
10 0 10 -6.06 3.9 432ms
11 0 11 -7.08 2.3 353ms
12 0 12 -8.27 1.0 279ms
13 1 1 -7.52 17.9 1.51s Restart
14 1 2 -7.88 3.2 368ms
15 1 3 -8.68 2.1 323ms
19.2 1.45s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
19.9 1.33s Non-interacting
1 0 1 1.03 15.2 1.26s
2 0 2 0.53 14.5 1.12s
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 983ms
6 0 6 -2.43 10.0 852ms
7 0 7 -3.33 8.9 785ms
8 0 8 -4.02 7.9 725ms
9 0 9 -5.04 6.4 630ms
10 0 10 -6.06 3.9 455ms
11 0 11 -7.08 2.3 373ms
12 0 12 -8.27 1.0 296ms
13 1 1 -7.53 17.9 1.57s Restart
14 1 2 -7.87 3.2 371ms
15 1 3 -8.66 2.1 329ms
19.2 1.45s Final orbitals
132.820288 seconds (62.87 M allocations: 33.024 GiB, 3.63% gc time, 28.98% 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