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.916279961267 -0.69 4.0 599ms
2 -7.921170923325 -2.31 -1.52 1.0 296ms
3 -7.921410854209 -3.62 -2.47 1.5 291ms
4 -7.921440930488 -4.52 -2.87 2.2 385ms
5 -7.921441814994 -6.05 -3.24 1.1 274ms
6 -7.921442009267 -6.71 -4.47 1.1 269ms
7 -7.921442022046 -7.89 -4.98 2.5 426ms
8 -7.921442022133 -10.06 -5.25 1.5 308ms
9 -7.921442022143 -11.01 -5.80 1.0 271ms
10 -7.921442022144 -11.84 -6.38 1.4 296ms
11 -7.921442022144 -12.86 -7.22 1.6 326ms
12 -7.921442022144 -14.05 -7.55 2.0 471ms
13 -7.921442022144 -15.05 -8.44 1.0 1.08s
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.66s Non-interacting
1 0 1 1.03 15.1 12.6s
2 0 2 0.53 14.5 1.14s
3 0 3 -0.01 14.0 1.13s
4 0 4 -0.87 13.7 1.09s
5 0 5 -1.74 11.8 966ms
6 0 6 -2.43 10.0 849ms
7 0 7 -3.33 8.8 777ms
8 0 8 -4.02 7.8 721ms
9 0 9 -5.04 6.4 623ms
10 0 10 -6.06 3.9 457ms
11 0 11 -7.08 2.3 370ms
12 0 12 -8.27 1.0 295ms
13 1 1 -7.54 17.9 1.70s Restart
14 1 2 -7.87 3.2 393ms
15 1 3 -8.67 2.1 342ms
19.2 2.05s 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.24s
2 0 2 0.53 14.5 1.12s
3 0 3 -0.01 14.1 1.11s
4 0 4 -0.87 13.8 1.09s
5 0 5 -1.74 11.8 964ms
6 0 6 -2.43 10.0 850ms
7 0 7 -3.33 8.9 777ms
8 0 8 -4.02 7.8 716ms
9 0 9 -5.04 6.4 614ms
10 0 10 -6.06 3.9 462ms
11 0 11 -7.08 2.3 364ms
12 0 12 -8.27 1.0 282ms
13 1 1 -7.53 17.9 1.57s Restart
14 1 2 -7.88 3.2 377ms
15 1 3 -8.65 2.1 324ms
19.2 1.44s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 2.23s Non-interacting
1 0 1 1.03 15.1 1.19s
2 0 2 0.53 14.5 1.06s
3 0 3 -0.01 14.1 1.08s
4 0 4 -0.87 13.8 1.09s
5 0 5 -1.74 11.8 967ms
6 0 6 -2.43 10.0 837ms
7 0 7 -3.33 8.9 775ms
8 0 8 -4.02 7.9 719ms
9 0 9 -5.04 6.4 615ms
10 0 10 -6.06 3.9 460ms
11 0 11 -7.08 2.3 365ms
12 0 12 -8.27 1.0 294ms
13 1 1 -7.54 17.9 1.55s Restart
14 1 2 -7.87 3.2 368ms
15 1 3 -8.66 2.1 328ms
19.2 1.43s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.30s Non-interacting
1 0 1 1.03 15.1 1.24s
2 0 2 0.53 14.5 1.13s
3 0 3 -0.01 14.0 1.10s
4 0 4 -0.87 13.7 1.08s
5 0 5 -1.74 11.8 974ms
6 0 6 -2.43 10.0 845ms
7 0 7 -3.33 8.9 774ms
8 0 8 -4.02 7.8 716ms
9 0 9 -5.04 6.4 611ms
10 0 10 -6.06 3.9 457ms
11 0 11 -7.08 2.3 365ms
12 0 12 -8.27 1.0 293ms
13 1 1 -7.54 18.0 1.56s Restart
14 1 2 -7.85 3.2 369ms
15 1 3 -8.64 2.1 328ms
19.2 1.44s 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.24s
2 0 2 0.53 14.5 1.12s
3 0 3 -0.01 14.1 1.10s
4 0 4 -0.87 13.8 1.09s
5 0 5 -1.74 11.8 959ms
6 0 6 -2.43 10.0 842ms
7 0 7 -3.33 8.9 774ms
8 0 8 -4.02 7.8 712ms
9 0 9 -5.04 6.4 605ms
10 0 10 -6.06 3.9 549ms
11 0 11 -7.08 2.3 1.22s
12 0 12 -8.27 1.0 270ms
13 1 1 -7.53 17.9 1.53s Restart
14 1 2 -7.87 3.2 342ms
15 1 3 -8.65 2.1 310ms
19.2 1.44s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 1.30s Non-interacting
1 0 1 1.03 15.1 1.25s
2 0 2 0.53 14.5 1.14s
3 0 3 -0.01 14.1 1.10s
4 0 4 -0.87 13.8 1.09s
5 0 5 -1.74 11.8 971ms
6 0 6 -2.43 10.0 847ms
7 0 7 -3.33 8.9 771ms
8 0 8 -4.02 7.9 713ms
9 0 9 -5.04 6.4 618ms
10 0 10 -6.06 3.9 452ms
11 0 11 -7.08 2.3 365ms
12 0 12 -8.27 1.0 294ms
13 1 1 -7.53 18.0 1.54s Restart
14 1 2 -7.86 3.2 367ms
15 1 3 -8.63 2.1 321ms
19.2 1.42s Final orbitals
129.685896 seconds (62.72 M allocations: 33.013 GiB, 3.83% gc time, 28.31% 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