Quasi-Newton Methods in DFT
L. D. MarksDepartment of Materials Science & Engineering
Northwestern University
Overview
Underlying Mathematics/Physics
How these are used in Wien2k code
What to do when things go wrong
Some related cases– Surfaces– Phonons (notes, not enough time…)
Health Warning
Some of the folk-lore about these methods in DFT is wrong
There are many details (scaling, trust-region implementation) which are very important
Accuracy of the DFT codes is important – QN methods are good code debuggers
Basic Principles (Minimization)
Two classes of problem– Minimize some function, e.g. the energy
E = E0 + x.G + ½ xTBxG = -Bx
– Solve a fixed-point problem (mixing)(r) = F((r)) Self-Consistent Solution of KS equations“F” is the SCF mapping
Two are nominally the same, except – For a minimization B is positive definite– Normally we insist that the energy improves– These conditions are not appropriate for other fixed point problems
Basic Approaches
Steepest descent– Take a simple step along the gradient (for
minimization) or difference between old and new densities
– Slow and inefficient
Basic Approaches
Conjugant gradient– Insist that steps are approximately orthogonal
with respect to Hessian– Means that there is less redundancy– Much more efficient, but still poor– Good for large problems, but still not optimal– Obsolete, but easy to code
Quasi-Newton Methods
Consider– G=-Bx (or HG = -x)– If we have a number of steps, and x, G at each we have
implicitly some information about B & H– Use this to construct an approximation that is better
than ignoring the prior steps– Provided that the Hessian (or its inverse) is not too
rapidly changing, this is far more efficient– This is the conventional blue-ribbon method
Curvature condition
Suppose we have a gradient at some position x0 , expand this as a Taylor series:G(x) = G(x0 ) – B(x-x0 )
For two positions x1 , x2G(x2 )-G(x1 ) = - B(x2 -x1 )
Defines = x2 -x1 ; y = G(x1 ) –G(x2 )
Curvature ConditionBs = y
So What
There are many possible values of B which satisfy the Curvature Condition – how do we solve?
Key point:– Choose a minimum norm solution that leads to the least
change in B relative to some prior estimate– This involves the smallest possible change in B– Can be considered as the change which is most
conservative in some sense
Curvature ConditionBs = y
Examples
Let Bk be the prior estimate
SR1
(Not implemented: useful for transition states)
BFGS (PORT in Wien2k)
kT
kkk
Tkkkkkk
kk ssBysBysByBB
)())((
1
kTk
Tkk
kkTk
kTkkk
kk syyy
sBsBssBBB
))((1
Breakdown of the Curvature Condition
For minimization, B must be positive definite otherwise the problem will find a maximum and/or fail
Bs = y ; sTBs = sTy
If sTy < 0, B cannot be positive
Example– E=0.6-x2+0.25x4 on rightBlue, E ; Red,
Hence must trap (damp)Reported as a warning in Wien2k
-0.5
0
0.5
1
0 0.5 1 1.5 2
kkkkkk sByy )1(
otherwise )(
)8.0(
2.0 1
kTkkk
Tk
kkTk
kkTkk
Tkk
yssBssBs
sBsys
Fails OK
E
d2E/dx2
How far to go?
Two main methods– Line search: safe but slow– Trust region: most common method
Wolfe Condition– QN methods converge so long as steps are not too
small, need to obtain adequate curvature information– Too small steps will be dominated by noise– Too small steps susceptible to numerical noise from too
few k-points, iterative diagonalization….
General Form used
Total magnitude of step limited by a “Trust Region”; solve quadratic form to minimize the energy with this as a constraint
Broyden’s Methods
Comparable Form for non-linear equations
(r) = F((r)) ; SCF Mapping
sk = k+1 (r)-k (r) ; yk = F(k+1 (r))- F(k (r))
Broyden’s “Good Method”
Broyden’s “Bad Method”k
Tk
Tkkkk
kk ssssByBB )(
1
kTk
Tkkkk
kk yyyyHsHH )(
1
kTk
Tkkkk
kk yssyHsHH )(
1
Why Good & Bad?
Originally the “Good” method worked for Broyden (PRB…) and the “Bad” method did not
For many years the “Bad” method was never used…..except in mixing as DFT developers probably never read the literature
Subtle differenceGood Broyden: finds optimal density with current model
(greedy algorithm)Bad Broyden: finds most conservative density to
minimize residue (least greedy algorithm)
What is a greedy algorithm?
A greedy algorithm takes decisions on the basis of information at hand without worrying about the consequences. In many cases “greed is good”, but not always.
Example: make 41c with 25c, 10c, 4c coins
Optimum solution: 25+4x4
Greedy solution: start with 41c, use largest reduction– 25c Remainder 16– 10c Remainder 6– 4c Remainder 2
An issue for fixed-point problems
Up to now, all the methods are somewhat causal, appropriate for a minimization where the energy is decreasing
This does not need to be the case for a fixed-point problem as the gradient is not available, instead a residual
There is nothing a-priori to say that point 2 should be better than point 1
Hence….
Multisecant Approach
Consider a number of values:
S = (s0 ,s1 ,….sn ) ; Y=(y0 ,y1 ,….yn )
Expand to a simultaneous solution:
BS = Y ; or HY=S
Minimum-Norm Solution (MSEC)
Take Hk =I
Tkk
Tkkkkkk YYYYHSHH 1
1 ))((
Regularization
What is (Yk
TYk )-1 ?UsePenrose-Moore pseudo inverse
Use a constant – Works “OK” in MSEC1/MSEC3
Generalized Cross-Validation (MSR1) used to find
11)( Tk
Tkk
Tk YYIYY
Why Regularize
At point 3, with information from 1 & 2
Small eigenvalues along the poorly defined direction are not well known
Regularization damps the effect of small eigenvalues (similar to Wiener filter)
Unregularized problems tend to be unstable and/or oscillate badly
Unpredicted Step
General Form
Control the magnitude of the unpredicted step (Greed) – used to be called “mixing factor” but I urge you not to use this term!
Trust region automatically adjusts it
))((
))(( 1
FH
YIYYYSIH Tkk
Tkkk
))(}()({
))(()(1
1
FYIYYYI
FYIYYST
kkT
kk
Tkk
Tkk Predicted
Unpredicted
Scaling
Wien2k has several different basis set components– Radial mesh within RMT– Plane wave outside– Density Matrix/Orbital Potentials– Atomic Positions/Gradients (MSR1a)
Need to approximately scale – effects the regularization
Use L2 normalization (sum of squares) for all residuals
Natural scaling for positions (mau) and gradients (mRyd/au)
Trap small gradients to prevent runaway
May not be optimal…research topic
MSECa
Nominally “simple”
sk = (k (r)-k
(r), xk -xk-1 )
yk = (F(k (r))- F(k
(r)), Gk-1 (x1 )-Gk (x2 ))
Insert directly into multisecant form… but it does not really work
MSR1a
What works
kk
kkTk
Tkk
Tkkkk
SY
YSA
AYAYSIH
11 ))((
Good Broyden, Otherwise Bad Broyden
Regularize (pseudo-inverse)
Note: this is a greedier algorithm
Some development continuing…
kTk YA
PORT
Free
Reverse Communication
Conventional BFGS
Adaptive Trust-Region
Very Stable
Traps overlapping RMT
Sensitive to numerical errors (i.e. can annoy PB)
Total energies and atomic forces (Yu et al.; Kohler et al.)
Total Energy:
Electrostatic energy
Kinetic energy
XC-energy
Force on atom
Hellmann-Feynman-force
Pulay corrections
Core
Valence
expensive, contains a summation of matrix elements over all occupied states
KiKKKi
KKii
ikivaleffval
effcorecore
mm
esm
rHF
HKKidSrrK
KcKcnrdrrVF
rdrVrF
rYrr
rVZF
)()()()(
)()()()(
)()(
)ˆ()(lim
*2
,
*
,
1
1
1
1
0
)()(][
)()(][
)(21)()(2
1][
3
3
3
rrrdE
rVrrdnT
rVZrVrrdU
xcxc
effi ii
eses
valcoreHF
tot FFFRd
dEF
Optimization of internal parameters using “forces”
Forces only for “free” structural parameters:
NaCl: (0,0,0), (0.5,0.5,0.5) : all positions fixed by symmetry
TiO2 : Ti (0,0,0), O (u,u,0): one free parameter (u,x,y,z)
Forces are only calculated when using “-fc”:
run_lapw –fc 1.0 (mRy/bohr)
grep :for002 case.scf
200.
-130.
140.
135 only FHF + Fcore
120
122 forces converging
121
changes “TOT” to “FOR” in case.in2
-12.3 FHF + Fcore + Fval , only this last number is correct
Forces are useful for
structural optimization (of internal parameters)
phonons
Structural optimization of internal parameters
/home/pblaha/tio2> min_lapw -h
OPTIONS:
-p -> does a k-point parallel calculation
-it -> use iterative diagonalization
-sp -> does a spin-polarized calculation (runsp_lapw)
-NI -> without initialization of input-files (continue after a “crash”)
-i NUMBER -> max. NUMBER (50) of structure changes
-j JOB -> job-file JOB (run_lapw -I -fc 1. -i 40)
CONTROL FILES:
.minstop stop after next structure change
tio2.inM (generated automatically by “pairhess” at first call of min_lapw)
PORT 2.0 #(NEW1, NOSE, MOLD, tolf (a4,f5.2))
0.0 1.0 1.0 1.0 # Atom1 (0 will constrain a coordinate)
1.0 1.0 1.0 1.0 # Atom2 (NEW1: 1,2,3:delta_i, 4:eta (1=MOLD, damping))
monitor minimization in file case.scf_mini
contains last iteration of each geometry step
each step N is saved as case_N.scf (overwritten with next min_lapw !)
Optimization of atomic posistions (E-minimization via forces)
• damped Newton mechanics scheme (NEW1: with variable step)
• quite efficient quasi-Newton (PORT) scheme• minimizes E (using forces as gradients) • If minimizations gets stuck or oscillates: (because E and Fi are inconsistent):
• touch .minstop; min –nohess (or rm case.tmpM .min_hess)• improve scf-convergence (-ec), Rkmax, k-mesh, …• change to NEW1 scheme (LDM not so sure…)
W impurity in Bi (2x2x2 supercell: Bi15 W)
0 2 4 6 8 10 12 14
-40
-20
0
20
40
60
for01 for04x for04z for06x for06z
forc
es (m
Ry/
a 0)
time step
0 2 4 6 8 10 12 14
-679412.54
-679412.52
-679412.50
-679412.48
-679412.46
-679412.44
Ene
rgy
(Ry)
tim e step
0 2 4 6 8 10 12 14
-0.04
-0.02
0.00
0.02
0.04
pos01 pos04x pos04z pos06
posi
tion
time step
0 2 4 6 8 10 12 14
-4
-2
0
2
4
6
8
EFG
(1021
V/m
2 )
time step
Energy
Forces
PositionsEFG
Some practical details (PORT)
Setup the problem “adequately”
Run “x pairhess” and copy .min_pair .minrestart (done automatically)
Check the frequencies – do they look reasonable (do not be too precise)– Yes – go ahead– No – edit case.inpair
Determine how to minimize (sp, not, LDA+U?)
Either use in-line commands or a separate executable (e.g. Job.csh)
Run min_lapw
case.outputM
grep -e :D *tM:DD7DOG Newton Step, radius 0.561E-01:DD7DOG Dogleg Step 0.263 Radius 0.561E-01:DD7DOG Relaxed Newton 0.881 Radius 0.561E-01:DD7DOG Relaxed Newton 0.777 Radius 0.150E+00:DD7DOG Relaxed Newton 0.730 Radius 0.150E+00:DD7DOG Relaxed Newton 0.135 Radius 0.150E+00:DD7DOG Newton Step, radius 0.879E-01:DD7DOG Newton Step, radius 0.594E-01:DD7DOG Newton Step, radius 0.434E-01
Pairhess (MgO + H2 O)x pairhesscase.inM present and used for constrainsAverage Hessian Eigenvalue 140.0 mRyd/au^2, Frequency 489.80 cm-1Min & Max of Eigenvalues, mRyd/au^2 16.0 520.1Min & Max frequencies, cm-1 79 2353Check .minpair, the estimate, and output in /home/ldm/Nat/Nat.outputpairPairHess END
tail *.outputpair********* Eigenmode Listing ********* Eigenvalue 1 16.0 mRyd/au^2 79 cm-1Eigenvalue 2 35.0 mRyd/au^2 96 cm-1Eigenvalue 3 38.0 mRyd/au^2 99 cm-1….Eigenvalue 22 377.3 mRyd/au^2 1698 cm-1Eigenvalue 23 478.4 mRyd/au^2 2031 cm-1Eigenvalue 24 520.1 mRyd/au^2 2353 cm-1
After initial refinement
Increase (as appropriate)– RKMAX– Change RMT (use clminter)– Change number of k-points
cp .min_hess .minrestart– Re-initializes approximate Hessian (can make it
twice as fast)
Redo min_lapw as before
Post Analysis (eigenhess)Eigenhess code to analyze .min_hess data
It currently:1) If you change case.inM, it will rewrite an appropriate .minpair
(copy to .minrestart and .min_hess then run min -I)2) It will output the eigenvectors/values of the BFGS approximation3) Will create a file case.struct.cif with pseudo-thermal ellipsoids
(a1g symmetry allowed modes) if CIF is in case.incon4) Will add to this cif files the first 9 energy eigenvectors of the
thermal displacements if CIF is in case.incon5) Will output the current BFGS Hessian in case.hess6) Will output in case.struct.xyz the first 9 energy eigenvectors
if XYZ is in case.incon. The number of cells output in this caseis determined by three integers i1,i2,i3 where each is the numberof repeats along the respective axes (default none)
7) For XYZ, will shift by 1/2,1/2,1/2 if SHIFT is specified, similarlywith XSHIFT, YSHIFT and ZSHIFT
8) For XYZ, will print in case.v.xyz the vibrations9) If ALLM is specified, will output all the eigenmodes (files may be large)Note: the xyz files can be read by Jmol and some other viewers
Practical Details (MSEC)
In 99% of cases, do not adjust anything
At most, reduce Greed to 0.1 or 0.05 – not further– Too small a Greed, algorithm will starve to
death– Too large a Greed, algorithm can go unstable– But…..this is controlled within the code
Things to look at
:DIS : CHARGE DISTANCE ( 0.0018343 for atom 1 spin 1) 0.0003262:PLANE: INTERSTITIAL TOTAL 9.00853 DISTAN 1.013E-01 % :CHARG: CLM CHARGE /ATOM 18.62575 DISTAN 2.758E-03 % :DIRA : |BROYD|= 1.217E-02 |PRATT|= 1.252E-03 ANGLE= 86.9 DEGREES:DIRP : |BROYD|= 1.775E-02 |PRATT|= 1.554E-03 ANGLE= 87.2 DEGREES:DIRB : |BROYD|= 1.822E-02 |PRATT|= 2.518E-03 ANGLE= 85.9 DEGREES:FRMS (mRyd/au) 1.606 :DRMS (au) 1.944E-03 :MAX (au) 4.490E-03:MIX : MSR1a REGULARIZATION: 3.50E-04 GREED: 0.121:ENE : ********** TOTAL ENERGY IN Ry = -135343.41926326
Practical Details (MSR1a)
Preconverge– PB, well– LDM, not so well
Edit case.inm (MSR1a in first line)
Run as normal (but check)
Perhaps use (see README.doc)echo 0.05 > .prattecho 0.10 > .msec
Performance
Typical convergence for an insulator
y = 0.4196e-0.0404x
1.E-04
1.E-03
1.E-02
1.E-01
1.E+000 50 100 150 200
Iteration
E-E l
ow
:WARN
Printed when:– Algorithm reduces the step as it is considered to be too
greedy– When the step is reduced as the RMT’s would overlap
Only the second is a concern, and then only if it occurs many times
Note: the algorithm (PORT too) can stagnate if the RMTs are too large (they are not as clever as you…)
Also, MSR1a is sensitive to how well posed is the physics (research ongoing), a good debugger…
Convergence of QN methods
Depends upon clustering of eigenvectors
Rationalization
E = -Gx + 1/2xTBx ; pick direction dE(d) = -(G.d) + 2/2{dTBd}
= (G.d)/{dTBd}
If B has eigenvalues/vectors i , vid= i vi ; dTBd = i i ; dominated by large iQN methods optimize largest eigenvalues first, then
smallestSimilar eigenvalues are optimized in parallelHolds (probably) for MSEC as well (hard to prove)
For a DFT problem
Energy minimization– Elastic Band Structure (similar to phonons, but no
mass)– Similar to phonons, only a limited number of bands
(depends on number of atom-atom bond types, not so much on number of atoms)
Fixed-Point Density Problem– Vertical Dielectric Band Structure– Will scale as number of distinctly different electronic
environments – similar to number of different atom types
Note:
If the “bonding” changes during optimization, H changes so the prior information is not so good
Metals have a richer Quasi-DBS, so may converge more slowly
Often need more k-points (math of this is not well developed)
Soft-modes converge last…be careful
If something goes wrong…
In most cases this is because:– The problem is poorly posed– Too few k-points– The structure is very far from equilibrium
So– Increase k-points– Maybe increase T (TEMPS), sometimes does
not work– Think
What not to do
Do not reduce the Greed below 0.05 (probably do not change it, or maybe 0.1)
MSEC/MSR1 are not the same as what is in other mixing algorithms in the literature, they are quite different
Supercells
(0,0,0) P 8 atoms (0,0,0) (.5,0,0) (.5,.5,0) (.5,.5,.5)(0,.5,0) (.5,0,.5)(0,0,.5) (0,.5,.5)
B 4 atoms yes yes no noF 2 atoms yes no no yes
4x4x4 supercells: P (64), B (32), F (16) atoms
supercells (1
2 atoms)
2x2x2 = 8 atoms
22 x
Supercells
Program „supercell“:
start with „small“ struct file
specify number of repetitions in x,y,z (only integers, e.g. 2x2x1)
specify P, B or F lattice
add „vacuum“ for surface slabs (only (001) indexed surfaces)
shift all atoms in cell
You must break symmetry!!!
replace (impurities, vacancies) or
displace (phonons) or
label (core-holes, specific magnetic order; change “Fe” to “Fe1”; this tells the symmetry-programs that Fe1 is NOT a Fe atom!!)
at least 1 atom
At present „supercell“ works only along unit-cell axes!!!
Structeditor (by R.Laskowski)
requires octave (matlab) and opendx (visualization)
allows complex operations on struct-files
Other methods
Cryscon (Shape Software), shareware, allows general transformation
Many, many other codes will handle CIF files, and then convert back using cif2struct
Excel (simple manipulations)
Note: x struct2cif converts the other direction (adequately)
Needed if you publish a structure (proper is to deposit this type of information; now required by Surface Science)
Calculating surfaces
n
Choose the functional (LDA, PBE, WC)n
Find the DFT equilibrium volume for the bulk, with similar RMT, RKMAX (may have to redo later)
n
Create the structure – supercell or other (e.g. Cryscon from Shape Software)
n
Look at it – you probably did something wrong!n
By hand (or using bond-valence sums) adjustn
Use the same density of k-points in reciprocal spacen
Avoid 1 k-point at gamma – often not very accuraten
Use a “big enough” cell
TiO2 c(2x2)
Electronic Entropy cannot be neglectedShifts O2 chemical potential by >1eVDominant stabilization term
PRL 100, 86102 (2008)
Comment: Constraints
n
Personally, I consider this a very bad idea unless there is a really good reason– Wien2k exploits symmetry, so use centro-symmetric
cells and do not terminate artificially– It is hard to ensure that this does not introduce more
artifacts– The problem now becomes a constrained optimization,
and these converge worse so in fact it will probably take longer even though there may be less movable atoms
Be careful
n
All software has bugs – by definitionn
Many surface calculations are at the limit of what can be done
n
Few computer codes will tell you “don’t do that you stupid #!?” – GIGO
n
Never assume theory (or experiment) is correctn
Think about what you are doing as computer experiments
n
Think science, not just typing at a terminal
The DFT is converged…publish?Alas, No
Some solutions are more equal than others
n
How do we know the model is correct?
Frequently models are proposed for surface structures, not rigorous crystallographic solutions
All models will refine to an improved fit, but this does not prove they are right
Only a few techniques can search configurational space to find the best fit
It is rarely plausible to test with DFT calculations all possible models
How accurate are DFT results?
n
DFT is an approximate theory, and the functionals used are far from perfect– How good are the atomic positions?– How good is the surface charge density?– How good is the relative positions of bands?– How good is the energy – exchange correllation
terms?
Errors in Energies
n
Calibrate your DFT– Benchmark energies for a know case using
more than one functional– Calculate energies for the surface using the
same functionals– Error in energies can be estimated– Typical numbers are 0.05-0.1 eV/1x1 surface
cell
Perovskite Surfaces
~43,000 articles on perovskites– ~21,000 on strontium titanate
637 articles on perovskite surface structures– 571 articles say what reconstruction is present
Almost none provide crystallographic solutions to surface structures
58
(001) (110) (111)
2x12x22x2 c4x2 c6x2 √5x√5√13x√13
3x14x15x16x11x4
3x34x45x56x69x9
SrTiO3 reconstructions
2x1
c4x2
Previously solvedTodaySoon
SrTiO3 (110): 900C in O2
40 nm
001
1x1
60
N. Erdman, PhD Thesis, 2002
Dark Field
1000 °C in flowing O2
DP’s from Arun
Subramanian
_(110)
(001)
1x1
61
3
1
Direct Methods
In diffraction experiments we measure intensities (phase information is lost):
If the phases were known we have scattering potential maps (electron diffraction)
Use Genetic Algorithm to search phase space and assign phases to beams Feasible
Solution
FT
FT-1
Fourier spaceconstraints (S2 )
Real spaceconstraints (S1 )
Observed Intensities(assigned phases)
(Genetic Algorithm)
Recovery Criterion
YES
NO
2)()( kFkI
))(exp()(.. kikFFS
L. D. Marks, W. Sinkler, and E. Landree, Acta Crystallogr. Sect. A 55, 601 (1999); L. D. Marks, Phys. Rev. B 60, 2771 (1999); L. D. Marks et al., Surf. Rev. Lett. 5, 1087 (1998).
Direct Methods Solution
63
Atomic Positions Refined
64
SrTiO3 (110) 3x1
TiO2 overall surface stoichiometry– Ti5 O7 atop O2 termination– Ti5 O13 atop SrTiO termination
Surface composed of corner sharing TiO4 tetrahedra– Arranged in rings of 6 or 8 tetrahedra– 4 corner share with bulk octahedra– 1 edge shares with bulk octahedron
Enterkin et. al., Nature Materials, 2010
Blue polyhedra are surface polyhedra, gold are bulk octahedra,
orange spheres Sr, blue spheres Ti, red spheres O
SrTiO3 (110) nx1
∞x1
66
2x1
3x1
4x1
5x1
6x1
Expansion to other nx1 by changing the number of TiO4 surface tetrahedra per ring
Intergrowths
STM with simulations (DFT)
Enterkin et. al., Nature Materials, 2010
4x1
3x1 3x1
6x15x16x1
4x14x15x1
Pauling’s Rules
1. A coordinated polyhedron of anions is formed about each cation, the cation-anion distance determined by the sum of ionic radii and the coordination number (C.N.) by the radius ratio.
2. An ionic structure will be stable to the extent that the sum of the strengths of the electrostatic bonds that reach an anion equal the charge on that anion.
The principles determining the structure of complex ionic crystals. J. Am. Chem. Soc. 51 (4): 1010–1026. 1929.
STO (110) Bond Valence SumsBond Valence Sr Half-O2 x1 6x1 5x1 4x1 3x1 2x1
Surf Ti(Sr) 1.88 3.83 3.41 3.87 3.93 3.99 4.06 4.02
Surf O 1.49- 1.94- 1.21- 1.88- 1.95- 1.99- 2.05- 2.07-
Sub-surf O 2.61- 1.88- 2.07- 2.02- 2.04- 2.05- 2.05- 1.94-Surface
Energy(eV per
1x1
unit)
X: TiO2
at Surface
SrO monolayerat Surface
TPSSh
Bulk: Sr2.1+Ti 4.1+O32.1-
Oxide Surfaces
God made the bulk; the surface was invented by the devil
Wolfgang Pauli
Maybe not so hard for oxide surfaces…but be careful!
Calculations of Phonons: The Direct Method
WIEN2k + Phonon
http://wolf.ifj.edu.pl/phonon/
Copyright by K.Parlinski
alternatively use D.Alfe`s PHON code +W2P-interface from G.Madsen(see www.wien2k.at/unsupported)
Supercell dynamical matrix. Exact wave vectors.
Conventional dynamical matrix:
Supercell dynamical matrix:
These two matrices are equal if
• interaction range is confined to interior of supercell (supercell is big enough)• wave vector is commensurate with the supercell and fulfils the condition (independent of interaction range):
At wave vectors ks the phonon frequencies are “exact”,provided the supercell contains the complete list ofneighbors. Wave vectors ks are commensurate with the supercell size.
1x1x1 2x2x2 3x3x3Exact wave vectors
X M
Exact: Exact:
X, M, R
Exact:
Phonon dispersions + density of states
Total + Germanium Total + Oxygen
GeO2 P4_2/mnm
Wave vector
Frequency
Thermodynamic functions of phonon vibrations
Internal energy:
Free energy:
Entropy:
Heat capacity Cv :
Thermal displacements:
PHONON-I
PHONON
by K.Parlinski (Crakow)
runs under MS-windows
uses a „direct“ method to calculate Force- constants with the help of an ab initio program
with these Force- constants phonons at arbitrary k-points can be obtained
Define your spacegroup
Define all atoms
http://wolf.ifj.edu.pl/phonon/
Phonons:
selects symmetry adapted atomic displacements (4 displacements in cubic perovskites)
(Displacement pattern for cubic perovskite)
select a supercell: (eg. 2x2x2 atom P-type cell)
calculate all forces for these displacements with high accuracy(WIEN2k)
force constants between all atoms in the supercell
dynamical matrix for arbitrary q-vectors
phonon-dispersion (“bandstructure”) using PHONON (K.Parlinski)
PHONON-II
Define an interaction range (supercell)
create displacement file
transfer case.d45 to Unix
Calculate forces for all required displacements
init_phonon_lapw
for each displacement a case_XX.struct file is generated in an extra directory
runs nn and lets you define RMT values like:
1.85 1-16
• init_lapw: either without symmetry (and then copies this setup to all case_XX) or with symmetry (must run init_lapw for all case_XX) (Do NOT use SGROUP)
• run_phonon: run_lapw –fc 0.1 –i 40 for each case_XX
PHONON-III
analyze_phonon_lapw
reads the forces of the scf runs
generates „Hellman-Feynman“ file case.dat and a „symmetrized HF- file case.dsy (when you have displacements in both directions)
check quality of forces:
sum Fx should be small (0)
abs(Fx ) should be similar for +/- displacements
transfer case.dat (dsy) to Windows
Import HF files to PHONON
Calculate force constants
Calculate phonons, analyze phonons eigenmodes, thermodynamic functions
Applications:
phonon frequencies (compare with IR, raman, neutrons)
identify dynamically unstable structures, describe phase transitions, find more stable (low T) phases.