Phonopy Tips 2014
Phonopy Tips 2014
Pro Tips
J. M. Skelton
We know, however, that atoms actually move around inside the crystal structure,
since it is these motions that give the concept of temperature […].
The static lattice model, which is only concerned with the average positions of atoms
and neglects their motions, can explain a large number of material features […].
1
𝐹 = −𝑘(𝑟 − 𝑟0 ) 𝐸= 𝑘(𝑟 − 𝑟0 )
2
1 𝑘
𝑈𝑛 = 𝑛 + ℏ𝜔 𝜔=
2 𝜇
Where:
𝑘 = Spring constant
𝜔 = Frequency
𝜇 = Reduced mass
𝑈𝑛 = Potential energy
U
r - r0 r - r0
• If the system is on a potential-energy maximum, there is no restoring force along certain
modes -> these will have a negative force constant associated with them
• Since 𝜔 = 𝑘/𝜇, the mode must have an imaginary frequency (usually represented as a
negative frequency in phonon DOS/band structure curves
• The mechanism for some phase transitions is for one or more modes in the stable
structure to become imaginary at the transition temperature
• The force constant matrix Φ𝛼𝛽 (𝑖𝑙, 𝑗𝑙′) can be obtained either from finite-displacement
calculations, or using DFPT
• The number of displacements which need to be evaluated to construct the dynamical
matrix can be reduced by symmetry
𝑚1 𝑟𝑥 (1, 𝐪, λ) ω(λ1 , 𝐪) . . . .
𝑚1 𝑟𝑦 (1, 𝐪, λ) . ω(λ2 , 𝐪) . . .
𝒆 𝐪, λ = 𝑚1 𝑟𝑧 (1, 𝐪, λ) Ω 𝐪 = . . ω(λ3 , 𝐪) . .
⋮ . . . ⋱ ⋮
𝑚𝑁 𝑟𝑧 (𝑁, 𝐪, λ) . . . . ω(λ3𝑁 , 𝐪)
<111>
• Two optic modes involve rows of atoms sliding past each other, while the third involves
separation of the ions
• The latter has an extra restoring force associated with it -> LO/TO splitting
• This can be modelled by a non-analytical correction to the phonon frequencies, using the
Born effective charge and macroscopic dielectric tensors
exp[ℏ𝜔(𝐪, λ)/2𝑘𝐵 𝑇]
𝑍 𝑇 = exp[−𝑈𝐿 /𝑘𝐵 𝑇]
1 − exp[ℏ𝜔(𝐪, λ)/𝑘𝐵 𝑇]
𝐪,λ
1 1
Vibrational energy: 𝑈𝑉 𝑇 = ℏ𝜔(𝐪, λ) +
2 exp ℏ𝜔 𝐪, λ /𝑘𝐵 𝑇 − 1
𝐪,λ
𝜕𝑈 𝜕𝐴 Phonon occupation
Derivatives: 𝐶𝑉 = 𝑆= number
𝜕𝑇 𝑉
𝜕𝑇
Input Structure
Create
phonopy -d [--dim=“1 1 1”]
Displacements
Calculate Forces
phonopy -f vasprun-{001..XXX}.xml
Extract Forces
phonopy --fc vasprun.xml
• Accurate forces are essential -> crank the standard settings right up
• LREAL = .FALSE. is essential, unless you manually adjust ROPT
• ADDGRID = .TRUE. doesn’t seem to be essential, but doesn’t cost much either
• For finite-difference/DFPT phonon calculations in VASP, set NSW = 1
XC = PBE
XC = LDA
XC = TPSS
• There are options in phonopy to project a calculation on the conventional cell back to
the primitive cell during post processing
If using VASP FD/DFPT, set NWRITE = 3 in the INCAR file, and you can run this
bash script on the OUTCAR to obtain a simulated IR spectrum “for free”:
http://homepage.univie.ac.at/david.karhanek/downloads.html#Entry02
When using FD/DFPT, VASP tries to change the k-point set internally, which
requires NPAR = #Cores to be set in the INCAR file; setting ISYM = -1
avoids this, and although the number of displacements which need to be
evaluated may increase, the performance gained by using band parallelism can
quite easily offset this for low-symmetry systems (!)
“Plot” “Save”
PbTe
Sample phonon DOS settings file:
DIM = 4 4 4
MP = 48 48 48
GAMMA_CENTER = .TRUE.
“Plot” “Save”
PbTe
Sample phonon DOS settings file:
DIM = 4 4 4
MP = 48 48 48
GAMMA_CENTER = .TRUE.
EIGENVECTORS = .TRUE.
PDOS = 1, 2
PbTe
Sample phonon DOS settings file:
DIM = 4 4 4
MP = 48 48 48
GAMMA_CENTER = .TRUE.
“Plot” “Save”
PbTe
Sample phonon band structure settings file:
DIM = 4 4 4
BAND = 0.0 0.0 0.0 0.5 0.25 0.75
0.5 0.0 0.5 0.0 0.0 0.0
0.5 0.5 0.5
BAND_POINTS = 101
BAND_LABELS = \Gamma W X \Gamma L
[EIGENVECTORS = .TRUE.]
“Plot” “Save”
PbTe
Sample phonon band structure settings file:
DIM = 4 4 4
BAND = 0.0 0.0 0.0 0.5 0.25 0.75
0.5 0.0 0.5 0.0 0.0 0.0
0.5 0.5 0.5
BAND_POINTS = 101
BAND_LABELS = \Gamma W X \Gamma L
BAND_CONNECTION = .TRUE.
INCAR for Born charges using DFPT: INCAR for Born charges using LCALCEPS:
• Corrections are enabled by setting NAC = .TRUE. in the configutation file, or passing
--nac as a command-line argument
• When this option is used, phonopy expects to find a BORN file in the working directory
PbTe
ZnS
128 128
2 1 1
Φxx Φxy Φxz
1 Φyx Φyy Φyz
d1x d1y d1z Φzx Φzy Φzz
F1x F1y F1z 1 2
F2x F2y F2z Φxx Φxy Φxz
... Φyx Φyy Φyz
2 Φzx Φzy Φzz
d2x d2y d2z ...
F1x F1y F1z
F2x F2y F2z
...
20.0
Phonon DOS / AU
15.0
10.0
5.0
0.0
-500 0 500 1000 1500 2000 2500 3000 3500 4000
v / cm-1
IRMOF-10
𝜕𝐺
𝑆(𝑇) -> −
𝜕𝑇 𝑝
𝜕𝐻
𝐶𝑝 (𝑇) -> −
𝜕𝑇 𝑝
Once we have 𝑉(𝑇), we can compute any property for which the temperature
dependence is captured (to first approximation) by volume changes
Thermal
phonopy -t -p -s Settings.conf
Properties
Post-Process phonopy-qha
e-v.dat
thermal_properties-{001..XXX}.yaml
--tmax=980
Needs to be two points smaller [--tstep=10]
than the maximum temperature [--pressure=<p/GPa>]
in the YAML files [-p] [-s]
PbTe
PbTe: 0 K - 600 K
PbTe: 0 K - 600 K
𝜕𝑓 𝐪, 𝜆 𝜕𝑓 𝐪, 𝜆 𝜕𝑓 𝐪, 𝜆 𝜕𝑓 𝐪, 𝜆
𝑟 = 𝑟 𝑑𝑖𝑓𝑓 + 𝑟 𝑒𝑥𝑡 + 𝑟 𝑠𝑐𝑎𝑡𝑡 =0
𝜕𝑡 𝜕𝑡 𝜕𝑡 𝜕𝑡
𝜕𝑓 𝐪, 𝜆 𝜕𝑓 𝐪, 𝜆 𝜕𝑓 𝐪, 𝜆 𝜕𝑓 𝐪, 𝜆
BTE: 𝒓 = 𝒓 𝑑𝑖𝑓𝑓 + 𝒓 𝑒𝑥𝑡 + 𝒓 𝑠𝑐𝑎𝑡𝑡 =0
𝜕𝑡 𝜕𝑡 𝜕𝑡 𝜕𝑡
𝜕𝑓 𝐪, 𝜆 𝑓 𝐪, 𝜆 − 𝑓 0 𝐪, 𝜆 Scattering assumed to be
RTA: 𝒓 𝑠𝑐𝑎𝑡𝑡 =
𝜕𝑡 τ(𝐪, 𝜆) related to phonon lifetimes
0
𝜕𝑓 0 𝐪, 𝜆
𝑓 𝐪, 𝜆 − 𝑓 𝐪, 𝜆 = −𝒗(𝐪, 𝜆) 𝛻𝑇τ(𝐪, 𝜆)
𝜕𝑇
𝜕3𝐸 −𝐹𝑖,𝛼
Phonon-phonon interactions: Φ𝛼𝛽𝛾 𝑖, 𝑗, 𝑘 = ≈
𝜕𝑟𝑖,𝛼 𝜕𝑟𝑗,𝛽 𝜕𝑟𝑘,𝛾 ∆𝑟𝑗,𝛽 ∆𝑟𝑘,𝛾
𝜕𝑓 0 𝐪, 𝜆
…and finally: 𝜅𝐿 = 𝜔 𝐪, 𝜆 𝑣 𝐪, 𝜆 ⨂𝑣 𝐪, 𝜆 𝜏 𝐪, 𝜆
𝜕𝑇
𝐪,𝜆
Tensor product
𝜅𝐿 = 𝐶𝑉 𝐪, 𝜆 𝑣 𝐪, 𝜆 ⨂𝑣 𝐪, 𝜆 𝜏 𝐪, 𝜆
𝐪,𝜆
Create
phono3py -d --dim=“2 2 2”
Displacements
Calculate Forces
phono3py --dim=“2 2 2”
Post-Process phono3py --tmax=1000 --tstep=10 --fc2 --fc3
--dim=“2 2 2” -v --mesh=“24 24 24”
--br --sigma=“0.1”
The --cutpair tag uses the same numbering for the displaced POSCAR files
as the full calculation; this means the cutoff can be increased, and the extra
displacements added, systematically, to converge w.r.t. the interaction range
• The post-processing (mainly the phonon-lifetime calculations) takes a very long time for
large supercells/large or low-symmetry structures
• It is possible to run the calculation on (ranges of) q-points separately, and then combine
them afterwards
• Various post-processing tags can be applied, e.g. to incorporate isotope effects
κ / w m-1 K-1
9 Increasing V 9
6 6
3 3
0 0
25 125 225 325 425 525 25 125 225 325 425 525
T/K T/K
15
PbTe
12
κ / w m-1 K-1
0
25 125 225 325 425 525
T/K
“Anharmonicity” Properties
phonopy Phonon (P)DOS, phonon dispersion, 𝐴(𝑇), 𝑈𝑉 (𝑇),
𝑆𝑉 (𝑇), 𝐶𝑉 𝑇 , phonon properties such as mode
eigenvectors, 𝒗(𝐪, 𝜆), IRs, thermal MSDs, etc.
phonopy-gruneisen 𝛾(𝐪, 𝜆) (mode Gruneisen parameters)
phonopy-qha 𝐵(𝑇[, 𝑝]), 𝑉(𝑇[, 𝑝]), 𝐺(𝑇[, 𝑝]), 𝐶𝑝 (𝑇[; 𝑝]), 𝛾(𝑇[, 𝑝]), any
property where the 𝑇[, 𝑝] dependence can be modelled
by changes in the lattice parameters
phono3py κ𝐿 (𝑇); also possible to extract related quantities such as
Γ(𝐪, 𝜆), τ(𝐪, 𝜆), 𝐶𝑉 (𝐪, 𝜆), 𝒗(𝐪, 𝜆)
• Using the QHA is a bit more expensive, but in return yields a lot of properties
Model the temperature dependence of properties without e.g. resorting to MD
averaging (although this certainly does have its merits)
[Cynical] Should end up with enough data for a decent PRB…
• phono3py produces very good values for 𝜅𝐿 , although it can be very expensive (“the GW
of lattice dynamics”?)
New code; still need to test various aspects of its functionality
Not many people doing this type of calculation at the moment, either with
phono3py or ShengBTE