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.916323665424 -0.69 4.2 340ms
2 -7.921173526708 -2.31 -1.52 1.0 211ms
3 -7.921406408674 -3.63 -2.48 1.4 160ms
4 -7.921440852327 -4.46 -2.84 2.2 230ms
5 -7.921441741870 -6.05 -3.13 1.0 181ms
6 -7.921442007448 -6.58 -4.53 1.1 146ms
7 -7.921442022092 -7.83 -5.06 2.7 245ms
8 -7.921442022140 -10.32 -5.41 1.6 178ms
9 -7.921442022143 -11.53 -5.85 1.1 146ms
10 -7.921442022144 -11.95 -6.37 1.2 162ms
11 -7.921442022144 -12.88 -7.24 1.8 179ms
12 -7.921442022144 -14.10 -7.60 2.1 211ms
13 -7.921442022144 + -Inf -8.30 1.0 154ms
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.04s Non-interacting
1 0 1 1.03 15.1 7.16s
2 0 2 0.53 14.5 653ms
3 0 3 -0.01 14.1 661ms
4 0 4 -0.87 13.8 610ms
5 0 5 -1.74 11.8 545ms
6 0 6 -2.43 10.0 1.06s
7 0 7 -3.33 8.9 417ms
8 0 8 -4.02 7.8 380ms
9 0 9 -5.04 6.4 359ms
10 0 10 -6.06 3.9 249ms
11 0 11 -7.08 2.3 209ms
12 0 12 -8.28 1.0 160ms
13 1 1 -7.53 17.8 992ms Restart
14 1 2 -7.88 3.1 221ms
15 1 3 -8.69 2.1 193ms
19.2 1.13s Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 748ms Non-interacting
1 0 1 1.03 15.1 699ms
2 0 2 0.53 14.6 679ms
3 0 3 -0.01 14.0 618ms
4 0 4 -0.87 13.7 632ms
5 0 5 -1.74 11.8 534ms
6 0 6 -2.43 10.0 476ms
7 0 7 -3.33 8.9 420ms
8 0 8 -4.02 7.8 397ms
9 0 9 -5.04 6.5 339ms
10 0 10 -6.06 3.9 254ms
11 0 11 -7.08 2.3 200ms
12 0 12 -8.27 1.0 160ms
13 1 1 -7.53 17.9 859ms Restart
14 1 2 -7.87 3.1 203ms
15 1 3 -8.68 2.1 178ms
19.2 813ms Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 733ms Non-interacting
1 0 1 1.03 15.1 700ms
2 0 2 0.53 14.5 635ms
3 0 3 -0.01 14.1 1.23s
4 0 4 -0.87 13.8 585ms
5 0 5 -1.74 11.8 524ms
6 0 6 -2.43 10.0 480ms
7 0 7 -3.33 8.9 422ms
8 0 8 -4.02 7.8 392ms
9 0 9 -5.04 6.5 335ms
10 0 10 -6.06 3.9 249ms
11 0 11 -7.08 2.3 202ms
12 0 12 -8.27 1.0 156ms
13 1 1 -7.53 17.9 864ms Restart
14 1 2 -7.88 3.1 204ms
15 1 3 -8.68 2.1 183ms
19.2 796ms Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 737ms Non-interacting
1 0 1 1.03 15.1 714ms
2 0 2 0.53 14.5 631ms
3 0 3 -0.01 14.1 617ms
4 0 4 -0.87 13.8 605ms
5 0 5 -1.74 11.8 544ms
6 0 6 -2.43 10.0 478ms
7 0 7 -3.33 8.9 436ms
8 0 8 -4.02 7.8 406ms
9 0 9 -5.04 6.4 350ms
10 0 10 -6.06 3.9 256ms
11 0 11 -7.08 2.3 211ms
12 0 12 -8.28 1.0 160ms
13 1 1 -7.53 17.8 855ms Restart
14 1 2 -7.88 3.1 210ms
15 1 3 -8.70 2.1 182ms
19.2 787ms Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 730ms Non-interacting
1 0 1 1.03 15.1 740ms
2 0 2 0.53 14.6 1.28s
3 0 3 -0.01 14.0 600ms
4 0 4 -0.87 13.7 594ms
5 0 5 -1.74 11.8 545ms
6 0 6 -2.43 10.0 474ms
7 0 7 -3.33 8.9 460ms
8 0 8 -4.02 7.8 395ms
9 0 9 -5.04 6.5 346ms
10 0 10 -6.06 3.9 265ms
11 0 11 -7.08 2.3 208ms
12 0 12 -8.27 1.0 165ms
13 1 1 -7.53 17.9 871ms Restart
14 1 2 -7.86 3.1 207ms
15 1 3 -8.67 2.1 186ms
19.2 800ms Final orbitals
Iter Restart Krydim log10(res) avg(CG) Δtime Comment
---- ------- ------ ---------- ------- ------ ---------------
20.0 755ms Non-interacting
1 0 1 1.03 15.1 692ms
2 0 2 0.53 14.5 630ms
3 0 3 -0.01 14.1 613ms
4 0 4 -0.87 13.8 609ms
5 0 5 -1.74 11.8 544ms
6 0 6 -2.43 10.0 479ms
7 0 7 -3.33 8.9 441ms
8 0 8 -4.02 7.8 408ms
9 0 9 -5.04 6.5 347ms
10 0 10 -6.06 3.9 265ms
11 0 11 -7.08 2.3 208ms
12 0 12 -8.27 1.0 164ms
13 1 1 -7.53 17.9 876ms Restart
14 1 2 -7.89 3.1 214ms
15 1 3 -8.68 2.1 182ms
19.2 812ms Final orbitals
76.920663 seconds (73.45 M allocations: 29.678 GiB, 6.26% gc time, 27.66% 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