Wien2k Usersguide
Wien2k Usersguide
Wien2k Usersguide
An Augmented Plane Wave Plus Local Orbitals Program for Calculating Crystal Properties
Peter Blaha Karlheinz Schwarz Georg Madsen Dieter Kvasnicka Joachim Luitz
Vienna University of Technology Inst. of Physical and Theoretical Chemistry Getreidemarkt 9/156, A-1060 Vienna/Austria
Peter Blaha, Karlheinz Schwarz, Georg K. H. Madsen, Dieter Kvasnicka, Joachim Luitz: WIEN2k An Augmented Plane Wave + Local Orbitals Program for Calculating Crystal Properties revised edition WIEN2k 08.3 (Release 18/9/2008) Univ. Prof. Dr. Karlheinz Schwarz Techn. Universit t Wien a Institut fur Physikalische und Theoretische Chemie Getreidemarkt 9/156 A-1060 Wien/Austria ISBN 3-9501031-1-2
ISBN 3-9501031-1-2
Contents
1 Introduction 1
I
2
5
7 7 8 8 9 10 13 13 14 15 15 16 16 18 20 21 21 21 21 24 26 26 27 28 29 29 29
Quick Start 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Naming conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting the server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Connecting to the w2web server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a new session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a new case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating the struct le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The SCF calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The case.scf le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.10 Saving a calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11 Calculating properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11.1 Electron density plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11.2 Density of States (DOS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11.3 X-ray spectra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11.4 Bandstructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11.5 Bandstructure with band character plotting / full lines . . . . . . . . . . . . . 3.11.6 Volume Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12 Setting up a new case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12.1 Manual setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12.2 Setting up a new case using w2web . . . . . . . . . . . . . . . . . . . . . . . . 3
II
4
31
33 33 37 38 41 43 43 45 45 45 46 47 47 51 51 51 52 52 54 54 55 55 55 56 56 56 56 56 57 57 58 58 58 58 58 59
Shell scripts 5.1 Job control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 5.1.2 5.1.3 5.2 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 Main execution script (x lapw) . . . . . . . . . . . . . . . . . . . . . . . . . . . Job control for initialization (init lapw) . . . . . . . . . . . . . . . . . . . . . . Job control for iteration (run lapw or runsp lapw) . . . . . . . . . . . . . . . . Save a calculation (save lapw) . . . . . . . . . . . . . . . . . . . . . . . . . . . Restoring a calculation (restore lapw) . . . . . . . . . . . . . . . . . . . . . . . Remove unnecessary les (clean lapw) . . . . . . . . . . . . . . . . . . . . . . Migrate a case to/from a remote computer (migrate lapw) . . . . . . . . . . . Generate case.inst (instgen lapw) . . . . . . . . . . . . . . . . . . . . . . . . . . Set R-MT values in your case.struct le (setrmt lapw) . . . . . . . . . . . . . . Check for running WIEN jobs (check lapw) . . . . . . . . . . . . . . . . . . . . Cancel (kill) running WIEN jobs (cancel lapw) . . . . . . . . . . . . . . . . . . Extract critical points from a Bader analysis (extractaim lapw) . . . . . . . . .
Utility scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.10 scfmonitor lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.11 analyse lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.12 Check parallel execution (testpara lapw) . . . . . . . . . . . . . . . . . . . . . 5.2.13 Check parallel execution of lapw1 (testpara1 lapw) . . . . . . . . . . . . . . . 5.2.14 Check parallel execution of lapw2 (testpara2 lapw) . . . . . . . . . . . . . . . 5.2.15 grepline lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.16 initso lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.17 vec2old lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.18 clmextrapol lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Structure optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 5.3.2 5.4 5.4.1 5.4.2 5.5 5.5.1 5.5.2 5.5.3 5.5.4 5.5.5 5.5.6 5.5.7 5.6 5.7 Lattice parameters (Volume, c/a, lattice parameters) . . . . . . . . . . . . . . . Minimization of internal parameters (min lapw) . . . . . . . . . . . . . . . . . init phonon lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . analyse phonon lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . k-Point Parallelization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MPI parallelization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How to use WIEN2k as a parallel program . . . . . . . . . . . . . . . . . . . . The .machines le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How the list of k-points is split . . . . . . . . . . . . . . . . . . . . . . . . . . . Flow chart of the parallel scripts . . . . . . . . . . . . . . . . . . . . . . . . . . On the ne grained parallelization . . . . . . . . . . . . . . . . . . . . . . . . .
59 59 59 60 63 63 63 63 64 64 64 65 66 67 67 69 69 69 70 70 70 70 70 70 71 71 73 73 73 74 74 74 74 75 75 75 75 77
Phonon calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Parallel Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Getting on-line help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interface scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7.1 5.7.2 5.7.3 5.7.4 5.7.5 5.7.6 5.7.7 5.7.8 5.7.9 eplot lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . parabolt lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dosplot lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dosplot2 lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Curve lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . specplot lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rhoplot lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . opticplot lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . addjoint-updn lapw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Initialization 6.1 6.2 6.3 6.4 NN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 6.2.1 6.3.1 6.4.1 6.4.2 6.4.3 6.5 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SGROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SYMMETRY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LSTART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
KGEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77 78 78 78 78 79 79 80 80 80 82 83 83 83 86 86 86 87 91 91 91 92 93 93 93 94 97 97 97 98 98 98 99 99 99
DSTART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LAPW0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1 7.1.2 7.1.3 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
MIXER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Analysis, Properties and Optimization 8.1 8.1.1 8.1.2 8.1.3 8.2 8.2.1 8.2.2 8.2.3 8.3 8.3.1 8.3.2 8.4 8.4.1 8.4.2 8.5 8.5.1 8.5.2 8.6 8.6.1 8.6.2 8.6.3 8.7 8.7.1 8.7.2 8.7.3 8.8 8.8.1 8.8.2 8.8.3 8.9 8.9.1 8.9.2 8.9.3
TETRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
QTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
SPAGHETTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
IRREP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
LAPW3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
LAPW5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
AIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
LAPW7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
FILTVEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.10.1 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 8.10.2 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 8.10.3 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 8.11 TELNES.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 8.11.1 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 8.11.2 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 8.12 BROADENING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 8.12.1 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 8.12.2 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 8.13 OPTIMIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 8.13.1 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 8.13.2 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 8.14 ELAST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 8.14.1 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 8.15 MINI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 8.15.1 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 8.15.2 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 8.15.3 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 8.16 OPTIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 8.16.1 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 8.16.2 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 8.16.3 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 8.17 JOINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 8.17.1 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 8.17.2 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 8.17.3 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 8.18 KRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 8.18.1 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 8.18.2 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 8.18.3 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 8.19 FSGEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 9 Utility Programs 9.1 9.2 9.1.1 9.2.1 9.2.2 9.2.3 147
symmetso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 pairhess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
9.3
afminput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 9.3.1 9.3.2 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
9.4
reformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 hex2rhomb and rhomb in5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 plane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 add columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 clminter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
9.10 eost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 9.11 eost6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 9.12 spacegroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 9.13 xyz2struct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 9.14 cif2struct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 9.15 struct2cif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 9.16 StructGen of w2web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 9.17 supercell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 9.17.1 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 9.18 structeditor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 9.18.1 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 9.19 Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 9.19.1 BALSAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 9.19.2 XCrysDen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 10 Examples 159
10.1 TiC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 10.2 FCC Nickel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 10.3 Rutile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 10.4 supercell calc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
III
163
165
11.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 11.2 Installation of WIEN2k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 11.2.1 Expanding the WIEN2k distribution . . . . . . . . . . . . . . . . . . . . . . . . 166
11.2.2 Site conguration for WIEN2k . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 11.2.3 User conguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 11.2.4 Performance and special considerations . . . . . . . . . . . . . . . . . . . . . . 168 11.2.5 Global dimensioning parameters . . . . . . . . . . . . . . . . . . . . . . . . . . 169 11.3 w2web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 11.3.1 General issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 11.3.2 How does w2web work? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 11.3.3 w2web-les in you home directory . . . . . . . . . . . . . . . . . . . . . . . . 170 11.3.4 The conguration le conf/w2web.conf . . . . . . . . . . . . . . . . . . . . . . 170 11.3.5 The password le conf/w2web.users . . . . . . . . . . . . . . . . . . . . . . . 171 11.3.6 Using the https-protocol with w2web . . . . . . . . . . . . . . . . . . . . . . . 171 11.4 Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 12 Trouble shooting 173
IV
Appendix
181
183
A.1 Rutile (T iO2 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 A.2 Si -phonon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 A.3 Trigonal Selenium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 B Periodic Table 187
List of Tables
4.1 4.2 4.3 4.4 6.6 Input and output les of init programs . . . . . . . . . . . . . . . . . . . . . . . . . . . Input and output les of utility programs . . . . . . . . . . . . . . . . . . . . . . . . . Input and output les of main programs in an SCF cycle . . . . . . . . . . . . . . . . Lattice type, description and bravais matrix used in WIEN2k . . . . . . . . . . . . . . Relativistic quantum numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 36 37 39 77
7.41 LM combinations of Cubic groups (3 (111)) direction, requires positive atomic index in case.struct. Terms that should be combined (Kara and Kurki-Suonio 81) must follow one another. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.42 LM combination and local coordinate system of non-cubic groups (requires negative atomic index in case.struct) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5
96 96
8.50 Quantum numbers of the core state involved in the x-ray spectra . . . . . . . . . . . 128
11
List of Figures
2.1 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Partitioning of the unit cell into atomic spheres (I) and an interstitial region (II) . . . TiC in the sodium chloride structure. This plot was generated using BALSAC (see 9.19.1). Interface programs between WIEN2k and BALSAC are available. . . . . . . Startup screen of w2web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Main window of w2web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . StructGen of w2web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . List of input les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Task Electron Density Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Electron density of TiC in (100) plane using Xcrysden . . . . . . . . . . . . . . . . . . Electron density of TiC in (100) plane . . . . . . . . . . . . . . . . . . . . . . . . . . . . Density of states of TiC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
14 15 16 17 20 22 23 24 25 25 26 27 28 28
3.11 Ti LIII spectrum of TiC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12 Bandstructure of TiC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.13 Bandstructure of TiC, showing t2g-character bands of Ti in character plotting mode . 3.14 Energy vs. volume curve for TiC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 4.2 5.1 5.2 7.1 9.1 Data ow during a SCF cycle (programX.def, case.struct, case.inX, case.outputX and optional les are omitted) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Program ow in WIEN2k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flow chart of lapw1para . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flow chart of lapw2para . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schematic dependence of DOS and ul (r, El ) on the energy . . . . . . . . . . . . . . .
34 44 67 68 89
13
DEFINITIONS:
In the following, the term the authors, refers to P. Blaha, K. Schwarz, G. K. H. Madsen, D. Kvasnicka and J. Luitz at the above address. Program shall mean that copyrighted APW+LO code (in source and object form) comprising the computer programs known as WIEN2k or the graphical user interface w2web.
ii
1 Introduction
The Linearized Augmented Plane Wave (LAPW) method has proven to be one of the most accurate methods for the computation of the electronic structure of solids within density functional theory. A full-potential LAPW-code for crystalline solids has been developed over a period of more than twenty years. A rst copyrighted version was called WIEN and it was published by P. Blaha, K. Schwarz, P. Sorantin, and S. B. Trickey, in Comput. Phys. Commun. 59, 399 (1990). In the following years signicantly improved and updated UNIX versions of the original WIENcode were developed, which were called WIEN93, WIEN95 and WIEN97. Now a new version, WIEN2k, is available, which is based on an alternative basis set. This allows a signicant improvement, especially in terms of speed, universality, user-friendliness and new features. WIEN2k is written in FORTRAN 90 and requires a UNIX operating system since the programs are linked together via C-shell scripts. It has been implemented successfully on the following computer systems: Pentium systems running under Linux, IBM RS6000, HP , SGI , Compac DEC Alpha, and SUN. It is expected to run on any modern UNIX (LINUX) system. Hardware requirements will change from case to case (small cases with 10 atoms per unit cell can be run on any Pentium PC with 128 Mb under Linux), but generally we recommend a powerful PC or workstation with at least 256 Mb (better 512 Mb or more) memory and 1 Gb (better a few Gb) of disk space. For coarse grain parallization on the k-point level, a cluster of PCs with a 100 Mb/s network is sufcient. Faster communication is recommended for the ne grain (single k-point) parallel version. In order to use all options and features (such as the new graphical user interface w2web or some of its plotting tools) the following public domain program packages in addition to a F90 compiler must be installed: perl 5 or higher (for w2web only) emacs or another editor of your choice ghostscript (with jpg support) gnuplot (with png support) www-browser pdf-reader (acroread,...) MPI+SCALAPACK (on parallel computers only) Usually these packages should be available on modern systems. If one of these packages is not available, it can either be installed from public domain sources (see Chapt. 11) or the corresponding conguration may be changed (e.g. using vi instead of emacs). None of the principal components of WIEN2k requires these packages, only for advanced features or w2web they are needed. WIEN2k has the following features that are new with respect to WIEN97: 1
CHAPTER 1. INTRODUCTION due to the new APW+lo basis set it is signicantly faster (up to an order of magnitude). Optimizations in the most time consuming parts of LAPW1 and LAPW2 have been made. iterative diagonalization (for cases with large matrices and few eigenvalues) beside the k-point parallelization (including heterogeneous workstation clusters) a ne grain parallelization based on MPI is also available. A new web-based graphical user interface w2web has been developed. It does NOT require an X-environment and thus WIEN2k can be controlled from (but not run on !) any WindowsPC. This should particularly help the novice to get acquainted with WIEN2k but it should be useful for the regular user as well. support for AFM and FSM calculations spin-orbit coupling, including a new p1/2 -LO for higher accuracy wavefunction plotting determination of irreducible representations elastic constants (cubic cases only) Topological analysis based on Baders atoms in molecules concept LDA+U, orbital polarization (OP), magnetic and electric elds Exact-exchange and Hybrid functionals inside spheres new PKZB and TPSS meta-GGA functionals
The development of WIEN2k was made possible by support from many sources. We try to give credit to all who have contributed. We hope not to have forgotten anyone who made an important contribution for the development or the improvement of the WIEN2k code. If we did, please let us know (we apologize and will correct it). The main developers in addition to the authors are the following groups: C. Ambrosch-Draxl (Univ. Graz, Austria) and her group, optics T. Charpin (Paris), elastic constants H. Hofstaetter and O.Koch (Vienna) iterative diagonalization K. Jorissen (Univ.Antwerp), C.Hebert (TU Wien), telnes2 R. Laskowski (TU Vienna), new mpi-parallelization, new dstart version L. Marks (Northwestern Univ.): speed-up, various optimizations, geometry optimization (PORT) and new mixer (MSEC1) R. Luke (Univ. Delaware): new mixer (MSEC1) P. Nov k and J. Kune (Prague), LDA+U, SO a s C. Persson (Uppsala), irreducible representations M. Schefer (Fritz Haber Inst., Berlin) and his group, forces, dstart, geometry optimization E. Sjostedt and L Nordstrom (Uppsala, Sweden), APW+lo J. Sofo and J. Fuhr (Barriloche), Bader analysis F. Tran (Vienna), Forces for orbital potential, Hybrid-Functionals B. Yanchitsky and A. Timoshevskii (Kiev), sgroup We want to thank those WIEN97 users, who reported bugs or made suggestions and thus contributed to new versions as well as persons who have made major contributions in the development of previous versions of the code: R. Augustyn (Vienna), U. Birkenheuer (Munich, wavefunction plotting), P. Blochl (IBM Zurich), F. Boucher (Nantes), A. Chizmeshsya (Arizona), R.Dohmen and J.Pichlmeier (RZG Garching, parallelization) P. Dufek (Vienna), H. Ebert (Munich), E. Engel (Frankfurt), H. Enkisch (Dortmund), M. F hnle (MPI Stuttgart), B. Harmon (Ames, Iowa), S. Kohlhammer a (Stuttgart), T. Kokalj (Ljubljana), H. Krimmel (Stuttgart), P. Louf (Vienna), I. Mazin (Washington), M. Nelhiebel (Vienna), V. Petricek (Prague), C. Rodrigues (La Plata, Argentina), P. Schattschneider (Vienna), R. Schmid (Frankfurt), D. Singh (Washington), H. Smolinski (Dortmund), T. Soldner (Leipzig), P. Sorantin (Vienna), S. Trickey (Gainesville), S. Wilke (Exxon, USA), B. Winkler (Kiel)
3 This work was supported by the following institutions: Austrian Science Foundation (FWF-Projects P5939, P7063, P8176, SFB08-11) Siemens Nixdorf (WIEN93) IBM (WIEN)
pblaha@theochem.tuwien.ac.at kschwarz@theochem.tuwien.ac.at
CHAPTER 1. INTRODUCTION
Part I
An efcient and accurate scheme for solving the many-electron problem of a crystal (with nuclei at xed positions) is the local spin density approximation (LSDA) within density functional theory (Hohenberg and Kohn 64, Kohn and Sham 65). Therein the key quantities are the spin densities (r) in terms of which the total energy is Etot ( , ) = Ts ( , ) + Eee ( , )+ EN e ( , ) + Exc ( , ) + EN N with EN N the repulsive Coulomb energy of the xed nuclei and the electronic contributions, labelled conventionally as, respectively, the kinetic energy (of the non-interacting particles), the electron-electron repulsion, nuclear-electron attraction, and exchange-correlation energies. Two approximations comprise the LSDA, i), the assumption that Exc can be written in terms of a local exchange-correlation energy density xc times the total (spin-up plus spin-down) electron density as Exc = xc ( , ) [ + ]dr (2.1)
and ii), the particular form chosen for that xc . Several forms exist in literature, we use the most recent and accurate t to the Monte-Carlo simulations of Ceperly and Alder by Perdew and Wang 92. Etot has a variational equivalent with the familiar Rayleigh-Ritz principle. The most effective way known to minimize Etot by means of the variational principle is to introduce orbitals ik constrained to construct the spin densities as (r) =
i,k
| (r)|2 ik ik
(2.2)
Here, the are occupation numbers such that 0 1/wk , where wk is the symmetry-required ik ik weight of point k. Then variation of Etot gives the Kohn-Sham equations (in Ry atomic units), [
2 + VN e + Vee + Vxc ] (r) = ik ik ik (r)
(2.3)
which must be solved and thus constitute the primary computational task. This Kohn-Sham equations must be solved self-consistently in an iterative process, since nding the Kohn-Sham orbitals requires the knowledge of the potentials which themselves depend on the (spin-) density and thus on the orbitals again. 7
Recent progress has been made going beyond the LSDA by adding gradient terms of the electron density to the exchange-correlation energy or its corresponding potential. This has led to the generalized gradient approximation (GGA) in various parameterizations, e.g. the one by Perdew et al 92 or Perdew, Burke and Ernzerhof (PBE) 96, which is the recommended option. A recent version called meta-GGA by Perdew et al (1999) and Tao et al. (2003) employes for the evaluation of the exchange-correlation energy not only the gradient of the density, but also the kinetic energy density (r). Unfortunately, such schemes are not yet self-consistent.
2.2
Recently, the development of the Augmented Plane Wave (APW) methods from Slaters APW, to LAPW and the new APW+lo was described by Schwarz et al. 2001.
2.2.1
The linearized augmented plane wave (LAPW) method is among the most accurate methods for performing electronic structure calculations for crystals. It is based on the density functional theory for the treatment of exchange and correlation and uses e.g. the local spin density approximation (LSDA). Several forms of LSDA potentials exist in the literature , but recent improvements using the generalized gradient approximation (GGA) are available too (see sec. 2.1). For valence states relativistic effects can be included either in a scalar relativistic treatment (Koelling and Harmon 77) or with the second variational method including spin-orbit coupling (Macdonald 80, Nov k 97). a Core states are treated fully relativistically (Desclaux 69). A description of this method to linearize Slaters old APW method (i.e. the LAPW formalism) and further programming hints are found in many references: Andersen 73, 75, Koelling 72, Koelling and Arbman 75, Wimmer et al. 81, Weinert 81, Weinert et al. 82, Blaha and Schwarz 83, Blaha et al. 85, Wei et al. 85, Mattheiss and Hamann 86, Jansen and Freeman 84, Schwarz and Blaha 96). An excellent book by D. Singh (Singh 94) describes all the details of the LAPW method and is highly recommended to the interested reader. Here only the basic ideas are summarized; details are left to those references. Like most energy-band methods, the LAPW method is a procedure for solving the Kohn-Sham equations for the ground state density, total energy, and (Kohn-Sham) eigenvalues (energy bands) of a many-electron system (here a crystal) by introducing a basis set which is especially adapted to the problem.
I II
Figure 2.1: Partitioning of the unit cell into atomic spheres (I) and an interstitial region (II) This adaptation is achieved by dividing the unit cell into (I) non-overlapping atomic spheres (centered at the atomic sites) and (II) an interstitial region. In the two types of regions different basis sets are used:
1. (I) inside atomic sphere t, of radius Rt , a linear combination of radial functions times spherical harmonics Ylm (r) is used (we omit the index t when it is clear from the context) kn = [Alm,kn ul (r, El ) + Blm,kn ul (r, El )]Ylm () r (2.4)
lm
where ul (r, El ) is the (at the origin) regular solution of the radial Schroedinger equation for energy El (chosen normally at the center of the corresponding band with l-like character) and the spherical part of the potential inside sphere t; ul (r, El ) is the energy derivative of ul evaluated at the same energy El . A linear combination of these two functions constitute the linearization of the radial function; the coefcients Alm and Blm are functions of kn (see below) determined by requiring that this basis function matches (in value and slope) each plane wave (PW) the corresponding basis function of the interstitial region; ul and ul are obtained by numerical integration of the radial Schroedinger equation on a radial mesh inside the sphere. 2. (II) in the interstitial region a plane wave expansion is used 1 (2.5) kn = eikn r where kn = k + Kn ; Kn are the reciprocal lattice vectors and k is the wave vector inside the rst Brillouin zone. Each plane wave is augmented by an atomic-like function in every atomic sphere. The solutions to the Kohn-Sham equations are expanded in this combined basis set of LAPWs according to the linear variation method k =
n
cn kn
(2.6)
and the coefcients cn are determined by the Rayleigh-Ritz variational principle. The convergence of this basis set is controlled by a cutoff parameter Rmt Kmax = 6 - 9, where Rmt is the smallest atomic sphere radius in the unit cell and Kmax is the magnitude of the largest K vector in equation (2.6). In order to improve upon the linearization (i.e. to increase the exibility of the basis) and to make possible a consistent treatment of semicore and valence states in one energy window (to ensure orthogonality) additional (kn independent) basis functions can be added. They are called local orbitals (LO) (Singh 91) and consist of a linear combination of 2 radial functions at 2 different energies (e.g. at the 3s and 4s energy) and one energy derivative (at one of these energies): LO = [Alm ul (r, E1,l ) + Blm ul (r, E1,l ) + Clm ul (r, E2,l )]Ylm () r lm (2.7)
The coefcients Alm , Blm and Clm are determined by the requirements that LO should be normalized and has zero value and slope at the sphere boundary.
2.2.2
Sjostedt, Nordstrom and Singh (2000) have shown that the standard LAPW method with the additional constraint on the PWs of matching in value AND slope to the solution inside the sphere is not the most efcient way to linearize Slaters APW method. It can be made much more efcient when one uses the standard APW basis, but of course with ul (r, El ) at a xed energy El in order to keep the linear eigenvalue problem. One then adds a new local orbital (lo) to have enough variational exibility in the radial basisfunctions: kn =
lm
(2.8)
This new lo (denoted with lower case to distinguish it from the LO given in equ. 2.7) looks almost like the old LAPW-basis set, but here the Alm and Blm do not depend on kn and are determined by the requirement that the lo is zero at the sphere boundary and normalized. Thus we construct basis functions that have kinks at the sphere boundary, which makes it necessary to include surface terms in the kinetic energy part of the Hamiltonian. Note, however, that the total wavefunction is of course smooth and differentiable. As shown by Madsen et al. (2001) this new scheme converges practically to identical results as the LAPW method, but allows to reduce RKmax by about one, leading to signicantly smaller basis sets (up to 50 %) and thus the corresponding computational time is drastically reduced (up to an order of magnitude). Within one calculation a mixed LAPW and APW+lo basis can be used for different atoms and even different l-values for the same atom (Madsen et al. 2001). In general one describes by APW+lo those orbitals which converge most slowly with the number of PWs (such as TM 3d states) or the atoms with a small sphere size, but the rest with ordinary LAPWs. One can also add a second LO at a different energy so that both, semicore and valence states, can be described simultaneously.
2.2.3
General considerations
In its general form the LAPW (APW+lo) method expands the potential in the following form
V (r) =
VK eiKr
outside sphere
(2.10)
and the charge densities analogously. Thus no shape approximations are made, a procedure frequently called a full-potential method. The mufn-tin approximation used in early band calculations corresponds to retaining only the l = 0 component in the rst expression of equ. 2.10 and only the K = 0 component in the second. This (much older) procedure corresponds to taking the spherical average inside the spheres and the volume average in the interstitial region. The total energy is computed according to Weinert et al. 82. Rydberg atomic units are used except internally in the atomic-like programs (LSTART and LCORE) or in subroutine outwin (LAPW1, LAPW2), where Hartree units are used. The output is always given in Rydberg units. The forces at the atoms are calculated according to Yu et al (91). For the implementation of this formalism in WIEN see Kohler et al (96) and Madsen et al. 2001. An alternative formulation by Soler and Williams (89) has also been tested and found to be equivalent, both in computationally efciency and numerical accuracy (Krimmel et al 94). The Fermi energy and the weights of each band state can be calculated using a modied tetrahe dron method (Blochl et al. 94), a Gaussian or a temperature broadening scheme. Spin-orbit interactions can be considered via a second variational step using the scalar-relativistic eigenfunctions as basis (see Macdonald 80, Singh 94 and Nov k 97). In order to overcome the proba lems due to the missing p1/2 radial basis function in the scalar-relativistic basis (which corresponds to p3/2 ), we have recently extended the standard LAPW basis by an additional p1/2 -local orbital, i.e. a LO with a p1/2 basis function, which is added in the second-variational SO calculation (Kune s et al. 2001).
11
It is well known that for localized electrons (like the 4f states in lanthanides or 3d states in some TM-oxides) the LDA (GGA) method is not accurate enough for a proper description. Thus we have implemented various forms of the LDA+U method as well as the Orbital polarization method (OP) (see Nov k 2001 and references therein). In addition you can also calculate exact-exchange a inside the spheres and apply various hybrid functionals (see Tran et al. 2006 for details). One can also consider interactions with an external magnetic (see Nov k 2001) or electric eld (via a a supercell approach, see Stahn et al. 2000). PROPERTIES: The density of states (DOS) can be calculated using the modied tetrahedron method of Blochl et al. 94. X-ray absorption and emission spectra are determined using Fermis golden rule and dipole matrix elements (between a core and valence or conduction band state respectively). (Neckel et al. 75, Schwarz et al 79,80) X-ray structure factors are obtained by Fourier Transformation of the charge density. Optical properties are obtained using the Joint density of states modied with the respective dipole matrix elements according to Ambrosch et al. 95, Abt et al. 94, Abt 97. and in particular Ambrosch 06. A Kramers-Kronig transformation is also possible. An analysis of the electron density according to Baders atoms in molecules theory can be made using a program by J. Sofo and J. Fuhr (2001)
12
3 Quick Start
Contents
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 Naming conventions . . . . . . . Starting the server . . . . . . . . . Connecting to the w2web server Creating a new session . . . . . . Creating a new case . . . . . . . . Creating the struct le . . . . . . Initialization . . . . . . . . . . . . The SCF calculation . . . . . . . . The case.scf le . . . . . . . . . . Saving a calculation . . . . . . . . Calculating properties . . . . . . Setting up a new case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 14 15 15 16 16 18 20 21 21 21 29
We assume that WIEN2k is properly installed and congured for your site and that you ran userconfig lapw to adjust your path and environment. (For a detailed description of the installation see chapter 11. This chapter is intended to guide the novice user in the handling of the program package. We will use the example of TiC in the sodium chloride structure to show which steps are necessary to initialize a calculation and run a self consistent eld cycle. We also demonstrate how to calculate various physical properties from these SCF data. Along the way we will give all important information in a very abridged form, so that the novice user is not ooded with information, and the experienced user will be directed to more complete information. In this chapter we will also show, how the new graphical user interface w2web can be utilized to setup and run the calculations.
3.1
Naming conventions
Before we begin with our introductory example, we describe the naming conventions, to which we will adhere throughout this users guide. On UNIX systems the les are specied by case.type and it is required that all les reside in a subdirectory ./case. Here and in the following sections and in the shell scripts which run the package themselves, we follow a simple, systematic convention for le labeling. For the general discussion (when no specic crystal is involved), we use case, while for a specic case, e.g. TiC, we use the following notation: 13
14
Figure 3.1: TiC in the sodium chloride structure. This plot was generated using BALSAC (see 9.19.1). Interface programs between WIEN2k and BALSAC are available.
case=TiC The letype type always describes the content of the le (e.g., type=inm is inPUT for mIXER). Thus the input to MIXER for TiC is found in the le TiC.inm which should be in subdirectory ./TiC.
3.2
Start the user interface w2web on the computer where you want to execute WIEN2k(you may have to telnet, ssh,.. to this machine) with the command w2web [-p xxxx] If the default port (7890) used to serve the interface is already in use by some other process, you will get the error message w2web failed to bind port 7890 - port already in use!. Then you will have to choose a different port number (between 1024 and 65536) . Please remember this port number, you need it when connecting to the w2web server. Note: Only user root can specify port numbers below 1024! At the rst startup of this server, you will also be asked to setup a username and password, which is required to connect to this server.
15
3.3
Use your favorite WWW-browser to connect to w2web, specifying the correct portnumber, e.g. netscape http://hostname where w2web runs:7890 (If you do not remember the portnumber, you can nd it by using ps -ef | grep w2web on the computer where w2web is running.) You should see a screen as in Fig.3.2.
3.4
The user interface w2web uses sessions to distinguish between different working environments and to quickly change between different calculations. First you have to create a new session (or select an old one). Enter TiC and click the Create button. Note: Creating a session does not automatically create a new directory! You will be placed in your home directory if no working directory was designated to this session previously (or if the directory does not exist any more).
16
3.5
Using Session Mgmt. change directory you can select an existing directory or create a new one. For this example create a new directory lapw and than TiC using the Create button. After the directory has been created, you have to click on select current directory to assign this newly created directory to the current session. After clicking on Click to restart session the main window of w2web will appear (Fig.3.3.
3.6
To create the le TiC.struct start the struct-le generator using Execution gure 3.4).
For a new case w2web creates an empty structure template in which you can specify structural data. Later on this information is used to generate the TiC.struct le. As a rst step specify the number of atoms (2 for TiC) and ll in the data given below into the corresponding elds (white boxes):
Title Lattice a b c , , Atom Atom TiC F (for face centered) 4.328 A(make sure the Ang button is selected) 4.328 A 4.328 A 90 Ti, enter position (0,0,0) C, enter position (.5,.5,.5)
Click Save Structure (Z will be updated automatically) and set automatically RMT and continue editing :
17
This will compute the nearest neigbor distances using the program nn and setrmt lapw will then determine the optimal RMT values (mufn-tin radius, atomic sphere radius). To learn more about the philosophy of setting RMTs see http : //www.wien2k.at/regu ser/f aq. Since it is essential to keep RMTs constant within a series of calculations (eg. when you do a Volume-optimization, see 3.11.6 ), you should already now decide whether you want to do just one single calculation with xed structural parameters, or whether you intend a relaxation of internal parameters (using forces and min lapw) or a volume optimization, which would required reduced RMT values. Choose a reduction of 3 % so that we can later optimize the lattice parameter.
Figure 3.4: StructGen of w2web When you are done, exit the StructGen with save le and clean up. This will generate the le TiC.struct (shown now in view-only mode with a different background color), which is the master input le for all subsequent programs. This step also automatically generates the input le for the free atom program lstart (atomic congurations) tic.inst.
You have to click on Save Structure after every modications you make in the white elds. Add/remove a position/atom only if you have made no other changes before. In a face-centered (body-centered) spacegroup you have to enter just one atom (not the ones in (.5,.5,0),. . . ). StructGen offers a built in calculator: Each position of equivalent atoms can be entered as a number, a fraction (e.g. 1/3) or a simple expression (e.g. 0.21 + 1/3). The rst position denes the variables x, y and z, which can be using in expression dening the other positions (e.g. y, x, z + 1/2). When you now choose Files tic.inst have been created. show all les, you will see, that both les tic.struct and
For a detailed description of these les consult sections 4.3 and 6.4.3.
3.7
After the two basic input les have been created, initalization of the calculation is done by Execution initialize calc.. This will guide you through the steps necessary to initialite the calculation. Simply follow the steps that are highlighted in green and follow the instructions. The initialization process is described in detail in section 5.1.2. Alternatively you could run the script init lapw from the command line. All actions of this script are logged in short in :log and in detail in the le case.dayfile, which can easily be accessed by Utils. show dayle. Initializing the calculation will run several steps automatically, where x is the script to start WIEN2k programs (see section: 5.1.1). x nn calculates the nearest neighbors up to a specied distance and thus helps to determine the atomic sphere radii (you must specify a distance factor f, e.g. 2, and all distances up to f * NN-dist. are calculated) view TiC.outputnn : check for overlapping spheres, coordination numbers and nearest neighbor distances, (e.g. in the sodium chloride structure there must 6 nearest and 12 next nearest neighbors). Using these distances and coordinations you can check whether you put the proper positions into your struct le or if you made a mistake. nn also checks whether your equivalent atoms are really crystallographically equivalent and eventually writes a new struct-le which you may or may not accept. If you have not done so at the very beginning, go back to StructGen and choose proper RMT values. You can save a lot of CPU-time by changing RMT to almost touching spheres. See Sec.4.3 x sgroup calculates the point and spacegroups for the given structure view TiC.outputsgroup : Now you can either accept the TiC.struct le generated by sgroup (if you want to use the spacegroup information or a different cell has been found by sgroup) or keep your original le (default). x symmetry generates from a raw case.struct le the space group symmetry operations, determines the point group of the individual atomic sites, generates the LM expansion for the lattice harmonics (in case.in2 st) and local rotation matrices (in case.struct st). view TiC.outputs : check the symmetry operations (they have been written to or compared with already available ones in TiC.struct by the program symmetry) and the point group symmetry of the atoms (You may compare them with the International Tables for X-Ray Crystallography). If the output does not match your expectations from the Tables, you might have made an error in specifying the positions. The TiC.struct le will be updated with
3.7. INITIALIZATION
19
symmetry operations, positive or negativ atomic counter (for cubic point group symmetries) and the local rotation matrix. x lstart generates atomic densities (see section 6.4) and determines how the orbitals are treated in the band structure calculations (i.e. as core or band states, with or without local orbitals, . . . ). You are requested to specify the desired exchange correlation potential and an energy that separates valence from core states. For TiC select the recommended potential option GGA of Perdew-Burke-Ernzerhof 96 and a separation energy of -6.0 Ry. edit TiC.outputst : check the output (did you specify a proper atomic conguration, did lstart converge, are the core electrons conned to the atomic sphere?). Warnings for the radial mesh can usually be neglected since it affects only the atomic total energy. lstart generates TiC.in0 st, in1 st, in2 st, inc st and inm. For Ti it selects automatically 1s, 2s, and 2p as core states, 3s and 3p will be treated with local orbitals together with 3d, 4s and 4p valence states. edit TiC.in1 st : As mentioned, the input les are generated automatically with some default values which should be a reasonable choice for most cases. Nevertheless we highly recommend that you go through these inputs and become familiar with them. The most important parameter here is RKMAX, which determines the number of basis functions (size of the matrices). Values between 5-9 (APW) and 6-10 (LAPW) are usually reasonable. You may change here the usage of APW or LAPW (set 1 or 0 after the CONT/STOP switch), since often APW is necessary only for orbitals more difcult to converge (3d, 4f). Here we will just change EMAX of the energy window from 1.5 to 2.0 Ry in order to be able to calculate the unoccupied DOS to higher energies. edit TiC.in2 st : Here you may limit the LM expansion (for some speedup), change the value of GMAX (in cases with small spheres (e.g. systems with H-atoms) values of 15-24 are recommended) or specify a different BZ-integration method to determine the Fermi energy. For this example you should not change anything so that you can compare your results with the test run. edit TiC.inm st : For difcult to converge systems (several atoms with localized d- or felectrons, magnetic systems) you should reduce the mixing factor from 0.4 to a smaller value (e.g. 0.05). (See our faq-page on www.wien2k.at what you should do when the scf cycle crashes). For TiC no changes are necessary. Copy all generated inputs (from case.in st to case.in*). In cases without inversion symmetry the les case.in1c, in2c are produced. x kgen generates a k-mesh in the Brillouin zone (BZ). You must specify the number of k-points in the whole BZ (use 1000 for comparison with the provided output, a good calculations needs many more). For details see section 6.5. view TiC.klist : check the number of k-points in the irreducible wedge of the BZ (IBZ) and the energy interval specied for the rst k-point. You can now either rerun kgen (and generate a different k-mesh) or continue. x dstart generates a starting density for the SCF cycle by superposition of atomic densities generated in lstart. For details see section 6.6. view TiC.outputd (check if gmax >gmin) Now you are asked , whether or not you want to run a spin-polarized calculation (in such a case case dstart is re-run to generate spin-densities). For TiC say No.
Alternatively, w2web provides an expert-mode, where some inputs can be specied right at the beginning and then the whole initialization runs at once. Please check carefully the STDOUTlisting and some output-les for possible errors or warnings!! Initialization of a calculation (running init lapw) will create all inputs for the subsequent SCF calculation choosing some default options and values. You can nd a list of input les using Files input les ( 3.5).
20
3.8
After the case has been set up, a link to run SCF is added, (Run Programs run SCF and you should invoke the self-consistency cycle (SCF). This runs the script run lapw with the desired options. The SCF cycle consists of the following steps: LAPW0 LAPW1 LAPW2 LCORE MIXER (POTENTIAL) generates potential from density (BANDS) calculates valence bands (eigenvalues and eigenvectors) (RHO) computes valence densities from eigenvectors computes core states and densities mixes input and output densities
After selecting run SCF from the Execution menu, the SCF-window will open, and you can now specify additional parameters. For this example we select charge convergence to 0.0001: Specify charge to be used as convergence criterion, and select a value of 0.0001 (-cc 0.0001). To run the SCF cycle, click on Run! Since this might take a long time for larger systems; you can specify the Execution type to be batch or submit (if your system is congured with a queuing system and w2web has been properly set up, see section 11.3). While the calculation is running (as indicated by the status frame in the top right corner of the window), you can monitor several quantities (see section 3.9). Once the calculation is nished (11 iterations), view case.dayfile for timing and errors and compare your results with the les in the provided example (TiC/case scf).
21
For magnetic systems you would run a spin-polarized calculation with the script runsp lapw. The program ow of such a calculation is described in section 4.5.2 and the script itself in section 5.1.3.
3.9
During the SCF cycle the essential data of each iteration are appended to the le case.scf, in our example TiC.scf. For an easier retrieval of certain quantities, the essential lines carry a label of the form :LABEL: which can be used to monitor these quantities during a SCF run. The information is retrieved using the UNIX grep command or using the Utils. analyze menu. While the SCF cycle of TiC is running try to monitor e.g. the total energy (label :ENE) or the charge distance (label :DIS). The calculation has converged, when the convergence criterion is met for three subsequent iterations (compare the charge distance in the example). For a detailed description of the various labels consult section 4.4.
3.10
Saving a calculation
Before you proceed to another calculation, you should save the results of the SCF-cycle with the save lapw command, which is also described in detail in section 5.2.1. This can also be done from the graphical user interface by choosing the Utils. save lapw menu. Save the result to this example under the name TiC scf. You can now improve your calculation and check the convergence of the most important parameters: increase RKMAX and GMAX in case.in1 and case.in2 increase the k-mesh with x kgen choose a different exchange-correlation potential in case.in0 Then just execute another run lapw using Execution run SCF.
3.11
Calculating properties
Once the SCF cycle has converged one can calculate various properties like Density of States (DOS), band structure, Optical properties or X-ray spectra. For the calculation of properties (which from now on will be called Tasks). We strongly encourage the user to utilize the user interface, w2web. This user interface automatically supplies input le templates and shows how to calculate the named properties on a step by step basis.
3.11.1
Select El. Dens. from the Tasks menu and click on the buttons one by one (see gure 3.6): The total charge density includes the Ti 3s and 3p states and the resulting density around Ti would be very large and dominated by these semicore states. To get a meaningful picture of the chemical bonding effects one must remove these states. Inspection of TiC.scf1 and TiC.scf2 should allow you to select an EMIN value to eliminate the Ti 3s and 3p semicore states.
22
Recalculate the valence density with EMIN=-1.0 to truncate Ti 3s and 3p (x lapw2). This is only possible, when you still have a valid TiC.vector le on a tetrahedral mesh. Select a plane and plot the density in the (100) plane of TiC. When XCRYSDEN is installed (for details see http://www.xcrysden.org/doc/wien.html), it will be offered automatically and provides a convenient way to specify a plane and create a colorful plot 3.7. Select 2D-plot Specify a resolution of 100 points (rst line) Select a plane by selecting 3 atoms and dene these 3 atoms by clicking on them. Choose rectangular parallelogram and enlarge the rectangular selection by 0.5 (for all 4 margins, then update the display) calculate the density and produce a nice contour plot: choose rainbow-colors, activate all display-option buttens, and choose in Ranges a smaller highest rendered value. Finally, use smaller spheres (pipe+ball display model) and thinner bonds (Modify/Ball-Stick-ratio). Alternatively, without XCRYSDEN, edit TiC.in5 and choose the offered template input le. To select the (100) plane for plotting specify the following input:
-1 -1 0 -1 3 0 3 -1 0 3 2 3 100 100 RHO ANG VAL 4 4 4 # # # # # origin of plot (x,y,z,denominator) x-end of plot y-end of plot x,y,z number of shells x, y plotting mesh, choose ratio similar to x,y length
NODEBUG
23
For a detailed description of input options consult section 8.6.3 Calculate electron density (x lapw5) Plot output (using rhoplot), after the rst preview select a range zmin=-0.5 to zmax=2
Compare the result with the electron density plotted in the (100) plane (see gure 3.8). The program gnuplot (public domain) must be installed on your computer. For more advanced graphics use your favorite plotting package or specify other options in gnuplot (see rhoplot lapw how gnuplot is called).
24
3.11.2
Select Density of States (DOS) from the Tasks menu and click on the buttons one by one: Calculate partial charges (x lapw2 -qtl). (This is only possible, when you still have a valid TiC.vector le on a tetrahedral mesh.) Edit TiC.int, choose the offered template input le and edit it to select: total DOS, Ti-d, Ti-deg , Ti-dt2g , C-s and C-p-like DOS.
TiC -0.50 6 0 1 1 1 2 2 0.00200 1 4 5 6 2 3 tot Ti d Ti eg Ti t2g C s C p 1.500 0.003 EMIN, DE, EMAX, Gauss-broadening NUMBER OF DOS-CASES (atom,case,description)
For a detailed description of input options consult section 8.1.3 Calculate DOS (x tetra). Preview output using dosplot If you want to use the supplied plotting interface dosplot2 to preview the results, the program gnuplot (public domain) must be installed on your computer. The calculated DOS can be compared with gures 3.9 and 3.10. Together with the electron density the partial DOS allows you to analyse the chemical bonding (covalency between T ideg and C p, non-bonding T i dt2g , charge transfer estimates,....)
25
26
3.11.3
X-ray spectra
Select X-Ray Spectra from the Tasks menu and click on the buttons one by one: Calculate partial charges (x lapw2 -qtl). This is only possible, when you still have a valid TiC.vector le on a tetrahedral mesh. To reproduce this gure you will have to increase the EMAX value in your TiC.in1 to 2.5 Ry and rerun x lapw1 Edit TiC.inxs; choose the offered template. This template will calculate the LIII spectrum of the rst atom (Ti in this example) in the energy range between -2 and 15 eV. For a detailed description of the contents of this input le refer to section 8.10.3. Calculate spectra Preview spectra If you want to use the supplied plotting interface specplot to preview the results, the public domain program gnuplot must be installed on your computer. The calculated TiC Ti-LIII -spectrum can be compared with gure 3.11.
3.11.4
Bandstructure
Select Bandstructure from the Tasks menu and click on the buttons one by one: from the template in Create the le TiC.klist band $WIENROOT/SRC templates/fcc.klist. (To calculate a bandstructure a special k-mesh along high symmetry directions is necessary. For a few crystal structures template les are supplied in the SRC-directory, you can also use XCRYSDEN (save it as xcrysden.klist) to generate a k-mesh or type in your own mesh. Calculate Eigenvalues using the -band switch (which changes lapw1.def such that the k-mesh is read from TiC.klist band and not from TiC.klist) Note: When you want to calculate DOS, charge densities or spectra after this bandstructure, you must rst recalculate the TiC.vector le using the tetrahedral k-mesh, because the k-mesh for the band structure plots is not suitable for calculations of such properties.
3.11. CALCULATING PROPERTIES Edit TiC.insp: insert the correct Fermi energy (which can be found in the saved scf-le) and specify plotting parameters. For comparison with gure 3.12 select an energy-range from -13 to 8 eV. Calculate Bandstructure (x spaghetti). Preview Bandstructure (needs ghostscript installed).
27
If you want to preview the bandstructure, the program ghostview (public domain) must be installed on your computer. You can compare your calculated bandstructure with gure 3.12.
tic atom 0
8.0 7.0 6.0 5.0 4.0 3.0 2.0 1.0 0.0
size 0.40
EF
Energy (eV)
-1.0 -2.0 -3.0 -4.0 -5.0 -6.0 -7.0 -8.0 -9.0 -10.0 -11.0 -12.0 -13.0
X Z W
3.11.5
Select again Bandstructure from the Tasks menu. We assume that you have already done the steps described in the previous section (generate TiC.klist band and x lapw1 -band). Calculate partial charges (x lapw2 -qtl -band) Note: You have to calculate the partial charges for the new special k-mesh specied above and cannot use the partial charges from the DOS calculation. Edit TiC.insp: insert the correct Fermi energy (same as before) and specify plotting parameters. For band character plotting (see gure 3.13) select line type = dots and jatom=1, jtype=6 and jsize=0.2 (in the last input line) to produce a character plot of the Ti t2g-like character bands. Calculate Bandstructure (x spaghetti) Preview Bandstructure To plot the bandstructure with full lines, calculate the irreducible representations with x irrep and select lines in case.insp. If you have case.irrep* or case.qtl* les from previous runs which do not t to the present case.output1 le, you may get errors while running spaghetti. In this case remove all case.irrep or case.qtl les. You can compare your results with gure 3.13.
28
tic atom 1D-t2g size 0.20
8.0 7.0 6.0 5.0 4.0 3.0 2.0 1.0 0.0
EF
Energy (eV)
-1.0 -2.0 -3.0 -4.0 -5.0 -6.0 -7.0 -8.0 -9.0 -10.0 -11.0 -12.0 -13.0
X Z W
Figure 3.13: Bandstructure of TiC, showing t2g-character bands of Ti in character plotting mode
3.11.6
Volume Optimization
Select Optimize (V,c/a) from the Execution menu. Setup the shell script optimize.job script using x optimize and volume variations of -10, -5, 0, +5 and +10%. Edit this le and uncomment the x dstart line (remove the # character). Then run the optimize.job. When the job has nished, you should click on Plot and then preview the energy curve. You should get an energy curve as in gure 3.14. On the screen you will nd the tting parameters for the equation of states (Murnaghan, Birch-Murnaghan and the EOS2 equation, see sec. 9.10). This information is also written to TiC.outputeos.
29
3.12
In order to setup a new case you need at least the following information: The lattice parameters (in Bohr or Angstroms) and angles, the lattice type (primitive, face-centered, hexagonal,...) or spacegroup, the position of all equivalent and inequivalent atoms in fractions of the unit cell. Alternatively with the new StructGen you can specify the spacegroup and only the inequivalent positions. The equivalent ones will be generated automatically. Usually this information can be collected from the International Tables of Crystallography once you know the space group, the Wyckoff position and the internal free coordinates.
3.12.1
Usually for a new case the input is not created from scratch, but one uses the struct le from a similar case as pattern. Change into the lapw subdirectory and proceed as follows: mkdir case new cd case new cp ../case old/case old.struct case new.struct Now edit case new.struct (see section 4.3) as necessary (Note: this is a xed formatted le, so all values must remain at their proper columns). Afterwards generate case new.inst using instgen lapw.
3.12.2
Use the menu Session Mgmt. change session of w2web to create a new session (enter the name of the new session and click on Create). Then you should also create a new directory and select it.. When you select Execution StructGen, you have several choices: You can just specify the number of non-equivalent atoms and a template le will be created. In StructGen you simply specify the lattice (type or spacegroup), cell parameters and name and positions of atoms. When you save le and clean up the new case.struct le and the case.inst le are created automatically. Alternatively, you can use cif2struct or xyz2struct to convert a cif, txt or xyz le into the WIEN2k case.struct le. Check page 154 for more info on the specic le formats. For more information on the StructGen refer to page 155.
30
Part II
31
4.1
Each program is started with (at least) one command line argument, e.g. programX programX.def in which the arguments species a lename, in which FORTRAN I/O units are connected to unix lenames. (See examples at specic programs). These def-les are generated automatically when the standard WIEN2k scripts x, init lapw or run lapw are used, but may be tailored by hand for special applications. Using the option x program -d a def-le can be created without running the program. In addition each program reads/writes the following les: case.struct a master input le, which is described below (Section 4.3) case.inX a specic input le, where X labels the program (see def-les for each program in chapter 6). case.outputX an output le The programs of the SCF cycle (see gure 4.1) write the following les: case.scfX a le containing only the most signicant output (see description below). program.error error report le, should be empty after successful completion of a program (see chapter 6) 33
34
clmcor LCORE scfc clmval vsp vector LAPW1 vns scf1 scf0 kgen scfm (old) broyd1 help3* MERGE scf MIXER broyd2 LAPW2 scf2 scfm (new) clmsum (new) clmsc
optional necessary
Figure 4.1: Data ow during a SCF cycle (programX.def, case.struct, case.inX, case.outputX and optional les are omitted)
clmsum (old)
LAPW0
35
The following tables describe input and output les for the initialization programs nn, sgroup, symmetry, lstart, kgen, dstart (table 4.1), the utility programs tetra, irrep, spaghetti, aim, lapw7, elnes, lapw3, lapw5, xspec, optic, joint, kram, optimize and mini (table 4.2) as well as for a SCF cycle of a non-spin-polarized case (table 4.2). Optional input and output les are used only if present in the respective case subdirectory or requested/generated by an input switch. The connection between FORTRAN units and lenames are dened in the respective programX.def les. The data ow is illustrated in Fig. 4.1.
program NN SGROUP SYMMETRY LSTART necessary nn.def case.struct case.struct symmetry.def case.struct lstart.def case.struct case.inst needs optional necessary case.outputnn generates optional case.struct nn case.struct sgroup case.struct st case.rspup case.rspdn case.vsp st case.vspdn st case.sigma
case.outputsgroup case.in2 st case.outputs case.in2 st case.outputst case.rsp case.in0 st case.in1 st case.in2 st case.inc st case.inm st case.inm restart case.outputkgen case.klist case.kgen case.outputd case.clmsum(up) dstart.error case.in0 std
KGEN DSTART
program SPAGHETTI
TETRA
LAPW3
LAPW5
XSPEC
OPTIC
JOINT
needs necessary optional spaghetti.def case.qtl case.insp case.outputso case.struct case.irrep case.output1 tetra.def case.int case.qtl case.kgen lapw3.def case.struct case.in2 case.clmsum lapw5.def case.sigma case.struct case.in5 case.clmval xspec.def case.inc case.int case.vsp case.struct case.qtl optic.def case.struct case.mat diag case.inop case.vsp case.vector joint.def case.injoint
generates necessary optional case.spaghetti ps case.spaghetti ene case.outputsp case.band.agr case.outputt case.dos1(2,3) case.dos1ev(1,2,3) case.output3 case.rho case.clmsum case.output5 case.rho case.outputx case.dos1ev case.xspec case.txspec case.m1 case.m2 case.outputop case.symmat case.rho.oned
case.coredens
case.outputjoint case.joint
36
case.struct case.kgen case.weight case.symmat case.mat diag kram.def case.inkram case.joint case.struct mini.def case.inM case.nM case.scf case.struct case.struct case.vector case.struct case.clmsum case.inaim case.struct case.vector case.in7 case.vsp case.struct case.vector case.inq case.vsp
case.epsilon case.sigmak case initial.struct case.scf mini case.tmpM case.constraint case.clmhist .min hess optimize.job case.outputM case.tmpM1 case.struct1 case.scf mini1 .minrestart case.outputirrep case.irrep case.outputaim case.surf case.output7 case.grid case.psink case.outputq case.qtl
case.eloss case.sumrules case vol xxxxx.struct case c/a xxxxx.struct case.clmsum inter
case.crit case.abc
QTL
program LAPW0 necessary lapw0.def case.struct case.in0 case.clmsum orb.def case.struct case.inorb case.dmat case.vsp lapw1.def case.struct case.in1 case.vsp case.klist lapwso.def case.struct case.inso case.in1 case.vector case.vsp case.vns case.energy lapw2.def case.struct case.in2 case.vector case.vsp case.energy lapwdm.def case.struct case.indm case.vector case.vsp case.weigh case.energy case.struct case.clmval
ORB
generates necessary optional case.output0 case.r2v case.scf0 case.vcoul case.vsp(up/dn) case.vtotal case.vns(up/dn) case.outputorb case.br1orb case.scforb case.br2orb case.vorb orb.error case.output1 case.scf1 case.vector case.energy case.vectorso case.outputso case.scfso case.energyso case.nsh(s) case.nmat only
LAPW1
LAPWSO
case.normso
LAPW2
LAPWDM
SUMPARA
case.scf2p
case.outputsum case.clmval
37
Table 4.3: Input and output les of main programs in an SCF cycle
4.2
In the following section the content of the (non-trivial) output les is described: case.almblm Contains the Alm , Blm , Clm coefcients of the wavefunctions (generated optional by lapw2). case.broydX Contains the charge density of previous iterations if you use Broydens method for mixing. They are removed when using save lapw. They should be removed by hand when calculational parameters (RKMAX, kmesh, . . . ) have been changed, or the calculation crashed due to a too large mixing and are restarted by using a new density generated by dstart. case.clmcor Contains the core charge density (as (r) = 4r2 (r) and has only a spherical part). In spin-polarized calculations two les case.clmcorup and case.clmcordn are used instead. case.clmsc Contains the semi-core charge density in a 2-window calculation, which is no longer recommended. In spin-polarized calculations two les are used instead: case.clmscup and case.clmscdn. case.clmsum Contains the total charge density in the lattice harmonics representation and as Fourier coefcients. (The LM=0,0 term is given as (r) = 4r2 (r), the others as r2 LM (r); suitable for generating electron density plots using lapw5 when the TOT-switch is set, (see section 8.6). In spin-polarized calculations two additional les case.clmup and case.clmdn contain the spin densities. Generated by dstart or mixer. case.clmval Contains the valence charge density as r2 LM (r); suitable for generating valence electron density plots using lapw5 when the VAL-switch is set, (see 8.6). In spin-polarized calculations two les case.clmvalup and case.clmvaldn are used instead. case.dmatup/dn Contains the density matrix generated by lapwdm for LDA+U, OP or HybridDFT calculations. case.dosX Contains the density of states (states/Ry) and corresponding energy (in Ry at the internal energy scale) generated by tetra. X can be 1-3. Additional les case.dosXev contain the DOS in (states/eV) and the energy in eV with respect to EF. case.help03X Contains eigenvalues and partial charges for atom number X. case.kgen This le contains the indices of the tetrahedra in terms of the list of k-points. It is used in lapw2 (if EFMOD switch in case.in2 is set to TETRA, see 7.5.3) and in tetra. case.klist This le contains a list of k-points in the rst BZ and represents a tetrahedral (special point) mesh. It is generated in kgen and can either be inserted into the case.in1 le or used directly in kgen. case.qtl Contains eigenvalues and corresponding partial charges (bandwise) in a form suitable for tetra and band structure plots with band character. The decomposition of these charges is controlled by ISPLIT in case.struct. case.radwf Contains the radial basis functions inside spheres (generated optional by lapw2). case.rho Contains the electron densities on a grid in a specied plane generated by lapw5. This le can be used as input for your favorite contour or 3D plotting program.
38
case.rsp Contains the atomic densities generated by lstart. They are used by dstart to generate a rst crystalline density (case.clmsum). case.r2v Contains the exchange potential (in the lattice harmonics representation as r2 VLM (r) and as Fourier coefcients) in a form suitable for plotting with lapw5. case.scf mini Contains the last scf-iteration of each individual time (geometry) step during a structural minimization using mini. Thus this le contains a complete history of properties (energy, forces, positions) during a structural minimization. case.sigma Contains the atomic densities for those states with a P in case.inst. Generated in lstart and used for difference densities in lapw5. case.spaghetti ps A ps le with the energy bandstructure plot generated by spaghetti. case.band.agr A xmgrace le with the energy bandstructure plot generated by spaghetti. case.vcoul Contains the Coulomb potential (in the lattice harmonics representation as r2 VLM (r) and as Fourier coefcients) in a form suitable for plotting with lapw5. case.vorb Contains the orbital potential (in Ry) generated by orb for LDA+U or hybrid-DFT calculations in form of a (2l+1,2l+1) matrix. case.vtotal Contains the total potential (in the lattice harmonics representation as r2 VLM (r) and as Fourier coefcients) in a form suitable for plotting with lapw5. case.vector Binary le, contains the eigenvalues and eigenvectors of all k-points calculated in lapw1. In spin-polarized calculations two les case.vectorup and case.vectordn are used instead. lapwso generates case.vectorso. case.energy Contains the eigenvalues of all k-points calculated in lapw1. In spin-polarized calculations two les case.vectorup and case.vectordn are used instead. lapwso generates case.energyso. case.vns Contains the non-spherical part of the total potential V. Inside the sphere the radial coefcients of the lattice harmonics representation are listed (for L greater than 0), while for the interstitial region the reanalyzed Fourier coefcients are given (see equ. (2.10)). In spinpolarized calculations two les case.vnsup and case.vnsdn are used instead. case.vorbup/dn Contains the orbital dependent part of the potential in LDA+U, OP or HybridDFT calculations. Generated in orb, used in lapw1. case.vsp Contains the spherical part of the total potential V stored as r V (thus the rst values should be close to 2 Z). In spin-polarized calculations two les case.vspup and case.vspdn are used instead.
4.3
The le case.struct denes the structure and is the main input le used in all programs. We provide several examples in the subdirectory example struct file If you are using the Struct Generator from the graphical user interface w2web, you dont have to bother with this le directly! However, the description of the elds of the input mask can be found here. Note: If you are changing this le manually, please note that this is a formatted le and the proper column positions of the characters are important! Use REPLACE instead of DELETE and INSERT during edit! We start the description of this le with an abridged example for rutile TiO2 (adding line numbers):
--------------------- top of file ---------------------line Titaniumdioxide TiO2 (rutile): u=0.305 P LATTICE,NONEQUIV. ATOMS 2 MODE OF CALC=RELA 8.6817500 8.6817500 5.5916100 90. 90. 90. ATOM -1: X= 0.0000000 Y= 0.0000000 Z= 0.0000000 # 1 2 3 4 5
39
Table 4.4: Lattice type, description and bravais matrix used in WIEN2k
line 1: format (A80) title (compound) line 2: format (A4,23X,I3) lattice type, NAT lattice type NAT line 3: format (13X,A4) mode RELA NREL line 4: format (6F10.6) a, b, c, , , fully relativistic core and scalar relativistic valence non-relativistic calculation as dened in table 4.4. For denitions of the triclinic lattice see SRC nn/dirlat.f number of inequivalent atoms in the unit cell
40
a, b, c
, ,
line 5: format (4X,I4,4X,F10.8,3X,F10.8,3X,F10.8) atom-index, x, y, z atomindex running index for inequivalent atoms positive in case of cubic symmetry negative for non-cubic symmetry this is set automatically using symmetry position of atom in internal units, i.e. as positive fractions of unit cell parameters. (0 x 1; the positions in the unit cell are consistent with the convention used in the International Tables of Crystallography 64. In face- (body-) centered structures only one of four (two) atoms must be given, eg. in Fm3m position 8c is specied with 0.25, 0.25, 0.25 and .75, 0.75, 0.75). For R lattice use rhombohedral coordinates. (To convert from hexagonal into rhombohedral coordinates use the auxiliary program hex2rhomb, which can be found in Run Programs Other Goodies from w2web): 0 1 0 1 0 Xortho = Xhex @ 23 1 0 A 2 0 0 1 0 1 1 2 1
3 3 3
x,y,z
Xrhomb
= Xortho @ 1 1
1 1
0 A 1
line 6: format (15X,I2,17X,I2) multiplicity, isplit multiplicity isplit number of equivalent atoms of this kind this is just an output-option and is used to specify the decomposition of the lm-like charges into irreducible representations, useful for interpretation in case.qtl). This parameter is automatically set by symmetry: no split of l-like charge p-z, (p-x, p-y) e.g.:hcp e-g, t-2g of d-electrons e.g.:cubic d-z2, (d-xy,d-x2y2), (d-xz,dyz) e.g.:hcp combining option 1 and 3 e.g.:hcp all d symmetries separate all p symmetries separate combining option 5 and 6 d-z2, d-x2y2, d-xy, (d-xz,d-yz) split lm like charges (for telnes) calculate cross-terms (for telnes)
0 1 2 3 4 5 6 8 -2 88 99
>>>: line 5 must now be repeated MULT-1 times for the other positions of each equivalent atom according to the Wyckoff position in the International Tables of Crystallography. line 7: format (A10,5X,I5,5X,F10.8,5X,F10.5,5X,F5.2) name of atom, NPT, R0, RMT, Z
41
R0 RMT
line 8-10: format (20X,3F10.7) ROTLOC local rotation matrix (always in an orthogonal coordinate system). Transforms the global coordinate system (of the unit cell) into the local at the given atomic site as required by point group symmetry (see in the INPUT-Section 7.5.3 of LAPW2). SYMMETRY calculates the point group symmetry and determines ROTLOC automatically. Note, that a proper ROTLOC is required, if the LM values generated by SYMMETRY are used. A more detailed description with several examples is given in the appendix A and sec. 10.3
>>>: lines 5 thru 10 must be repeated for each inequivalent atom line 11: format (I4) nsym number of symmetry operations of space group (see International Tables of Crystallography 64) If nsym is set to zero, the symmetry operations will be generated automatically by SYMMETRY.
line 12-14: format (3I2,F10.7) matrix, tau (as listed in the International Tables of Crystallography 64) matrix tau matrix representation of (space group) symmetry operation non-primitive translation vector
line 15: format (I8) index of symmetry operation specied above >>>: lines 12 thru 15 must be repeated for all other symmetry operations (the complete list is contained in sample inputs)
4.4
During the self-consistent eld (SCF) cycle the essential data are appended to the le case.scf in order to generate a summary of previous iterations. For an easier retrieval of certain quantities the essential lines are labeled with :LABEL:, which can be used to monitor these quantities during self-consistency as explained below. The most important :LABELs are
42
:ENE :DIS :FER :FORxx :FGLxx :DTOxx :CTOxx :NTOxx :QTLxx :EPLxx :EPHxx :EFGxx :ETAxx :RTOxx :VZERO
One can monitor the energy eigenvalues (listed for the rst k-point only), the Fermi-energy or the total energy. Often the electronic charges per atom reect the convergence. Charge transfer between the various atomic spheres is a typical process during the SCF cycles: large oscillations should be avoided by using a smaller mixing parameter; monotonic changes in one direction suggest a larger mixing parameter. In spin-polarized calculations the magnetic moment per atomic site is an additional crucial quantity which could be used as convergence criterion. If a system has electric eld gradients and one is interested in that quantity, one should monitor the EFGs, because these are very sensitive quantities. It is best to monitor several quantities, because often one quantity is converged, while another still changes from iteration to iteration. The script run lapw has three different convergence criteria built in, namely the total energy, the atomic forces and the charge distance (see 5.1.2, 5.1.3).
4.5. FLOW OF PROGRAMS We recommend the use of UNIX commands like : grep :ENE case.scf or use Analysis from w2web for monitoring such quantities.
43
You may dene an alias for this (see sec. 11.2), and a csh-script grepline lapw is also available to get a quantity from several scf-les simultaneously (sec. 5.2.15 and 5.3).
4.5
Flow of programs
The WIEN2k package consists of several independent programs which are linked via C-SHELL SCRIPTS described below. The ow and usage of the different programs is illustrated in the following diagram (Fig. 4.2): The initialization consists of running a series of small auxiliary programs, which generates the inputs for the main programs. One starts in the respective case/ subdirectory and denes the structure in case.struct (see 4.3). The initialization can be invoked by the script init lapw (see sec. 3.7 and 5.1.2), and consists of running:
NN a program which lists the nearest neighbor distances up to a specied limit (dened by a distance factor f) and thus helps to determine the atomic sphere radii. In addition it is a very usefull additional check of your case.struct le (equivalency of atoms) SGROUP determines the spacegroup of the structure dened in your case.struct le. SYMMETRY generates from a raw case.struct le the space group symmetry operations, determines the point group of the individual atomic sites, generates the LM expansion for the lattice harmonics and determines the local rotation matrices. LSTART generates free atomic densities and determines how the different orbitals are treated in the band structure calculations (i.e. as core or band states, with or without local orbitals,. . . ). KGEN generates a k-mesh in the irreducible part of the BZ. DSTART generates a starting density for the scf cycle by a superposition of atomic densities generated in LSTART.
Then a self-consistency cycle is initiated and repeated until convergence criteria are met (see 3.8 and 5.1.3). This cycle can be invoked with a script run lapw, and consists of the following steps:
LAPW0 LAPW1 LAPW2 LCORE MIXER (POTENTIAL) generates potential from density (BANDS) calculates valence bands (eigenvalues and eigenvectors) (RHO) computes valence densities from eigenvectors computes core states and densities mixes input and output densities
4.5.1
In many cases it is desirable to distinguish three types of electronic states, namely core, semi-core and valence states. For example titanium has core (1s, 2s, 2p), semi-core (3s, 3p) and valence (3d, 4s, 4p) states. In our denition core states are only those whose charge is entirely conned inside the corresponding atomic sphere. They are deep in energy, e.g., more than 7-10 Ry below the Fermi energy. Semi-core states lie high enough in energy (between about 1 and 7 Ry below the Fermi energy), so that their charge is no longer completely conned inside the atomic sphere, but has a few percent outside the sphere. Valence states are energetically the highest (occupied) states and always have a signicant amount of charge outside the spheres.
44
input files
LAPW0
2
VC = 8 VXC ( )
Poisson LDA
V= VC + VXC
V LAPW1 Ek
2
+V
k = Ek k k
no
45
The energy cut-off specied in lstart during init lapw (usually -6.0 Ry) denes the separation into core- and band-states (the latter contain both, semicore and valence). If a system has atoms with semi-core states, then the best way to treat them is with local orbitals, an extension of the usual LAPW basis. An input for such a basis set will be generated automatically. (Additional LOs can also be used for valence states which have a strong variation of their radial wavefunctions with energy (e.g. d states in TM compounds) to improve the quality of the basis set, i.e. to go beyond the simple linearization).
4.5.2
Spin-polarized calculation
For magnetic systems spin-polarized calculations can be performed. In such a case some steps are done for spin-up and spin-down electrons separately and the script runsp lapw consists of the following steps: LAPW0 (POTENTIAL) generates potential from density LAPW1 -up (BANDS) calculates valence bands for spin-up electrons LAPW1 -dn (BANDS) calculates valence bands for spin-down electrons LAPW2 -up (RHO) computes valence densities for spin-up electrons LAPW2 -dn (RHO) computes valence densities for spin-down electrons LCORE -up computes core states and densities for spin-up electrons LCORE -dn computes core states and densities for spin-down electrons MIXER mixes input and output densities The use of spin-polarized calculations is illustrated for fcc Ni (section 10.2), one of the test cases provided in the WIEN2k package.
4.5.3
Using the script runfsm lapw -m XX it is possible to constrain the total spin magnetic moment per unit cell to a xed value XX and thus force a particular ferromagnetic solution (which may not correspond to the equillibrium). This is particularly useful for systems with several metastable (non-) magnetic solutions, where conventional spin-polarized calculation would not converge or the solution may depend on the starting density. Additional SO-interaction is not supported. Please note, that once runfsm lapw has nished, only case.vectordn is ok, but case.vectorup is NOT the proper up-spin vector and MUST NOT be used for the calculations of QTLs (and DOS). It must be regenerated by x lapw1 -up (see also the comments for iterative diagonalization in section 5.2.17).
4.5.4
Several considerations are necessary, when you want to perform an AFM calculation. Please have also a look into $WIENROOT/SRC afminput/afminput test. Create a struct le of the non-magnetic (or ferro-magnetic) supergroup (run init lapw up to lstart). Name it case.struct supergroup. (For example for bcc Cr, this would be a struct le with the ordinary cubic lattice parameters, B type lattice and just one Cr at (0,0,0).) Next construct a unit cell which allows the desired AF ordering. For example for bcc Cr you must select a P lattice and specify both atoms, Cr1 at (0,0,0) and Cr2 at (.5,.5,.5), corresponding to a CsCl structure. Note, that it is important to label the two Cr atoms with Cr1 and Cr2, since only then the symmetry programs can detect that those atoms should be different (although they have the same Z). If sgroup has interchanged some axis, try to undo these changes, since afminput may not properly nd the correct symmetry operations in such a case.
46
CHAPTER 4. FILES AND PROGRAM FLOW Edit case.inst and ip the spin of one of the AF atoms (i.e. invert the spin up and dn occupation numbers). In addition you should set a zero moment (identical spin up and dn occupations) for all non-magnetic atoms. Run init lapw. At the end AFMINPUT creates an input le for the program CLMCOPY. Depending on the presence of case.struct supergroup and the specic symmetry it may/may not ask you to supply a symmetry operation/nonprimitive translation (see Sect. 9.3 . Run runafm lapw. This script calls LAPW1 and LAPW2 only for spin-up but the corresponding spin-dn density is created by CLMCOPY according to the rules dened during initialization. This reduces the required cpu time by a factor of 2 (and in addition the scf cycle is much more stable). It is highly recommended that you save your work (save lapw) and check the results by continuing with a regular runsp lapw. If nothing changes (E-tot and other properties), then you are ok, otherwise make sure the scf calculation is well converged (-cc 0.0001 or better). Eventually the system may not want to be antiferromagnetic (but for instance it is ferrimagnetic!).
runafm lapw saves you more than a factor of 2 in in computer time, since only spin-up is calculated and in addition the scf-convergence may be MUCH faster. It works also with LDA+U (case.dmatup/dn are also copied), but does NOT work with Hybrid-DFT nor spin-orbit coupling, since this requires the presence of both vector les in the LAPWSO step.
4.5.5
Spin-orbit interaction
You can add spin-orbit interaction in LAPWSO (called directly after LAPW1) using a secondvariational method with the scalar-relativistic orbitals (from LAPW1) as basis. The number of eigenvalues will double since SO couples spin-up and dn states, so they are no longer separable. In addition, LOs with a p1/2 radial basis can be added. (Kunes et al. 2001) To assist with the generation of the necessary input les and possible changes in symmetry, a script initso lapw exists. For non-spinpolarized cases nothing particular must be taken into account and SO can be easily applied by running run lapw -so. It will automatically use the complex version of LAPW2. However, for spin-polarized cases, the SO interaction may change (lower) the symmetry depending on how you choose the direction of magnetization and care must be taken to get a proper setup. initso lapw together with symmetso generates the proper symmetry. Just a few hints what can happen: Suppose you have a cubic system and put the magnetization along [001]. This will create a tetragonal symmetry (and you can temporarely tell this to the initialization programs by changing the respective lattice parameter c to a tetragonal system). If you put the magnetization along [111], this creates most likely a rhombohedral (or hexagonal) symmetry. (Try to visualize this for a fcc lattice, XCRYSDEN is very usefull for this purpose). Symmetry operations can be classied into operations which invert the magnetization,others which leave it unchanged and some which do some arbitrary rotation. The program symmetso (part of initso lapw) sorts these operations in the proper way. If you dont have inversion symmetry in the original structure, you must not add inversion in KGEN. The recommended way to include SO in the calculations is to run a regular scf calculation rst, save the results, initialize SO and run another scf cycle including SO:
4.5. FLOW OF PROGRAMS run[sp] lapw save lapw case nrel initso lapw run[sp] lapw -so
47
For spin-polarized systems you may want to add the -dm switch to calculate also the orbital magnetic moment.
4.5.6
Orbital potentials
In WIEN2kit is possible to go beyond standard LDA (GGA) and include orbital dependent potentials in methods like LDA+U or the Orbital-Polarization, which are very usefull for strongly correlated systems. To use these features you need to create input-les for LAPWDM and ORB (case.indm, case.inorb). You may copy a template from SRC templates, but must modify it according to your needs. In particular you must select for which atoms and which orbitals (usually d-Orbitals of late transition metal atoms or f-orbitals for 4f/5f atoms) you want to add such a potential and also choose the proper U and J values for them. Once this is done, you can include this using the -orb switch. The density matrix (case.dmatup/dn) will be calculated after lapw2 in lapwdm, it will be mixed in mixer (consistently with the regular charge density) and the orbital dependend potentials will be calculated on orb (after lapw0). Note, you must run spin-polarized in order to use orbital potentials. runsp lapw -orb [-so] If you want to force a non-magnetic solution you can constrain the spin-polarization to zero using runsp c lapw. Without SO, case.vorbup/dn will be considered in LAPW1(c). With SO, it will be applied in LAPWSO (and allows coupling of nondiagonal spin-terms).
4.5.7
In WIEN2kit is also possible to go beyond standard LDA (GGA) and include on-site exact-exchange (Hartree-Fock), which is very usefull for strongly correlated systems. The exact-exchange/hybrid methods are implemented only inside the atomic spheres, therefore it is recommended to us them only for localized electrons (see Tran et al. 2006 for details). They will NOT improve gaps in spsemiconductors. Examples of implemented functionals include: LDA-Hartree-Fock Functional 5 in case.in0. mode = EECE and fraction = 1 in case.ineece. LDA-HF [] = E LDA [] + E HF [ LDA Exc corr ] Exc [corr ] xc x LDA-Fock- Functional 5 in case.in0. mode = HYBR and fraction = in case.ineece. LDA-Fock- [] = E LDA [] + E HF [ LDA [ Exc corr ] Ex corr ] xc x
48
CHAPTER 4. FILES AND PROGRAM FLOW PBE-Fock- Functional 13 in case.in0. mode = HYBR and fraction = in case.ineece. PBE-Fock- [] = E PBE [] + E HF [ PBE Exc corr ] Ex [corr ] xc x The PBE0 functional corresponds to = 0.25. TPSS-H-Fock- Functional 27 in case.in0. mode = HYBR and fraction = in case.ineece. TPSS-H-Fock- [] = E TPSS [] + E HF [ TPSS [ Exc corr ] Ex corr ] xc x It is similar to PBE0, but uses the meta-GGA TPSS. B3PW91 Functional 18 in case.in0. mode = HYBR and fraction = 0.2 in case.ineece. B3PW91 [] Exc LDA HF LDA [ = Exc [] + 0.2 Ex [corr ] Ex corr ] B88 LDA [] +0.72 Ex [] Ex PW91 [] E LDA [] +0.81 Ec c
In addition to the input les which are necessary for an usual LDA or GGA calculation, the input le case.ineece is necessary to start a calculation. You may copy a template from SRC templates, but must modify it according to your needs. In particular you must select for which atoms and which orbitals (usually d-Orbitals of late transition metal atoms or f-orbitals for 4f/5f atoms) you want to add such a potential and which type of functional you want to use. A sample input for calculations with exact exchange is given below. ------------------ top of file: case.ineece -----------9.0 2 emin, natorb 1 1 2 1st atom index, nlorb, lorb 2 1 2 2nd atom index, nlorb, lorb HYBR HYBR / EECE mode 0.25 fraction of exact exchange ------------------ bottom of file --------------------Interpretive comments on this le are as follows: line 1: free format emin, natom emin natorb lower energy cutoff, to be selected so that the energy of correlated states is larger than emin number of atoms for which the exact exchange is calculated
line 2: free format iatom(i), nlorb(i), (lorb(li,i), li=1,nlorb(i)) iatom nlorb lorb index of atom in struct le number of orbital moments for which exact exchange shall be calculated orbital numbers (repeated nlorb-times)
4.5. FLOW OF PROGRAMS line 3: free format mode HYBR EECE means that LDA/GGA exchange will be replaced by exact exchange means that LDA/GGA exchange-correlation will be replaced by exact exchange
49
line 4: free format alpha This is the fraction of Hartree-Fock exchange (between 0 and 1)
As with LDA+U , hybrid functionals can be used only for spin-polarized calculations (runsp lapw with the switch -eece). runsp lapw will internally call runeece lapw, which will create all necessary additional input les: case.indm (case.indmc), case.inorb, case.in0eece, case.in2eece (case.in2ceece) and once this is done, calculates in a series of lapw2/lapwdm/lapw0/orb calculations the corresponding orbital dependend potentials. runsp lapw -eece [-so]
50
5.1
In order to run WIEN2k several c-shell scripts are provided which link the individual programs to specic tasks. All available (user-callable) commands have the ending lapw so you can easily get a list of all commands using ls $WIENROOT/ lapw in the directory of the WIEN2k executables. (Note: all of the more important commands have a link to a short name omitting lapw.) All these commands have at least one option, -h, which will print a small help indicating purpose and usage of this command.
5.1.1
The main WIEN2kscript, x lapw or x, executes a single WIEN2kprogram. First it creates the corresponding program.def-le, where the connection between Fortran I/O-units and lenames are dened. One can modify its functionality with several switches, modifying le denitions in case of spin-polarized or complex calculations or tailoring special behaviour. All options are listed with the help switch x -h or x lapw -h With some of the options the corresponding input les may be changed temporarely, but are set back to the original state upon completion. 51
52
USAGE: x PROGRAMNAME [flags]
PURPOSE:runs WIEN executables: afminput,aim,broadening,clmcopy,clminter,dipan, dstart,eosfit,eosfit6,filtvec,init_xspec,hex2rhomb,irrep,joint,kgen,kram, lapw0,lapw1,lapw2,lapw3,lapw5,lapw7,lapwdm,lapwso,lcore,lorentz,lstart, mini,mixer,nn,pairhess,plane,qtl,optic,optimize,orb,rhomb_in5,sgroup, spaghetti,struct_afm_check,sumpara,supercell,symmetry,symmetso,telnes2, tetra,txspec,xspec, clmaddsub FLAGS: -f FILEHEAD -> FILEHEAD for path of struct & input-files -t/-T -> suppress output of running time -h/-H -> help -d -> create only the def-file -up -> runs up-spin -dn -> runs dn-spin -sc -> runs semicore calculation -c -> complex calculation (no inversion symmetry present) -p -> run lapw1/2/so in parallel (needs .machines file) -orb -> runs lapw1 with LDA+U/OP or B-ext correction -it -> runs lapw1 with iterative diagonalization -nohns-> runs lapw1 without HNS -nmat_only-> runs lapw1 and yields only the matrixsize -emin X -> runs lapw2 with EMIN=X (in bin9_blaha.in2) -all X Y -> runs lapw2 with ALL and E-window X-Y (in bin9_blaha.in2) -qtl -> calculates QTL in lapw2 -help_files -> creates case.helpXX files in lapw2 -vresp-> creates case.vrespval (for TAU/meta-GGA) in lapw2 -eece -> for hybrid-functionals (lapw0,lapw2,mixer,orb,sumpara) -band -> for bandstructures: unit 4 to 5 (in1), sets QTL and ROOT (in2) -fermi-> calculates Fermi energy and weights in lapw2 -efg -> calculates lapw2 with EFG switch -so -> runs lapw2 with def-file for spin-orbit calculation -fft -> runs dstart only up to case.in0_std creation -super-> runs dstart and creates new_super.clmsum (and not case.clmsum) -sel -> use reduced vector file in lapw7 -settol 0.000x -> run sgroup with different tolerance -sigma-> run lstart with case.inst_sigma (autogenerated) for diff.dens. USE: x -h PROGRAMNAME for valid flags for a specific program
Note: To make use of a scratch le system, you may specify such a lesystem in the environment variable SCRATCH (it may already have been set by your system administrator). However, you have to make sure that there is enough disk-space in the SCRATCH directory to hold your case.vector* and case.help* les.
5.1.2
In order to start a new calculation, one should make a new subdirectory and run all calculations from there. At the beginning one must provide at least one le (see 3), namely case.struct (see 4.3) (case.inst can be created automatically on the y, see 6.4.3), then one runs a series of programs using init lapw. This script is described briey in chapter 4.5) and in detail in Getting started for the example TiC (see chapter 3). You can get help with switch -h. All actions of this script are logged in short in :log and in detail in the le case.dayfile, which also gives you a restart option when problems occurred. In order to run init lapw starting from a specic point on, specify -s PROGRAM. init lapw supports a batch mode (non-interactive) for trivial cases AND experienced users. You can supply various options and specify spin-polarization, XC-potential, RKmax, k-mesh or mixing. See init lapw -h for more details. Changes to case.struct by nn will be accepted, but by sgroup will be neglected.
5.1.3
In order to perform a complete SCF calculation, several types of scripts are provided with the distribution. For the specic ow of programs see chapter 4.5.
53
For non-spinpolarized calculations use: run lapw, for spin-polarized calculations use: runsp lapw. for antiferromagnetic calculations use: runafm lapw for FSM (xed-spin moment) calculations use: runfsm lapw for a spin-polarized setup, where you want to constrain the moment to zero (e.g. for LDA+U calculations) use: runsp c lapw Cases with/without inversion symmetry and with/without semicore or core states are handled automatically by these scripts. All activities of these scripts are logged in short in :log (appended) and in detail together with convergence information in case.dayfile (overwriting the old dayle). You can always get help on its usage by invoking these scripts with the -h ag. run lapw -h
PROGRAM: PURPOSE: /zeus/lapw/WIEN2k/bin/run_lapw running the nonmagnetic scf-cycle in WIEN to be called within the case-subdirectory has to be located in WIEN-executable directory run_lapw [OPTIONS] [FLAGS]
USAGE: OPTIONS: -cc LIMIT -> -ec LIMIT -> -fc LIMIT ->
charge convercence LIMIT (0.0000 e) energy convercence LIMIT (0.0001 Ry) force convercence LIMIT (0 mRy/a.u.) default is -ec 0.0001; multiple convergence tests possible -e PROGRAM -> exit after PROGRAM () -i NUMBER -> max. NUMBER (40) of iterations -s PROGRAM -> start with PROGRAM () -r NUMBER -> restart after NUMBER (99) iterations (rm *.broyd*) -nohns NUMBER ->do not use HNS for NUMBER iterations -ql LIMIT -> select LIMIT (0.05) as min.charge for E-L setting in new in1 -in1new N -> use "new" in1 file after N iter (rewrite in1 using scf info) FLAGS: -h/-H -> help -I -> with initialization of in2-files to "TOT" -NI -> does NOT remove case.broyd* (default: rm *.broyd* after 60 sec) -p -> run k-points in parallel (needs .machine file [speed:name]) -it -> use iterative diagonalizations (after first cycle) -it0 ->use iterative diagonalizations (also in first cycle) -so -> run SCF including spin-orbit coupling -renorm-> start with mixer and renormalize density -in1orig-> use case.in1_orig file (after a previous -in1new) CONTROL FILES: .stop stop after SCF cycle .fulldiag force full diagonalization case.inm_vresp activates calculation of vresp files for meta-GGAs ENVIRONMENT VARIBLES: SCRATCH directory
Additional ags valid only for magnetic cases (runsp lapw) include:
-dm -eece -orb -orbc -> -> -> -> calculate the density matrix (when -so is set, but -orb is not) use "exact exchange+hybrid" methods use LDA+U, OP or B-ext correction use LDA+U correction, but with constant V-matrix
Calling run lapw (after init lapw) from the subdirectory case will perform up to 40 iterations (or what you specied with switch -i) unless convergence has been reached earlier. You can choose from three convergence criteria, -ec (the total energy convergence is the default and is set to 0.0001 Ry for at least 3 iterations), -fc (magnitude of force convergence for 3 iterations, ONLY if your system has free structural parameters!) or -cc (charge convergence, just the last iteration), and any combination can also be specied. Be careful with these criteria, different systems will require quite different limits (e.g. fcc Li can be converged to Ry, a large unit cell with heavy magnetic
54
atoms only to 0.1 mRy). You can stop the scf iterations after the current cycle by generating an empty le .stop (use eg. touch .stop in the respective case-directory). The scf-cycle creates case.broyd* les which contain the charge-history. Once run lapw has nished, you should usually save lapw (see below) the results. When you continue with another run lapw without save lapw (because the previous run did not fulll the convergence criteria or you want to specify a more strict criterium) the broyden-les will be deleted unless you specify -NI. With -e PROGRAM you can run only part of one scf cycle (e.g. run lapw0, lapw1 and lapw2), with -s PROGRAM you can start at an arbitrary point in the scf cycle (e.g. after a previous cycle has crashed and you want to continue after xing the problem) and continue to self-consistency. Before mixer is invoked, case.clmsum is copied to case.clmsum old, and the nal important les of the scf calculation are case.clmsum and case.scf. Invoking run lapw -I -i 30 -fc 0.5 will rst set in case.in2 the TOT-switch (if FOR was set) to save cpu time, then run up to 30 scf cycles till the force criterion of 0.5 mRy/a.u. is met (for 3 consecutive iterations). Then the calculation of all terms of the forces is activated (setting FOR in case.in2) for a nal iteration. The switch -in1new N preserves for N iteration the default case.in1 le, thus using the old WIEN97 scheme to select the energy parameters. After the rst N iterations write in1 lapw is called and a new case.in1 le is generated, where the energy parameters are set according to the :EPLxx and :EPHxx values of the last scf iteration and the -ql value (see sections 4.4 and 7.3). In this way you select the best possible energy-parameters and also additional LOs to improve the linearization may be generated automatically. Note, however, that this option is potentially dangerous if you have a bad last iteration (or large changes from one scf iteration to the next. The switch -in1orig can be used to switch back to the original (old) scheme. Parallelization is described in Sec. 5.5. Iterative diagonalization, which can signicantly save computer time (in particular for cases with few electrons (like surfaces) and large matrices (larger than 2000) a factor 2-5 ! is possible), is described in Sec. 7.3. It needs the case.vector le from the previous scf-iteration and this le is copied to case.vector.old when the -it switch is set. You can save computer time by performing the rst scf-cycles without calculating the non-spherical matrix elements in lapw1. This option can be set for N iterations with the -nohns N switch. If you have a previous scf-calculation and changed lattice parameters or positions (volume optimization or internal positions minimization), we recommend to use -renorm to renormalize the density prior to the rst iteration. For magnetic systems which are difcult to converge you can use the script runfsm lapw -m M (see section 4.5.3) for the execution of xed-spin moment (FSM) calculations.
5.2
5.2.1
Utility scripts
Save a calculation (save lapw)
After self-consistency has been reached, the script save lapw head of save filename
55
saves case.clmsum, case.scf, case.dmat, case.vorb and case.struct under the new name and removes the case.broyd* les. Now you are ready to modify structural parameters or input switches and rerun run lapw, or calculate properties like charge densities (lapw5), total and partial DOS (tetra) or energy bandstructures (spaghetti). For more complicated situations, where many parameters will be changed, we have extended save lapw so that calculations can not only be saved under the head of save filename but also a directory can be specied. If you use any of the possible switches (-a, -f, -d, -s) all input les will be saved as well (and can be restored using restore lapw). Options to save lapw can be seen with save lapw -h Currently the following options are supported -h help -a save all input les as well -f force save lapw to overwrite previous saves -d directory save calculation in directory specied -s silent operation (no output)
5.2.2
To restore a calculation the script restore lapw can be used. This script restores the struct, clmsum, vorb and dmat les as well as all input les. Note: The input les will only be restored when save lapw -d was used, i.e. when you have saved a calculation in an extra directory. After restore lapw you can continue and either run an scf cycle (run lapw) or recreate the scf-potential (x lapw0) and the corresponding eigenvectors (x lapw1) for further tasks (DOS, electron density,...). Options to restore lapw are: -h help -f force restore lapw to overwrite previous les -d directory restore calculation from directory specied -s silent operation (no output) -t only test which les would be restored
5.2.3
Once a case has been completed you can clean up the directory with this command. Only the most important les (scf, clmsum, struct, input and some output les) are kept. It is very important to use this command when you have nished a case, since otherwise the large vector and helpXX les will quickly ll up all your disk space.
5.2.4
This script migrates a case to a remote computer (to be called within the case-dir). Needs working ssh/scp without password; local and remote case-dir must have the same name. Call it within the desired case-dir as: migrate lapw [FLAGS OPTIONS] [user@]host:path/case-dir with the following options:
CHAPTER 5. SHELL SCRIPTS -> transfer of files to a remote host (default) -> transfer of files from a remote host -> the complete directory is copied -> only files to start an scf cycle are copied (default for put) -> only new files resulting from an scf cycle are copied (default for get) -> "save_lapw -d save_dir" is issued and only save_dir is copied
help a clean_lapw is issued before copying files in source directory are removed after copying source directory (and all files) are removed after copying do it silent (in batch mode) gzip files before scp (slow network)
5.2.5
This script generates case.inst from a case.struct le. It can be used instead of the Structure-generator of w2web. Note: the label RMT is necessary in case.struct.
5.2.6
This perl-script executes x nn and uses its output to determine the atomic sphere radii (obeying recommended ratios for H, sp-, d- and f- elements). It is called automatically within init lapw or you may call it separately using: setrmt lapw case [-r X ] where case gives the head of the case.struct le. You may specify a reduction of the RMTs by X percent in order to allow for structural optimizations. It creates case.struct setrmt.
5.2.7
This script searches for .running.* les within the current directory (or the directory specied with -d full path directory) and then performs a ps command for these processes. If the specied process has not been found, it removes the corresponding .running.* le after conrmation (default) or immediately (when -f has been specied).
5.2.8
This script searches for .running.* les within the current directory (or the directory specied with -d full path directory) and then kills the corresponding process after conrmation (default) or immediately (when -f has been specied). It is particular usefull for killing k-point parallel jobs.
5.2.9
This script extracts the critical points (CP) after a Bader analysis (x aim (-c)) from case.outputaim. It sorts them (according to the density), removes duplicate CPs, converts units into A, e/A3 , ... and produces critical points ang.
57
5.2.10
scfmonitor lapw
This program was contributed by: Hartmut Enkisch Institute of Physics E1b University of Dortmund Dortmund, Germany enkisch@pop.uni-dortmund.de
Please make comments or report problems with this program to the WIEN-mailinglist. If necessary, we will communicate the problem to the authors.
It produces a plot of some quantities as function of iteration number (a maximum of 6 quantities is possible at once) from the case.scf le as specied on the commandline using analyse lapw and GNUPLOT. This plot is updated in regular intervals. You can call scfmonitor lapw using: scfmonitor lapw [-h] [-i n] [-f case.scf] [-p] arg1 [arg2 .. arg6] -h -i n -f scf-file -p arg1,... help switch show only the last n iterations use "scf-file" instead of the default "case.scf" produces file "scfmonitor.png" instead of X-window plot arguments to monitor (like ":ENE" or ":DIS" , see analyse_lapw )
The scfmonitor can also be called directly from w2web using the Analyse tool. In order to have a reasonable behavior of scfmonitor the GNUPLOT window should stay in background. This can be achieved by putting a line into your .Xdefaults le like: gnuplot*raise: off Note: It does not make sense to start scfmonitor before the rst cycle has nished because no case.scf exists at this point.
5.2.11
analyse lapw
The script analyse lapw is usually called from scfmonitor lapw. It greps from an scf-le the specied arguments and produces analyse.out. analyse lapw is called using: analyse lapw [-h] scf-file arg1 [arg2 arg3 arg4 arg5 arg6] -h scf-file arg1,... help switch "scf-file" to analyse (theres no default arguments to analyse: atom independend: :ENE :DIS :FER :MMT
"case.scf" !)
58
atom iii dependend: :CTOiii :CUPiii :CDNiii :NTOiii :NUPiii :NDNiii :DTOiii :DUPiii :DDNiii :RTOiii :EFGiii :HFFiii :MMIiii vector quantities: :FORiii[x/y/z] :POSiii[x/y/z] :FGLiii[x/y/z] where magnitude z z is the default For vector quantities like :FGLiii or :POSiii (usefull with case.scf mini) one can specify the respective coordinate by adding x/y/z to the corresponding labels.
5.2.12
testpara lapw is a small script which helps you to determine an optimal selection for the le .machines for parallel calculations (see sec. 5.5).
5.2.13
testpara1 lapw is a small script which determines how far the execution of lapw1para has proceeded.
5.2.14
testpara2 lapw is a small script which determines how far the execution of lapw2para has proceeded.
5.2.15
Using
grepline lapw
grepline lapw :label filename*.scf lines for tail or grepline :label filename*.scf lines for tail you can get a list of a quantity :label (e.g. :ENE for the total energy) from several scf les at once.
5.2.16
initso lapw
initso lapw helps you to initialize the calculations for spin-orbit coupling. It creates all required input les (case.inso, case.in2c). In a spinpolarized case SO may reduce symmetry or equivalent atoms may become non-equivalent, and the script calls symmetso and will help you to nd proper symmetries and setup the respective input les. It is called using initso lapw or initso and you should carefully follow the instructions and explanations of the script.
59
5.2.17
vec2old lapw
vec2old lapw moves case.vector les to case.vector.old. Usually called automatically just before lapw1 when the iterative diagonalization (run lapw -it) is specied. It also works for the k-parallel case including local $SCRATCH directories. For runfsm lapw the sequence had to be changed and the switches -updn or -dnup forces vec2old to COPY case.vectorup tocase.vectordn (and vice versa). In the runfsm lapw case the corresponding case.vector*.old les are generated just AFTER lapw2/lapwdm and not BEFORE lapw1. Thus after runfsm lapw has nished, the corresponding spin-up/dn vectors are case.vector*.old and NOT case.vector*.
5.2.18
clmextrapol lapw
clmextrapol lapw extrapolates the charge density (case.clmsum/up/dn) from old to new positions. It takes the density from the old positions (copied into old.clmsum) and subtracts an atomic superposition density (new super.clmsum) fom the old positions and adds an atomic superposition density fom the new ones (generated by dstart). If new super.clmsum (generated automatically by init lapw) is not present, it will be generated and for the next geometry step an extrapolation will take place. It is usually called from min lapw -ex after a geometry step has nished and a new struct le has been generated. It can signicantly reduce the number of scf-cycles for the new geometry step.
5.3
5.3.1
Structure optimization
Lattice parameters (Volume, c/a, lattice parameters)
The auxilliary program optimize (x optimize) generates from an existing case.struct (or case initial.struct, which is generated at the rst call of optimize) a series of struct les with various volumes (or c/a ratios, or other modied parameters) (depending on your input):
[1] [2] [3] [4] [5] [6] [7] [8] VARY VARY VARY VARY VARY VARY VARY VARY VOLUME with CONSTANT RATIO A:B:C C/A RATIO with CONSTANT VOLUME (tetr and hex lattices) C/A RATIO with CONSTANT VOLUME and B/A (orthorh lattice) B/A RATIO with CONSTANT VOLUME and C/A (orthorh lattice) A and C (2D-case) (tetragonal or hexagonal lattice) A, B and C (3D-case) (orthorhombic lattice) A, B, C and Gamma (4D-case) (monoclinic lattice) C/A RATIO and VOLUME (2D-case) (tetr and hex lattices)
60
exit 1 endif save_lapw ${i} save_lapw -f -d XXX $i
# end
You may modify this script according to your needs (use runsp lapw or even min lapw, specify different convergence parameters, save into a directory to separate e.g. gga and lda results, activate the line x dstart or cp $i.clmsum case.clmsum to use a previously saved clmsum le, e.g. from a calculation with smaller RKmax, ...) Note: You must have a case.clmsum le (either from init lapw or from a previous scf calculation) in order to run optimize.job. After execution of this script you should have a series of scf-les with energies corresponding to the modied parameters, which should allow you to nd the corresponding equillibrium parameters. For the volume optimization an analysis tool is available, other tools are under development). Using the script grepline (or the Analysis Analyze multiple SCF-les menu of w2web) you get a summary of the total energy vs. volume (c/a). The le case.analysis can be used in eplot lapw to nd the minimum total energy and the equilibrium volume (c/a). Supported equation of states include the EOS2, Murnaghan and Birch-Murnaghan EOS. grepline :ENE *.scf 1 > case.analysis grepline :VOL *.scf 1 >> case.analysis Using such strategies also higher-dimensional optimizations (e.g. c/a ratio and volume) are possible in combination with the -d option of save lapw. For optimization of more degrees of freedom (2-4 lattice parameters), you can use the corresponding option and for analysis of the data the script parabolfit lapw together with the program eosfit6. It performs a non-linear least squares t, using a parabolic t-function in your variables and get an analytic description of your energy surface. Please note, this is only a harmonic t (no odd or higher terms) and the description may not be very good if your parameter range is large and/or the function is quite anharmonic, or you suffer from numerical noise. For the determination of elastic constants see the description of ELAST in sec 8.14.
5.3.2
Most of the more complicated structures have free internal structural parameters, which can either be taken from experiment or optimized using the calculated forces on the nuclei. The shell script min lapw, together with the program mini, determines the equilibrium position of all individual atoms automatically (obeying the symmetry constraints of a certain space group). A typical sequence of commands for an optimization of the internal positions would look like: Generate struct le init lapw run lapw -fc 1 [another runXX script or additional options are of course also possible] (this may take some time) Inspect the scf le whether you have signicant forces (usually at least .gt. 5 mRy/bohr), otherwise you are more or less at the optimal positions (An experienced user may omit the run lapw step and proceed directly from init lapw to the next step) min lapw [options] (this may take some time) generates default case.inM (if not present) by:
61
x pairhess; cp case.inM st case.inM ; cp .minpair .min hess ; cp .minpair .minrestart (setting up the PORT minimization option). This step is also done automatically in minimizations using w2web. when -nohess is specied, it will generate case.inM from SRC templates with the NEW1 option. Without -NI switch min lapw performs an initialization rst: removes histories (case.broyd*, case.tmpM) if present; copies .min hess to .minrestart (if present from previous min lapw or x pairhess). When case.scf is not present, an scf-cycle will be performed rst, otherwise the corresponding forces are extracted into case.finM and mini generates a new case.struct with modied atomic positions. The previous step is saved under case 1/2/3.... Then a new scf-cycle is executed and this loop continues until convergence (default: forces below 2mRy/bohr) is reached. The last iteration of each geometry step is appended to case.scf mini, so that this le contains the complete history of the minimization and can be used to monitor the progress (grep :ENE *mini; or :FORxxx ...). By default (unless switch -noex is specied), min will call the script clmextrapol lapw after the rst geometry step and try to extrapolate the charge density to the new positions. This procedure usually signicantly reduces the number of scf-cycles and is thus highly recommended. mini requires an input le case.inM (see Sec. 8.15) which is created automatically and MUST NOT be changed while min lapw is running (except the force tolerance, which terminates the optimization). We recommend the PORT minimization method, a reverse-communication trust-region QuasiNewton method from the Port library, which seems to be stable, efcient and does not depend too much on the users input (DELTAs, see below with NEWT). The PORT option also produces a le .min hess, which contains the (approximate) Hessian matrix (lower-triangle Cholesky factor) If you restart a minimization with different k-points, RMT, RKmax, ... or do a similar calculation (eg. for a different volume, ...) it will be copied to .minrestart (unless -nohess is specied), so that you start with a reasonable approximation for the Hessian. When using PORT you may also want to check its progress using grep :LABEL case.outputM
where :LABEL is :ENE (should decrease), :GRAD (should also go down, but could sometimes also go up for some time as long as the energy still decreases), :MIN (provides a condensed summary of the progress), :WARN may indicate a problem), :DD (provides information about the step sizes and mode used). Some general explanations are: 1) The algorithm takes steps along what it considers are good directions (using some internal logic), provided that these steps are smaller than what is called the trust-region radius. After a good step (e.g. large energy decrease) it expands the trust-region; after a bad one it reduces it. Sometimes it will try too large a step then have to reduce it, so the energy does not always go down. You can see this by using :DD and :MIN . 2) A grep on :MIN gives a condensed progress output, in which the most signicant terms are E (energy in some rescaled units), RELDF (last energy reduction), PRELDF (what the algorithm predicted for the step), RELDX (RMS change in positions in Angstroms) and NPRELDF (predicted change in next cycle). Near the solution RELDF and RELDX should both become small. However, sometimes you can have soft modes in your structure in which case RELDX will take a long time before it becomes small. 3) A warning that the step was reduced due to overlapping spheres if it happens only once (or twice) is not important; the algorithm tested too large a step. However, if it occurs many times it may indicate that the RMTs are too big.
62
4) A warning CURVATURE CONDITION FAILED indicates that you are still some distance from the minimum, and the Hessian is changing a lot. If you see many of these, it may be that the forces and energy are not consistent. Sometimes PORT gets stuck (often because of inconsistencies of energy and forces due to insufcient scf convergence or a very non-harmonic potential energy surface). A good alternative is NEW1, which is a sophisticated steepest-descent method with optimized step size. It can be very efcient in certain cases, but can also be rather slow when the potential energy surface is rather at in one, but steep in another direction (eg. a weakly bound molecule on a surface, but constraining the sensitive parameters, like the bond distance of the molecule, may help). Another alternative is NEWT, where one must set proper DELTAs and a FRICTION for each atom. Unfortunately, these DELTAs determine crucially how the minimization performs. Too small values lead to many (unnecessary) geometry steps, while too large DELTAs can even lead to divergence (and nally to a crash). Thus you MUST control how the minimization performs. We recommend the following sequence after 2-3 geometry steps: grep :ENE *mini :ENE : ********** TOTAL ENERGY IN Ry = :ENE : ********** TOTAL ENERGY IN Ry = :ENE : ********** TOTAL ENERGY IN Ry = Good, since the total energy is decreasing. grep :FGL001 *mini :FGL001: 1.ATOM :FGL001: 1.ATOM :FGL001: 1.ATOM 0.000 0.000 0.000 0.000 0.000 0.000 18.219 12.375 7.876 -2994.809124 -2994.813852 -2994.818538
Good, since the force (only a force along z is present here) is decreasing reasonably fast towards zero. You must check this for every atom in your structure. When you detect oszillations or too small changes of the forces during geometry optimization, you will have to decrease/increase the DELTAs in case.inM and rm case.tmpM. (NOTE: You must not continue with modied DELTAs but keeping case.tmpM.) Alternatively, stop the minimization (touch .minstop and wait until the last step has nished), change case.inM and restart. You can get help on its usage with: min -h or min lapw -h
PROGRAM: USAGE: OPTIONS: -j JOB -> -noex -> -p -> -it -> -sp -> -nohess -> -m -> -mo -> -h/-H -> -NI -> -i NUMBER -> -s NUMBER -> CONTROL FILES: .minstop min min [OPTIONS]
job-file JOB (default: run_lapw -I -fc 1. -i 40 ) does not extrapolate the density for next geometry step adds -p (parallel) switch to run_lapw adds -it (iterative diag.) switch to run_lapw uses runsp_lapw instead of run_lapw removes .minrestart (initial Hessian) from previous minimization extract force-input and execute mini (without JOB) and exit like -m but without copying of case.tmpM1 to case.tmpM help without initialization of minimization (eg. continue after a crash) max. NUMBER (50) of structure changes save_lapw after NUMBER of structure changes
For instance for a spin-polarized case, which converges more difcultly, you would use: min -j runsp lapw -I -ex -fc 1.0 -i 60
63
5.4
Phonon calculations
Calculations of phonons is based on a program PHONON by K.Parlinski, which runs under MSWindows and must be ordered separately (see http://wolf.ifj.edu.pl/phonon/ ) You would dene the structure of your compound in PHONON together with a supercell of sufcient size (e.g. 64 atoms). PHONON will then generate a list of necessary displacements of the individual atoms. The resulting le case.d45 must be transfered to UNIX. Here you would run WIEN2k-scf calculations for all displacements and collect the resulting forces, which will be transfered back to PHONON (case.dat and/or case.dsy). With these force information PHONON calculates phonon at arbitrary q-vectors together with several thermodynamic properties.
5.4.1
init phonon lapw uses case.d45 from PHONON and creates subdirectories case XX and case XX.struct les for all required displacements. It allows you to dene globally RMT values for the different atoms and initializes all cases individually (or copies the les from the rst case). In low symmetry cases we recommend to use P1 symmetry for all cases and thus just one init lapw, while for higher symmetry a separate initialization is required (but computational effort is reduced). Please use maily nn to reduce equivalent atoms. sgroup might change the unitcell and than the collection of forces into the original supercell is quite difcult. A script run phonon has been created. Modify it according to your needs (parallelization,....) and run all cases to selfconsistency. Note that good force convergence is essential (at least 0.1 mRy/bohr) and if your structure has free parameters, either very good equillibrium positions must have been found before, or even better, use both, positive and negative displacements to average out any resulting error from nonequillibrium positions.
5.4.2
init phonon lapw uses the resulting scf les and generates the Hellman-Feynman-le required by PHONON. When you have positive and negative displacements an automatic averaging will be performed. The resulting case.dat and case.dsy lse should be transfered back to MSWindows and imported into PHONON.
5.5
This section describes two methods for running WIEN2k on parallel computers. One method, parallelizing k-points over processors, utilizes c-shell scripts, NFS-le system and passwordless login ((public/private keys). This method works with all standard avors of Unix without any special requirements. The parallelization is very efcient even on heterogeneous computing environments, e. g. on heterogeneous clusters of workstations, but also on dedicated parallel computers and does NOT need large network bandwidth. The other parallelization method, which comes new with version WIEN2k 07.3, is based on ne grained methods, MPI and SCALAPACK. It is especially useful for larger systems, if the required memory size is no longer available on a single computer or when more processors than k-points are available. It requires a fast network (at least Gb-Ethernet, better Myrinet or Inniband) or a shared memory machine. Although not as efcient as the simple k-point parallelization, the current mpi-version has been enhanced a lot and shows very good scaling with the number of
64
processors for most parts. In any case, the number of processors and the size of the problem (number of atoms, matrixsize due to the plane wave basis) must be compatible and typically [NMAT / sqrt(processors)] .gt. 2000 should hold. The k-point parallelization can use a dynamic load balancing scheme and is therefore usable also on heterogeneous computing environments like networks of workstations or PCs, even if interactive users contribute to the processors work load. If your case is large enough, but you still have to use a few k-points, a combination of both parallelization methods is possible (always use k-point parallelism if you have more than 1 k-point).
5.5.1
k-Point Parallelization
Parts of the code are executed in parallel, namely LAPW1, LAPWSO, LAPW2, LAPWDM, and OPTIC. These are the numerically intensive parts of most calculations. Parallelization is achieved on the k-point level by distributing subsets of the k-mesh to different processors and subsequent summation of the results. The implemented strategy can be used both on a multiprocessor architecture and on a heterogeneous (even multiplatform) network. To make use of the k-point parallelization, make sure that your system meets the following requirements: NFS: All les for the calculation must be accessible under the same name and path. Therefore you should set up your NFS mounts in such a way, that on all machines the path names are the same. Remote login: rlogin or ssh to all machines must be possible without specifying a password. Therefore you must either edit your .rhosts le to include all machines you intend to use (not necessary for a shared memory machine), or correctly specify public/private keys for ssh. This can be done by running ssh-keygen -t rsa and copying the id rsa.pub key into .ssh/authorized keys at the remote sites. / The command for launching a remote shell is platform dependent, and usually can be ssh, rsh or remsh. It should be specied during installation when siteconfig lapw is executed (see chapter 11).
5.5.2
MPI parallelization
Fine grained MPI parallel versions are available for the programs lapw0, lapw1, and lapw2. This parallelization method is based on parallelization libraries, including MPI, ScaLapack, and PBlas. The required libraries are not included with WIEN2k. On parallel computers, however, they are usually installed. Otherwise, free versions of these libraries are available1 . The parallelization affects the naming scheme of the executable programs: the ne grained parallel versions of lapw0/1/2 are called lapw0 mpi, lapw1[c] mpi, and lapw2[c] mpi. These programs are executed by calls to the local execution environments, as in the sequential case, by the scripts x, lapw0para, lapw1para, and lapw2para. On most computers this is done by calling mpirun and should also be congured using siteconfig lapw.
5.5.3
To start the calculation in parallel, a switch must be set and an input le has to be prepared by the user.
1 http://www-unix.mcs.anl.gov/mpi/mpich,
http://www.netlib.org/scalapack
65
The switch -p switches on the parallelization in the scripts x and run lapw. In addition to this switch the le .machines has to be present in the current working directory. In this le the machine names on which the parallel processes should be launched, and their respective relative speeds must be specied. If the .machines le does not exist, or if the -p switch is omitted, the serial versions of the programs are executed. Generation of all necessary les, starting of the processes and summation of the results is done by the appropriate scripts lapw1para, lapwsopara,lapwdmpara and lapw2para (when using -p), and parallel programs lapw0 mpi, lapw1 mpi, and lapw2 mpi (when using ne grained parallelization has been selected in the .machines le).
5.5.4
The .machines le
The following .machines le describes a simple example. We assume to have 5 computers, (alpha, ... epsilon), where epsilon has 4, and delta and gamma 2 cpus. In addition, gamma, delta and epsilon are 3 times faster than alpha and beta.: # This is a valid .machines file # granularity:1 1:alpha 1:beta 3:gamma:2 delta 3:delta:1 epsilon:4 residue:delta:2 lapw0:gamma:2 delta:2 epsilon:4 To each set of processors, dened by a single line in this le, a certain number of k-points is assigned, which are computed in parallel. In each line the weight (relative speed) and computers are specied in the following form: weight:machine name1:number1 machine name2:number2 ... where weight is an integer (e.g. a three times more powerful machine should have a three times higher weight). The name of the computer is machine name[1/2/...], and the number of processors to be used on these computers are number[1/2/...]. If there is only one processor on a given computer, the :1 may be omitted. Empty lines are skipped, comment lines start with #. Assuming there are 8 k-points to be distributed in the above example, they are distributed as follows. The computers alpha and beta get 1 each. Two processors of computer gamma and one processor of computer delta cooperate in a ne grained parallelization on the solution of 3 k-points, and one processor of computer delta plus four processors of computer epsilon cooperate on the solution of 3 k-points. If there were additional k-points, they would be calculated by the rst processor (or set of processors) becoming available. With higher numbers of k-points, this method ensures dynamic load balancing. If a processor is busy doing other (e. g., interactive) work, the overall calculation will not stall, but most of its work will be done by other processors (or sets of processors using MPI). This is, however, not an implementation for fail safety: if a process does not terminate (e. g., due to shutdown of a computer) the calculation will never terminate. It is up to the user to handle with such hardware failures by modifying the .machines le and restarting the calculation at the appropriate point. During the run of lapw1para the le .processes is generated. This le is used by lapw2para to determine which case.vector* to read.
66
By default lapw1para will generate approximately 3 vector-les per processor, if enough k-points are available for distribution. The factor 3 is called granularity and allows for some load balancing in heterogeneous environments. If you can be sure that load balancing is not an issue (eg. because you use a queuing-system and can be sure that you will get 100% of the cpus for your jobs) it is recommended to set granularity:1 for best performance. On shared memory machines it is advisable to add a residue machine to calculate the surplus (residual) k-points (given by the expression MOD(klist, j newweightj ) and rely on the operating systems load balancing scheme. Such a residue machine is specied as residue:machine name:number in the .machines le. Alternatively, it is also possible to distribute the remaining k-points one-by-one (and not in one junk) over all processors. The option extrafine:1 can be set in the .machines le. When using iterative diagonalization or the $SCRATCH variable (set to a local directory), the k-point distribution must be xed. This means, the ratio (k-points / processors) must be integer and granularity:1 should be set. The line lapw0:gamma:2 delta:2 epsilon:4 denes the computers used for running lapw0 mpi. In this example the 6 processors of the computers gamma, delta, and epsilon run lapw0 mpi in parallel. If ne grained parallelization is used, each set of processors dened in the .machines le is converted to a single le .machine[1/2/...], which is used in a call to mpirun (or another parallel execution environment). When using a queuing system (like PBS, LoadLeveler or SUN-Gridengine) one can only request the NUMBER of processors, but does not know on which nodes the job will run. Thus a static .machines le is not possible. On can write a simple shell script, which will generate this le on the y once the job has been started and the nodes are assigned to this job. Examples can be found at our web-site http://www.wien2k.at/reg users/faq.
5.5.5
In the setup of the k-point parallel version of LAPW1 the list of k-points in case.klist (Note, that the k-list from case.in1 cannot be used for parallel calculations) is split into subsets according to the weights specied in the .machines le: weighti klist granularity j weightj
newweighti =
67
where newweighti is the number of k-points to be calculated on processor i. newweighti is always set to a value greater equal one. A loop over all i processors is repeated until all k-points have been processed. Speedup in a parallel program is intrinsically dependent on the serial or parallel parts of the code according to Amdahls law: 1 speedup = P (1 P ) + N whereas N is the number of processors and P the percentage of code executed in parallel. In WIEN2k usually only a small part of time is spent in the programs lapw0, lcore and mixer which is very small (negligible) in comparison to the times spent in lapw1 and lapw2. The time for waiting until all parallel lapw1 and lapw2 processes have nished is important too. For a good performance it is therefore necessary to have a good load balancing by estimating properly the speed and availability of the machines used. We encourage the use of testpara lapw or Utils. testpara from w2web to check the k-point distribution over the machines before actually running the programs in parallel. While running lapw1 and lapw2 in parallel mode, the scripts testpara1 lapw (see 5.2.13) and testpara2 lapw (see 5.2.14) can be used to monitor the succession of parallel execution.
5.5.6
To see how les are handled by the scripts lapw1para and lapw2para refer to gures 5.1 and 5.2. After the lapw2 calculations are completed the densities and the informations from the case.scf2 x les are summarized by sumpara. Note: parallel lapw2 and sumpara take two command line arguments, namely the case.def le but also a number of processor indicator.
5.5.7
The following parallel programs use different parallelization strategies: lapw0 mpi is parallelized over the number of atoms. This method leads to good scalability as long as there are more atoms than processors. For very many processors, however, the speedup is limited, which is usually not at all critical, since the overall computing time of lapw0 mpi is quite small.
68
lapw1 mpi uses a two-dimensional processor setup to distribute the Hamilton and overlap matrices. For higher numbers of processors two-dimensional communication patterns are clearly preferable to one-dimensional communication patterns. Let us assume, for example, 64 processors. In a given processing step, one of these processors has to communicate with the other 63 processors if a one-dimensional setup was chosen. In the case of a two-dimensional processor setup it is usually sufcient to communicate with the processors of the same processor row (7) or the same processor column (7), i. e. with 14 processors. number of processors , In general the processor array P Q is chosen as follows: P = number of processors Q= . Because of SCALAPACK, often P P arrays (i.e. 4, 9, 16,... P processors) give best performance and of course it is not recommended to use eg. 17 processors. lapw2 mpi is parallelized in two main parts: (i) The density inside the spheres is parallelized over atoms, and (ii) the fast Fourier transforms are done in parallel. In addition the density calculation for each atom can be further parallelized by distributing the eigenvector on a certain subset of processors (ususlly 2-4). This is not so efcient, but most usefull if the memory requirement is too big otherwise. You set it in .machines using lapw2 vector split:2 If more than one k-point is distributed at once to lapw1 mpi or lapw2 mpi, these will be treated consecutively. Depending on the parallel computer system and the problem size, speedups will vary to some extend. Matrix setup in lapw1 should scale nearly perfect, while diagonalization (using SCALAPACK) will not. Usually, iterative scales better than full diagonalization and is preferred for large scale computations. Scalability over atoms will be very good if processor and atom numbers are compatible. Running the ne grained parallelization over a 100 Mbit/s Ethernet network is not
5.6. GETTING ON-LINE HELP recommended, even for large problem sizes.
69
5.6
5.7
Interface scripts
We have included a few interface scripts into the current WIEN2k distribution, to simplify the previewing of results. In order to use these scripts the public domain program gnuplot has to be installed on your system.
5.7.1
eplot lapw
The script eplot lapw plots total energy vs. volume or total energy vs. c/a-ratio using the le case.analysis. The latter should have been created with grepline (using :VOL and :ENE labels) or the Analysis Analyze multiple SCF-les menu of w2web and the le names must be generated (or compatible) with optimize.job. For a description of how to use the script for batch like execution call the script using eplot lapw -h
70
5.7.2
parabolt lapw
The script parabolfit lapw is an interface for a harmonic tting of E vs. 2-4-dim lattice parameters by a non-linear least squares t (eost6) using PORT routines. Once you have several scf calculations at different lattice parameters (usually generated with optimize.job) it generates the required case.ene and case.latparam from your scf les. Using parabolt lapw [ -t 2/3/4 ] [ -f FILEHEAD ] [ -scf *xxx*.scf ] you can optionally specify the dimensionality of the t or the specic scf-lenames.
5.7.3
dosplot lapw
The script dosplot lapw plots total or partial Density of States depending on the input used by case.int and the interactive input. A more advanced plotting interface is provided by dosplot2 lapw, see below. For a description of how to use the script for batch like execution call the script using dosplot lapw -h
5.7.4
dosplot2 lapw
The script dosplot2 lapw plots total or partial Density of States depending on the input used by case.int and the interactive input. It can plot up to 4 DOS curves into one plot, and simultaneously plot spin-up/dn DOS. It was provided by Morteza Jamal (m jamal57@yahoo.com). For a description of how to use the script for batch like execution call the script using dosplot2 lapw -h
5.7.5
Curve lapw
The script Curve lapw plots x,y data from a le specied interactively. It asks for additional interactive input. It can plot up to 4 curves into one plot and is a simple gnuplot interface. It was provided by Morteza Jamal (m jamal57@yahoo.com).
5.7.6
specplot lapw
specplot lapw provides an interface for plotting X-ray spectra from the output of the xspec or txspec program. For a description of how to use the script for batch like execution call the script using specplot lapw -h
5.7.7
rhoplot lapw
The script rhoplot lapw produces a surface plot of the electron density from the le case.rho created by lapw5. Note: To use this script you must have installed the C-program reformat supplied in SRC reformat.
71
5.7.8
opticplot lapw
The script opticplot lapw produces XY plots from the output les of the optics package using the case.joint, case.epsilon, case.eloss, case.sumrules or case.sigmak. For a description of how to use the script for batch like execution call the script using opticplot lapw -h
5.7.9
addjoint-updn lapw
The script addjoint-updn lapw adds the les case.jointup and case.jointdn together and produces case.joint. It uses internally the program add columns. It should be called for spin-polarized optics calculations after x joint -up and x joint -dn, because the KramersKronig transformation to the real part of the dielectric function ( 1 ) is not a simple additive quantity concerning the spin (see Ambrosch-Draxl 06). The KK transformation should then be done non-spinpolarized (x kram) resulting in les: case.epsilon, case.eloss, case.sumrules or case.sigmak.
72
In sections (6.1-6.6) we describe the initial utility programs. These programs are used to set up a calculation.
6.1
This program uses the case.struct le (see 4.3) in which the atomic positions in the unit cell are specied, calculates the nearest neighbor distances of all atoms, and checks that the corresponding atomic spheres (radii) are not overlapping. If an overlap occurs, an error message is shown on the screen. In addition, the next nearest-neighbor distances up to f times the nearest-neighbor distance (f is provided interactively) are written to an output le named case.outputnn. For negative f values only the distances of non-equivalent atoms are printed. , but equivalent ones are not listed again. It is highly recommended in many cases that you change your sphere sizes and NOT use the default of 2.0. An increase from 2.0 to 2.1 may already result in drastically reduced computing time. More recommendations are given in chapter 4.3. nn also checks if equivalent atoms are specied correctly in case.struct. At the bottom of case.outputnn the coordination shell-structure is listed and from that a comparison with the input is made verifying that equivalent atoms really have equivalent environments. If this is not the case, an ERROR will be printed and a new structure le case.struct nn is generated. You have to recheck your input and then decide whether you want to accept the new structure le, or reject it (because the equivalency may just be an artefact due to a special choice of lattice parameters). It also may be that you have made a simple input error. If you want to force two atoms of the same kind (e.g. 2 Fe atoms) to be nonequivalent (e.g. because you want to do an antiferromagnetic calculation), label the atoms as Fe1 and Fe2 in case.struct. Thus this program helps to generate proper struct-les especially in the case of articial unit cells, e.g. a supercell simulating an impurity or a surface.
6.1.1
Execution
74 nn nn.def or x nn
CHAPTER 6. INITIALIZATION
6.2
SGROUP
This program was contributed by: Bogdan Yanchitsky and Andrei Timoshevskii Institute of Magnetism, Kiev, Ukraine email: yan@imag.kiev.ua and tim@ukron.kiev.ua
Please make comments or report problems with this program to the WIEN-mailinglist. If necessary, we will communicate the problem to the authors.
It was published in Yanchitsky and Timoshevskii 2001, and is written in C. This program uses information from case.struct (lattice type, lattice constants, atomic positions) and determines the spacegroup as well as all pointgroups of non-equivalent sites. It uses the nuclear charges Z or the label in the 3rd place of the atomic name (Si1, Si2) to distinguish different atoms uniquely. It is able to nd possible smaller unit cells, shift the origin of the cell and can even produce a new struct le case.struct sgroup based on your input case.struct with proper lattice types and equivalency. It is thus most usefull in particular for handmade structures. For more information see also the README in SRC sgroup.
6.2.1
Execution
The program sgroup is executed by invoking the command: sgroup -wi case.struct [-wo case.struct sgroup] case.outputsgen or x sgroup
6.3
SYMMETRY
This program uses information from case.struct (lattice type, atomic positions). If NSYM was set to zero it generates the space group symmetry operations and writes them to case.struct st to complete this le. Otherwise (NSYM > 0) it compares the generated symmetry operations with the already present ones. If they disagree a warning is given in the output. In addition the point group of each atomic site is determined and the respective symmetry operations and LM values of the lattice harmonics representation are printed. The latter information is written into case.in2 sy, while the local rotation matrix, the positive or negative IATNR values and the proper ISPLIT parameter are written to case.struct st. (See appendix A and Sec. 4.3).
6.3.1
Execution
The program symmetry is executed by invoking the command: symmetry symmetry.def or x symmetry
6.4. LSTART
75
6.4
lstart is a relativistic atomic LSDA code originally written by Desclaux (69, 75) and modied for the present purpose. Internally it uses Hartree atomic units, but all output has been converted to Rydberg units. lstart generates atomic densities which are used by dstart to generate a starting density for a scf calculation and all the input les for the scf run: in0, in1, in2, inc and inm (according to the atomic eigenvalues). In addition it creates atomic potentials (which are truncated at their corresponding atomic radii and could be used to run lapw1) and optional atomic valence densities, which can be used in lapw5 for a difference density plot. The atomic total energies are also printed, but it can only be used for cohesive energy calculations of light elements. Already for second-row elements the different treatment of relativistic effects in lstart and lapwso yields inconsistent data and you must calculate the atomic total energy consistently by a supercell approach via a bandstructure calculation (Put a single atom in a sufciently large fcc-type unit cell). If the program stops with some lines: NSTOP= ..... in case.outputst, this means, that a proper solution for at least one orbital could not be obtained. In such a case the input must be changed and one should provide different occupation numbers for these states (e.g. Cu can not be started with 3d10 4s1 , but it works with 3d9 4s2 ). Warnings about the radial mesh can usually be ignored. They can be avoided by larger dimension parameters NPT and NPT00, so that the radial mesh will reach up to RMAX0.
6.4.1
Execution
The program lstart is executed by invoking the command: lstart lstart.def or x lstart [-sigma] The les case.rsp(up|dn) are generated and contain the atomic (spin) densities, which will be used by DSTART later on. Using -sigma generates case.inst sigma with modied input to generate case.sigma used for difference densities (see below).
6.4.2
Dimensioning parameters
The following parameters are dened in le param.inc (static and not allocatable arrays): NPT NPT00 RMAX0 total number of radial mesh points, must be gt.(NRAD+NPT00), where NRAD is the number of mesh-points up to RMT speced in case.struct. max. number of radial mesh points beyond RMT max. distance of radial mesh
6.4.3
Input
When running lstart you will rst be asked interactively to specify an XC-potential switch. Currently 5 (LSDA, Perdew and Wang 92) as well as 11 and 13 (two GGAs, Wu,Cohen 06 and Perdew et al. 96, respectively) are ofcially supported, but 13 is recommended. In addition the program asks for an energy cut-off, separating core from valence states. Usually
76
CHAPTER 6. INITIALIZATION
-6.0 Ry is a good choice, but you should check for each atom how much core charge leaks out of the sphere (WARNINGS in case.outputs). If this is the case one should lower this energy cut-off and thus include these low lying states into the valence region. The rest of the input is described in the sample input below. Note: Only the data at the beginning of the line are read whereas the comment describes the respective orbitals. This le can be generated automatically in w2web using RunPrograms Struct Generator or with the script instgen lapw. To edit this le by hand choose View/Edit Input Files and choose case.inst.
------------------ top of file: case.inst ------------------ZINC Ne 6 (inert gas, # OF VALENCE ORBITALS not counting spin) 3,-1,1.0 N ( N,KAPPA,OCCUP; = 3S UP, 1 ELECTRON) 3,-1,1.0 N 3S DN 3,-2,2.0 N 3P UP 3,-2,2.0 N 3P DN 3, 1,1.0 N 3P*UP 3, 1,1.0 N 3P*DN 3,-3,3.0 P 3D UP 3,-3,3.0 P 3D DN 3, 2,2.0 P 3D*UP 3, 2,2.0 P 3D*DN 4,-1,1.0 P 4S UP 4,-1,1.0 P 4S DN END OF Input **** END OF Input **** ------------------- bottom of file ---------------------------
The keyword Watson enables a stabilization of negative ions using a Watson-sphere of radius R-wat with charge Q-wat, which must be given in the next line when this keyword is specied. The keyword PRATT enables a scf mixing using standard PRATT scheme. It might be usefull if a certain atomic conguration does not converge with the standard mixing scheme and requires a (usually quite small) mixing factor, which must be given in the next line when this keyword is specied.
line 2: free format cong cong species the core state conguration by an inert gas (He, Ne, Ar, Kr, Xe, Rn) and the number of (valence) orbitals (without spin). (In the example given above one could also use Ar 3 and omit the 3s and 3p states.) The atomic congurations are listed in the appendix and can also be found online using periodic table, a shell script which displays SRC/periodic.ps with ghostview)
line 3: format(i1,1x,i2,1x,f5.3,a1) n, kappa, occup, plot n kappa the principle quantum number the relativistic quantum number (see below)
6.5. KGEN occup plot occupation number (per spin) P species that the density of the respective orbital is written to the le case.sigma, which can be used for difference density plots in lapw5. N or an empty eld will exempt density of the respective orbital from being printed to le.
77
>>>:line 3 is repeated for the other spin and for all orbitals specied above by cong. >>>: the last two lines must be **** **** optional inserted as line 2 when Watson has been specied in line 1: free format R-wat, Q-wat R-wat Q-wat radius of a charged sphere used to stabilize otherwise unstable negative ions (e.g. 2.5 for O2 ) charge of the stabilizing sphere, (e.g. 2 for O2 )
The quantum numbers are dened as follows (see e.g. Liberman et al 65): Spin quantum number: s = +1 or s = 1 Orbital quantum number j = l + s/2 Relativistic quantum number = s(j + 1/2)
l 0 1 2 3 j = l + s/2 s = 1 s = +1 1/2 1/2 3/2 3/2 5/2 5/2 7/2 s = 1 1 2 3 s = +1 -1 -2 -3 -4 max. occupation s = 1 s = +1 2 2 4 4 6 6 8
s p d f
6.5
This program generates the k-mesh in the irreducible wedge of the Brillouin zone (IBZ) on a special point grid, which can be used in a modied tetrahedron integration scheme (Blochl et al 1994). kgen needs as interactive input the total number of k-points in the BZ. If this is set to zero, you are asked to specify the divisions of the reciprocal unit-cell vectors (3 numbers, be careful not to break symmetry and choose them properly according to the inverse lenght of the reciprocal lattice vectors) for a mesh yourself. If inversion symmetry is not present, it will be added automatically unless you specied the -so switch (for magnetic cases with spin-orbit coupling). The k-mesh is then created with this additional symmetry. If symmetry permits, it further asks whether or not the k-mesh should be shifted away from high symmetry directions. The le case.klist is used in lapw1 and case.kgen is used in tetra and lapw2, if the EF switch is set to TETRA, i.e. the tetrahedron method for the k-space integration is used. For the format of the case.klist see page 89.
6.5.1
Execution
CHAPTER 6. INITIALIZATION
With the switch -so it uses a le case.ksym (usually generated by symmetso) instead of case.struct and does not add inversion symmetry.
6.5.2
Dimensioning parameters
The following parameters are used in main.f, ord1.f (static arrays): IDKP NWX INDEXM number of inequivalent k-points (like NKPT in other programs) internal parameter, must be increased for very large k-meshes internal parameter, must be increased for very large k-meshes
6.6
This program generates an initial crystalline charge density case.clmsum by a superposition of atomic densities (case.rsp) generated with lstart. Information about LM values of the lattice harmonics representation and number of Fourier coefcients of the interstitial charge density are taken from case.in1 and case.in2. In the case of a spin-polarized calculation it must also be run for the spin-up charge density case.clmup and spin-down charge density case.clmdn.
6.6.1
Execution
The program dstart is executed by invoking the command: dstart dstart.def or x dstart [-up|dn -c -fft] With the switch -fft dstart will terminate after case.in0 std has been created.
6.6.2
Dimensioning parameters
The following parameters are collected in le module.f, but usually need not to be changed: NPT LMAX2 NCOM number of r-mesh points in atomic density (should be the same as in LSTART) max l in LM expansion number of LM terms in density
In sections 7.1-7.9 we describe the main programs to run an SCF cycle as illustrated in gure 4.1.
7.1
lapw0 computes the total potential Vtot as the sum of the Coulomb Vc and the exchange-correlation potential Vxc using the total electron (spin) density as input. It generates the spherical part (l=0) as case.vsp and the non-spherical part as case.vns. For spin-polarized systems, the spindensities case.clmup and case.clmdn lead to two pairs of potential les. These les are called: case.vspup, case.vnsup and case.vspdn, case.vnsdn. The Coulomb potential is calculated by the multipolar Fourier expansion introduced by Weinert (81). Utilizing the spatial partitioning of the unit cell and the dual representation of the charge density [equ. 2.10], rstly the multipole moments inside the spheres are calculated (Q-sp). The Fourier series of the charge density in the interstitial also represent SOME density inside the spheres, but certainly NOT the correct density there. Nevertheless, the multipole moments of this articial plane-wave density inside each sphere are also calculated (Q-pw). By subtracting Q-pw from Q-sp one obtains pseudo-multipole moments Q. Next a new plane-wave series is generated which has two properties, namely zero density in the interstitial region and a charge distribution inside the spheres that reproduces the pseudo-multipole moments Q. This series is added to the original interstitial Fourier series for the density to form a new series which has two desirable properties: it simultaneously represents the interstitial charge density AND it has the same multipole moments inside the spheres as the actual density. Using this Fourier series the interstitial Coulomb potential follows immediately by dividing the Fourier coefcients by K 2 (up to a constant). Inside the spheres the Coulomb potential is obtained by a straightforward classical Greens function method for the solution of the boundary value problem. The exchange-correlation potential is computed numerically on a grid. Inside the atomic spheres a least squares procedure is used to reproduce the potential using a lattice harmonics representation 79
80
(the linear equations are solved with modied LINPACK routines). In the interstitial region a 3dimensional fast Fourier transformation (FFT) is used. The total potential V is obtained by summation of the Coulomb VC and exchange-correlation potentials Vxc . In order to nd the contribution from the plane wave representation to the Hamilton matrix elements we reanalyze the Fourier series in such a way that the new series represents a potential which is zero inside the spheres but keeps the original value in the interstitial region and this series is put into case.vns. The contribution to the total energy which involves integrals of the form V is calculated according to the formalism of Weinert et al (82). The Hellmann-Feynman force contribution to the total force is also calculated (Yu et al 91). Finally, the electric eld gradient (EFG) is calculated in case you have an L=2 term in the density expansion. The EFG tensor is given in both, the local-rotation-matrix coordinate system, and then diagonalized. The resulting eigenvectors of this rotation are given by columns. For surface calculations the total and electrostatic potential at z=0 and z=0.5 is calculated and can be used as energy-zero for the determination of the workfunction. (It is assumed that the middle of your vacuum region is either at z=0 or z=0.5).
7.1.1
Execution
The program lapw0 is executed by invoking the command: lapw0 lapw0.def or x lapw0 [ -p -eece ]
7.1.2
Dimensioning parameters
The following parameters are used (they are collected in le param.inc, but usually need not to be changed: NCOM number of lm components in charge density and potential representation; it must satisfy the following condition: NCOM+3 .gt. {[number of l, m with m = 0] + [2 * number of l, m with m > 0]} number of radial mesh points highest L in the LM expansion of charge and potential highest L for the gpoint-grid in the xcpot generation (may need large values for -eece)
7.1.3
Input
The input is very simple. It is generated automatically by init lapw, and needs to be changed only if a different exchange-correlation potential should be used:
------------------ top of file: case.in0 -------------------TOT 13 ! MULT/COUL/EXCH/POT /TOT ; VXC-SWITCH NR2V IFFT 8 ! R2V EECE/HYBR IFFT LUSE 30 30 108 4.00 min IFFT-parameters, enhancement factor 0 0.0 (#of FK in E-field expansion, EFELD (Ry) ------------------- bottom of file ---------------------------
7.1. LAPW0 line 1: free format switch, indxc switch TOT POT MULT COUL EXCH total energy contributions and total potential calculated total potential is calculated, but not the total energy multipole moments calculated only Coulomb potential calculated only exchange correlation potential calculated only NOTE: MULT, COUL, and EXCH are for testing only, whereas POT, saves some CPU time if total energy is not needed index to specify type of exchange and correlation potential. Supported options (for more options see the SRC lapw0/vxclm2.f subroutine) include: Perdew and Wang 92, reparameterization of Ceperly-Alder data, the recommended LDA option Generalized Gradient approximation (PBE, Perdew-Burke-Ernzerhof 96) Generalized Gradient approximation (Wu-Cohen 2006, Tran et al. 2007) Generalized Gradient approximation (PBEsol, Perdew 2008) Generalized Gradient approximation (AM05, Mattsson 2008) Meta GGA (Perdew et al. 1999). You must have a case.inm vresp le (cp case.inm case.inm vresp and set PRATT-mixing with mixing factor 0.5 and NORM = NO). To generate the required les (case.vresp* for this option run one scf cycle with PBE (indxc=13) after you created case.inm vresp and change indxc to 12 afterwards. In addition you must use very large IFFT parameters, but even so it might be numerically unstable. Meta GGA TPSS (Tao et al. 2003). At present the best meta-GGA. (See also the option above.) Note: Only EXC is obtained that way, VXC of standard PBE is used.
81
indxc
5 13 11 19 20 12
27
line 2: free format (only blanks are allowed as separator) IPRINT, H-mod, FFTopt, LUSE IPRINT NR2V R2V no additional output Exchange-correlation (case.r2v), Coulomb (case.vcoul) and total potentials (case.vtotal) are written as (r2 V ) to a le for plotting with lapw5 (cp case.vtotal case.clmval; use VAL for normalization in case.in5) On-site Hartree-Fock (inside spheres) for selected electrons (see 4.5.7) On-site Hybrid functionals (inside spheres) (see 4.5.7) optional keyword, which lets you dene the IFFTx mesh and an enhancement factor in the next line optional l-max value for the angular grid used in xcpot1. For standard LDA/GGA the recommended value is max L value of LM-list in case.in2 + 2; for EECE one should use a better, antialiased grid, thus a large negative LUSE-value is recommended (and set automatically by runeece lapw)
line 3: free format (must be omitted when IFFT is not specied above) IFFTx, IFFTy, IFFTz, IFFTfactor
82 IFFTx,y,z
CHAPTER 7. SCF CYCLE FFT-mesh parameters in x,y,z directions for the calculation of the XC-potential in the interstitial region. Usually set automatically in init lapw (dstart). The ratio of the 3 numbers should be indirect proportional to the lattice parameters. (-1 -1 -1 determines these numbers automatically and takes only IFFTfactor into account) Multiplicative factor to the IFFT grid specied above. It needs to be enlarged for highly accurate GGA or meta-GGA calculations as well as for systems with H atoms with small spheres.
IFFTfactor
The following line is optional and can be omitted. It is used to introduce an electric eld via a zig-zag potential (see J.Stahn et al. 2001): line 4: free format IFIELD, EFIELD, WFIELD IFIELD number of Fourier coefcients to model the zig-zag potential. Typically use IEFIELD=30; -999 lists available modes (form) of elds, and these modes can be specied by mode=IEFIELD/1000. (default: mode=0) EFIELD value (amplitude) of the electric eld. The electric eld (in Ry/bohr) corresponds to EFIELD/c, where c is your c lattice parameter. WFIELD optional value for lambda (see output of IEFIELD=-999).
7.2
This program was contributed by: P.Nov k a Inst. of Physics, Acad.Science, Prague, Czeck Republic email: novakp@fzu.cz
Please make comments or report problems with this program to the WIEN-mailinglist. we will communicate the problem to the authors. If necessary,
orb calculates the orbital dependent potentials, i.e. potentials which are nonzero in the atomic spheres only and depend on the orbital state numbers l, m. In the present version the potential is assumed to be independent of the radius vector and needs the density matrix calculated in lapwdm. Four different potentials are implemented in this package: a LDA+U. There are three variants of this method, two of them are discussed in Nov k et al. 2001 1. LDA+U(SIC) - introduced by Anisimov et al. 1993, with an approximate correction for the self-interaction correction. This is probably best suited for strongly correlated systems and for a full potential method we recommend to use an effective Uef f = U J; setting J = 0. 2. LDA+U(AMF) - introduced by Czyzyk and Sawatzky 1994 as Around the Mean Field method. (In Nov k et al. 2001 it is denoted as LDA+U(DFT)). This version is (probably) a more suitable for metallic or less strongly correlated systems. 3. LDA+U(HMF) - in addition the Hubbard model in the mean eld approximation, as introduced by Anisimov et al. 1991 is also implemented. Note, however, that it is to be used with the LDA (not LSDA) exchange-correlation potential in spin polarized calculations!
7.2. ORB
83
All variants are implemented in the rotationally invariant way (Liechtenstein et al. 1995). If LDA+U is used in an unrestricted, general way, it introduces an orbital eld in the calculation (in analogy to the exchange eld in spin-polarized calculations, but it interacts with the orbital, instead of spin momentum). The presence of such an orbital eld may lower the symmetry. In particular the complex version of LAPW1 must be used. Care is needed when dealing with the LDA+U orbital eld. It may be quite large, and without specifying its direction it may uctuate, leading to oscillations of scf procedure or/and to false solutions. It is therefore necessary to use it in combination with the spin-orbit coupling, preferably running rst LSDA+(s-o) and then slowly switching on the LDA+U orbital eld. If the LDA+U orbital polarization is not needed, it is sufcient to run real version of LAPW1, which then automatically puts the orbital eld equal to zero. For systems without the center of inversion, when LAPW1 must be complex, an extra averaging of the LDA+U potential is necessary. Orbital polarization. The additional potential has the form (Brooks 1985, Eriksson et al. 1989): VOP = cOP < Lz > lz (7.1) where cOP is the orbital polarization parameter, < Lz > is projection of the orbital momentum on the magnetization direction and lz is single electron orbital momentum component z parallel to M . Exact exchange and Hybrid methods: see Tran et al. 2006 and 4.5.7 Interaction with the external magnetic eld. In this case the additional potential has a simple form: VBext = B Bext (l + 2s). (7.2) The interaction with the electronic spin is taken into account by shifting the spin up and spin down exchange correlation potentials in LAPW0 by the energy +B Bext B Bext , respectively. The interaction of Bext with spin could be as well calculated using the Fixed spin moment method. For an interaction with the orbital momentum it is necessary to specify the atoms and angular momentum numbers for which this interaction will be considered. Caution is needed when considering interaction of the orbital momentum with Bext in metallic or metallic-like systems. For the analysis see the paper by Hirst 1997 In all cases the resulting potential for a given atom and orbital number l is a Hermitian, (2l + 1)x(2l + 1) matrix. In general this matrix is complex, but in special cases it may be real. For more information see also section 4.5.6.
7.2.1
Execution
The program orb is executed by invoking the command: x orb [ -up/-dn/-du ] or orb up/dnorb.def
7.2.2
Dimensioning parameters
The following parameters are used (collected in le param.inc): LABC NRAD highest l+1 value of orbital dependent potentials number of radial mesh points
7.2.3
Input
Since this program can handle three different cases, examples and descriptions for all cases are given below:
84 Input for all potentials line 1: free format nmod,natorb,ipr nmod natorb ipr line 2: (A5,f8.2) mixmod,amix
denes the type of potential 1...LDA+U, 2...OP, 3...Bext number of atoms for which orbital potential Vorb is calculated printing option, the larger ipr, the longer the output
mixmod PRATT or BROYD (should not be changed, see MIXER for more information) amix coefcient for the Pratt mixing of Vorb This option is now only used for testing. The mixing should be set to PRATT, 1.0 line 3: free format iatom(i),nlorb(i),(lorb(li,i),li=1,nlorb(i)) iatom nlorb lorb index of atom in struct le number of orbital moments for which Vorb shall be applied orbital numbers (repeated nlorb-times)
3rd line repeated natorb-times Input for LDA+U (nmod=1) line 4: free format nsic nsic=0 nsic=1 nsic=2 line 5: free format U(li,i), J(li,i) Coulomb and exchange parameters, U and J, for LDA+U in Ry for atom type i and orbital number li. We recommend to use Uef f only. denes double counting correction AMF method (Czyzyk et al. 1994) SIC method (Anisimov et al. 1993, Liechtenstein et al. 1995) HMF method (Anisimov et al. 1991)
5th line repeated natorb-times, for each natorb repeated nlorb-times Example of the input le for NiO (LDA+U included for two inequivalent Ni atoms that have indexes 1 and 2 in the structure le): 1 2 0 PRATT,1.0 1 1 2 2 1 2 1 0.52 0.0 0.52 0.0 nmod, natorb, ipr mixmod, amix iatom nlorb, lorb iatom nlorb, lorb nsic (LDA+U(SIC) used) U J U J
7.2. ORB Input for Orbital Polarization (nmod=2) line 4: (free format) nmodop 1 0 line 5: (free format) Ncalc(i) 1 0 Orb.pol. parameters are calculated ab-initio Orb.pol. parameters are read from input denes mode of OP average Lz taken separately for spin up, spin down average Lz is the sum for spin up and spin down
85
this line is repeated natorb-times line 6: (free format) (only if Ncalc=0, then repeated nlorb-times) pop(li,i) OP parameter in Ry
line 7: (free format) xms(1), xms(2), xms(3) direction of magnetization expressed in terms of lattice vectors Example of the input le for NiO (total < Lz > used in (1), OP parameters calculated ab-initio, M along [001]): 2 2 0 PRATT, 1.0 1 1 2 2 1 2 0 1 1 0. 0. 1. Input for interaction with Bext (nmod=3) line 4: (free format) Bext external eld in Tesla nmod, natorb, ipr mixmod, amix iatom nlorb, lorb iatom nlorb, lorb nmodop Ncalc Ncalc direction of M in terms of lattice vectors
line 5: (free format) xms(1), xms(2), xms(3) direction of magnetization expressed in terms of lattice vectors Example of the input le for NiO, (Bext = 4 T, along [001]): 3 2 0 PRATT, 1.0 1 1 2 2 1 2 4. nmod, natorb, ipr mixmod, amix iatom nlorb, lorb iatom nlorb, lorb Bext in T
86 0. 0. 1.
7.3
lapw1 sets up the Hamiltonian and the overlap matrix (Koelling and Arbman 75) and nds by diagonalization eigenvalues and eigenvectors which are written to case.vector. Besides the standard LAPW basis set, also the APW+lo method (see Sjostedt et al 2000, Madsen et al. 2001) is supported and the basis sets can be mixed for maximal efciency. If the le case.vns exists (i.e. non-spherical terms in the potential), a full-potential calculation is performed. For structures without inversion symmetry, where the hamilton and overlap matrix elements are complex numbers, the corresponding program version lapw1c must be used in connection with lapw2c. Since usually the diagonalization is the most time consuming part of the calculations, two options exist here. In WIEN2k we include highly optimized modications of LAPACK routines. We call all these routines full diagonalization, but we also provide an option to do an iterative diagonalization using a new preconditioning of a block-Davidson method (see Singh 89 and Hofst tter et a al. 08). This scheme starts from an old eigenvector (previous scf-iteration), and produces approximate (but usually still highly accurate) eigenvalues/vectors. Depending on the ratio of matrix size to number of eigenvalues (restrict them to relevant, i.e. occupied states) a signicant speedup compared to LAPACK can be reached. Iterative diagonalization is activated with the -it switch in x lapw1 -it or run lapw -it. Parallel execution (ne grain and on the k-point level) is also possible and is described in detail in Sec. 5.5. The switch -nohns skips the calculation of the nonspherical matrix elements inside the sphere. This may be used to save computer time during the rst scf cycles.
7.3.1
Execution
The program lapw1 is executed by invoking the command: x lapw1 [-c -up|dn -it -p -nohns -orb -band -nmat only] or lapw1 lapw1.def or lapw1c lapw1.def In cases without inversion symmetry, the default input lename is case.in1c. For 2-window (not recommended) semi-core calculations the lapw1s.def le uses a case.in1s le and creates the les case.output1s and case.vectors. For the spin-polarized case lapw1 is called twice with uplapw1.def and dnlapw1.def. To all relevant les the keywords up or dn are appended (see the fcc Ni test case in the WIEN2k package).
7.3.2
Dimensioning parameters
The following parameters (collected in le param.inc r or param.inc c) are used: LMAX LMMX LOMAX NGAU NMATMAX NRAD NSLMAX highest l+1 in basis function inside sphere (consistent with input in case.in1) number of LM terms in potential (should be at least NCOM-1) highest l for local orbital basis (consistent with input in case.in1) number of Gaunt coefcients for the non-spherical contributions to the matrix elements maximum size of H,S-matrix (denes size of program, should be chosen according to the memory of your hardware, see chapter 11.2.2!) number of radial mesh points highest l+1 in basis functions for non-mufn-tin matrix elements (consistent with input in case.in1).If set larger than 5, parameter MAXDIM (modules.F) and LOMAX=8, P(10,10) (gaunt2.f) must also be increased.
7.3. LAPW1 NSYM NUME NVEC1 NVEC2 NVEC3 NLOAT order of point group maximum number of energy eigenvalues per k-point denes the largest triple of integers which dene reciprocal K-vectors when multiplied with the reciprocal Bravais matrix max number of LOs for one l-quantum number
87
7.3.3
Input
Below a sample input is shown for T iO2 (rutile), one of the test cases provided in the WIEN2k package. The input le is written automatically by LSTART, but was modied to set APW only for Ti-3d and O-2p orbitals. In addition UNIT was changed to 5 and k-points where inserted by hand for bandstructure plotting.
------------------ top of file: case.in1 -------------------WFFIL (WFPRI,WFFIL,SUPWF ; wave fct. print,file,suppress 7.500 10 4 (R-mt*K-max; MAX l, max l for hns ) 0.30 5 0 (global energy parameter E(l), with 5 other choices, 0 -3.00 0.020 CONT 0 ENERGY PARAMETER for s, 0 0.30 0.000 CONT 0 ENERGY PARAMETER for s-local orbital, 1 -1.90 0.020 CONT 0 ENERGY PARAMETER for p 1 0.30 0.000 CONT 0 ENERGY PARAMETER for p-local orbitals 2 0.20 0.020 CONT 1 0.20 3 0 (global energy parameter E(l), with 1 other choice, 0 -0.90 0.020 STOP 0 0 0.30 0.000 CONT 0 1 0.30 0.000 CONT 1 K-VECTORS FROM UNIT:5 -9.0 2.0 60 emin/emax/nband 1.d-15 spro_limit for it.diag. GAMMA 0 0 0 2 1.00 0 0 1 10 2.00 0 0 2 10 2.00 0 0 3 10 2.00 0 0 4 10 2.00 Z 0 0 5 10 1.00 END ------------------- bottom of file ------------------------
LAPW) LAPW LAPW-LO LAPW LAPW-LO APW LAPW) LAPW LAPW-LO APW
Interpretive comments follow: line 1: format(A5) switch WFFIL standard option, writes wave functions to le case.vector (needed in lapw2) SUPWF suppresses wave function calculation (faster for testing eigenvalues only) WFPRI prints eigenvectors to case.output1 and writes case.vector (produces long outputs!) line 2: free format rkmax, lmax, lnsmax
88 rkmax
CHAPTER 7. SCF CYCLE Rmt Kmax determines matrix size (convergence), where Kmax is the plane wave cut-off, Rmt is the smallest of all atomic sphere radii. Usually this value should be between 5 and 9 (APW+lo) or 6 - 10. (LAPW2 basis) (Kmax would be the plane wave cut-off parameter in Ry used in pseudopotential calculations.) Note that d (f) wavefunctions converge slower than s and p. For systems including hydrogen with short bondlength and thus a very small Rmt (e.g. 0.7 a.u.), RKmax = 3 might already be reasonable, but convergence must be checked for a new type of system. Note, that the actual matrix size is written on case.scf1. It is determined by whatever is smaller, the plane wave cut-off (specied with RKmax) or the maximum matrix dimension NMATMAX, (see previous section). maximum l value for partial waves used inside atomic spheres (should be between 8 and 12) maximum l value for partial waves used in the computation of nonmufn-tin matrix elements (lnsmax=4 is quite good)
lmax lnsmax
line 3: free format Etrial, ndiff, Napw Etrial ndiff Napw default energy used for all El to obtain ul (r, El ) as regular solution of the radial Schrodinger equation [used in equ.2.4,2.7] (see gure 7.1). number of exceptions (specied in the next ndiff lines) 0 ... use LAPW basis, 1 ... use APW-basis for all global l values of this atom. We recommend to use LAPW here.
line 4: format(I2,2F10.5,A4) l, El, de, switch, NAPWL l El de l of partial wave El for L=l energy increment de=0: this E(l) overwrites the default energy (from line 3) de= 0: a search for a resonance energy using this increment is done. The radial function ul (r, E) up to the mufn-tin radius RMT varies with the energy. A typical case is schematically shown in Fig. 7.1. At the bottom of the energy bands u has a zero slope (bonding state), but it has a zero value (antibonding state) at the top of the bands. One can search up and down in energy starting with El using the increment de to nd where ul (RM T , E) changes sign in value to determine Etop and in slope to specify Ebottom . If both are found El is taken as the arithmetic mean and replaces the trial energy. Otherwise El keeps the specied value. For Etop and Ebottom bounds of +1 and -10 Ry are dened respectively, and if they are not found, they remain at the initial value set to -200. used only if de.ne.0 calculation continues, even if either Etop or Ebottom are not found calculation stops if not both Etop and Ebottom are found (especially useful for semi-core states) 0 ... use LAPW basis, 1 ... use APW-basis for this l value of this atom. We recommend to use APW+lo when the corresponding wavefunction is localized and thus difcult to converge with standard LAPW (like 3d functions) and/or when the respective atomic sphere is small compared to the other spheres in the unit cell.
7.3. LAPW1
89
u l(r,E)
E E bottom E top
El
El
E top r RMT
E bottom DOS
Figure 7.1: Schematic dependence of DOS and ul (r, El ) on the energy >>>:line 4 is repeated ndiff times (see line 3) for each exception. If the same l value is specied twice, local orbitals are added to the (L)APW basis. The rst energy (E1 ) is used for the usual LAPWs and the second energy (E2 ) for the LOs, which are formed according to (see equ. 2.7): uE1 + uE1 + uE2 . Note: You may change the automatically created input and add d- or f-local orbitals to reduce the linearization error (e.g. in late transition metals you could put E3d at 0.0 and 1.0 Ry) or s, p, d, and/or f-LOs at very high energy (e.g. 2.0 - 3.0 Ry) to better describe unoccupied states. This input is also adapted during scf when -in1new is specied, while the original in1 le is saved in case.in1 orig. >>>:lines 3 and 4 are repeated for each non equivalent atom line 5: format (20x,i1,2f10.1,i6) unit-number, Emin, Emax nband unitnumber le number from which the k-vectors in the irreducible wedge of the Brillouin zone are read. 5 species the input le itself (as shown in the example), default is 4, for which the corresponding information is contained in case.klist (generated by KGEN). energy window in which eigenvalues shall be searched (overrides setting in case.klist. A small window saves computer time, but it also limits the energy range for the DOS calculation of unoccupied states. number of eigenvalues calculated with iterative diagonalization. Set automatically to nband = ne 1.15 + 5 in lstart. Larger values will lead to more cpu-time. (Optional input)
line 6: free format spro limit spro limit limit for detection of linear dependency for iterative diagonalization (optional input, but necessary if k-vectors are read from unit 5, typical around 1.d-15)
line 7: format (A10,4I10,3F5.2); (optional and not recommended, use unit 4: case.klist) name, ix,iy,iz, idv, weight name name of k-vector (optional) >>>: the last line must be END !!
90 ix,iy,iz, idv
CHAPTER 7. SCF CYCLE denes the k-vector, where x= ix/idv etc. We use carthesian coordinates in units of 2/a, 2/b, 2/c for P,C,F and B cubic, tetragonal and orthorhombic lattices, but internal coordinates for H and monoclinic/triclinic lattices of k-vector (order of group of k)
weight
>>>: line 7 is repeated for each k-vector in the IBZ. The utility program kgen (see section 6.5) provides a list of such vectors (on a tetrahedral mesh) in case.klist. >>>: the last line must be END
7.4. LAPWSO
91
7.4
lapwso includes spin-orbit (SO) coupling in a second-variational procedure and computes eigenvalues and eigenvectors (stored in case.vectorso) using the scalar-relativistic wavefunctions from lapw1. For reference see Singh 94 and Nov k 97. The SO coupling must be small, as it is a diagonalized in the space of the scalar relativistic eigenstates. For large spin orbit effects it might be necessary to include many more eigenstates from lapw1 by increasing EMAX in case.in1 (up to 10 Ry!). We also provide an additional basisfunction, namely an LO with a p1/2 radial wavefunction, which improves the basis and removes to a large degree the dependency of the results on EMAX and RMT (see Kune et al. 2001). SO is considered only within the atomic spheres and s thus the results may depend to some extent on the choice of atomic spheres radii. The nonspherical potential is neglected when calculating dV . Orbital dependend potentials (LDA+U, EECE or OP) dr can be added to the hamiltonian in a cheap and simple way. In spin-polarized calculations the presence of spin-orbit coupling may reduce symmetry and even split equivalent atoms into non-equivalent ones. It is then necessary to consider a larger part of the Brillouin zone and the input for lapw2 should also be modied since the potential has lower symmetry than in the non-relativistic case. The following inputs may change: case.struct case.klist case.kgen case.in2c case.in1 We recommend to use initso (see Sec.5.2.16) which helps you together with symmetso (see Sec.9.1) to setup spinorbit calculations. Note: SO eigenvectors are complex and thus lapw2c must be used in a selfconsistent calculation.
7.4.1
Execution
The program lapwso is executed by invoking the command: x lapwso [ -up -p -c -orb] or lapwso lapwso.def where here -up indicates a spin-polarized calculation (no -dn is needed, since spin-orbit will mix spin-up and dn states in one calculation).
7.4.2
Dimensioning parameters
The following parameters are used (collected in le param.inc): FLMAX LMAX LABC LOMAX NRAD NLOAT constant = 3 highest l of wave function inside sphere (consistent with lapw1) highest l of wave function inside sphere where SO is considered max l for local orbital basis number of radial mesh points number of local orbitals
92
7.4.3
Input
A sample input for lapwso is given below. It will be generated automatically by initso
------------------ top of file: case.inso -------------------WFFIL 4 0 0 llmax,ipr,kpot -10.0000 1.5000 Emin, Emax 0 0 1 h,k,l (direction of magnetization) 2 number of atoms with RLO 1 -3.5 0.005 STOP atom-number, E-param for RLO 3 -4.5 0.005 STOP atom-number, E-param for RLO 1 2 number of atoms without SO, atomnumbers ------------------- bottom of file ------------------------
Interpretive comments on this le are as follows: line 1: format(A5) switch WFFIL wavefunctions will also be calculated for scf-calculation. Otherwise only eigenvalues are calculated.
line 2: free format LLMAX, IPR, KPOT LLMAX IPR KPOT maximum l for wavefunctions print switch, larger numbers give additional output. V(dn) potential is used for < dn|V |dn > elements, V(up) for < up|V |up > and [V(dn)+V(up)]/2 for < up|V |dn >. averaged potential used for all matrix elements.
0 1
line 3: free format Emin, Emax Emin Emax line 4: free format h,k,l vector describing the direction of magnetization. For R lattice use h,k,l in rhombohedral coordinates (not in hexagonal) minimum energy for which the output eigenvectors and eigenenergies will be printed (Ry) maximum energy
line 5: free format nlr number of atoms for which a p1/2 LO should be added
line 6: free format nlri, El, de, switch nlri El de switch CONT atom-number for which RLO should be added El for L=l energy increment (see lapw1) used only if de.ne.0 calculation continues, even if either Etop or Ebottom are not found
7.5. LAPW2 STOP calculation stops if not both Etop and Ebottom are found (especially useful for semi-core states)
93
>>>: line 6 must be repeated nlr times (or should be omitted if nlr=0). line 7: free format noff, (iatoff(i),i=1,noff) noff iatoff number of atoms for which SO is switched off (for light elements, saves time) atom-numbers
7.5
lapw2 uses the les case.energy and case.vector and computes the Fermi-energy (for a semiconductor EF is set to the valence band maximum) and the expansions of the electronic charge densities in a representation according to eqn. 2.10 for each occupied state and each k-vector; then the corresponding (partial) charges inside the atomic spheres are obtained by integration. In addition Pulay-corrections to the forces at the nuclei are calculated here. For systems without inversion symmetry you have to use the program lapw2c (in connection with lapw1c). The partial charges for each state (energy eigenvalue) and each k-vector can be written to les case.help031, case.help032 etc., where the last digit gives the atomic index of inequivalent atoms (switch -help files). Optionally these partial charges are also written to case.qtl (switch -qtl). For meta-GGA calculations energy densities are written to case.vrepval(switch -vresp). In order to get partial charges for bandstructure plots, use -band, which sets the QTL option and uses ROOT in case.in2. Several other switches change the input le case.in2 temporarely and are described there.
7.5.1
Execution
The program lapw2 is executed by invoking the command: x lapw2 [-c -up|dn -p -so -qtl -fermi -efg -band -eece -vresp -help files -emin X -all X Y] or lapw2 lapw2.def [proc#] or lapw2c lapw2.def [proc#] where proc# is the i-th processor number in case of parallel execution (see Fig. 5.2). The -so switch sets -c automatically. For complex calculations case.in2c is used. For a spin-polarized case see the fcc Ni test case in the WIEN2k package.
7.5.2
Dimensioning parameters
The following parameters are used (collected in le modules.F): IBLOCK LMAX2 LOMAX Blocking parameter (32-255) in l2main.F, optimize for best performance highest l in wave function inside sphere (smaller than in lapw1, at present must be .le. 8) max l for local orbital basis
94 NCOM NGAU NRAD number of LM terms in density max. number of Gaunt numbers number of radial mesh points
7.5.3
Input
A sample input for lapw2 is listed below, it is generated automatically by the programs lstart and symmetry.
------------------ top of file: case.in2 -------------------TOT (TOT,FOR,QTL,EFG) -1.2 32.000 0.5 0.05 (EMIN, # of electrons,ESEPERMIN, ESEPER0 ) TETRA 0.0 (EF-method (ROOT,TEMP,GAUSS,TETRA,ALL),value) 0 0 2 0 2 2 4 0 4 2 4 4 0 0 1 0 2 0 2 2 3 0 3 2 4 0 4 2 4 4 14.0 (GMAX) FILE (NOFILE, optional) ------------------- bottom of file ------------------------
Interpretive comments on this le are as follows: line 1: format(2A5) switch, EECE switch TOT FOR total valence charge density expansion inside and outside spheres same as TOT, but in addition a Pulay force contribution is calculated (this option costs extra computing time and thus should be performed only at the nal scf cycles, see run lapw script in sec. 5.1.3) QTL partial charges only (generates le case.qtl for DOS calculations), set automatically by switch -qtl EFG computes decomposition of electric eld gradient (EFG), contributions from inside spheres (the total EFG is computed in lapw0), set automatically by switch -efg. ALM this generates two les, case.radwf and case.almblm, where the radial wavefunctions and the Alm , Blm , Clm coefcients of the wavefunction inside spheres are listed. The le case.almblm can get very big. CLM CLM charge density coefcients only FERMI Fermi energy only, this produces weight les for parallel execution and for the optics and lapwdm package, set automatically by switch -fermi. >>>: TOT and FOR are the standard options, QTL is used for density of states (or energy bandstructure) calculations, EFG for analysis, while FOURI, CLM are for testing only. if set to EECE, calculates the density for specied atoms and angular momentum only. Used for exact-exchange or hybrid-calculations, usually set automatically by runsp lapw -eece
EECE
line 2: free format emin, ne, esepermin, eseper0 emin ne lower energy cut-off for dening the range of occupied states, can be set termporarely to X by switch -emin X or -all X Y number of electrons (per unit cell) in that energy range
7.5. LAPW2 esepermin LAPW2 tries to nd the mean energies for each l channel, for both the valence and the semicore states. To dene valence and semicore it starts at (EF - esepermin) and searches for a gap with a width of at least eseper0 and denes this as separation energy of valence and semicore minimum gap width (see above). The values esepermin and eseper0 will only inuence results if the option -in1new is used
95
eseper0
line 3: format(a5,f10.5) efmod, eval efmod determines how EF is determined EF is calculated and k space integration is done by root sampling (this can be used for insulators, but for metals poor convergence is found) TEMP EF is calculated where each eigenvalue is temperature broadened using a Fermi function with a broadening parameter of eval Ry. The total energy is corrected corresponding to T=0K. (e.g. eval=0.002 gives good total energy convergence, but has no physical justication) TEMPS EF is calculated where each eigenvalue is temperature broadened using a Fermi function with a broadening parameter of eval Ry. The total energy is corrected by -TS corresponding to the temperature specied by eval (e.g. eval=0.002 corresponds to about 40 C) GAUSS EF is calculated as above but a Gaussian smearing method is used with a width of eval Ry. (e.g. eval=0.002 gives good total energy convergence, but has no physical justication). TETRA EF is calculated and k space integration is done by the modied (if eval is .eq. 0) or standard (eval .ge. 100) tetrahedron-method (Blochl 94). This standard scheme is recommended for optic. In this case the le case.kgen, consistent with the k-mesh used in lapw1, must be provided (see Sec. 7.3). This is the recommended option although convergence may be slower than with Gauss- or temperature-smearing. ALL All states up to eval are used. This can be used to generate charge densities in a specied energy interval, can be set termporarely by switch -all X Y. when efmod is set to TEMP or GAUSS, eval species the width of the broadening (in Ry), if efmod is set to ALL, eval species the upper limit of the energy window (can be set termporarely by switch -all X Y), if efmod is set to TETRA, eval .ge. 100 species the use of the standard tetrahedron method instead of the modied one (see above). By default, TETRA will average over partially occupied degenerate states at EF with a degeneracy criterium D = 1.d-6. You can modify this by setting eval equal to your desired D (or 100+D). ROOT
eval
optional line 3a: free format (ONLY when EECE is set) nat rho number of atoms for which a specic density should be calculated
optional line 3b: free format (ONLY when EECE is set) jatom rho, l rho jatom rho l rho index of atom for which a specic density should be calculated angular momentum l-value for which a specic density should be calculated
96 >>>line 3b: must be repeated nat rho times line 4: format (121(I3,I2)) L,M
LM values of lattice harmonics expansion (equ. 2.10), dened according to the point symmetry of the corresponding atom; generated in SYMMETRY, MUST be consistent with the local rotation matrix dened in case.struct (details can be found in Kara and Kurki-Suonio 81). CAUTION: additional LM terms which do not belong to the lattice harmonics will in general not vanish and thus such terms must be omitted. Automatic termination of the lm series occurs when a second 0,0 pair appears within the list. When you change the l, m list during an SCF calculation the Broyden-Mixing is restarted in MIXER.
Table 7.41: LM combinations of Cubic groups (3 (111)) direction, requires positive atomic index in case.struct. Terms that should be combined (Kara and Kurki-Suonio 81) must follow one another.
Symmetry 1 -1 2 M 2/M 222 MM2 MMM 4 -4 4/M 422 4MM -42M 4MMM 3 -3 32 3M -3M 6 -6 6/M 622 6MM -62M 6MMM Coordinate axes any any 2 z mz 2 z, mz 2 z, 2 y, (2 x) 2 z, my, (2x) 2z, my, 2x 4 z -4 z 4 z, mz 4 z, 2 y, (2 x) 4 z, my, (2x) -4 z, 2 x (m=xyyx) 4 z, mz, mx 3 z -3 z 3 z, 2 y 3 z, my -3 z, my 6 z -6 z 6 z, mz 6 z, 2 y, (2 x) 6 z, m y, (mx) -6 z, my, (2 x) 6 z, mz, my, (mx) Indices of YLM ALL (l,m) (2l,m) (l,2m) (l,l-2m) (2l,2m) (+2l,2m), (-2l+1,2m) (+l,2m) (+2l,2m) (l,4m) (2l,4m), (2l+1,4m+2) (2l,4m) (+2l,4m), (-2l+1,4m) (+l,4m) (+2l,4m), (-2l+1,4m+2) (+2l,4m) (l,3m) (2l,3m) (+2l,3m), (-2l+1,3m) (+l,3m) (+2l,3m) (l,6m) (+2l,6m), (2l+1,6m+3) (2l,6m) (+2l,6m), (-2l+1,6m) (+l,6m) (+2l,6m), (+2l+1,6m+3) (+2l,6m) crystal system triclinic monoclinic orthorhombic tetragonal
rhombohedral
hexagonal
Table 7.42: LM combination and local coordinate system of non-cubic groups (requires negative atomic index in case.struct) line 5: free format
7.6. SUMPARA GMAX max. G (magnitude of largest vector) in charge density Fourier expansion. For systems with short H bonds larger values (e.g. GMAX up to 25) could be necessary. Calculations using GGA (potential option 13 or 14 in case.in0) should also employ a larger GMAX value (e.g. 14), since the gradients are calculated numerically on a mesh determined by GMAX. When you change GMAX during an scf calculation the Broyden-Mixing is restarted in mixer.
97
line 6: A4 reclist FILE writes list of K-vectors into le case.recprlist or reuses this list if the le exists. The saved list will be recalculated whenever GMAX, or a lattice parameter has been changed.
7.6
sumpara is a small program which (in parallel execution of WIEN2k) sums up the densities (case.clmval *) and quantities from the case.scf2 * les of the different parallel runs.
7.6.1
Execution
The program sumpara is executed by invoking the 2 commands as follows: x sumpara -d [-up/-dn/-du] and then sumpara sumpara.def # of proc where # of proc is the numbers of parallel processors used. It is usually called automatically from lapw2para or x lapw2 -p.
7.6.2
Dimensioning parameters
The following parameters are listend in le param.inc, but usually they need not to be modied: NCOM NRAD NSYM number of LM terms in density number of radial mesh points order of point group
98
7.7
This program was contributed by: J.Kune and P.Nov k s a Inst. of Physics, Acad.Science, Prague, Czeck Republic email: novakp@fzu.cz
Please make comments or report problems with this program to the WIEN-mailinglist. we will communicate the problem to the authors. If necessary,
lapwdm calculates the density matrix needed for the orbital dependent potentials generated in orb. Optionally it also provides orbital moments, orbital and dipolar contributions to the hyperne eld (only for the specied atoms AND orbitals). It calculates the average value of the operator X which behaves in the same way as the spin-orbit coupling operator: it must be nonzero only within the atomic spheres and can be written as a product of two operators - radial and angular: X = Xr (r) Xls (l, s) Xr (r) and Xls (l, s) are determined by RINDEX and LSINDEX in the input as described below: RINDEX=0 LSINDEX=0: the density matrix is calculated (this is needed for LDA+U calculations) RINDEX=1 LSINDEX=1: <X> is number of electrons inside the atomic sphere (for test) RINDEX=2 LSINDEX=1: <X> is the < 1/r3 > expectation value inside the atomic sphere RINDEX=1 LSINDEX=2: <X> is the projection of the electronic spin inside the atomic sphere (must be multiplied by g=2 to get the spin moment) RINDEX=1 LSINDEX=3: <X> is the projection of the orbital moment inside the atomic sphere (in case of SO-calculations WITHOUT LDA+U) RINDEX=3 LSINDEX=3: <X> is the orbital part of the hyperne eld at the nucleus (for a converged calculation at the very end) RINDEX=3 LSINDEX=5: <X> is the spin dipolar part of the hyperne eld at the nucleus (for a converged calculation at the very end) To use the different operators, set the appropriate input. More information and extentions to operators of similar behavior may be obtained directly from P. Nov k (2006). (RINDEX=3 includes a now an approximation to the relativistic mass enhancement and LSINDEX=5 includes nondiagonal terms)
7.7.1
Execution
The program lapwdm is executed by invoking the command: x lapwdm [ -up/dn -p -c -so ] or lapwdm lapwdm.def
7.7.2
Dimensioning parameters
7.8. LCORE FLMAX LMAX LABC LOMAX NRAD constant = 3 highest l of wave function inside sphere (consistent with lapw1) highest l of wave function inside sphere where SO is considered max l for local orbital basis number of radial mesh points
99
7.7.3
Input
Interpretive comments on this le are as follows: line 1: free format emin line 2: free format natom line 3: free format iatom, nl, l iatom nl l index of atom for which the density matrix should be calculated number of l-values for which the density matrix should be calculated l-values for which the density matrix should be calculated number of atoms for which the density matrix is calculated lower energy cutoff (usually set to very low number).
line 3 is repeated natom times t line 4: free format, optional RINDEX, LSINDEX RINDEX 0-3, as described in the introduction to lapwdm LSINDEX 0-5, as described in the introduction to lapwdm
7.8
lcore is a modied version of the Desclaux (69, 75) relativistic LSDA atomic code. It computes the core states (relativistically including SO, or non-relativistically if NREL is set in case.struct) for the current spherical part of the potential (case.vsp). It yields core eigenvalues, the le case.clmcor with the corresponding core densities, and the core contribution to the atomic forces.
7.8.1
Execution
For the spin-polarized case see fcc Ni on the distribution tape. If case.incup and case.incdn are present for spin-polarized calculations, different core-occupation (open core approximation for 4f states or spin-polarized core-holes) for both spins are possible.
7.8.2
Dimensioning parameters
The following parameter is listend in le param.inc: NRAD number of radial mesh points
7.8.3
Input
Below is a sample input (written automatically by lstart) for T iO2 (rutile), one of the test cases provided with the WIEN2k package. In case of a open core calculation (eg. for 4f states) you may need spin-polarized case.inc les in order to dene different congurations for spin-up and dn. Create two les case.incup and case.incdn with the corresponding occupations. The runsp lapw script will automatically copy the corresponding les to case.inc.
------------------ top of file: case.inc -------------------4 0.0 # of orbitals, shift of potential 1,-1,2 n (principal quantum number), kappa, occup. number 2,-1,2 2s 2,-2,4 2p 2, 1,2 2p* 1 0.0 # of orbital of second atom 1,-1,2 1s 0 end switch ------------------- bottom of file ------------------------
Interpretive comments on this le are as follows: line 1: free format nrorb, shift nrorb shift number of core orbitals shift of potential for positive eigenvalues (e.g. for 4f states as core states in lanthanides)
line 2: free format n, kappa, occup n kappa occup principle quantum number relativistic quantum number (see Table 6.6) occupation number (including spin), fractial occupations supported
>>>: line 2 is repeated for each orbital (nrorb times; see line 1) >>>: line 1 and 2 are repeated for each inequivalent atom. Atoms without core states (e.g. H or Li) must still include a 1s orbital, but with occupation zero. line 3: free format 0 zero indicating end of job
7.9. MIXER
101
7.9
In mixer the electron densities of core, semi-core, and valence states are added to yield the total new (output) density (in some calculations only one or two types will exist). Proper normalization of the densities is checked and enforced (by adding a constant charge density in the interstitial). As it is well known, simply taking the new densities leads to instabilities in the iterative SCF process. Therefore it is necessary to stabilize the SCF cycle. In WIEN2k this is done by mixing the output density with the (old) input density to obtain the new density to be used in the next iteration. Several mixing schemes are implemented, but we mention only: 1. straight mixing as originally proposed by Pratt (52) with a mixing factor Q new (r) = (1 Q)old (r) + Qoutput (r) 2. a newly developed Multi-Secant mixing scheme contributed by L. Marks (see Marks and Luke 2008), in which all the expansion coefcients of the density from several preceding iterations (usually 6-10) are utilized to calculate an optimal mixing fraction for each coefcient in each iteration. This version is by far superior to the other schemes making them quite obsolete. It is very robust and stable (works nicely also for magnetic systems with 3d or 4f states at EF, only for ill-conditioned single-atom calculations you can break it) and usually converges at least 30 % faster than the old BROYD scheme. At the outset of a new calculation (for any changed computational parameter such as k-mesh, matrix size, lattice constant etc.), any existing case.broydX les must be deleted (since the iterative history which they contain refers to a different incompatible calculation). If the le case.clmsum old can not be found by mixer, a PRATT-mixing with mixing factor 1.0 is done. Note: a case.clmval le must always be present, since the LM values and the K-vectors are read from this le. The total energy and the atomic forces are computed in mixer by reading the case.scf le and adding the various contributions computed in preceding steps of the last iteration. Therefore case.scf must not contain a certain iteration-number more than once and the number of iterations in the scf le must not be greater than 999. For LDA+U calculations case.dmatup/dn and for hybrid-DFT (switch -eece) case.vorbup/dn les will be included in the mixing procedure.
7.9.1
Execution
The program mixer is executed by invoking the command: mixer mixer.def or x mixer [-eece] A spin-polarized case will be detected automatically by x due to the presence of a case.clmvalup le. For an example see fccNi (sec. 10.2) in the WIEN2k package.
7.9.2
Dimensioning parameters
The following parameters are collected in le param.inc, : NCOM NRAD NSYM number of LM terms in density number of radial mesh points order of point group
102
7.9.3
Input
Below a sample input (written automatically by lstart) is provided for T iO2 (rutile), one of the test cases provided with the WIEN2k package.
------------------ top of file: case.inm -------------------MSEC1 0.d0 YES (PRATT/MSEC1 background charge (+1 for additional e), NORM 0.1 MIXING FACTOR 1.0 1.0 Scaling for PW and CLM coefficients, respectively 999 8 nbroyd nuse ------------------- bottom of file ------------------------
Interpretive comments on this le are as follows: line 1: (A5,*) switch, bgch, norm switch MSEC1 recommended Multi-Secant scheme (Marks and Luke 2008) (also the old BROYD switch points now to this method). BROY0 original Broydens scheme (Singh et al., 86) PRATT Pratts scheme
bgch
Background charge for charged cells (+1 for additional electron, -1 for core hole, if not neutralized by additional valence electron)
norm
YES NO
Charge densities are normalized to sum of Z Charge densities are not normalized
line 2: free format factor mixing parameter Q. Essential for Pratt and (in the rst iteration of) BROY0, rather less important for MSEC1. In the rst iteration using Broydens scheme: Q is automatically reduced by the program depending on the average charge distance :DIS and the number of nonequivalent TM (f)-elements. In case that the scf cycle fails due to large charge uctuations, this factor must be further reduced (sometimes by an order of magnitude) before the calculations can be restarted (see sect.12)
line 3 (optional): (free format) f pw, f clm f pw scaling factor for PW-coefcients for BROY0. Should be reduced when charge sloshing (charge oscillations) occurs. Keep it 1.0 for MSEC1.
f clm
scaling factor for CLM-coefcients for BROY0. Usually larger than f pw. Keep it 1.0 for MSEC1.
line 4 (optional): (free format) nbroyd, nuse nbroyd number of broyden iterations. After that a PRATT restart is done. (Not used for MSEC1)
7.9. MIXER nuse For MSEC1: Only nuse steps are used during modied broyden (this value has some inuence on the optimal convergence. Usually 6-10 seems reasonable).
103
104
8.1
This program calculates total and partial density of states (DOS) by means of the modied tetra hedron method (Blochl et al 1994). It uses the partial charges in case.qtl generated by lapw2 (switch QTL) and generates the DOS in states/Ry (les case.dos1/2/3/...) and in states/eV (with respect to the Fermi energy; les case.dos1/2/3ev). In spin-polarized calculations the DOS is given in states/Ry/spin (or states/eV/spin). Please note: The total DOS is equal to the sum over the atoms of the total-atomic DOS (inside spheres) and the interstitial-DOS. (Thus in the total-atomic DOS the multiplicity of an atom is 105
106
considered). On the other hand, in the partial (lm-like) DOS the multiplicity is not considered and one obtains the total-atomic DOS as a sum over all partial DOS times the multiplicity. The m-decomposed DOS (e.g. pz , py , px ) is given with respect to the local coordinate system for each atom as dened by the local rotation matrix (see Appendix A). The density of states in les case.dos1/2/3/... or case.dos1/2/3/...ev can be plotted by dosplot2 lapw (see 5.7.4). It is strongly recommended that you use Run Programs Tasks Density of States from w2web.
8.1.1
Execution
The program tetra is executed by invoking the command: tetra tetra.def or x tetra [-up|dn]
8.1.2
Dimensioning parameters
The following parameters are listed in le param.inc: MG LXDOS max. number of DOS cases usually 1, except for cross-DOS when using TELNES.2 = 3
8.1.3
Input
Interpretive comments on this le are as follows: line 1: free format title line 2: free format emin, delta, emax, broad emin, delta, emax species the energy mesh (in Ry) where the DOS is calculated. (emin should be set slightly below the lowest valence band; emax will be checked against the lowest energy of the highest band in case.qtl, and set to the minimum of these two values; delta is the energy increment. Gauss-broadening factor. Must be greater than delta to have any effect.
broad
8.2. QTL line 3: free format ndos ndos species the number of DOS cases to be calculated. It should be at least 1. The corresponding output is written in groups of 7 to respective case.dosX les
107
line 4: (2i5,3x,a6) jatom, jcol, description jatom species for which atom the DOS is calculated. 0 means total DOS, jatom = nat + 1 means DOS in the interstitial, where nat is the number of inequivalent atoms. When spin-orbit is included, jatom = nat + 1 gives total spin-up/dn DOS in a spinpolarized SO calculation, but is meaningless in a non-spinpolarized SO case. species the column to be used in the respective QTL-le. 1 means total, 2 . . . s, 3 . . . p, . . . The further assignment depends on the value of ISPLIT set in case.struct (see sec. 4.3); the respective description can be found in the header of case.qtl. text used for further identication.
jcol
description
8.2
This program was contributed by: P. Nov k and J.Kune a s Inst. of Physics, Acad.Science, Prague, Czeck Republic email: novakp@fzu.cz
Please make comments or report problems with this program to the WIEN-mailinglist. we will communicate the problem to the authors. If necessary,
qtl creates the input for calculating total and projected density of states of selected atoms and selected l-subshells. It thus provides similar data as lapw2 -qtl, but it allows for additional options. In particular it supports calculation of DOS projected on relativistic states p1/2 , p3/2 , d3/2 , d5/2 , f5/2 , f7/2 , DOS projected on states in a rotated coordinate system and DOS projected on individual f states. qtl also allows to calculate population matrix and energy resolved population matrix. Comparing to lapwdm population matrix, the matrix created by qtl may contain also the cross terms between different orbital and spin numbers and it can be energy resolved. Important option of the qtl is the symmetrization that makes the calculation longer, but must be switched on whenever the quantities, which are not invariant are calculated. Detailed description may be found in QTL - technical report by P. Nov k. a The output is written to case.qtl [up/dn]. For the DOS calculation the le case.qtltext [up/dn] is created in which the ordering of partial charges is given. The calculation is based on the spectral decomposition of a density matrix on a given atomic site and its transformation to the required basis.
108
8.2.1
Execution
The program qtl is executed by invoking the command: x qtl [ -up/dn -so -p ] or qtl qtl.def
8.2.2
Input
A sample input (a default is created automatically during init lapw for case.inq is given below.
------------------ top of file: case.inq --------------------7. 2. Emin Emax 2 number of selected atoms 1 2 0 0 iatom1 qsplit1 symmetrize loro 2 1 2 nL1 p d 3 3 1 1 iatom2 qsplit2 symmetrize loro 4 0 1 2 3 nL2 s p d f 1. 1. 1. new axis z ------------------- bottom of file ------------------------
Interpretive comments on this le are as follows: line 1: free format emin,emax line 2: free format natom line 3: free format iatom, QSPLIT, symmetrize, loro iatom QSPLIT symmetrize loro energy window
integer, index of atom integer, analog of ISPLIT in case.struct: see below integer, =0 (no symmetrization), 1 (symmetrization) integer =0 original coord. system preserved =1 (new z axis) =2 (new z and x axes)
line 4: free format Nl(iatom), (l(iatom,i),i=1,Nl(iatom)) Nl l line 5: free format hz, kz, lz
number of orbital numbers selected for calculation orbital numbers selected for calculation for atom iatom
Lines starting from line 3 are repeated for each selected atom. Line 5 only appears when calculation in new coordinate system is required (loro = 0). Axis z in this system is along hz,kz,lz (in units of the lattice vectors, need not be normalized). If not only the z axis, but also the x axis need to be specied, then loro must be equal to 2 and additional line hx, kx, lx (real*8) giving the direction of the new axis x, perpendicular to the new axis z must appear. Indexes of selected atoms, as well as the orbital numbers, must form an ascending sequence.
8.2. QTL
109
QSPLIT -2 -1 0 1 2 3 4 5 6 88 99
Table 8.5: Possible values of QSPLIT and their interpretation meaning DOS in basis according to ISPLIT from case.struct DOS in relativistic |j, l, s, mj > basis DOS in relativistic |j, l, s, mj > basis, summed over mj DOS in |l, ml > basis (no symmetry) DOS in basis of real orbitals (no symmetry) axial symmetry hexagonal symmetry cubic symmetry user written unitary transformation population matrix, no < l|l > crossterms corresponds to ISPLIT=88 full population matrix including < l|l > crossterms (as ISPLIT=99)
For QSPLIT=6 (unitary transformation prepared by user) the unitary matrices are read as in WIEN2k 07 qtl: for atom type i they are stored in unit 50+i and ordered according to increasing l. The unitary transformation matrix must rotate from the standard lms -basis to the desired one. A few examples (e.g. jjz , lms , or eg t2g ) are supplied with the code in $WIENROOT/SRC templates/case.cf * and must be copied to case.cf$iatom . For less common cases these must be generated by hand.
8.2.3
Output
The results in le case.qtl[up/dn] are written in the same format as lapw2 le case.qtl[up/dn] and thus they may be directly used by tetra. The data for the interstital DOS correspond to n = nat + 1 (nat is number of atom types). The ordering of densities for all selected atoms is summarized in the le case.qtltext[up/dn]. The qtltext le that corresponds to the input data given above is:
Ordering of DOS in QTL file for: HoMnO3 (Munoz) atom 1 ordering of projected DOS p,px,py,pz, real basis d,dz2,d(x2-y2),dxy,dxz,dyz, real basis atom 3 ordering of projected DOS s p,pxy,pz, axial basis d,dz2,d(x2-y2),d(yz+xz),dxy, axial basis f,A2,[x(T1)+y(T1)],z(T1),[ksi(T2)+eta(T2)],zeta(T2), axial basis A2=xyz x(T1)=x(x2-3r2/5) y(T1)=y(y2-3r2/5) z(T1)=z(z2-3r2/5) ksi(T2)=x(y2-z2) eta(T2)=y(z2-y2) zeta(T2)=z(x2-y2) Data for interstital DOS correspond to atom index 8
The output for the population matrix integrated over energy is written to case.dmat [up/dn] that has the same format as analogous le calculated by lapwdm.
110
8.3
This program generates an energy bandstructure plot (postscript le case.spaghetti ps and xmgrace le case.bands.agr) using the eigenvalues printed in case.output1 or case.outputso (with switch -so). Using the SCF potentials one runs x lapw1 -band with a special k-mesh (case.klist band) along some high-symmetry lines (some sample inputs can be found in SRC templates/*.klist or you create your own k-mesh using Xcrysden). As an option, one can emphasize the character of the bands by additionally supplying corresponding partial charges (le case.qtl which can be obtained using x lapw2 -qtl -band , see 7.5). This will be called band-character plotting below, in which each energy is drawn by a circle whose radius is proportional to the specied character of that state. It allows to analyze the character of bands (see also gures 3.12 and 3.13). The le case.bands.agr can be opened directly with xmgrace. Within xmgrace, all features of the plot, such as the plot range, the plot size, line properties (style, thickness and color), axis properties, labels, etc. can easily be changed by either using the menu (submenus of the Plot menu) or double-klicking on the corresponding part of the gure. The size of the characters for a band-character plot can be changed in the menu Plot / Graph appearance / Z normalization. The gures can directly be printed or exported in eps, jpg, png and other formats, via the menus File / Print setup and File / Print. C.Persson has modied this program and it allows now also to draw connected lines. For this purpose it uses the irreducible representations (from le case.irrep produced by program irrep together with a table of compatibility relations to decide which points should be connected (noncrossing rule !). (Note: This option will NOT work on the surface of the BZ for non-symmorphic spacegroups, because the corresponding group-theory has not been implemented.) The presence of incompatible case.irrep or case.qtl les (from a previous run or qtls from a DOS calculation) may crash spaghetti. In such cases it is necessary to remove these les explicitly. It is strongly recommended that you use Run Programs Tasks Bandstructure from w2web.
8.3.1
Execution
The program spaghetti is executed by invoking the command: spaghetti spaghetti.def or x spaghetti [-up|dn] [-so] [-p] The -p switch directs spaghetti to use the case.output1 * les of a k-point parallel lapw1.
8.3.2
Input
8.3. SPAGHETTI Interpretive comments on this le are as follows: line 1: free format test test line must start with ###. Begin of gure description. This tests also if you use the new input (different from WIEN97 or early WIEN2k versions)
111
line 2: free format xoffset, yoffset xoffset yoffset line 3: free format xsize,ysize xsize ysize line 4: free format eincr, mtick eincr mtick line 5: free format charh, font charh font 0 1 2 3 4 scaling factor for size of labels no text Times and Symbol Times,Times-Italic and Symbol Helvetica, Symbol, and Helvetica-Italic include your own fonts in dens.f energy increment where y-axis labels are printed (major ticks) number of minor ticks of y-axis plotsize in x direction (cm) plotsize in y direction (cm) x offset (in cm) of origin of plot y offset (in cm) of origin of plot
line 6: free format linew, ilin, icol linew ilin 0 1 2 3 0 1 2 3 4 line width dots or open circles lines lines and open circles lines and lled circles black one-color plot three-color plot multi-color plot multi-color plot,one color for each irred. representation
icol
112 test
CHAPTER 8. ANALYSIS, PROPERTIES AND OPTIMIZATION line must start with ###. Begin of data description.
line 8: free format emin, emax, iunits emin emax iunits 1 2 line 9: free format iferm, efermi iferm 0 1 2 3 no line at EF solid line at EF dashed line at EF dotted line at EF Fermi energy (Ry); can be found in the respective case.scf le. If set to 999., Ef is not plotted (and iunits=2 cannot be used) energy minimum of plot energy maximum of plot energies in Ry (internal scale) energies in eV with respect to Ef
efermi
line 10: free format nband1, nband2 lower and upper band index for bands which should show bandcharacter plotting (if case.qtl is present and the proper switch is set, see below). In addition the corresponding x and y coordinates are written to le case.spaghetti ene (which can be used for plotting with an external xy-plotting program).
line 11: free format jatom, jcol, jsize jatom If a case.qtl le is present, jatom indicates the atom whose character (selected by jcol) is used for band-character plotting (dots are replaced by circles with radii proportional to the corresponding weight, requires ilin=0,2,3). If set to zero or if case.qtl is not present, bandcharacter plotting does not occur. species the column to be used in the respective QTL-le. 1 means total, 2 . . . s, 3 . . . p, . . . The further assignment depends on the value of ISPLIT set in case.struct. (ignored for jatom=0). The description can be found in the header of case.qtl. size factor for radii of circles used in band-character plotting
jcol
jsize
if line 11 is repeated, one can average the QTLs for different atoms (but with identical jcol and jsize).
8.4
8.5. LAPW3 Clas Persson Condensed Matter Theory Group,Department of Physics, University of Uppsala, Sweden email: Clas.Persson@fysik.uu.se
Please make comments or report problems with this program to the WIEN-mailinglist. we will communicate the problem to the authors. If necessary,
113
This program determines the irreducible representation for each eigenvalue and all your k-points. It is in particular usefull to analyse energy bands and their connectivity. You need a valid vector le, but no other input is required. The output can be found in case.outputir and case.irrep. For nonmagnetic SO calculations you must set IPR=1 in case.inso. The output of this program is needed when you want to draw bandstructures with connected lines (instead of dots). It will not work in cases of non-symmorphic spacegroups AND k-points at the surface of the BZ. See also $WIENROOT/SRC irrep/README.
8.4.1
Execution
The program irrep is executed by invoking the command: irrep [up/dn]irrep.def or x irrep [-so -up/dn ]
8.4.2
Dimensioning parameters
The following parameters are listend in le param.inc: LOMAX NLOAT MSTP MAXDG MAXIRDG FLMAX MAXIR NSYM TOLDG max. no. of local orbital. should be consistent with lapw1 and lapwso number of different types of LOs max. step to describe k as a fraction max. no. of degenerate eigenfunctions max. no. of degenerate irr. representations size of ag (FL) array (should be 4) max. no. of irreducible representations max. no. of symmetry operations min. energy deviation of degenerate states, in units of Rydberg
8.5
This program calculates X-ray structure factors from the charge density by Fourier transformation. You have to specify interactively valence or total charge density (because of the different normalization of case.clmsum and case.clmval) and a maximum sin/ value.
114
8.5.1
Execution
The program lapw3 is executed by invoking the command: lapw3 lapw3.def or lapw3c lapw3.def or x lapw3 [-c ]
8.5.2
Dimensioning parameters
The following parameters are listend in le param.inc r or param.inc c : LMAX2 NCOM NRAD highest L in in LM expansion of charge and potential number of LM terms in density number of radial mesh points
8.6
This program generates the charge density (or the potential) in a specied plane of the crystal on a two dimensional grid which can be used for plotting with an external contour line program of your choice. Depending on the input les one can generate valence (case.clmval) or difference densities (i.e. crystalline minus superposed atomic densities) using the additional le (case.sigma). In spinpolarized cases one can produce up-, dn- and total densities but also spin densities (difference up-dn). It is also possible to plot total densities (case.clmsum), Coulomb (case.vcoul), exchange-correlation (case.r2v) or total (case.vtotal) potentials, but in those cases the le lapw5.def has to be edited and you must replace case.clmval by the respective lename. The le case.rho contains in the rst line npx, npy, xlength, ylength; and then the density (potential) written with: write(21,11) ((charge(i,j),j=1,npy),i=1,npx) format(5e16.8) Tasks Electron density plots from
11
It is strongly recommended that you use Run Programs w2web, see the TiC example in Fig.3.6 .
8.6.1
Execution
The program lapw5 is executed by invoking the command: lapw5 lapw5.def or lapw5c lapw5.def or x lapw5 [-c -up|dn]
8.6.2
Dimensioning parameters
The following parameters are listend in le param.inc: LMAX2 NCOM NRAD NPT00 NSYM highest L in in LM expansion of charge and potential number of LM terms in density number of radial mesh points number of radial mesh points beyond RMT order of point group
8.6. LAPW5
115
8.6.3
Input
An example is given below. You may want to use XCRYSDEN by T.Kokalj to generate this le (see sect. 9.19.2).
---------------- top of file: case.in5 -------------------0 0 0 1 # origin of plot: x,y,z,denominator 1 1 0 1 # x-end of plot 0 0 1 2 # y-end of plot 3 3 3 # x,y,z nshells (of unit cells) 100 100 # nx,ny RHO # RHO/DIFF/OVER; ADD/SUB or blank ANG VAL NODEBUG # ANG/ATU, VAL/TOT, DEBUG/NODEBUG NONORTHO # optional line: ORTHO|NONORTHO ------------------- bottom of file ------------------------
Interpretive comments on this le are as follows: line 1: free format ix,iy,iz,idv The plane and section of the plot is specied by three points in the unit cell, an origin of the plot, an x-end and an y-end. The rst line species the coordinates of the origin, where x=ix/idv, . . . in units of the lattice vectors (except fc, bc and c lattices, where the lattice vectors of the conventional cell are used)
line 2: free format ix,iy,iz,idv line 3: free format ix,iy,iz,idv coordinates of y-end (The two directions x and y must be orthogonal to each other unless NONORTHO is selected). Since it is quite difcult to specify those 3 points for a rhombohedral lattice, an auxiliary program rhomb in5 is provided, which creates those points when you specify 3 atomic positions which will dene your plane. You can nd this program using Run Programs Other Goodies from w2web. coordinates of x-end
line 4: free format nxsh, nysh, nzsh line 5: free format npx, npy species number of grid points in plot. npy=1 produces a le case.rho onedim containing the distance r (from the origin) and the respective density, which can be used in a standard x-y plotting program. species the number of nearest neighbor cells (in x,y,z direction) where atomic positions are generated (needs to be increased for very large plot sections, otherwise some atoms are not found in the plot)
line 6: format (2a4) switch, addsub switch RHO charge (or potential) plots, no atomic density is used (regular case)
116 DIFF
CHAPTER 8. ANALYSIS, PROPERTIES AND OPTIMIZATION difference density plot (crystalline - superposed atomic densities), needs le case.sigma (which is generated with LSTART, see section 6.4) superposition of atomic densities, needs le case.sigma (or blank eld): use only the le from unit 9 adds densities from units 9 and 11 (if present), e.g. to add spin-up and down densities. subtracts density of unit 11 (if present) from that of unit 9 (e.g. for the spin-density, which is the difference between spin-up and down densities).
addsub
line 7: format (3a4) iunits, cnorm, debug iunits cnorm VAL TOT DEBU ATU ANG density (potential) in atomic units e/a.u.3 (or Ry) 3 density in e/A (do not use this option for potentials) determines normalization factor used for les case.clmval, r2v, vcoul, vtotal used for les case.clmsum debugging information is printed (large output)
debug
line 8: free format noorth1 ORTHO (default) enforces directions to be orthogonal NONORT directions can be arbitrary; use this option only if your plotting program supports non orthogonal plots (e.g. for XCRYSDENS).
In order to plot total densities or potentials (see cnorm as above) you have to create lapw5.def using x lapw5 -d, then edit lapw5.def and insert proper lenames (case.clmval, case.r2v, case.vcoul, case.vtotal) for units 9 and 11, and nally run lapw5 lapw5.def.
8.7
This program was contributed by: Javier D. Fuhr and Jorge O. Sofo Instituto Balseiro and Centro Atomico Bariloche S. C. de Bariloche - Rio Negro, Argentina email: fuhr@cab.cnea.gov.ar and sofo@cab.cnea.gov.ar
Please make comments or report problems with this program to the WIEN-mailinglist. we will communicate the problem to the authors. If necessary,
This program analyses the topology of the electron density according to Baders Atoms in molecules theory. For more information see Bader 2001 and Sofo and Fuhr 2001. The original code has been signicantly speeded-up by L.Marks (L-marks@northwestern.edu). There are some new optional keywords in the input (usually not needed, more for testing) and also more debugging output. All changes are described in $WIENROOT/SRC aim/Notes.txt.
8.7. AIM
117
Basically it performs two different tasks, namely searching for critical points (CP) and/or determination of the atomic basins with an integration of the respective charge density. It is important that you provide a good charge density, i.e. one which is well converged with respect to LMMAX in the CLM-expansion (you may have to increase the default LM-list to LM=8 or 10) and with as little core-leakage as possible (see lstart, sect. 6.4), otherwise discontinuities appear at the sphere boundary.
8.7.1
Execution
The program aim is executed by invoking the command: aim aim.def or aimc aim.def or x aim [-c ]
8.7.2
Dimensioning parameters
The following parameters are listed in le param.inc: LMAX2 NRAD NSYM highest L in in LM expansion of charge and potential number of radial mesh points order of point group
8.7.3
Input
The input le contains SWITCHES, followed by the necessary parameters until an END-switch has been reached. Examples for critical-point searches and charge-integration are given below:
---------------- top of file: case.inaim -------------------CRIT 1 # index of the atom (counting multiplicity) ALL # TWO/THRE/ALL /FOUR 3 3 3 # x,y,z nshells (of unit cells) END ------------------- bottom of file ------------------------
Interpretive comments on this le are as follows: line 1: A4 CRIT Keyword to calculate critical points
line 2: free format iatom index of the atom from where the search should be started. This count includes the multiplicity, i.e. if the rst atom has MULT=2, the second atom has iatom=3 (Do not use simply the atom-numbers from case.struct)
118
CHAPTER 8. ANALYSIS, PROPERTIES AND OPTIMIZATION denes the starting point for the CP search to be in the middle of 2, 3 or 4 atoms. ALL combines option TWO and THRE together.
line 4: free format nxsh, nysh, nzsh species the number of nearest neighbor cells (in x,y,z direction) where atomic positions are generated. lines 1-4 can be repeated with different atoms or KEYs line 5: A4 END species end of job.
In case.outputaim the critical points are marked with a label :PC :PC a1 a2 a3 l1 l2 l3 c lap rho iat1 dist1 iat2 dist2 where a1,a2,a3 are the coordinates of the CP in lattice vectors; l1 l2 l3 are the eigenvalues of the Hessian at the CP; c is the character of the CP (-3, -1, 1 or 3); lap is the Laplacian of the density at the CP (lap=l1+l2+l3) and rho is the density at the CP (all in atomic units). In case of a bond critical point (c=-1) also the nearest distances (dist1, dist2) to the two nearest atoms (iat1, iat2) are given. For convenience run extractaim lapw case.outputaim (see 5.2.9) and get in the le critical points ang a comprehensive list of the CP (sorted and unique) with all values given in A, e/A3 , ... (instead of bohr).
---------------- top of file: case.inaim -------------------SURF 3 atom in center of surface (including MULT) 40 0.0 3.1415926536 theta, 40 points, from zero to pi 40 -0.7853981634 2.3561944902 phi 0.07 0.8 2 step along gradient line, rmin, check 1.65 0.1 initial R for search, step (a.u) 3 3 3 nshell IRHO "INTEGRATE" rho WEIT WEIT (surface weights from case.surf), NOWEIT 30 30 radial points outside min(RMIN,RMT) END ------------------- bottom of file ------------------------
Interpretive comments on this le are as follows: line 1: A4 SURF line 2: free format iatom index of the atom from where the search should be started. This count includes the multiplicity, i.e. if the rst atom has MULT=2, the second atom has iatom=3 (Do not use simply the atom-numbers from case.struct) Keyword to calculate the Bader surface.
8.7. AIM ntheta thmin thmax number of theta directions for the surface determination. This (and nphi) determines the accuracy (and computing time). starting angle for theta ending angle for theta. If you have higher symmetry, you can change the angles thmin=0, thmax= and use only the irreducible part, i.e. when you have a mirror plane normal to z (see case.outputs), restrict thmax to /2.
119
line 4: free format nphi, phimin, phimax nphi number of phi directions for the surface determination phimin starting angle phimax ending angle. (see comments for theta to reduce phi from the full 0 2 integration). line 5: free format h0, frmin, nstep h0 frmin nstep step in real space to follow the gradient ( 0.1) denes the radius, for which the routine assumes that the search path has entered an atom, given as rmin = frmin * rmt ( 0.8-1.0) number of steps between testing the position being inside or outside of the surface ( 2-8).
line 6: free format r0, dr0 r0 dr0 line 7: free format nxsh, nysh, nzsh species the number of nearest neighbor cells (in x,y,z direction) where atomic positions are generated. line 8: A4 IRHO integrate function on unit 9 (usually case.clmsum) inside previously dened surface (stored in case.surf). initial radius for the search of the surface radius ( 1.5) step for the search of the surface radius( 0.1)
line 9: A4 WEIT line 9: free format npt line 8: A4 END species end of job. species number of points for radial integration outside the MT ( 30) species the use of weights in case.surf.
120
8.8
This program was contributed by: Uwe Birkenheuer Max-Planck-Institut fur Physik komplexer Systeme Nothnitzer Str. 38, D-01187 Dresden, Germany email: birken@mpipks-dresden.mpg.de and Birgit Adolph, University of Toronto, T.O., Canada
Please make comments or report problems with this program to the WIEN-mailinglist. we will communicate the problem to the authors. If necessary,
The program lapw7 generates wave function data on spatial grids for a given set of k-points and electronic bands. lapw7 uses the wave function information stored in case.vector (or in reduced (ltered) form in case.vectorf which can be obtained from case.vector by running the program filtvec). Depending on the options set in the input le case.in7(c) one can generate the real or imaginary part of the wave functions, its modulus (absolute value) or argument, or the complex wave function itself. For scalar-relativistic calculations both the large and the small component of the wave functions can be generated (only one at a time). The wave functions are generated on a grid which is to be specied in the input le(s). The grid can either be any arbitrary list of points (to be specied free-formatted in a separate le case.grid) or any n-dimensional grid (n = 0...3). The operating mode and grid parameters are specied in the input le case.in7(c). As output lapw7 writes the specied wave function data for further processing e.g. for plotting the wave functions with some graphical tools such as gnuplot in raw format to case.psink. For quick inspection, a subset of this data is echoed to the standard output le case.outputf (the amount of data can be controlled in the input). In case, lapw7 is called many times for one and the same wave function, program overhead can be reduced, by rst storing the atomic augmentation coefcients Alm , Blm (and Clm ) to a binary le case.abc. For the spin-polarized case two different calculations have to be performed using either the spin-up or the spin-down wave function data as input. It should be easy to run lapw7 in parallel mode, and/or to apply it to wave function data obtained by a spin-orbit interaction calculation. None of these options have been implemented so far. Also, lapw7 has not yet been adapted for w2web. Please note: lapw7 requires an LAPW basis set and does not work with APW+lo yet.
8.8.1
Execution
The program lapw7 is executed by invoking the command: lapw7 lapw7.def or lapw7c lapw7.def or x lapw7 [-c] [-up|dn] [-sel] With the -sel option lapw7 expects data from the reduced (ltered) wave function le case.vectorf, otherwise the standard wave function le case.vector is used. The reduced vector le case.vectorf is assumed to resist in the current working directory, while the standard vector le case.vector (which may become quite large) is looked for in the WIEN scratch directory. For details see lapw7.def.
8.8. LAPW7
121
8.8.2
Dimensioning parameters
number of radial mesh points order of point group maximum L value used for plane wave augmentation maximum L value used for local orbitals
The meaning of LMAX7 is the same as that of LMAX2 in lapw2 and that of LMAX-1 in lapw1. Rather than being an upper bound it directly denes the number of augmentation functions to be used. It may be set different to LMAX2 in lapw2 or LMAX-1 in lapw1, but it must not exceed the latter one. Note that, the degree of continuity of the wave functions across the boundary of the mufn tin sphere is quite sensitive to the choice of the parameter LMAX7. A value of 8 for LMAX7 turned out to be a good compromise.
8.8.3
Input
A sample input is given below. It shows how to plot a set of wave functions on a 2-dim. grid.
- - - - - - - - - - - - - - - - - top of file - - - - - - - - - - - - - - - - 2D ORTHO # mode O(RTHOGONAL)|N(ON-ORTHOGONAL) 0 0 0 2 # x, y, z, divisor of origin 3 3 0 2 # x, y, z, divisor of x-end 0 0 3 2 # x, y, z, divisor of y-end 141 101 35 25 # grid points and echo increments NO # DEP(HASING)|NO (POST-PROCESSING) RE ANG LARGE # switch ANG|ATU|AU LARGE|SMALL 1 0 # k-point, band index - - - - - - - - - - - - - - - - - end of file - - - - - - - - - - - - - - - - -
122 line 1:
CHAPTER 8. ANALYSIS, PROPERTIES AND OPTIMIZATION format(A3,A1) mode ag mode ANY 0D, 1D, 2D, or 3D ag N O or blank
the type of grid to be used An arbitrary list of grid points is used. An n-dim. grid of points is used. n = 0, 1, 2, or 3. orthogonality checking ag (for n-dim. grids only) The axes of the n-dim. grid are allowed to be nonorthogonal. The axes of the n-dim. grid have to be mutual orthogonal.
line 2:
free format (for n-dim. grids only) ix iy iz idiv Coordinates of origin of the grid, where x=ix/idv etc. in units of the conventional lattice vectors. free format (for n-dim. grids with n > 0 only) ix iy iz idiv Coordinates of the end points of each grid axis. This input line has to be repeated n-times. free format (not for 0-dim. grids) np ... npo ... In case of an n-dim. grid, rst the number of grid points along each axis, and then the increments for the output echo for each axis. Zero increments means that only the rst and last point on each axis are taken. In case of an arbitrary list of grid points, the total number of grid points and the increment for the output echo. Again a zero increments means that only the rst and last grid point are taken. Hence, for n-dim. grids, altogether, 2n integers must be provided; for arbitrary lists of grid points two intergers are expected. format(A3) tool post-processing of the wave functions DEP Each wave function is multiplied by a complex phase factor to align it (as most as possible) along the real axis (the so-called DEP(hasing) option). NO No post-processing is applied to the wave functions. format(A3,1X,A3,1X,A5) switch iunit whpsi switch RE IM ABS ARG PSI iunit ANG AU or ATU whpsi LARGE SMALL
line 3:
line 4:
line 5:
line 6:
the type of wave function data to generate The real part of the wave functions is evaluated. The imaginary part of the wave functions is evaluated. The absolute value of the wave functions is evaluated. The argument the wave functions in the complex plane is evaluated. The complex wave functions are evaluated. the physical units for wave function output A units are used for the wave functions. Atomic units are used for the wave functions. the relativistic component to be evaluated The large relativistic component of wave function is evaluated. The small relativistic component of wave function is evaluated.
123
line 8:
The k-points for which wave functions are to be evaluated. Even if the wave function information is read from case.vectorf, iskpt refers to the index of the k-point in the original case.vector le! If iskpt is set to zero, all kpoints in case.vector(f) are considered. iseig The band index for which wave functions are to be evaluated. Even if the wave function information is read from case.vectorf, iseig refers to the band index in the original case.vector le! If iseig is set to zero, all bands (for the selected kpoint(s)) which can found in case.vector(f) are considered. format(A4) this line is optional handle augmentation coefcient control ag SAVE or STOR(E) Augmentation coefcients are stored in case.abc). No wave function data is generated in this case. This option is only allowed if a single wave function is selected in the previous input line. READ or REPL(OT) Previously stored augmentation coefcients are read in (from case.abc). This option is only allowed if the same single wave function as the one whos augmentation coefcients are stored in case.abc is selected in the previous input line. anything else Augmentation coefcients are generated from the wave function information in case.vector(f).
124
8.9
This program was contributed by: Uwe Birkenheuer Max-Planck-Institut fur Physik komplexer Systeme Nothnitzer Str. 38, D-01187 Dresden, Germany email: birken@mpipks-dresden.mpg.de and Birgit Adolph University of Toronto, T.O., Canada
Please make comments or report problems with this program to the WIEN-mailinglist. we will communicate the problem to the authors. If necessary,
The program filtvec reduces the information stored in case.vector les by ltering out a user-specied selection of wave functions. Either a xed set of band indices can be selected which is used for all selected k-points (global selection mode), or the band indices can be selected individually for each selected k-point (individual selection mode). The complete wave function and band structure information for the selected k-points and bands is transferred to case.vectorf. The information on all other wave functions in the original le is discarded. The structure of the generated case.vectorf le is identical to that of the original case.vector le. Hence, it should be possible to use case.vectorf as substitutes for case.vector anywhere in the WIEN program package. (This has only been tested for lapw7.and filtvec.) To lter vector les from spinpolarized calculations, filtvec has to be run separately for both the spin-up and the spin-down les. filtvec has not yet been adapted for w2web.
8.9.1
Execution
The program filtvec is executed by invoking the command: filtvec filtvec.def [-up|dn] or filtvecc filtvec.def or x filtvec [-c]
In accordance with the le handling for lapw1 and lapw7 the input vector le case.vector is assumed to be located in the WIEN scratch directory, while the reduced output vector le case.vectorf is written to the current working directory. See filtvec.def for details.
8.9.2
Dimensioning parameters
The following parameters are listed in le param.inc (r/c): NKPT LMAX LOMAX number of k-points maximum number of L values used (as in lapw1) maximum L value used for local orbitals (as in lapw1)
The parameter LMAX and LOMAX must be set precisely as in lapw1; all other parameters must not be chosen smaller than the corresponding parameters in lapw1.
8.9. FILTVEC
125
8.9.3
Input
Two examples are given below. The rst uses global selection mode; the second individual selection mode.
line 1:
Number of k-point list items, followed by the list items themselves. Positive list items mean selection of the k-point with the specied index; negative list items mean selection of a range of k-points with indices running from the previous list item to the absolute value of the current one. E.g. the sequence 2 -5 stands for 2, 3, 4, and 5. Number of band index items, followed by the list items themselves. Again, positive list items mean selection of a single band index; negative list items mean selection of a range of band indices.
line 2:
- - - - - 2 : 17 4 11 33 3 11 - - - - - -
- - - - - - # 13 15 17 # -14 18 # - - - - - - -
- - - - top of file - - number of k-points k-point, number of bands, k-point, number of bands, - - - - end of file - - -
126
line 2:
the number of individual k-points to be selected. This number must be followed by any text, e.g. SELECTIONS or simply :, to indicate individual selection mode. First the index of the selected k-point, then the number of band index items, followed by the list items for the current k-point themselves. Positive list items mean selection of the band with the specied index; negative list items mean selection of a range of band indices running from the previous list item to the absolute value of the current one. E.g. the sequence 3 -7 stands for 3, 4, 5, and 7. This input line has to be repeated kmax-times.
8.10
This program calculates near edge structure of x-ray absorption or emission spectra according to the formalism described by Neckel et al.75, Schwarz et al. 79 and 80. For a brief introduction see below. It uses the partial charges in case.qtl. This le must be generated separately using lapw2. Partial densities of states in case.dos1ev are generated using the tetra program. Spectra are calculated for the dipole allowed transitions, generating matrix elements, which are multiplied with a radial transition probability and the partial densities of states. Unbroadened spectra are found in the le case.txspec, broadened spectra in the le case.xspec. Other generated les are: case.m1 (matrix element for the selection rule L+1) and case.m2 (matrix element for the selection rule L-1) and case.corewfx (radial function of the core state). The calculation is done with several individual programs (initxspec, tetra, txspec, and lorentz). which are linked together with the c-shell script xspec. It is strongly recommended that you use Run Programs Tasks X-ray spectra from w2web.
8.10.1
Execution
Execution of the shell script xspec The program xspec is executed by invoking the command: xspec xspec.def or x xspec [-up|-dn]
Sequential execution of the programs Besides calculating the X-ray spectra in one run using the xspec script, calculations can be done by hand, i.e. step by step, for the sake of exibility.
8.10. XSPEC
127
initxspec This program generates the appropriate input le case.int, according to the dipole selection rule, for the subsequent execution of the tetra program. The program initxspec is executed by invoking the command: initxspec xspec.def or x initxspec [-up|-dn] tetra The appropriate densities of states for (L+1) and (L-1) states respectively are generated by execution of the tetra program. The program tetra is executed by invoking the command: tetra tetra.def or x tetra [-up|-dn] txspec This program calculates energy dependent dipole matrix elements. Theoretical X-ray spectra are generated using the partial densities of states (in the case.dos1ev le) and multiplying them with the corresponding dipole matrix elements. The program txspec is executed by invoking the command: txspec xspec.def or x txspec [-up|-dn] lorentz The calculated spectra must be convoluted to account for lifetime broadening and for a nite resolution of the spectrometer before they can be compared with experimental spectra. In the lorentz program a Lorentzian is used to achieve this broadening. The program lorentz is executed by invoking the command: lorentz xspec.def or x lorentz [-up|-dn]
8.10.2
Dimensioning parameters
The following dimensioning parameters are collected in the les param.inc of SRC txspec and SRC lorentz: IEMAX0 NRAD LMAX maximum number of energy steps in the spectrum (SRC lorentz) number of radial mesh points highest l+1 in basis function inside sphere (consistent with input in case.in1)
8.10.3
Input
Two examples are given below; one for emission spectra and one for absorption spectra: Input for Emission Spectra:
---------------- top of file: case.inxs -------------------NbC: C K (Title) 2 (number of inequivalent atom) 1 (n core) 0 (l core) 0,0.5,0.5 (split, int1, int2) -20,0.1,3 (EMIN,DE,EMAX in eV) EMIS (type of spectrum, EMIS or ABS) 0.35 (S) 0.25 (gamma0) 0.3 (W) AUTO (generate band ranges AUTOmatically or MANually -7.21 (E0 in eV) -10.04 (E1 in eV) -13.37 (E2 in eV) ------------------- bottom of file ------------------------
128
2 (number of inequivalent atom) 1 (n core) 0 (l core) 0,0.5,0.5 (split, int1, int2) -2,0.1,30 (EMIN,DE,EMAX in eV) ABS (type of spectrum) 1.0 (S) ------------------- bottom of file ------------------------
Interpretive comments on these les are as follows. line 1: free format TITLE line 2: free format NATO line 3: free format NC line 4: free format LC azimuthal quantum number of the core state principle quantum number of the core state Number of the selected atom (in case.struct le) Title
Table 8.50: Quantum numbers of the core state involved in the x-ray spectra line 5 free format SPLIT, INT1, INT2 split in eV between e.g. LII and LIII spectrum (compare with the respective core eigenvalues), INT1 and INT2 species the relative intensity between these spectra. Values of 0, 0.5, 0.5 give unshifted spectra.
line 6: free format EMIN, DE, EMAX minimum energy, energy increment for spectrum, maximum energy; all energies are in eV and with respect to the Fermi level EMIN and EMAX are only used as limits if the energy range created by the lapw2 calculation (using the QTL switch) is greater than the selected range. line 7: Format A4 TYPE EMIS ABS X-ray emission spectrum X-ray absorption spectrum (default)
8.11. TELNES.2 line 8: free format S broadening parameter for the spectrometer broadening. For absorption spectra S includes both experimental and core broadening. Set S to zero for no broadening.
129
line 9: free format GAMMA0 broadening parameter for the life-time broadening of the core states. Set GAMMA0 to zero to avoid lifetime broadening of the core states.
line 10: free format W broadening parameter for the life-time broadening of valence states. Set W to zero to avoid lifetime broadening of the valence states.
line 11: format A4 BANDRA AUTO MAN line 12: free format E0 Emission spectra: onset energy for broadening, E0, generated automatically if AUTO was set in line 10 Absorption spectra: not used band ranges are determined AUTOmatically (default) band ranges have to be entered MANually
line 13: free format E1 Emission spectra: onset energy for broadening, E1, generated automatically if AUTO was set in line 10 Absorption spectra: not used
line 14: free format E2 Emission spectra: onset energy for broadening, E2, generated automatically if AUTO was set in line 10 Absorption spectra: not used
8.11
This program was contributed by: Kevin Jorissen EMAT, University of Antwerp, Belgium Kevin.Jorissen@ua.ac.be C cile H bert e e Inst. of solid state physics, Vienna University of Technology cecile.hebert@tuwien.ac.at
Please make comments or report problems with this program to the WIEN-mailinglist. If necessary, we will communicate the problem to the authors.
130
The TELNES.2 program calculates the double differential scattering cross section (DDSCS) on a grid of energy loss values and scattering impulse vectors. This double differential cross section is integrated to yield a (single) differential cross section, which is written to le. The cross section may be differential w.r.t. energy (ELNES integrated over Q) or w.r.t. to impulse transfer (ELNES integrated over E). The latter case allows to study the angular behaviour of scattering. Generally, the DDSCS is given by Jorissen, Luitz, H bert, Ultramicroscopy 2005. This formula takes e into account the relative orientation between sample and beam. If this is not necessary (because the crystal is isotropic, or the sample is polycrystalline), the formula may be integrated over 4, giving a much simpler equation. Both equations are implemented in ELNES. For the calculation of orientation sensitive spectra lapw2 must be compiled with the parameter LXDOS set to 3 and one must use a full k-mesh, i.e. run kgen with only the identity operation in case.struct.
8.11.1
Execution
8.11.2
Input
ELNES needs one input le - case.innes. We recommend using InnesGenTM of w2web to create this input le in a clear and intuitive way. If you wish to manually edit the le, please refer to the following description. The le case.innes consists of two parts: a rst block with required input, and a second block with optional input. In fact, the second part may be omitted altogether. The simplest input le looks like this:
Graphite C K edge of first atom. 1 (atom) 1, 0 (n, l core) 285 (E-Loss of 1st edge in eV) 300 (energy of the incident electrons in keV) 5.0 1.87 (collection semiangle, convergence semiangle, both in mrad) 5 3 (NR, NT, defining the integration mesh in the detector plane) 0.8 (spectrometer broadening in eV) END
This rst part of the le is not formatted and contains the following information:
8.11. TELNES.2 line 1 2 3 4 5 6 7 value Graphite ... 1 10 285 300 5.0 1.87 53 explanation Title (of no consequence for the calculation) Atom number as given in case.struct (the index which numbers inequivalent atoms) main and orbital quantum number n and l of the core state; eg. 1 0 stands for 1 s energy of the edge onset in eV (here for the C K edge) beam energy in keV detector collection semiangle and microscope convergence semiangle in mrad parameters NR and NT which determine the mesh used for sampling the distribution of Q-vectors allowed by collection and convergence angles spectrometer broadening FWHM in eV keyword telling the program that there is no more input to read. Optional keywords and values must be inserted before this line!
131
8 9
0.8 END
There are many more parameters that specify the calculation, most of which are set to reasonable default values. To change these defaults, or to use advanced parameters, add corresponding lines before the END keyword. We recommend using InnesGenTM of w2web to create this input le. To use of these advanced option you must start every line at the rst position. use only capitals for KEYWORDS end your input with the END keyword. Although only the rst four characters of the keyword are considered, I recommend using the full keyword for clarity. Recognized keywords are : OUTPUT n
eg. : 1
Species how much output youll get. n is an integer of value 0 (only basic output; default), 1 (medium output) or 2 (full output, including less useful and more technical information). ATOMS n1 n2
eg. : 1 3
In case.struct, the inequivalent atom number corresponds to a class of equivalent atoms. Equivalent positions n1 to n2 will contribute to the spectrum (default : sum over all atoms in the equivalency class). Since all equivalent atoms have identical electronic structure up to a symmetry operation, this will simply yield a prefactor *(n2-n1) for the orientation averaged spectrum, but as each equivalent atom has a different orientation w.r.t. the beam, this will change the shape of an orientation sensitive spectrum. ENERGY GRID emin emax estep
(default : 0 15 0.05)
The energy grid on which the spectrum is evaluated, starting from emin and going to emax in steps of estep. All values are in eV and are w.r.t. the Fermi energy == the threshold.
132
(default : 0 0)
It is possible to place the detector not in the 000 direction but move it away from the incoming beam. Consider the center of the detector aperture as a point in a plane with the 000 spot as its origin; then qx, qy are the carthesian coordinates in mrad of this point. MODUS m
eg. : angles
(default is energy)
The scattering cross section is differential w.r.t. energy if m=energy and w.r.t. impuls transfer/scattering angle if m=angles. SPLIT splitting energy eg. : 2.7 If the initial state has an orbital quantum number larger than 0, it will generate two superposed edges : one corresponding to j = l 1/2, and one corresponding to j = l + 1/2 (eg., for the 2p initial state we have a L3 and a L2 edge). The splitting energy sets the energy separation of the two edges and should be given in eV (here, L3 is at the energy specied in the beginning of case.innes, and L2 is 2.7 eV higher). By default (keyword omitted), the splitting energy is calculated by the program. BRANCHING RATIO branching ratio
eg. : 1.4
The branching ratio is a scaling factor (eg., here the ratio of intensities L3/L2 would be set to 1.4). By default (keyword omitted), the branching ratio is set to its statistical value of (2l + 2)/2l. NONRELATIVISTIC This key tells the program not to use the relativistic corrections to the scattering cross section. This option allows to generate spectra identical to output of the old TELNES program. By default (much recommended!!), the relativistic corrections are used. INITIALIZATION make_dos write_dos make_rot.mat. write_rot.mat
TELNES.2 needs many ingredients for its calculations, and this key denes how it gets two ingredients : the (cross) density of states, and the rotation matrices (used for transforming Q-vectors from one atom to an equivalent atom). On each line, the rst entry says whether or not the ingredient has to be calculated (Y : calculate; N : read from le), and the second entry says whether or not the ingredient has to be written to le (Y : write; N : dont write). If make dos=Y, a le case.qtl must be present from which the dos will be calculated. If make dos=N, then either a le case.dos or a le case.xdos containing the (x)dos must be present. If make rot.mat=N, a le case.rotij containg the rotation matrices must be present. If write rot.mat=Y, a le case.rotij is written. If write dos=Y, a le case.dos or case.xdos will be written. The calculation of the rotation matrices is computationally negligible, but if orientation sensitive spectra are calculated, it is recommended to write the xdos to le and not calculate it over and over again.
133
A collection angle and convergence angle allow scattering angles up to + and a corresponding set of Q-vectors. This set (a disk of radius + ) is sampled using a discrete mesh. Three types of meshes are implemented : U a uniform grid, where each Q-vector samples an equally large part of the disk. Sampling is performed by drawing NR circles inside the big circle, and choosing (2i 1)N T points on circle i, giving N R2 N T points in total. L a logarithmic grid, with also N R circles; but now the distance between each circle increases exponentially. There are still (2i 1)N T points on circle i, and N R2 N T points in total. Circle i is at radius q0e((i1)dx) , where dx depends on N R, and . 1 a one dimensional logarithmic mesh; there are N R circles at exponential positions, and only one point on each circle (so N R points in total). This means we sample a line in the detector*beam plane. An economic way of getting spectra as a function of scattering angle in cases with symmetric scattering. The line specifying q0 is to be omitted for the U grid. ORIENTATION SENSITIVE g1 g2 g3 (eg. 0.0
40.0
0.0)
This key tells the program not to average over sample to beam orientations, but to use the particular sample to beam orientation dened by the three Euler angles (to be given in degrees). If the ORIENTATION SENSITIVE key is not set, the program will average over all orientations (this is the default behaviour). SELECTION RULE type
(eg. : q)
(default : d)
The formula for the ddscs contains an exponential factor in Q, which we expand using the Rayleigh expansion, and labeling the order of each term as lambda. This key allows to keep some terms and discard others. Possible settings for type are : m d q o n 0-3 : : : : : : calculate monopole contribution only dipole only (this is default) quadrupole only octopole only no selection rule, calculate all transitions all transitions up to the specified value (eg., 1 means monopole + dipole)
Be aware that the availability of the DOS limits the possible transitions (WIEN2k gives us the DOS only up to l=3). LSELECTION RULE type (eg. : q)
(default : d)
Whereas the previous key selects transitions by the order of the interaction potential, this key selects them by the L-character of the nal states. Possible settings for type are (the orbital momentum of the initial state being denoted with l):
134 m d q o n 0-3 : : : : : :
CHAPTER 8. ANALYSIS, PROPERTIES AND OPTIMIZATION L=l L=l +/- 1 L=l +/- 2 L=l +/- 3 no selection rule, calculate all transitions |L-l| <= type
8.12
This program was contributed by: Joachim Luitz IAST Austria wien2k@luitz.at
Please make comments or report problems with this program to the WIEN-mailinglist. If necessary, we will communicate the problem to the authors.
The broadening program can be used in conjunction with the TELNES.2 or the xspec program to broaden theoretical spectra by applying a lorentzian broadening for core and valence life times and a gaussian broadening for spectrometer broadening.
8.12.1
Execution
Execution The program broadening is executed by invoking the command: broadening broadening.def or x broadening
8.12.2
Input
broadening needs one input le - case.inb. When running TELNES.2 this input le is automatically created from settings given in case.innes. GaN ELNES 1 1 0 0.0 1.0 0.0 0.116 0.116 1 2.15000000000000 0.6 dummy 0.0 0.0 0.0
8.13. OPTIMIZE line 1 2 3 value GaN ... ELNES ABS EMIS NC C1 C2 explanation Title (of no consequence for the calculation) Type of input spectrum specication of input le: NC number of columns to read, C1 and C2 column to broaden (only in ELNES mode) split energy, XINT12 relative intensities of spectra in C1 and C2 core hole lifetime of the two edges W: type of valence broadening (1: linear with E/10, 2: Muller like E 2 ), edge offset Spectrometer broadening FWHM in eV dummy keyword for compatibility with lorentz quadratic energy dependent broadening (only used for type ELNES and EMIS when selecting valence broadening type W=2)
135
4 5 6 7 8 9-11
8.13
This program generates a series of new struct les corresponding to different volumes, c/a ratios, or otherwise different lattice parameters (depending on your input choice) from an existing struct le (either case initial.struct or case.struct). (When case initial.struct is not present, it will be generated from the original case.struct. Furthermore it produces a shell script optimize.job. You may modify this script and execute it. Further analysis of the results (at present only equilibrium volume or c/a ratio are supported in w2web) allows to nd the corresponding equillibrium parameters (see Sec.5.3.1).
8.13.1
Execution
The program optimize is executed by invoking the command: optimize optimize.def or x optimize
8.13.2
Input
You have to specify interactively which task should be performed (volume, c/a, b/a optimization, or full optimization for tetragonal, orthorhombic or monoclinic structure), how many cases you want to do and how large the change (+/- xx %) should be for each case.
8.14
136
CHAPTER 8. ANALYSIS, PROPERTIES AND OPTIMIZATION Thomas Charpin Lab. Geomateriaux de lIPGP, Paris, France (In September 2001 we received the sad notice that Thomas Charpin died in a car accident).
Please make comments or report problems with this program to the WIEN-mailinglist. If necessary, we will communicate the problem to the authors.
This package calculates elastic constants for cubic crystals. It is described in detail by the author in Charpin 2001.
8.14.1
Execution
The package is driven by three scripts: init elast: It prepares the whole calculation and should be run in a directory with a valid case.struct and case.inst le. It creates the necessary subdirectories elast, elast/eos, elast/tetra, elast/rhomb, elast/result, the templates for tetragonal and rhombohedral distortion and initializes the calculations using init lapw. elast setup: It should be run in the elast directory, generates the distorted struct-les and eos.job, rhomb.job and tetra.job. These scripts must be adapted to your needs (spinpolarization, convergence,...) and run. elast setup can be run several times (for different distortions,...). ana elast: Once all calculations are done, change into elastresult and run this script. The nal results are stored in elastresultoutputs. genetempl, setelast, anaelast: These three small programs are called by the above scripts.
8.15
This program is usually called from the script min lapw and performs movements of the atomic positions according to the calculated forces (please read Sec. 5.3.2). It generates a new case.struct le which can be used in the next geometry/time step. Depending on the input options, mini helps to nd the equilibrium positions of the atoms or performs a molecular dynamics simulation (which might take very long time). For nding the equilibrium positions different methods are available. We recommend PORT, a reverse-communication trust-region Quasi-Newton method from the Port library (http://www.bell-labs.com/project/PORT/doc/port3doc.tar.gz, Gay 1983), which was implemented by L.D.Marks (L-marks@northwestern.edu, http://www.numis.northwestern.edu). It minimizes the total energy and NOT the forces (using the forces as derivative of E vs. atomic positions). In cases when energy and forces are not compatible, eg. because of numerical noise due to limited scf convergence, small RKmax or crude k-mesh, PORT may fail. An interesting alternative is a sophisticated modied steepest-descent method (NEW1), which minimizes the forces (does not use the total energy). Eventually a damped Newton dynamics is also available. The forces are read from a le case.finM, while the history of the geometry optimization or MD is stored in case.tmpM
8.15. MINI
137
One can constrain individual positions in case.inM or dene linear constrains for several positions using case.constraint (thanks to B.Yanchitsky (Kiev, yan@imag.kiev.ua); for details see comments in the SRC templates/case.constraint le). In case of constraint calculations one should use NEW1 (in case.inM) or, when PORT is used, do not use pairhess and remove les like .minrestart, .min hess, .minpair.
8.15.1
Execution
The program mini is executed by invoking the command: mini mini.def or x mini
8.15.2
Dimensioning parameters
The following dimensioning parameters are collected in the le param.inc: MAXIT NRAD NCOM NNN NSYM maximum number of geometry steps number of radial mesh points number of LM terms in density number of neighboring atoms for nn order of pointgroup
8.15.3
Input
Two examples are given below; one for a PORT geometry optimization, and one for molecular dynamics using a NOSE thermostat: Input for geometry optimization:
---------------- top of file: xxx.inM -------------------PORT 2.0 0.25 (PORT/NEWT tolf step0 (a4,2f5.2)) 1.0 1.0 1.0 3.0 ( 1..3:delta, 4:BO/eta(1=friction zero)) 1.0 1.0 1.0 6.0 ( 1..3=0 constraint) ------------------- bottom of file ------------------------
Interpretive comments on this le are as follows. line 1: format(a4,2f5.2) MINMOD PORT Modus of the calculation Geometry optimization with reverse-communication trust-region Quasi-Newton routine from the Port library. Recommended option. NEW1 Performs geometry optimization with sophisticated steepest-descent method with automatic adaptation of stepsize (still experimental, but when PORT fails, an interesting alternative) NEWT Performs geometry optimization with damped Newton scheme according to +1 1 Rm = Rm + m (Rm Rm ) + m Fm where Rm and Fm are the coordinate and force at time step . When the force has changed its direction from the last to the present timestep (or is within the tolerance TOLF), m will be set to 1 m . Please see also the comments in Sect. 5.3.2
138 BFGS
CHAPTER 8. ANALYSIS, PROPERTIES AND OPTIMIZATION Performs geometry optimization with the variable metric method of BFGS. This option works only when a quadratic approximation is a good approximation to the specic potential surface. Obsolete. Force tolerance, geometry optimization will stop when all forces are below TOLF. Initial Trust-region radius. Determines size of rst geometry step.
ETA
For PORT (and BFGS): Precondition parameters, determine the size of the rst geometry step For NEWT/NEW1: x,y,z-delta parameters. Determines speed of motion. Good values must be found for each individual system. They depend on the atomic mass, the vibrational frequencies and the starting point (see Sect. 5.3.2). DELTA(i) = 0 constrains the corresponding i-th coordinate (use NEW1 to ensure this constrain). The delta-x,y,z correspond to the global coordinates (the same as the positions in case.struct and the forces :FGL from case.scf). Whenever you change these DELTA(i) you must remove le case.tmpM ! For PORT: Bond-order parameter: should be set approximately to the number of nearest neighbors (or left at 1.). For NEWT: damping (friction) parameter. ETA=1 means no friction, ETA=0 means no speed from previous time steps For NEW1: ETA is not used
>>> line 2: must be repeated for every atom Input for Molecular dynamics:
---------------- top of file: nbc.inM -------------------NOSE (NOSE/MOLD (a4)) 58.9332 400. 1273. 5.0 (Masse, delta t, T, nose-frequency) 58.9332 400. 1273. 5.0 58.9332 400. 1273. 5.0 58.9332 400. 1273. 5.0 58.9332 400. 1273. 5.0 58.9332 400. 1273. 5.0 ------------------- bottom of file ------------------------
Interpretive comments on this le are as follows. line 1: format(a4,f5.2) MINMOD Modus of the calculation MOLD Performs next molecular dynamics timestep NOSE Performs next molecular dynamics timestep using a NOSE thermostat line 2: free format MASS TIMESTEP Atomic mass of ith atom Time step of MD (in atomic units, depends on highest vibrational frequencies)
TEMP
139
8.16
This program was contributed by: Claudia Ambrosch-Draxl Atomistic Modelling and Design of Materials University Leoben A-8700 Leoben, AUSTRIA email: cad@unileoben.ac.at
Please make comments or report problems with this program to the WIEN-mailinglist. If necessary, we will communicate the problem to the authors.
The theoretical background is described in detail in Ref. Abt 1994 and Ambrosch-Draxl 06 (Please cite the latter when publishing optics results!). The calculation of optical properties requires a dense mesh of eigenvalues and the corresponding eigenvectors. For that purpose start kgen and generate a ne k-mesh (with many k-points). Run lapw1 and then lapw2 with the option FERMI (Note: You must also put TETRA / with value=101. for metallic systems case.in2) in order to generate the weight-le. After the vector-le has been generated by lapw1 run optic in order to produce the momentum matrix elements. Then the program joint carries out the BZ integration and computes the imaginary part of the complex dielectric tensor. In order to obtain the real part of the dielectric tensor kram may be executed which uses the Kramers-Kronig relations. The program optic generates the symmetrized squared momentum matrix elements Mi =< n k|p.ei | nk >2 between all band combinations for each k-point given in the vector-le and stores them in case.symmat. For the orthogonal lattices the squared diagonal components can be found in the le case.mat diag. For non-orthogonal systems all 6 components (Mj ) Mk can be calculated according to the symmetry of the crystal. In systems without inversion symmetry the complex version opticc must be executed. The matrix elements (and the imaginary part of the dielectric tensor) are given per spin in case of the spin-polarized calculation and as a sum of both spin directions if the calculation is nonspinpolarized. Due to spin-orbit coupling imaginary parts of the nondiagonal elements may occur in spinpolarized cases. Thus in general, up to 9 components can be calculated at the same time. You must not use p-1/2 relativistic LOs in LAPWSO, since this basis is not supported on OPTICS yet.
8.16.1
Execution
The program optic is executed by invoking the command: optic(c) optic.def or x optic [-c -up|dn -so -p]
140
Recommended procedure for spin-orbit coupling: In order to get the correct matrix elements, the les case.vectorso[up|dn] have to be used. For that purpose the following procedure is recommended: run SCF cycle: run[sp] lapw -so generate a ne k-mesh for the optics part: x kgen [-so (if case.ksym has been created by symmetso) ] change TOT to FERMI in case.in2c execute run[sp] lapw -so -s lapw1 -e lcore with this ne k-mesh run optic: x opticc -so [-up] run joint: x joint [-up] run kram: x kram [-up] In cases of non-spinpolarized calculations WITHOUT inversion symmetry AND spin-orbit coupling, one must do some tricks and mimick a spinpolarized calculation: cp case.vsp case.vspup cp case.vsp case.vspdn cp case.vectorso case.vectorsoup x lapw2 -fermi -so -c cp case.weight case.weightup cp case.weight case.weightdn x optic -so -up x joint -up Due to the paramagnetic weight les (which are normalized to 2 electrons per band instead of one) all your results (joint/sigma...) must be divided by a factor of two. Note: In spin-polarized cases with spin-orbit only one call to optic, joint and/or kram (either up or down) is necessary, since the spins are not independent any more and both vector-les are used at the same time.
8.16.2
Dimensioning parameters
The following dimensioning parameters (listed in param.inc r and param.inc c) are used: LMAX LOMAX NRAD NSYM highest l+1 in basis function inside sphere (consistent with input in case.in1) highest l for local orbital basis (consistent with input in case.in1) number of radial mesh points order of point group
8.16.3
Input
8.16. OPTIC Interpretive comments on this le are as follows: line 1: free format nkmax, nkrst line 2: free format emin, emax line 3: free format ncol line 4+: free format icol column to select. Choices are: 1 . . . Re < x >< x > 2 . . . Re < y >< y > 3 . . . Re < z >< z > 4 . . . Re < x >< y > 5 . . . Re < x >< z > 6 . . . Re < y >< z > 7 . . . Im < x >< y > 8 . . . Im < x >< z > 9 . . . Im < y >< z > Options 7-9 apply only in presence of SO, options 4-6 only in nonorthogonal cases. number of choices (columns in case.symmat) absolute energy range (Ry) for which matrix elements should be calculated maximal number of k-points , number of k-point to start calculation
141
line 5: free format IMME OFF/ON; optionally prints unsquared momentum matrix elements to unit 4
142
8.17
This program was contributed by: Claudia Ambrosch-Draxl Atomistic Modelling and Design of Materials University Leoben A-8700 Leoben, AUSTRIA email: cad@unileoben.ac.at
Please make comments or report problems with this program to the WIEN-mailinglist. If necessary, we will communicate the problem to the authors.
This program carries out the BZ integration using the momentum matrix elements calculated before by optic. The interband or the intraband contributions to the imaginary part of the dielectric tensor ( 2 ) can be computed. Alternatively, the DOS or the joint DOS can be derived. The output in case.joint can be plotted with an xy-plotting package. Warning: Negative values for
2
8.17.1
Execution
The program joint is executed by invoking the command: joint joint.def or x joint [-up|dn]
8.17.2
Dimensioning parameters
The following parameter is listend in les param.inc: NSYM MG0 order of point group number of columns (usually 9)
8.17.3
Input
8.18. KRAM b1, b2, b3 lower, upper and (optional) upper-valence band-index (Setting b3 may allow for additional analysis (restricting the occupied bands from b1b3) and in big cases it will reduce memory requirements. Otherwise set b3 equal b2)
143
line 2: free format emin, de, emax line 3: free format units eV Ry output in units of eV output in units of Ry Energy window and increment in Ry (emin must not be negative)
line 4: free format switch 0 1 2 3 4 5 6 joint DOS for each band combination joint DOS as sum over all band combinations DOS for each band DOS as sum over all bands imaginary part of the dielectric tensor ( 2 ) imaginary part of the dielectric tensor for each band combination intraband contributions: number of free electrons per unit cell assuming bare electron mass (calculated around EF 10 de as dened in input line 4), plasma-frequency in addition to switch 6 the contributions from different bands to the plasma frequency are analyzed.
line 5: free format ncol line 6: free format broadening x,y,z broadening parameters (in units dened in line 3) for Drude-model number of columns
The band analysis for all options (switches 0, 2, 5, and 7) has been improved: For each tensor component additional les are created, where each column contains the contributions from a single band or band combination. The le names are e.g. .Im eps xx 1, .Im eps xx 2, or .jdos 1 etc. where the number of les depend on the number of bands/band combinations. Warning: The number of band combinations might be quite large!
8.18
144
CHAPTER 8. ANALYSIS, PROPERTIES AND OPTIMIZATION Claudia Ambrosch-Draxl Atomistic Modelling and Design of Materials University Leoben A-8700 Leoben, AUSTRIA email: cad@unileoben.ac.at
Please make comments or report problems with this program to the WIEN-mailinglist. If necessary, we will communicate the problem to the authors.
The Kramers-Kronig analysis is carried out for the actual number of columns contained in the case.joint[up|dn] le. For each real component its imaginary counterpart is created and vice versa. All dielectric tensor components can be found in le case.epsilon[up|dn]. The real and imaginary parts of the optical conductivity (in 1015 /s) are written to le case.sigmak[up|dn]. In addition, le case.absorp contains the real parts of the optical conductivity (in 1/(cm) and the absorption coefcients. The loss function is also calculated (case.eloss), where for the previously calculated Plasma-frequency the intraband contributions can be added. Please note, that for spin-polarized calculations, the Kramers-Kronig analysis is NOT really additive, i.e. most quantities (like 1 ) cannot be obtained by simply adding the spin-up and dn results to get the total contribution (see equations in Ambrosch 06). Thus, one should add up both spin contributions of 2 (in case.jointup and case.jointdn) using addjoint-updn lapw (this will produce case.joint) before calling (non-spinpolarized) x kram. The 3 sumrules are also checked and written to case.sumrules. The output in case.epsilon[up|dn] and case.sigmak[up|dn] can be plotted with any xyplotting package, opticplot lapw or the OPTIC-task in w2web.
8.18.1
Execution
The program kram is executed by invoking the command: kram kram.def or x kram [-up|dn]
8.18.2
Dimensioning parameters
The following parameters are listed in les param.inc: MAXDE MPOL maximum number of points in energy mesh xed at 6
8.18.3
Input
8.19. FSGEN line 1: free format EGAMM line 2: free format ESHIFT line 3: free format INTRA 0 1 Intraband contributions are not added Intraband contributions are added (requires plasma-frequencies calculated by joint using switch 6) ) Energy shift (scissors operator) (in energy units selected in joint) Lorentz broadening (in energy units selected in joint)
145
line 4: free format EPL Plasma-frequencies (calculated by joint using SWITCH=6 for all columns)
line 5: free format EDRU Broadening for Drude terms (for all columns)
8.19
Unfortunately there is no really versatile tool for Fermi surface generation or analyzing FS properties. We have collected here a series of small programs together with some description on how to proceed to generate 2D-Fermisurfaces within WIEN. As usually, you have to run an scf cycle and determine a good Fermi-energy. Good means here a Fermi-energy coming from a calculation with a dense k-mesh. You should than create a mesh within a plane of the BZ, where you want to plot the FS. Some utility programs like sc fs mesh, (fcc, bcc, cxz mon and hex are also available) may help you here, but only some planes of the BZ have been implemented so far. Please check these simple programs and modify them according to your needs. Insert the generated k-mesh fort.2 into case.in1. Run lapw1 with this k-mesh. Run spaghetti with input-options such that it prints the bands which intersect EF to case.spaghetti ene (line 10, see sec. 8.3) Edit case.spaghetti ene and insert a line at the top: NX, NY, x-len, y-len, NXinter, NYinter, Invers, Flip where NX, NY are the number of points in the two directions x-len, y-len are the length of the two directions of the plane (in bohr1 , you can nd this in case.spaghetti ene) NXinter, NYinter: interpolated mesh, e.g. 2*NX-1 Invers: 0/1: mirrors x,y FLIP: 0/1: ips x,y to y,x Run spagh2rho < case.spaghetti ene to convert from this format into a format which is compatible with the case.rho le used for charge density plotting. It generates les fort.11, fort.12, ... (for each band separately) and you should use your favorite plotting
146
CHAPTER 8. ANALYSIS, PROPERTIES AND OPTIMIZATION program to generate a contourplot of the FS (by using a contourlevel = 0). Alternatively you can use for plotting: Run fsgen lapw 11 xx save filename, which is a small shell script that can plot all fermi surfaces using the data-les fort.11, fort.12, ... fort.xx generated in the previous steps. It requires the public domain package pgplot and the contour-plot program plotgenc. (The latter can be obtained from P. Blaha (pblaha@theochem.tuwien.ac.at), but you must have installed pgplot before.)
9 Utility Programs
Contents
9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10 9.11 9.12 9.13 9.14 9.15 9.16 9.17 9.18 9.19 symmetso . . . . . . . pairhess . . . . . . . . . afminput . . . . . . . . clmcopy . . . . . . . . . reformat . . . . . . . . hex2rhomb and rhomb plane . . . . . . . . . . add columns . . . . . . clminter . . . . . . . . . eost . . . . . . . . . . eost6 . . . . . . . . . . spacegroup . . . . . . . xyz2struct . . . . . . . cif2struct . . . . . . . . struct2cif . . . . . . . . StructGen of w2web . supercell . . . . . . . . structeditor . . . . . . . Visualization . . . . . . . . . . . . . . . . . . . . . in5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 148 149 150 152 152 152 152 152 153 153 153 154 154 154 155 155 155 157
9.1
symmetso
This program helps to setup spin-orbit calculations in magnetic systems. Since SO may break symmetry in certain spacegroups, it classies your symmetry operations into operations A, which do not invert the magnetization (identity, inversion, rotations with the rotation axis parallel to magnetization), B, which invert it (mirror planes) and C, which change the magnetization in some other way. (Note: magnetization is a result of a circular current, or equivalently, an axial vector resulting from a vector product z x y ). symmetso will keep all A-type and throw away all C-type symmetry operations. Depending on the presence of inversion symmetry it will keep (inversion is present) or remove the B-type operations. Finally, symmetso uses the remaining symmetry operations to check/generate equivalent atomic positions (it can happen that some equivalent atoms become non-equivalent after inclusion of SO interaction). In essence, it reads your case.struct and case.inso (for the direction of magnetization) les and creates an ordered case.struct orb le with proper symmetry and equivalent atoms. It also generates a le case.ksym, which is a struct le with valid operations to generate a proper k-mesh 147
148
using x kgen -so. In addition proper input les case.in1, case.in2, case.inc, case.vspup/dn, case.vnsup/dn, case.clmsum, case.clmup/dn are generated, so that you can continue with runsp -so without any further changes.
9.1.1
Execution
The program symmetso is executed by invoking the command: symmetso symmetso.def or x symmetso [-c] Usually it is called from the script initso lapw and thus needs not to be invoked manually.
9.2
pairhess
This program was contributed by: James Rondinelli, Bin Deng and Laurence Marks Dept. Materials Science and Engineering Northwestern University Evanston, USA l-marks@northwestern.edu
Please make comments or report problems with this program to the WIEN-mailinglist. If necessary, we will communicate the problem to the authors.
This program creates an approximate hessian matrix (in .minpair) for structure minimization using the PORT option. It uses a harmonic model with exponentially decaying bond strenght and in many cases reduces the number of geometry steps during min lapw signicantly. It is described in detail in Rondinelli et al. 2006. For its usage see the comments in sect. 5.3.2. Please note, R (rhombohedral) lattices are not supported yet.
9.2.1
Execution
The program pairhess is executed by invoking the command: pairhess pairhess.def or x pairhess
9.2.2
Dimensioning parameters
The following parameters are used in param.inc: NATMAX NEIGMAX max. number of atoms) max number of neighbours
9.3. AFMINPUT
149
9.2.3
Input
pairhess uses an optional input le case.inpair, which is needed only for an experienced user for better tailoring of certain default parameters (when the condition number is larger than 3, or max. eigenvalue .gt. 3). An example is given below:
---------------- top of file: case.inpair ----------------------10.0 2.0 0.25 (Rmax, Decay, ReScale) 0.05 1.0 0 (Cutoff, Diag, mode)
Interpretive comments on this le are as follows: line 1: free format RMAX Maximum distance (a.u.) for considering neighbors. 8-12 is good.
DECAY
Exponential decay applied to neighbors when calculating the pairwise bond strenghts. 1.5-2.5 is reasonable.
RESCALE
A scaling term to multiply the pairwise hessian by. This number is rather important; 0.25 appears to be best, 0.35 is more conservative
line 2: free format CUTOFF When the weighting (via an exponential decay) becomes smaller than this number the pairwise bonds are ignored.
DIAG
The value to multiply a unitary matrix by, this is added to the hessian estimate
MODE
9.3
afminput
This program creates the inputle case.inclmcopy st for the program clmcopy, which copies spin-up densities of atom i to spin-down densities of the related antiferromagnetic atom j and vice versa in an anti-ferromagnetic system. It uses a symmetry operation to nd out how and which atomic densities must be interchanged and how the Fourier coefcients of the density transform. It is based on the ideas of Manuel Perez-Mato (Bilbao, Spain). See $WIENROOT/SRC afminput/afminput test for several examples. The best way is to supply a le case.struct supergroup, which is the struct le of the nonmagnetic supergroup. If the two spacegroups are TRANSLATIONENGLEICH, it will nd out automatically the proper symmetry operation. Please note, this automatic way works only when the coordinate system remains identical. In some cases sgroup may interchange eg. the y and z axis. In such cases reverse this change, both, for the lattice parameters as well as for all positions, set NSYM=0 and run init lapw again (ignoring any suggestion of sgroup).
150
If the two spacegroups are KLASSENGLEICH (i.e. have the same number of symmetry operations), you will be asked to supply a translation which transforms the AF atoms into each other. A typical example would be bcc Cr: the bcc supergroup and the AF subgroup (simple cubic) have both 48 symmetry operations and the proper translation is (0.5,0.5,0.5). Finally, if you dont give case.struct supergroup, you have to supply a symmetry operation (rotation + non-primitive translation) as input. For bcc Cr or the famous NiO-AFII structure this would be simply 1.0 0.0 0.0 0.5 0.0 1.0 0.0 0.5 0.0 0.0 1.0 0.5 Please see the comments in sect. 4.5.4 on how to proceed in detail for AFM calculations and nd further examples in SRC afminput.
9.3.1
Execution
The program afminput is executed by invoking the command: afminput afminput.def or x afminput
9.3.2
Dimensioning parameters
The following parameters are used: NCOM LMAX number of LM components in the density (in param.inc) max l for LM expansion of the density (in param.inc).
9.4
clmcopy
This program generates the spin-dn density (case.clmdn) from a given spin-up density (case.clmup) according to rules and symmetry operations in case.inclmcopy (generated earlier by afminput) for an AFM calculation. Please see the comments in sect. 4.5.4 on how to proceed in detail for AFM calculations.
9.4.1
Execution
The program clmcopy is executed by invoking the command: clmcopy clmcopy.def or x clmcopy
9.4.2
Dimensioning parameters
The following parameters are used in param.inc: NCOM NRAD NSYM number of LM components in the density number of radial mesh points number of symmetryoperations
9.4. CLMCOPY
151
9.4.3
Input
Interpretive comments on this le are as follows: line 1: free format NATOM Number of atoms for which rules for copying the density will be dened
line 2: free format N1, N2 line 3-5: free format SYM Symmetry operation for atom N1 to rotate into N2 (without translational part) Interchange spin-up and dn densities of atoms N1 and N2
line 6: free format NLM Number of LM values, for which you have to change the sign when swapping up and dn-densities
line 7ff: free format L1,M1,L2,M2,Fac NLM pairs of L1,M1 (spin-up), which change into L2,M2 (spin-dn) and the respecting CLMs are multiplied by Fac
Lines 2-7ff have to be repeated NATOM times. line 8-10: free format SYM0 Symmetry operation (one of the operations of the NM-supergroup missing in the AFM-subgroup (transfers spin-up into spin-dn atom)
152
9.5
reformat
To produce a surface plot of the electron density using rhoplot lapw (which is an interface to gnuplot), data from the le case.rho created by lapw5 must be converted using reformat The sources of the program reformat.c are supplied in SRC reformat.
9.6
hex2rhomb interactively converts the positions of an atom from hexagonal to rhombohedral coordinates (needed in case.struct). rhomb in5 interactively helps to generate input case.in5 for density plots with lapw5 for rhombohedral systems. It denes a plane as needed in the input le when you specify 3 atoms of that plane. The sources of these programs are supplied in SRC trig.
9.7
plane
plane helps to generate case.in5 for density plots with lapw5 (for orthogonal and hex lattices only). The plane will be specied by 3 atoms and you need an auxiliary le plane.input, which contains:
a,b,c x0,y0,z0 x1,y1,z1 x2,y2,z2 xl,yl P # # # # # # lattice parameters position of atom (fractional coordinates), which will be centered in the plot position of atom, which will be below the centered atom position of atom, which will show to the left lenght (in bohr) of plot in x and y direction. defines lattice, either P (carthesian coordinates) or H (hexagonal) supported
9.8
add columns
add columns reads a sequence of pairs of 2 numbers (form stdin), adds them together and prints the sum to stdout. If you have two columns of numbers in 2 les (eg. in colup and coldn) you can add them using: paste colup coldn | add columns > col The source of this program is supplied in SRC trig.
9.9
clminter
clminter interpolates the density in case.clmsum/up/dn to a new radial mesh as dened in case.struct new. This utility is usefull when you run a structural minimization (min lapw), some atoms start to overlap and you have to reduce RMT (the size of the atomic spheres) of certain atoms. In such a case:
9.10. EOSFIT
153
save the calculations generate case.struct new with modied RMTs x clminter in spinpolarized case repeat this line with -up and -dn switches cp case.struct new case.struct cp case.clmsum new case.clmsum eventually copy also case.clmup/dn les) run lapw; (it will probably take some iterations until you reach scf again, but it should be much faster than starting with init lapw) Note: Please be aware the the total energy will change with modied RMT (by some constant) and you must not compare energies comming from different RMTs (but most likely you can determine the constant shift by repeating (at least) ONE calculation with identical structure but different RMTs). The source of this program is supplied in SRC trig.
9.10
eost
Small program to calculate the Equation of States (EOS; Equilibrium volume V0 , Bulk modulus B0 and its derivative B0 . The Murnaghan (1944), the Birch-Murnaghan and the EOS2 equation of states are supported. It relies on the le case.vol (containing lines with volume, E-tot, usually created from w2web using Volume optimization), or alternatively is called from eplot lapw using case.analysis (see 5.7.1 and 5.3.1). The sources are supplied in SRC eosfit.
9.11
eost6
Nonlinear least squares t (using PORT routines) for a parabolic t of the energy vs. 2-4 dim. lattice parameters. It requires case.ene and case.latparam, usually generated by parabolfit lapw. It can optionally produce case.enefit, which contains energies on a specied grid for plotting purposes (in 2D same format as case.rho, which can be used in contourplot programs). (See 5.3.1). The sources are supplied in SRC eosfit6.
9.12
spacegroup
This program was contributed by: Vaclav Petricek Institute of Physics Academy of Sciences of the Czech Republic Na Slovance 2 182 21 Praha (Prague) 8 Czech Republic petricek@fzu.cz
Please make comments or report problems with this program to the WIEN-mailinglist. If necessary, we will communicate the problem to the authors.
154
Interactive program to generate equivalent positions for a given spacegroup and lattice. The program is also used internally from w2web to generate positions when selecting spacegroups in the StructGen.
9.13
xyz2struct
xyz2struct reads atomlabel,x,y,z-data from case.xyz and writes them into xyz2struct.struct. You may have to edit the xyz-le and insert a switch ANG(default)/BOHR and a,b,c lattice parameters. Since xyz data contain no symmetry information, all atoms with the same label will be treated as equivalent. The nuclear charges ZZ will not be given and you have to insert them manually or use w2web-StructGen. It is executed using: xyz2struct < case.xyz (I recommend this program only for cases with many non-equivalent atoms and (almost) no symmetry. If you have spacegroup-information it is probably easier to use StructGen and copy/paste of the positions). A proper case.xyz le looks like:
ang 7.47700 7.47700 B 4.98466667 C 6.23083333 ..... 7.47700 1.24616667 2.49233333
0.00000000 0.00000000
9.14
cif2struct
cif2struct reads structural data in cif-format from case.cif and writes them into case.struct. It is executed using: cif2struct case.cif The required cif les can be for example be obtained from Cystallographic databases (e.g. the Inorganic Crystal Structure DataBase ICSD) or from other programs. Alternatively, cif2struct can work with case.txt, which contains the following data:
a 0.0 0.0 0.0 4.7554 4.7554 12.991 90. 90. 120. R-3c Al 0.0000000 0.0000000 0.3520000 O 0.3063000 0.0000000 0.2500000 ... # # # # # # # # a..Ang, b..Bohr shift of origin a,b,c,angles spacegroup-symbol (see \STRUCTGEN{}) atom-name atomic position ... ...
9.15
struct2cif
struct2cif creates a cif-le struct.cif from case.struct. It is executed using: struct2cif and will ask for the name of a struct le and a spacegroup. It was contributed by F. Boucher (Florent.Boucher@cnrs-imn.fr).
155
9.17
supercell
This program helps to generate supercells from a regular WIEN2k-struct le. It asks interactively for the name of the original struct le and the number of cells in x, y, and z direction. (Only integers are allowed, thus no rotations by 45o like sqrt(2) x sqrt(2) cells are supported yet). If symmetry permits, one can change the target lattice to P, B or F centered lattices, (C and R types not yet supported), which allows to increase the number of atoms in these supercells by a factor of 2, 4, 8, ... If the target lattice is P, one can add some vacuum in each direction for slabs (or chains or isolated molecules) and also add a top-layer. You can dene an optional shift in x,y,z direction for all the atoms in the cell. (This might be usefull if you want to arrange the atoms in a certain way, eg. you may want to create a surface slab such that it is centered around z=0.5 (and not z=0), so that plotting programs (xcrysden) produce nicer pictures of the structure. For the experienced user a much more exible (but also more complicated) tool is available, namely the structeditor package (see Sect.9.18). Please note: You cannot make calculations with these supercells (except for surfaces) unless you modify the created supercell-struct le. You must break the symmetry by introducing some distortions (e.g. for a frozen phonon) or replace one atom by an impurity/vacancy, ....
9.17.1
Execution
9.18
structeditor
Please make comments or report problems with this program to the WIEN-mailinglist. If necessary, we will communicate the problem to the authors.
This package helps to manipulate structures. Usually one would start from an appropriate (simple) case.struct le, and this tool allows to add or manipulate atoms (with or without symmetry considerations), or generate arbitrary supercells or surfaces. It is commandline driven and targeted for the more experienced user, who knows what he wants to do and is just looking for a convenient tool. It consists of a couple of octave (mathlab) routines and some fortran code, thus it requires octave (the free mathlab version) and for visualization the opendx package (http://www.octave.org and http://www.opendx.org ). A full documentation and some examples can be found in $WIENROOT/SRC structeditor/doc, but the main commands are: a2adist mina2adist addatom addeqatom copyatom getaname getar0 getazz loadstruct movealla replaceatom replaceeqatoms rmatom rmeqatoms savestruct showequivalent showstruct smultatom sshift makeconventional makeprimitive makesupercell makesurface * * * * * * * * * * * * * * * * * * * * * * * calculates distance between atoms calculates minimum distance between atoms adds an atom to the structure adds an atom and all equivalent creates a copy of an atom converts atomic number into atomic symbol calculates r0 from atomic number converts atomic name into atomic number reads Wien2k structfile moves all atoms with vector vec replaces an atom with other atom replaces an atom and all equivalent with other atoms removes an atom removes an atom and all equivalent saves crystal structure outputs list of equivalent atoms displays structure (using DX) creates symmetry equivalent positions symmetric shifts of equivalent atoms converts structure into the conventional form converts structure to the primitive form creates supercell creates surface for a given unitcell
9.18.1
Execution
The structeditor is invoked within the octave environment: octave s=loadstruct(GaN.struct) # make an orthorhombic supercell and visualize it a=[1 0 0; 1 1 0; 0 0 2] sout=makesupercell (s,a);
9.19. VISUALIZATION showstruct(sout); # save it as test.struct savestruct (sout,test.struct); # get help on all commands helpstruct
157
9.19
9.19.1
Visualization
BALSAC
balsac (Build and Analyze Lattices, Surfaces and Clusters) was written by Klaus Hermann (FritzHaber Institut, Berlin). It provides high quality postscript les. In SRC balsac-utils we provide the following interface programs to convert from WIEN2k to balsac: str2lat to convert case.struct to case.lat (the BALSAC lat le). str2plt to convert case.struct to case.plt (the BALSAC plt le for one unit cell). outnn2plt to convert case.outputnn to case.plt (the BALSAC plt le for one unit cell). You have to select one atom (central atom) and than all nn-atoms are converted into the plt le. In addition converters to the xyz-format (str2xyz, outnn2xyz) for other plotting programs are also available. For an example see gure 3.1 For scientic questions concerning BALSAC please contact Klaus Hermann at hermann@FHI-Berlin.MPG.DE Balsac is available from: Garching Innovation GmbH, Mrs. M. Pasecky Hofgartenstr. 8, D-80539 Munich, Germany Tel.: +49 89 2909190, Fax.: +49 89 29091999 e-mail: gi@ipp.mpg.de web: http://www.fhi-berlin.mpg.de/th/personal/hermann/balpam.html
9.19.2
XCrysDen
XCrysDen (Kokalj 1999) is a render and analysis package. It has the following features (see also http://www.xcrysden.org/doc/wien.html): render and analyze (distances, angles) the crystal structure generate k-mesh for bandstructure plots generate input and render 2D charge densities generate input and render 3D charge densities generate input and render Fermi surfaces XCrysDen is available from: Tone Kokalj Jozef Stefan Institute, Dept. of Physical and Organic Chemistry Jamova 39, SI-1000 Ljubljana, Slovenia Tel.: +386 61 177 3520, Fax: +386 61 177 3811 Tone.Kokalj@ijs.si http://www.xcrysden.org/
158
We recommend to run these test cases (in a different directory) and compare the output to the provided one. All test cases are setup such that the CPU-time remains small (seconds). For real production runs the value of RKMAX in case.in1 must be increased and a better (denser) k-mesh should be used. In addition we provide a subdirectory example struct files were various more complicated struct les can be found.
10.1
TiC
10.2
Ferromagnetic Nickel is a test case for a spin-polarized calculation. Ni has the atomic conguration 1s2 , 2s2 , 2p6 , 3s2 , 3p6 , 3d8 , 4s2 or [Ar] 3d8 , 4s2 . We treat the 1s, 2s, 2p and 3s as core states, and 3p (as local orbital), 3d, 4s and 4p are handled as valence states. In a spin-polarized calculation the le structure and the sequence of programs is different from the non-spin-polarized case (see 4.5.2). Create a new session and its corresponding directory. Generate the structure with the following data (we can use a large sphere as you will see from the output of nn): 159
160
Title Lattice a b c , , Atom
Initialize the calculation using the default RKmax and use 3000 k-points (a ferromagnetic metal needs many k-points to yield reasonably converged magnetic moments). Allow for spinpolarization. Start the scf cycle (runsp lapw) with -cc 0.0001 (in particular for magnetic systems charge convergence is often the best choice). At the bottom of the converged scf-le (Fccni.scf) you nd the magnetic moments in the interstital region, inside the sphere and the total moment per cell (only the latter is an observable, the others depend on the sphere size).
:MMINT: MAGNETIC MOMENT IN INTERSTITIAL = :MMI001: MAGNETIC MOMENT IN SPHERE 1 = :MMTOT: TOTAL MAGNETIC MOMENT IN CELL = -0.03130 0.66198 0.63068
10.3
Rutile (T iO2 )
This example shows you how to optimize internal parameters and do a k-point parallel calculation. Create a new session and its corresponding directory. Generate the structure with the following data (we use a smaller O sphere because Ti-d states are harder to converge then O-p):
Title Spacegroup a b c , , Atom Atom TiO2 P 42 /mnm (136) 8.682 bohr 8.682 bohr 5.592 bohr 90 Ti, enter position (0,0,0) and RMT = 2.0 O, enter position (0.3,0.3,0) and RMT = 1.6
StructGenshould automatically add the equivalent positions. Initialize the calculation using RKmax=6.5 in tio2.in1 st and use 100 k-points and a shift in kgen. If you have more cpus available (a parallel machine or simply a couple of PCs with a common NFS lesystem, for details see 5.5), you can use Execution Run scf, activate the parallel button and start scf in w2web. This will create and open a .machines le and you should insert lines with the proper names of your PCs (possibly use 9 (or 3) processors since we have 9 k-points, ). Save this le and click on Execution Run scf, activate -fc 1.0 for force-convergence and start scf to submit the scf-cycle. Alternatively at the command-line you can use the UNIX command cp $WIENROOT/SRC_templates/.machines .
and edit this le. You would start the scf-cycle (in background) simply by typing run_lapw -p -fc 1.0 &
161
During the scf-cycle monitor tio2.dayfile and check convergence (:ENE, :DIS, :FGL002), either using Utils/Analysis in w2web, or grep :ENE tio2.scf. You should see some convergence of :FGL002 and then a big jump in the nal cycle, when the valence-force corrections are added. Only the last force (including this correction) is valid. Since this force is quite large, you can now optimize the position of the O-atom: Start the structure minimization in w2web using Execution mini.positions. This will generate TiO2.inM, and you can try option PORT with tolf=1.0 (instead of 2.0), otherwise stay with the default parameters. Repeat Execution mini.positions and start the minimization. Alternatively you can use min_lapw -p which is identical to: min_lapw -j run_lapw -I -fc 1 -p This will create TiO2.inM automatically, call the program min, which generates a new struct le using the calculated forces, and continues with the next scf cycle. It will continue until the forces are below 1 mRy/bohr (TiO2.inM) and the nal results are not saved automatically but can be found in the current calculation. You should watch the minimization (:ENE, :FGL002, :POS002) using the le TiO2.scf mini, which contains the nal iteration of each geometry step (see also Sec.5.3.2). If the forces in this le oscillate from plus to minus and seem to diverge, or if they change very little, you can edit TiO2.inM (change the method, reduce or increase the stepsize), and remove TiO2.tmpM (contains the history of the minimization and is used to calculate the velocities of the moving atoms). (This should not be neceaasry for the rutile example, but may occur in more complex minimizations. See comments in Sec. 5.3.2). The nal structural parameter of the O-atom should be close to x=0.304, which compares well with the experimental x=0.305.
10.4
This example shows you how to create a supercell of TiC, which could be used to simulate a TiCsurface or vacancies, impurities or core-holes for X-ray absorption / ELNES spectroscopy. Ill describe the procedure using Unix and WIEN2k commands in an xterm, but of course you can do the same in w2web. Create a new directory, copy the original TiC struct le into it and run supercell program: mkdir super cd super cp ../TiC/TiC.struct . x supercell Specify TiC.struct, a 2x2x2 supercell, F lattice (this will create a cell with 16 atoms, you can also create 32 or 64 atom cells using B or P lattice type. Note: surfaces require a P supercell). cp TiC_super.struct super.struct and edit this le to make some changes. You could eg.
162
CHAPTER 10. EXAMPLES delete an atom (to simulate a vacancy) replace an atom by another element (impurity) label an atom (put a 1 in the 3rd column next to the element name) to make this atom unique (needed eg. for core-holes) displace an atom (for phase transitions or phonons)
Note: it is important to make at least one of these chages. Otherwise the initialization will restore the original unit cell (or the calculations will fail later on because symmetry is most likely not correct) Run init lapw. You will see that nn complains and nds a new set of equivalent atoms (originally all atoms were non-equivalent, but nn nds that some atoms have identical neighbors, thus should be in an equivalent set). Accept the automatically generated struct le and continue. Remember, supercells normally require less k-points than the original small cell. After the complete initialization you may in principle restore the original struct le (eg. without a displacement) in case you want to repeat the undistorted structure in supercell geometry. For a core-hole calculation you would now edit super.inc and remove one core electron from the desired atom and state (1s or 2p, ...). In addition you should add the missing electron either in super.inm (background charge) or super.in2 (add it to the valence electrons). In the latter case, you should remove this extra electron AFTER scf and BEFORE calculation of the spectra. Once this has been done, you could start a scf-cycle (for impurities, vacancies,.. you should most likely also optimize the internal positions).
Part III
163
11.1
Requirements
WIEN2k is written in FORTRAN 90 and requires a UNIX operating system since the programs are linked together via C-shell scripts. It has been implemented successfully on the following computer systems: Intel Pentium PCs running under Linux, IBM RS6000, HP, SGI, DEC Alpha and SUN. Hardware requirements will change from case to case (small cases with 10 atoms per unit cell can be run on a Pentium-II PC with 128 MB under Linux), but we recommend a more powerful PC or workstation with at least 256 MB (better 512 MM or more) memory and plenty of disk space (a few Gb). For coarse grain parallization on the k-point level, a cluster of PCs with a 100 Mb/s network is sufcient. Faster communication is recommended for the ne grain (single k-point) parallel version. In order to use all options and features (such as the new graphical user interface w2web or some of its plotting tools) the following public domain program packages in addition to a F90 compiler must be installed: perl 5 or higher (for w2web only) emacs or another editor of your choice ghostscript (with jpg support) gnuplot (with png support) www-browser pdf-reader, acroread MPI+SCALAPACK (for ne grain parallelization only) Tcl/Tk-Toolkit (for Xcrysden only) Usually these packages should be available on modern systems. If one of these packages is not available it can either be installed from public domain sources (ask your computing center, use the WWW to search for the nearest location of these packages) or the corresponding conguration may be changed (e.g. using vi instead of emacs). None of the principal components of WIEN2k requires these packages, only w2web needs them. 165
166
11.2
11.2.1
Installation of WIEN2k
Expanding the WIEN2k distribution
The WIEN2k package comes as a single tar le (or you can download about 50 individual tar les separately), which should be placed in a subdirectory which will be your $WIENROOT directory (e.g. ./WIEN2k). In addition you can download three examples, namely TiC.tar.gz, TiO2.tar.gz and Fccni.tar.gz. Uncompress and expand all les using: tar -xvf wien2k 00.tar (skip this if you downloaded les separately) gunzip *.gz chmod +x ./expand lapw ./expand lapw You should have gotten the following directories:
./SRC SRC_afminput SRC_aim SRC_balsac-utils SRC_broadening SRC_cif2struct SRC_clmaddsub SRC_clmcopy SRC_dstart SRC_elast SRC_eosfit SRC_eosfit6 SRC_filtvec SRC_fsgen SRC_initxspec SRC_irrep SRC_joint SRC_kgen SRC_kram SRC_lapw0 SRC_lapw1 SRC_lapw2 SRC_lapw3 SRC_lapw5 SRC_lapw7 SRC_lapwdm SRC_lapwso SRC_lcore SRC_lib SRC_lorentz SRC_lstart SRC_mini SRC_mixer SRC_nn SRC_optic SRC_optimize SRC_orb SRC_pairhess SRC_phonon SRC_qtl SRC_reformat SRC_sgroup SRC_spacegroup SRC_spaghetti SRC_structeditor SRC_sumpara SRC_supercell SRC_symmetry SRC_symmetso SRC_telnes2 SRC_templates SRC_tetra SRC_trig
167
Thus, each program has its source code (split into several les) in its own subdirectory. All programs are written in FORTRAN90 (except SRC sgroup and SRC reformat, which are in C). /SRC contains the users guide (in form of a postscript le usersguide.ps and as pdf-le usersguide.pdf), all c-shell scripts and some auxiliary les. /SRC usersguide html contains the html version of the UG. /Fccni, /TiC and /TiO2 contain three example inputs and the respective outputs. /example struct files contains a collection of various struct les, which could be of use especially for the less experienced user. /SRC templates contains various input templates. In addition to the expansion of the tar-les ./expand lapw copies also all csh-shell scripts from /SRC to the current directory and creates links for some abbreviated commands.
11.2.2
At the end of expand lapw you will be prompted to start the script ./siteconfig lapw When you start this script for the rst time (le INSTALLDATE not present), you will be guided through the setup process. Later on you can use siteconfig lapw to redimension parameters, update individual packages and recompile the respective programs. During the rst run, you will be asked to specify: your system; at this point system specic les (e.g. cputim.f will be installed. If your system is not listed, use the system generic, which should compile on any machine. your FORTRAN90 and C compilers; your compiler and linker options as well as the place for LAPACK and BLAS libraries. Depending on the system you selected, we have included some recommended compiler and linker options, which are known to work on our systems (use generic when you have problems here; see also sec. 11.2.4). On some systems it is required to specify LAPACK and BLAS libraries twice (i.e. R LIBS:-llapack lapw -lblas lapw -llapack lapw -lblas lapw). This generates Makeles from the corresponding Makele.orig in all subdirectories. conguration of parallel execution will ask whether your system is shared memory, so that default parameters can be set accordingly ( $WIENROOT/parallel options is the le where this information is stored). to congure parallel execution for distributed systems, specify the command to open a remote shell, which on most systems is rsh or ssh. You will then be asked wether you want to run ne-grained parallel. This is only possible if MPI and SCALAPACK are installed on your system and requires a fast network (100Mb/s is not enough) or a shared memory machine. It pays off only for bigger cases (matrixsize > 4000). You should dene NMATMAX, i.e. the maximum matrixsize (number of basisfunctions). This value should be adjusted according to the memory of your hardware. Rough estimates are:
168
CHAPTER 11. INSTALLATION AND DIMENSIONING NMATMAX= 5000 ==> 256MB (real, i.e. with inversion symmetry) NMATMAX=10000 ==> 1GB (real) (==> cells with about 80-150 atoms/unitcell) If you choose it too large, lapw1 will start to page leading to inacceptable performance or a crash. NMATMAX will be automatically recuced (by 2) for complex (without inversion) cases and increased by N P E for mpi-parallel cases. Now you are prompted to compile all programs (this will be done using make) and the executables are copied to the $WIENROOT directory. Compilation might take quite some time. During compilation watch for error messages on the screen. If there are errors, you may need to change into the corresponding SRC * directory and examine le compile.msg for details. Common errors are wrong specication of compiler, linking or library options. In such cases, adopt the Makele in this directory and recompile using make. Once you have proper options, correct them globally in siteconfig lapw and recompile.
Later on you can use siteconfig lapw to change parameters, options or to update a package.
11.2.3
User conguration
Each WIEN2k user should run the script userconfig lapw. This will setup a proper environment. The script userconfig lapw will do the following for you: set a path to WIEN2k programs set the stacksize to unlimited add aliases add environment variables ($WIENROOT, $SCRATCH) to your /.cshrc or/.bashrc le. Eventually you should also edit these les and set the $LD LIBRARY PATH variable (path where compiler-libs or blas-libraries are located). Note: This will work only when the csh, tcsh or bash-shell is your login shell. Depending on your settings you may have to add similar lines also in your .login le. If you are using a different login-shell, edit your startup les manually.
11.2.4
The script siteconfig lapw is provided for general conguration and compilation of the WIEN2k package. When you call this script for the rst time and follow the suggested answers, WIEN2k should run on your system (see 11.2.2). The codes in the individual subdirectories /SRC program are compiled using make. The le Makefile is generated during installation using Makefile.orig as template. In some directories the source les *.frc, *.F and param.inc r/c contain both, the real and complex (for systems without inversion symmetry) version of the code. You create the coresponding versions with make and make complex, respectively. (The *.frc and *.F les will then be preprocessed automatically). The ne-grained parallel versions lapw0 mpi; lapw1 mpi, lapw1c mpi, lapw2 mpi, lapw2c mpi are created using make para (lapw0) and make rp; make cp. For timing purposes a subroutine CPUTIM is used in several programs and specic routines for IBM-AIX, HP-UX, DEC-OSF1, SGI and SUN are available. On other systems cputim generic.c should work. On some HP systems you may encounter problems like: stack growth failure. You may recompile with -K, recongure your Unix-kernel (with increased stack-size) or put large arrays in the respective program into COMMONS.
11.3. W2WEB
169
Most of the CPU time will be spent in lapw1 and (to a smaller extent) in lapw2 and lapw0. Therefore we recommend to optimize the performance for these 3 programs: Find out which compiler options (man f90) make these programs run faster. You could specify a higher optimization (-O3), or specify a particular processor architecture (-qarch=pwr5 or -R10000, ....). Good performance depends on highly optimized BLAS (and much less on LAPACK) libraries. Whenever it is possible, replace the supplied libraries (SRC lib/blas lapw SRC lib/lapack lapw), by routines from your vendor (mkl for Intel or AMD processors, aclm for AMD, essl for IBM, sunperf for SUN, complib.sgimath on SGI, ...). If such libraries are not available use the GOTO-library (http://www.tacc.utexas.edu/resources/software/software.php) which is a very competitive alternative. (Eventually you may try to optimize them yourself using the ATLAS system (see http://math-atlas.sourceforge.net), but this is no longer recommended. We provide an old ATLAS-BLAS for a Pentium3 with WIEN2k.
11.2.5
WIEN2k is written in Fortran 90 and all important arrays are allocated dynamically. The only important parameters left are NMATMAX and NUME, specifying the maximum matrixsize (should be adjusted to the memory of your hardware, see above) and the maximum number of eigenvalues (must be increased for unitcells with large number of electrons) Some less important parameters are still present and described in chapter dimensioning parameters of the respective section in chapter 6. We recommend to use siteconfig lapw for redimensioning and recompilation. In order to work properly, the parameter XXXX in the respective param.inc les must obey the following syntax: PARAMETER(XXXX= ....) Note: between (, XXXX and = there must be no space.
11.3
11.3.1
w2web requires perl, which should be available on most systems. (If not contact your system administrator or install it yourself from the WWW) When you start w2web for the rst time on the computer where you want to execute WIEN2k (you may have to telnet, ssh,.. to this machine) with the command w2web [-p xxxx], you will be asked for a username/password (I recommend you use the same as for your UNIX login). You must also specify a port number (which can be changed the next time you start w2web). If the default port (7890) used to serve the interface is already in use by some other process, you will get the error message w2web failed to bind port 7890 - port already in use!. Then you will have to choose a different port number (between 1024 and 65536) . Please remember this port number, you need it when connecting to the w2web server. Note: Only user root can specify port numbers below 1024! Once w2webhas been started, use your favorite WWW-browser to connect to w2web, specifying the correct portnumber, e.g. firefox http://hostname where w2web runs:7890
170
On certain sites a rewall may block all high ports and one cannot connect to this machine. In these cases you can create a ssh-tunnel using the following commands: At your local host (the PC in front of you) connect to the w2web host (where you started w2web) using ssh -fNL 2000:w2web_host:7890 user@w2web_host On your local host use a web browser and connect with: firefox http:127.0.0.1:2000. Using Conguration you can further tailor the behaviour according to your wishes. In particular you can dene new execution types to adjust to your queuing system. For example the line batch=batch < %f denes an execution type batch using the UNIX batch command. (w2web collects its commands in a temporary script and you can access it using %f). If you run on a machine with a queuing system (like loadleveler, sun-grid-engine, or pbs) you may dene an execution type qsub=cat %f > w2web-job;qsub-wienjob_lapw The following scripts may serve as templates: qsub-wienjob lapw in $WIENROOT needs a master-job-template qsub-job0 lapw and examples for loadleveler and SGE are provided in $WIENROOT (you may need to adapt them ! Other examples you can nd on our FAQ-page on the web). Of course, with some small modications you can dene several execution types with eg. different number of processors or mpi vs. k-point parallel runs,.... w2web saves several variables in startup les which are in the (/.w2web) directory.
11.3.2
w2web acts like a normal web-server - except that it runs on a user level port instead of the default http-port 80. It serves html-les and executes perl-scripts or executes system or user commands on the server host.
11.3.4
In this le various conguration parameters are stored by w2web. To restrict the access to certain IP addresses you can add lines like: deny=*.*.*.* allow=128.130.134.* 128.130.142.10
171
11.3.5
This le is created during the rst run of w2web. If you remove this le, the next start of w2webwill activate the installation procedure again.
11.3.6
In order to use the https-protocol the perl-library Net::SSLeay in addition to the OpenSSL package must be installed on your system. Both are freely available. Then you must include a line with ssl=1 in w2web.conf. If you run w2web-server in ssl-mode you need a site certicate for your server. You may use the supplied certicate in $WIENROOT/SRC w2web/bin/w2web.pem (copy this le to your confdirectory and set the keyle= /.w2web/hostname/conf/w2web.pem line in your w2web.conf). This certicate will not expire until 2015, but usually browsers will complain that they do not know the Certicate Authority who issued this certicate - if you dont like this message, you must buy a certicate from VeriSign, Thawte or a similar CA. Of course you must connect to https: instead of http:, i.e. use: netscape https://hostname where w2web runs:7890.
11.4
Environment Variables
WIEN2k uses the following environment variables: WIENROOT base directory where WIEN2k is installed PDFREADER species program to read pdf les (acroread, xpdf,...) SCRATCH directory where case.vector and case.help?? are stored. EDITOR path and name of your prefered editor STRUCTEDIT PATH path where the structeditor tool is located OCTAVE PATH path where the structeditor tool is located OCTAVE EXEC PATH path where octave looks for executables (structeditor) XCRYSDEN TOPDIR if this variable is set WIEN2k will activate all interface extensions to XCrysDen. USE REMOTE [0|1] determines whether parallel jobs are run in background (on shared memory machines) or using rsh. It is overridden by settings in $WIENROOT/parallel options WIEN GRANULARITY Default granularity for parallel execution. It is overridden by setting the granularity in the .machines le or in $WIENROOT/parallel options WIEN EXTRAFINE if set, the residual k-points are spread one by one over the processors. In addition on some systems variables like: LD LIBRARY PATH path to libraries of compiler and math-libs OMP NUM THREADS on multi-core machines for parallelization in certain libraries (mkl, goto)
172
12 Trouble shooting
In this chapter hints are given for solving some difculties that have occurred frequently. This chapter is by no means complete and the authors would appreciate further suggestions which might be useful for other users. Beside the printed version of the users guide, an online pdf version is available using help lapw. You can search for a specic keyword (use f keyword) and hopefully nd some information. There is a mailing list for WIEN2k related questions. To subscribe to this list send mail to: majordomo@theochem.tuwien.ac.at with the text subscribe wien. You will then automatically be added to the mailing list wien@theochem.tuwien.ac.at Please make use of this list! If an error occurs in one of the SCF programs, a le program.error is created and an error message is printed into these les. The run lapw script checks for these les and will automatically stop if a non-empty error le occurs. Check the les case.dayfile (which is written by init lapw and run lapw), :log (where a history of all commands using x is given) and *.error for possible explanations. In several places the dimensions are checked. The programs print a descriptive error message and stop. case.outputnn: This le gives error messages if the atomic spheres overlap. But it should also be used to check the distances between the atoms and the coordination number (same distance). If inconsistencies exists, your case.struct le may contain an error. A check for overlapping spheres is also included in mixer and lapw1. case.outputd: Possible stops or warnings are: NO SYMMETRY OPERATION FOUND IN ROTDEF: This indicates that in your case.struct le either the positions of equivalent atoms are not specied correctly (only positive coordinates allowed!!) or the symmetry operations are wrong. case.output1: Possible stops or warnings are: NO ENERGY LIMITS FOUND IN SELECT: This indicates that Etop or Ebottom could not be found for some ul (r, El ). Check your input if it happens in the zeroth iteration. Later, (usually in the second to sixth iteration) it may indicate that in your SCF cycle something went wrong and you are using a crazy potential. Usually it means that mixing was too big and large charge uctuations occured. Check previous charges for being physically reasonable (grep for labels :NTOxx :CTOxx :DIS). You will probably have to delete case.broy* and case.scf, rerun x dstart and reduce the mixing parameter in case.inm. In very difcult (magnetic) cases a PRATT mixing with 0.01 mixing might be necessary at the beginning! 173
174
CHAPTER 12. TROUBLE SHOOTING STOP RDC 22: This indicates that the overlap matrix is not positive denite. This usually happens if your case.struct le has some error in the structure or if you have an (almost) linear dependent basis, which can happen for large RKMAX values and/or if you are using very different (extremely small and large) sphere radii RM T . X EIGENVALUES BELOW THE ENERGY emin: This indicates that X eigenvalues were found below emin. Emin is set in case.in1 (see sec. 7.3.3) or in case.klist generated by KGEN, see 6.3, 6.5). It may indicate that your value of emin is too high or the possibility of ghostbands, but it can also be intentional to truncate some of the low lying eigenvalues. If you dont nd enough eigenvalues (e.g.: in a cell with 4 oxygens you expect 4 oxygen s bands at roughly -1 Ry) check the energy window (given at the end of the rst k-point in case.in1 or in case.klist) and make sure your energy parameters are found by subroutine SELECT or set them by hand at a reasonable value.
case.output2: Possible stops or warnings are: CANNOT BE FOUND: This warning, which could produce a very long output le, indicates that some reciprocal K-vector would be requested (through the k-vector list of lapw1), but was not present in the list of the K generated in lapw2. You may have to increase the NWAV, and/or KMAXx parameters in lapw2 or increase GMAX in case.in2. The problems could also arise from wrong symmetry operations or a wrong structure in case.struct. QTL-B VALUE: If larger than a few percent, this indicates the appearance of ghost bands, which are discussed below in section 12.1. The few percent message (e.g up to 10 %) does not indicate a ghost band, but can happen e.g. in narrow d-bands, where the linearization reaches its limits. In these cases one can add a local orbital to improve the exibility of the basis set. (Put one energy near the top and the other near the bottom of the valence band, see section 7.3.3). FERMI LEVEL not converged (or similar messages). This can have several reasons: i) Try a different Fermi-Method (change TETRA to GAUSS or TEMP in case.in2). ii) Count the number of eigenvalues in case.output1 and compare it with the number of valence electrons. If there are too few eigenvalues, either increase EMAX in case.klist (from 1.5 to e.g. 2.5) or check if your scf cycle had large charge oszillations (see SELECT error above) If the SCF cycle stops somewhere (especially in the rst few iterations), it is quite possible, that the source of the error is actually in a previous part of the cycle or even in a previous (e.g. the zeroth) iteration. Check in the case.scf le previous charges, eigenvalues, . . . whether they are physically reasonable (see SELECT error above).
12.1
Ghost bands
Approximate linear dependence of the basis set or the linearization of the energy dependence of the radial wave functions (see section 2.2) can lead to spurious eigenvalues, termed ghost bands. The rst case may occur in a system which has atoms with very different atomic sphere radii. Suppose you calculate a hydroxide with very short O-H bonds so that you select small RM T radii for O and H such as e.g. 1.0 and 0.6 a.u., respectively. The cation may be large and thus you could choose a large RM T of e.g. 2.4 a.u. However, this gives a four time larger effective RKmax for the cation than for H, (e.g. 16.0 when you select RKmax=4.0 in case.in1). This enormous difference in the convergence may lead to unphysical eigenvalues. In such cases choose lmax=12 in case.in1 (in order to get a very good re-expansion of the plane waves) and reduce RM T for the cation to e.g. 1.8 a.u.
175
The second case can occur when you dont use a proper set of local orbitals. In this situation the energy region of interest (valence bands) falls about midway between two states with different principle quantum numbers, but with the same l-value (for one atom). Take for example Ti with its 3p states being occupied as (semi-core) states, while the 4p states remain mostly unoccupied. In the valence band region neither of those two states (Ti 3p, 4p) should appear. If one uses 0.2 Ry for the expansion energy E(1) for the p states of Ti, then Ti-p states do appear as ghost bands. Such a run is shown below for T iO2 (rutile). The lowest six eigenvalues at GAMMA fall between about -1.30 and -1.28 Ry. They are ghost bands derived from ctitious Ti-p states. The next four eigenvalues between -0.94 and -0.78 Ry correspond to states derived from O 2s states, which are ok, since there are four Os per unit cell, four states are found. The occurrence of such unphysical (indeed, unchemical!) ghostbands is the rst warning that something went wrong. A more denite warning comes upon running LAPW2, where the corresponding charge densities are calculated. If the contribution to the charge density from the energy derivative of the basis function [the Blm coefcient in equ. 2.4,2.7] is signicant (i.e. much more than 5 per cent) then a warning is issued in LAPW2. In the present example it reads: QTL-B VALUE .EQ. 40.35396 !!!!!! This message is found in both the case.scf le and in case.output2. When such a message appears, one can also look at the partial charges (QTL), which are printed under these conditions to OUTPUT2, and always appear in the les case.helpXXX, etc., where the last digit refers to the atomic index. In the le below, note the E(1) energy parameter as well as the 6 ghost band energies around -1.29.
--------------- top of file:tio2.scf ----------------------------ATOMIC SPHERE DEPENDENT PARAMETERS FOR ATOM Titanium OVERALL ENERGY PARAMETER IS .2000 E( 0)= .2000 ---> E( 1)= .2000 E( 2)= .2000 E(BOTTOM)= -.140 E(TOP)= -200.000
ATOMIC SPHERE DEPENDENT PARAMETERS FOR ATOM Oxygen OVERALL ENERGY PARAMETER IS .2000 E( 0)= -.7100 E(BOTTOM)= -2.090 E(TOP)=
.670
:RKM
K= .00000 .00000 .00000 1 : MATRIX SIZE= 599 RKM= 6.99 WEIGHT= 8.00 PGR: EIGENVALUES ARE: -1.2970782 -1.2970782 -1.2948747 -1.2897193 -1.2897193 -1.2882306 -.9389111 -.8484857 -.7880729 -.7880729 -.0484830 -.0162982 .0121181 .0976534 .0976534 .1914068 .1914068 .2341991 .3286919 .3477629 .3477629 .3809219 .5143729 .5356211 .5550735 .5617155 .5617155 .7087550 .7197110 .8736991 .8736991 .9428865 .9533619 1.2224570 1.2224570 1.4285169 ******************************************************** NUMBER OF K-POINTS: 1 : NUMBER OF ELECTRONS : F E R M I - ENERGY = = 48.000 .53562
:NOE :FER
:POS01: AT.NR. -1 POSITION = .00000 .00000 .00000 MULTIPLICITY= 2 LMMAX=10 LM= 0 0 2 0 2 2 4 0 4 2 4 4 6 0 6 2 6 4 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 :CHA01: TOTAL CHARGE INSIDE SPHERE 1 = 8.802166 :PCS01: PARTIAL CHARGES SPHERE = 1 S,P,D,F,PX,PY,PZ,D-Z2,D-X2Y2,D-XY,D-XZ,D-YZ :QTL01: .127 6.080 2.518 .067 2.011 2.047 2.022 1.090 .760 .155 .480 .034 VXX VYY VZZ UP TO R :VZZ01: -4.96856 8.48379 -3.51524 2.000
176
:POS02: AT.NR. -2 POSITION = .30500 .30500 .00000 MULTIPLICITY= 4 LMMAX=16 LM= 0 0 1 0 2 0 2 2 3 0 3 2 4 0 4 2 4 4 5 0 5 2 5 4 6 0 6 2 6 4 6 6 0 0 :CHA02: TOTAL CHARGE INSIDE SPHERE 2 = 5.486185 :PCS02: PARTIAL CHARGES SPHERE = 2 S,P,D,F,PX,PY,PZ,D-Z2,D-X2Y2,D-XY,D-XZ,D-YZ :QTL02: 1.559 3.902 .022 .002 1.296 1.306 1.300 .014 .004 .000 .003 .001 VXX VYY VZZ UP TO R :VZZ02: .25199 -.55091 .29892 1.600 :CHA :SUM : TOTAL CHARGE INSIDE CELL = : SUM OF EIGENVALUES = 48.000000 -15.810906
QTL-B VALUE .EQ. 40.35396 !!!!!! NBAND in QTL-file: 24 ----------------end of truncated file tio2.scf----------------------
Next we show tio2.output2 for the rst of the ghost bands at -1.297 Ry. One sees that it corresponds mainly to a p-like charge, which originates from the energy derivative part Q(UE) of the Kohn-Sham orbital. Q(UE) contributes 40.1% compared with 8.5% from the main component Q(U). Q(UE) greater than Q(U) is a good indication for a ghost band.
----------------part of file tio2.output2 -------------------------QTL-B VALUE .EQ. 40.35396 !!!!!! K-POINT: .0000 .0000 .0000 599 36 1 BAND # 1 E= -1.29708 WEIGHT= 2.0000000 L= 0 L= 1 PX: PY: PZ: L= 2 DZ2: DX2Y2: QINSID: .0000 48.6035 35.0996 13.5039 .0000 .0000 .0000 .0000 Q(U) : .0000 8.4902 6.0125 2.4777 .0000 .0000 .0000 .0000 Q(UE) : .0000 40.1132 29.0871 11.0261 .0000 .0000 .0000 .0000 L= 0 L= 1 PX: PY: PZ: L= 2 DZ2: DX2Y2: QINSID: .1294 .0707 .0000 .0055 .0653 .0088 .0038 .0049 Q(U) : .1279 .0627 .0000 .0052 .0575 .0087 .0038 .0049 Q(UE) : .0016 .0081 .0000 .0003 .0077 .0001 .0000 .0000 QOUT : 1.9265 ----------------------bottom of truncated file ----------------------
DYZ: L= 3 .0000 .0030 .0000 .0026 .0000 .0005 DYZ: L= 3 .0000 .0022 .0000 .0020 .0000 .0002
Another le in which the same information can be found is tio2.help031, since the ghost band is caused by a bad choice for the Ti-p energy parameter:
----------------------Top of file tio2.help031 --------------------K-POINT: .0000 .0000 .0000 599 36 1 BAND # 1 E= -1.29708 WEIGHT= 2.0000000 L= 0 .00000 .00000 .00000 .00000 .00000 .00000 L= 1 48.60346 8.49022 40.11324 .00000 .00000 .00000 PX: 35.09960 6.01247 29.08712 .00000 .00000 .00000 PY: 13.50386 2.47774 11.02612 .00000 .00000 .00000 PZ: .00000 .00000 .00000 .00000 .00000 .00000 L= 2 .00000 .00000 .00000 .00000 .00000 .00000 DZ2: .00000 .00000 .00000 .00000 .00000 .00000 DX2Y2: .00000 .00000 .00000 .00000 .00000 .00000 DXY: .00000 .00000 .00000 .00000 .00000 .00000 DXZ: .00000 .00000 .00000 .00000 .00000 .00000 DYZ: .00000 .00000 .00000 .00000 .00000 .00000 L= 3 .00304 .00255 .00050 .00000 .00000 .00000 L= 4 .00000 .00000 .00000 .00000 .00000 .00000 L= 5 .00096 .00082 .00014 .00000 .00000 .00000 L= 6 .00000 .00000 .00000 .00000 .00000 .00000 -------------------bottom of truncated file--------------------------
Note again for L=1 the percentage of charge associated with the primary (APW) basis functions ul (8.5%) versus that coming from the energy derivative component (40.1%). If a ghost band appears, one should rst analyze its origin as indicated above, then use appropriate local orbitals to improve the calculation and get rid of these unphysical states. Do not perform calculations with ghost-bands, even when the calculation converges.
Good luck !
13 References
Abt R., Ambrosch-Draxl C. and Knoll P. 1994 Physica B 194-196 Abt R. 1997 PhD Theses, Univ.Graz Andersen O.K. 1973 Solid State Commun. 13, 133 1975 Phys. Rev. B 12, 3060 Ambrosch-Draxl C., Blaha P., and Schwarz K. 1991 Phys.Rev. B44, 5141 Ambrosch-Draxl C., Majewski J. A., Vogl P., and Leising G. 1995, PRB 51 9668 Ambrosch-Draxl C. and Sofo J., 2006 Comp. Phys. Comm. 175, 1 V.I. Anisimov, I.V. Solovyev, M.A. Korotin, M.T. Czyzyk, and G.A. Sawatzky, Phys. Rev. B 48, 16929 (1993). V.I. Anisimov, J. Zaanen, and O.K. Andersen, Phys. Rev. B 44, 943 (1991) Bader R. F. W. 2001: http://www.chemistry.mcmaster.ca/faculty/bader/aim/ Blaha P. and Schwarz K. 1983 Int. J. Quantum Chem. XXIII, 1535 Blaha P., Schwarz K., and Herzig P 1985 Phys. Rev. Lett. 54, 1192 Blaha P., Schwarz K., and Dederichs P 1988 Phys. Rev B 38, 9368 Blaha P., Schwarz K., Sorantin P.I. and Trickey S.B. 1990 Comp. Phys. Commun. 59, 399 Blaha P., Sorantin P.I., Schwarz K and Singh D. 1992 Phys. Rev. B 46, 1321 Blochl P.E., Jepsen O. and Andersen O.K. 1994, Phys. Rev B 49, 16223 Boettger J.C. and Albers R.C. 1989 Phys. Rev. B 39, 3010 Boettger J.C. and Trickey S.B. 1984 Phys. Rev. B 29, 6425 Brooks M.S.S. 1985 Physica B 130, 6 Charpin, T. 2001. (see $WIENROOT/SRC/elast-UG.ps) Czyzyk M.T. and G.A. Sawatzky, Phys. Rev. B 49, 14211 (1994). Desclaux J.P. 1969 Comp. Phys. Commun. 1, 216; note that the actual code we use is an apparently unpublished relativistic version of the non-relativistic code described in this paper. Though this code is widely circulated, we have been unable to nd a formal reference for it. 1975 Comp. Phys. Commun. 9, 31; this paper contains much of the Dirac-Fock treatment used in Desclauxs relativistic LSDA code. 177
178
CHAPTER 13. REFERENCES O. Eriksson, B. Johansson, and M.S.S. Brooks, J. Phys. C 1, 4005 (1989) Feldman J.L., Mehl M.J., and Krakauer H. 1987 Phys. Rev. B 35, 6395 Gay David M., ALGORITHM 611 Subroutines for Unconstrained Minimization Using a Model/Trust-Region Approach, ACM Trans. Math. Software 9 (1983), pp. 503-524. H bert-Souche C., Louf P.-H., Blaha P., M. Nelhiebel, Luitz J., Schattschneider P., Schwarz e K. and Jouffrey B.; The orientation dependent simulation of ELNES, Ultramicroscopy, 83, 9 (2000) L.L. Hirst, Rev. Mod. Phys. 69, 607 (1997) Hohenberg P. and Kohn W. 1964 Phys. Rev. 136, B864 Hofst tter H., Koch R., Laskowski R., Blaha P. and Schwarz K., to be published (2008) a International Tables for X-Ray Crystallography 1964 Vol.1; The Kynoch Press, Birmingham UK Jansen H.J.F. and Freeman A.J. 1984 Phys. Rev. B 30, 561 1986 Phys. Rev. B 33, 8629 Koelling D.D. 1972 J. Phys. Chem. Solids 33, 1335 Koelling D.D. and Arbman G.O. 1975 J.Phys. F: Met. Phys. 5, 2041 Koelling D.D. and Harmon B.N. 1977 J. Phys. C: Sol. St. Phys. 10, 3107 Kohler B., Wilke S., Schefer Comp.Phys.Commun. 94, 31 M., Kouba R. and Ambrosch-Draxl C. 1996
Kohn W. and Sham L.J. 1965 Phys. Rev. 140, A1133 Kokalj A. 1999 J.Mol.Graphics and Modelling 17, 176 Krimmel H.G., Ehmann J., Els sser C., F hnle M. and Soler J.M. 1994, Phys.Rev. B50, 8846 a a Kune J, Nov k P., Schmid R., Blaha P. and Schwarz K. 2001, Phys. Rev. B64, 153102 s a Kara, M. and Kurki-Suonio K. 1981 Acta Cryst A37, 201 Liberman D., Waber J.T., and Cromer D.T. 1965, Phys. Rev. 137A, 27 A.I. Liechtenstein, V. I. Anisimov, J. Zaanen, Phys. Rev. B 52, R5467 (1995) Luitz J., Maier M., H bert C., Schattschneider P., Blaha P., Schwarz K., Jouffrey B. 2001 Eur. e Phys J. B 21, 363-367 MacDonald A. H., Pickett, W. E. and Koelling, D. D. 1980 J. Phys. C 13, 2675 Madsen G. K. H., Blaha P, Schwarz K, Sjostedt E and Nordstrom L 2001, Phys. Rev. B64, 195134 Marks L. D., and Luke R. 2008, Phys. Rev. B 78, 075114 Mattheiss L.F. and Hamann D.R. 1986 Phys. Rev. B 33, 823 Mattsson A., Armiento R., Paier J., Kresse G., Wills J. and Mattsson T 2008 J. Chem. Phys. 128, 084714 Meyer-ter-Vehn J. and Zittel W. 1988 Phys. Rev. B37, 8674
179 Moruzzi V.L., Janak J.F., and Williams A.R. 1978 Calculated Properties of Metals (Pergamon, NY) Murnaghan F.D., Proc.Natl.Acad.Sci. USA 30, 244 (1944) Neckel A., Schwarz K., Eibler R. and Rastl P. 1975 Microchim.Acta, Suppl.6, 257 Nelhiebel M., Louf P. H., Schattschneider P., Blaha P., Schwarz K. and Jouffrey B.; Theory of orientation sensitive near-edge ne structure core-level spectroscopy, Phys.Rev. B59, 12807 (1999) Novak P. 1997 see $WIENROOT/SRC/novak lecture on spinorbit.ps Nov k P. , Boucher F., Gressier P., Blaha P. and Schwarz K. 2001 Phys. Rev. B 63, 235114 a Nov k P. 2001 see $WIENROOT/SRC/novak lecture on ldaumatrixelements.ps and a http://www.wien2k.at/reg user/textbooks Novak P. 2006 see $WIENROOT/SRC/Bhf 3.ps and http://www.wien2k.at/reg user/textbooks Perdew J.P, Chevary J.A., Vosko S.H., Jackson K.A., Pederson M.R., Singh D.J., and Fiolhais C. 1992 Phys.Rev.B46, 6671 Perdew J.P. and Wang Y. 1992, Phys.Rev. B45, 13244 Perdew J.P., Burke S. and Ernzerhof M. 1996, Phys.Rev.Let. 77, 3865 Perdew J.P., Kurth S., Zupan J. and Blaha P. 1999, Phys.Rev.Let. 82, 2544 Perdew J.P. et al. 2008, Phys. Rev. Let. 100, 136406 Pratt G.W. 1952 Phys. Rev. 88, 1217 Ray A.K. and Trickey S.B. 1981 Phys. Rev. B24, 1751; erratum 1983, Phys. Rev. B28, 7352 Rondinelli JM, Beng Bin and Marks LD. 2007, Comp. Mater. Sci. 40, 345-353 (also: Los Alamos archive, physics/0608160 (http://xxx.lanl.gov/abs/physics/0608160) Schwarz K., Neckel A and Nordgren J, J.Phys.F:Metal Phys. 9, 2509 (1979) Schwarz K., and Wimmer E, J.Phys.F:Metal Phys. 10, 1001 (1980) Schwarz K. and Blaha P.: Lecture Notes in Chemistry 67, 139 (1996) Schwarz K., P.Blaha and Madsen, G. K. H. Comp.Phys.Commun. 147, 71 (2002) Singh D., Krakauer H., and Wang C.-S. 1986 Phys. Rev. B34, 8391 Singh, D. 1989 Phys. Rev. B40, 5428 Singh D. 1991, Phys.Rev. B43, 6388 Singh D. 1994, Plane waves, pseudopotentials and the LAPW method, Kluwer Academic Sjostedt E, Nordstrom L and Singh D. J. 2000 Solid State Commun. 114, 15 Sofo J and Fuhr J 2001: $WIENROOT/SRC/aim sofo notes.ps Soler J.M. and Williams A.R. 1989, Phys.Rev. B40, 1560 Sorantin P.I., and Schwarz K.H. 1992, Inorg.Chem. 31, 567 Stahn J, Pietsch U, Blaha P and Schwarz K. 2001, Phys.Rev. B63, 165205
180
CHAPTER 13. REFERENCES Tao Jianmin, Perdew J.P., Staroverov V. and Scuseria G. 2003, Phys.Rev.Let. 91, 146401 Tran F, Laskowski R, Blaha P and Schwarz K. 2007, Phys. Rev. B 75, 115131 Tran F, Blaha P Schwarz K and Novak P 2006, Phys. Rev. B 74, 155108 von Barth U. and Hedin L. 1972 J. Phys. C.: Sol. St. Phys. 5, 1629 Wei S.H., Krakauer H., and Weinert M. 1985 Phys. Rev. B 32, 7792 Weinert M. 1981 J. Math. Phys. 22, 2433 Weinert M., Wimmer E., and Freeman A.J. 1982 Phys. Rev. B26, 4571 Wimmer E., Krakauer H., Weinert M., and Freeman A.J. 1981 Phys. Rev. B24, 864 Wu Z., Cohen R., 2006 Phys. Rev. B73, 235116 Yanchitsky B. and Timoshevskii T. 2001, Comp.Phys.Commun. 139, 235 Yu R., Singh D. and Krakauer H. 1991, Phys.Rev. B43, 6411
Part IV
Appendix
181
184
A.1
Rutile (T iO2 )
Examine the output from symmetry. It should be obvious that you need local rotation matrices for both, Ti and O:
.... Titanium operation # 1 1 Titanium operation # 2 -1 Titanium operation # 5 2 || z Titanium operation # 6 m n z Titanium operation # 12 m n 110 Titanium operation # 13 m n -110 Titanium operation # 18 2 || 110 Titanium operation # 19 2 || -110 pointgroup is mmm (neg. iatnr!!) axes should be: m n z, m n y, m n x
This output tells you, that for Ti a mirror plan normal to z is present, but the mirror planes normal to x and y are missing. Instead, they are normal to the (110) plane and thus you need to rotate x, y by 45 around the z axis. (The required choice of the coordinate system for mmm symmetry is also given in Table 7.42)
.... Oxygen operation # 1 1 Oxygen operation # 6 m n z Oxygen operation # 13 m n -110 Oxygen operation # 18 2 || 110 pointgroup is mm2 (neg. iatnr!!) axes should be: 2 || z, m n y
For O the 2-fold symmetry axes points into the (110) direction instead of z. The appropriate rotation matrices for Ti and O are:
1 2 1 2 1 2 1 2
0 0 1
0 0 1
1 2 1 2
1 2 1 2
A.2
Si -phonon
Si possesses a face-centered cubic structure with two equivalent atoms per unit cell, at (0.125, 0.125, 0.125). The site symmetry is -43m. For the -phnon the two atoms are displaced in opposite direction along the (111) direction and cubic symmetry is lost. The output of SYMMETRY gives the following information:
Si operation # 1 1 Si operation # 13 m n -110 Si operation # 16 m n -101 Si operation # 17 m n 0-11 Si operation # 24 3 || 111 Si operation # 38 3 || 111 pointgroup is 3m (neg. iatnr!!) axis should be: 3 || z, m n y lm: 0 0 1 0 2 0 3 0 3 3 4 0 4 3 5 0
5 3
6 0
6 3
185
Therefore the required local rotation matrix should rotate z into the (111) direction and thus the matrix in the struct le should be:
0.4082483 -.7071068 0.5773503 0.4082483 0.7071068 0.5773503 -.8164966 0.0000000 0.5773503
6 6 6 6 2 66
22
2 2 2 2
3 3 3 3 3 3
A.3
Trigonal Selenium
Selenium possesses space group P3121 with the following struct le:
H LATTICE,NONEQUIV.ATOMS: 1 MODE OF CALC=RELA POINTGROUP:32 8.2500000 8.2500000 9.369000 ATOM= -1: X= .7746000 Y= .7746000 Z= 0.0000000 MULT= 3 ISPLIT= 8 ATOM= -1: X= .2254000 Y= .0000000 Z= 0.3333333 ATOM= -1: X= .0000000 Y= .2254000 Z= 0.6666667 Se NPT= 381 R0=.000100000 RMT=2.100000000 LOCAL ROT.MATRIX: 0.0 0.5000000 0.8660254 0.0000000 -.8660254 0.5000000 1.0000000 0.0000000 0.0 6 IORD OF GROUP G0 ......
Z:34.0
4 0
4 2 -4 2 ......
Point group 2 should have its 2-fold rotation axis along z, so the local rotation matrix can be constructed in two steps: rstly interchange x and z (that leads to z (011) ) and secondly rotate from (011) into (001) (see the struct le given above). Since this is a hexagonal lattice, SYMMETRY uses the hexagonal axes, but the local rotation matrix must be given in cartesian coordinates.
186
B Periodic Table
187
188
1H 5B
He2s 2p
2
1s
3Li
He2s 2p
2 2
4Be
He2s 2p
2 3
He2s
He2s
6C
He2s 2p
2 4
7N
He2s 2p
2 5
8O 16S
Ne3s 3p
2 4 2
9F 17Cl
Ne3s 3p
10Ne
He2s 2p
2
11Na
Ne3s 3p
2
12Mg
Ne3s 3p
2 2
Ne3s
Ne3s
13Al
Ne3s 3p
2 3
14Si 32Ge
Ar3d 4s 4p
10 2 2
15P 33As
Ar3d 4s 4p
10 2 3
18Ar
Ne3s 3p
2
19K
2 2
20Ca
Ar3d 4s
3 2
Ar4s
Ar4s
21Sc
Ar3d 4s
5 1
Ar3d 4s
22Ti
Ar3d 4s
5 2
23V
Ar3d 4s
6 2
24Cr
Ar3d 4s
7 2
25Mn
Ar3d 4s
8 2
26Fe
Ar3d 4s
10 1
27Co
Ar3d 4s
10 2
28Ni
Ar3d 4s 4p
10 2
29Cu
Ar3d 4s 4p
10 2 4
30Zn 48Cd
Kr4d 5s
10 2
31Ga 49In
Kr4d 5s 5p
10 2
34Se 52Te
Kr3d 5s 5p
10 2
35Br
Ar3d 4s 4p
10 2
Ar3d 4s
36Kr
Ar3d 4s 4p
10 2
37Rb
2 2
38Sr
Kr4d 5s
3 2
Kr5s
Kr5s
39Y
Kr4d 5s
5 1
Kr4d 5s
40Zr
Kr4d 5s
5 2
41Nb
Kr4d 5s
6 2
42Mo
Kr4d 5s
7 2
43Tc
Kr4d 5s
8 2
44Ru
Kr4d 5s
10 1
45Rh
Kr4d 5s 5p
10 2 2
46Pd
Kr4d 5s 5p
10 2 3
47Ag 79Au
Xe4f 5d 6s Xe4f 5d 6s Xe4f 5d 6s 6p Xe4f 5d 6s 6p
14 10 1 14 10 2 14 10 2 14 10 2 2 14
51Sb
Kr4d 5s
53I
10
Kr4d 5s 5p
54Xe
Kr4d 5s 5p
10 2
55Cs
14 2 2
56Ba
Xe4f 5d 6s Xe4f 5d 6s Xe4f 5d 6s
14 3 2
57-71 73Ta
Xe4f 5d 6s
14 5 1
Xe6s
Xe6s
72Hf
Xe4f 5d 6s
14 5 2
74W
Xe4f 5d 6s
14 14 7 2 14 8 2 6 2
75Re 78Pt
76Os
77Ir
80Hg
81Tl
La-Lu
Xe4f 5d 6s
Xe4f 5d 6s 6p
84Po
14 10
Xe4f 3d 6s 6p
85At
14 10
Xe4f 5d 6s 6p
86Rn
14 10
Xe4f 5d 6s 6p
87Fr
88Ra
89-103
Rn7s
Rn7s
Ac-Lr
60Nd
Xe4f 6s
4 2
57La
2
Xe5d6s
58Ce
Xe4f 6s
5 2
Xe4f 6s
59Pr
Xe4f 6s
6 2
Xe4f 6s
61Pm
Xe4f 6s
7 2
62Sm
Xe4f 5d6s
7 2
63Eu
Xe4f 6s
9 2
64Gd
Xe4f 6s
10 2
65Tb
66Dy
67Ho
Xe4f 6s
11 2
68Er
12
Xe4f 6s
69Tm
Xe4f 6s
13 2
70Yb
Xe4f 6s
14 2
71Lu
14
Xe4f 5d6s
89Ac
1 2
Rn6d7s
90Th
Rn5f 6d 7s
3 1 2
Rn6d 7s
91Pa
Rn5f 6d 7s
4 1 2
Rn5f 6d 7s
92U
Rn5f 7s
6 2
93Np
Rn5f 7s
7 2
94Pu
Rn5f 6d7s
7 2
95Am
Rn5f 7s
9 2
96Cm
97Bk
98Cf
10
Rn5f 7s
99Es
11
Rn5f 7s
100Fm
Rn5f 7s
12 2
101Md
Rn5f 7s
13 2
102No
Rn5f 7s
14 2
103Lr
14
Rn5f 6d7s