This program calculates total and partial density of states (DOS) by means of the modified tetrahedron method (Blöchl et al 1994). Please note, the tetrahedron method will not work with just one k-point and tetra will automatically switch to a Gaussian broadening scheme (with default broadening of 0.01 Ry). It can also be selected by input (see below), but is not recommended for small unit cells.
It uses the partial charges in case.qtl generated by lapw2 (switch QTL) and generates the DOS in states/Ry (files case.dos1/2/3/...) and in states/eV (with respect to the Fermi energy; files 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 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. ) is given with respect to the local coordinate system for each atom as defined by the local rotation matrix (see Appendix A), unless you have used x qtl to generate the case.qtl and specified a specific coordinate system in case.inq (see Chapter 8.2).
Using the switches -rxes E1 E2 it is possible to generate a ``weight-file'', where each k-point is weighted according to its contribution to the DOS in the energy range E1-E2. This weight-file case.rxes can be used using the switch -rexs to calculate the DOS with these weights. This option might be useful to simulate the E-dependency of RXES spectra, or in general calculate a ``DOS'' of regions around selected k-points only.
The density of states in files 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.
The program tetra is executed by invoking the command:
tetra tetra.def or x tetra [-up|dn -rxes -rxesw E1 E2]
The following parameters are listed in file param.inc:
MG | max. number of DOS cases |
LXDOS | usually 1, except for ``cross-DOS'' when using TELNES.2 = 3 (not needed anymore for TELNES3) |
The required input file case.int can optionally be created using the w2webinterface or the configure_int_lapw script (see 5.2.7).
An example is given below:
------------------ top of file: case.int ------------------ TiO2 # Title -1.000 0.00250 1.200 0.003 # EMIN, DE, EMAX for DOS, GAUSS-Broad 7 N 0.000 # NUMBER OF DOS-CASES, G/L/B broadening 0 1 tot # jatom, doscase, description 1 2 Ti-s 1 3 Ti-p 1 4 Ti-px 1 5 Ti-py 1 6 Ti-pz 2 1 O-tot ------------------- bottom of file ------------------------
Interpretive comments on this file are as follows:
emin, delta, emax | specifies 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. | |
broad | Gauss-broadening factor. Must be greater than delta to have any effect. |
ndos | specifies 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 files | |
Bmethod | optional input (can be omitted) to select instead of the tetrahedron method: | |
G | Gaussian broadening | |
L | Lorentzian broadening | |
B | both, Gauss and Lorentzian broadening | |
broadening | parameters in Ry, typically below/around 0.01 (optional, specify two numbers for B) |
jatom | specifies for which atom the DOS is calculated. 0 means total DOS, means DOS in the interstitial, where is the number of inequivalent atoms. When spin-orbit is included, gives total spin-up/dn DOS in a spinpolarized SO calculation, but is meaningless in a non-spinpolarized SO case. | |
jcol | specifies the column to be used in the respective QTL-file. 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. | |
description | text used for further identification. |
This program was contributed by:
qtl creates the input for calculating total and projected density of states of selected atoms and selected -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 , , , DOS projected on states in a rotated coordinate system and DOS projected on individual 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. The calculation is based on the spectral decomposition of a density matrix on a given atomic site and its transformation to the required basis.
The output is written to case.qtl [up/dn]. For the DOS calculation the file case.qtltext [up/dn] is created in which the ordering of partial charges is given. Please note, that in contrast to case.qtl [up/dn] from x lapw2 -qtl the total partial charge of an atom is NOT multiplied with its ``multiplicity'' and contains only the sum of the requested l,m terms (eg. s,p,d) and thus not all contributions. Also the interstital charge will usually be NOT correct.
The program qtl is executed by invoking the command:
x qtl [ -up/dn -so -p ] or
qtl qtl.def
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 file are as follows:
line 1: free format | |
emin,emax | energy window |
line 2: free format | |
natom | number of atoms selected for calculation |
line 3: free format | |
iatom, QSPLIT, symmetrize, loro | |
iatom | integer, index of atom |
QSPLIT | integer, analog of ISPLIT in case.struct: see below |
symmetrize | integer, =0 (no symmetrization), 1 (symmetrization) |
loro | 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 | number of orbital numbers selected for calculation |
l | orbital numbers selected for calculation for atom iatom |
line 5: free format | |
hz, kz, lz | real*8, direction of new axis z (if loro=1,2) |
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 specified, 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. For relativistic splitting (QSPLIT=0,-1) this rotation is ignored and z points along the direction of magnetization as defined in case.inso.
Indices of selected atoms, as well as the orbital numbers, must form an ascending sequence.
QSPLIT | meaning |
-2 | DOS in basis according to ISPLIT from case.struct |
-1 | DOS in relativistic basis |
0 | DOS in relativistic basis, summed over |
1 | DOS in basis (no symmetry) |
2 | DOS in basis of real orbitals (no symmetry) |
3 | axial symmetry |
4 | hexagonal symmetry |
5 | cubic symmetry |
6 | user written unitary transformation |
88 | population matrix, no crossterms corresponds to ISPLIT=88 |
99 | full population matrix including crossterms (as ISPLIT=99) |
For QSPLIT=6 (unitary transformation prepared by user) the unitary matrices are read as in WIEN2k_07 qtl: For the i-th atom selected for qtl calculation, they are stored in case.cf$i and ordered according to increasing . The unitary transformation matrix must rotate from the standard -basis to the desired one. A few examples (e.g. , , or ) are supplied with the code in $WIENROOT/SRC_templates/case.cf_* and must be copied to case.cf$i . For less common cases these must be generated by hand.
The results in file case.qtl[up/dn] are written in the same format as lapw2 file case.qtl[up/dn] and thus they may be directly used by tetra.
The data for the interstital DOS correspond to ( is number of atom types). The ordering of densities for all selected atoms is summarized in the file case.qtltext[up/dn]. The qtltext file 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 file calculated by lapwdm.
This program generates an energy bandstructure plot (postscript file case.spaghetti_ps and xmgrace file 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 (file 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 specified character of that state. It allows to analyze the character of bands (see also figures 3.12 and 3.13).
The file 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 figure. The size of the characters for a ``band-character plot`` can be changed in the menu "Plot/Graph appearance/Z normalization". The figures 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 modified this program and it allows now also to draw connected lines. For this purpose it uses the irreducible representations (from file case.irrep produced by program irrep together with a table of ``compatibility relations'' to decide which points should be connected (non-crossing 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 files (from a previous run or qtls from a DOS calculation) may crash spaghetti. In such cases it is necessary to remove these files explicitly.
It is strongly recommended that you use ``Run Programs Tasks Bandstructure'' from w2web.
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_* files of a k-point parallel lapw1.
An example is given below:
----------------- top of file: case.insp ------------------- ### Figure configuration 5.0 3.0 # paper offset of plot 10.0 15.0 # xsize,ysize [cm] 1.0 4 # major ticks, minor ticks 1.0 1 # character height, font switch 1.1 2 4 # line width, line switch, color switch ### Data configuration -25.0 15.0 2 # energy range, energy switch (1:Ry, 2:eV) 1 0.74250 # Fermi switch, Fermi-level (in Ry units) 1 999 # number of bands for heavier plotting 1,1 0 1 0.02 # jatom, jtype, size of heavier plotting ------------------- bottom of file ------------------------
Interpretive comments on this file are as follows:
test | line must start with '###'. Begin of figure description. This tests also if you use the new input (different from WIEN97 or early WIEN2k versions) |
xoffset | x offset (in cm) of origin of plot | |
yoffset | y offset (in cm) of origin of plot |
xsize | plotsize in x direction (cm) | |
ysize | plotsize in y direction (cm) |
eincr | energy increment where y-axis labels are printed (major ticks) | |
mtick | number of minor ticks of y-axis |
charh | scaling factor for size of labels | |
font | 0 | no text |
1 | Times and Symbol | |
2 | Times,Times-Italic and Symbol | |
3 | Helvetica, Symbol, and Helvetica-Italic | |
4 | include your own fonts in defins.f |
linew | line width | |
ilin | 0 | dots or open circles |
1 | lines | |
2 | lines and open circles | |
3 | lines and filled circles | |
icol | 0 | black |
1 | one-color plot | |
2 | three-color plot | |
3 | multi-color plot | |
4 | multi-color plot,one color for each irred. representation |
test | line must start with '###'. Begin of data description. |
emin | energy minimum of plot | |
emax | energy maximum of plot | |
iunits | ||
1 | energies in Ry (internal scale) | |
2 | energies in eV with respect to |
iferm | 0 | no line at EF |
1 | solid line at EF | |
2 | dashed line at EF | |
3 | dotted line at EF | |
efermi | Fermi energy (Ry); can be found in the respective case.scf file. If set to 999., is not plotted (and iunits=2 cannot be used) |
nband1, nband2 | lower and upper band index for bands which should show ``band-character 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 file case.spaghetti_ene (which can be used for plotting with an external xy-plotting program). |
jatom | If a case.qtl file 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, ``band-character plotting`` does not occur. | |
jcol | specifies the column to be used in the respective QTL-file. 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. | |
jsize | size factor for radii of circles used in ``band-character plotting'' |
This program was contributed by:
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 file, 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.
The program irrep is executed by invoking the command:
irrep [up/dn]irrep.def or x irrep [-so -up/dn ]
The following parameters are listend in file param.inc:
LOMAX | max. no. of local orbital. should be consistent with lapw1 and lapwso |
NLOAT | number of different types of LOs |
MSTP | max. step to describe k as a fraction |
MAXDG | max. no. of degenerate eigenfunctions |
MAXIRDG | max. no. of degenerate irr. representations |
FLMAX | size of flag (FL) array (should be 4) |
MAXIR | max. no. of irreducible representations |
NSYM | max. no. of symmetry operations |
TOLDG | min. energy deviation of degenerate states, in units of Rydberg |
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 value.
The program lapw3 is executed by invoking the command:
lapw3 lapw3.def or lapw3c lapw3.def or x lapw3 [-c ]
The following parameters are listend in file param.inc_r or param.inc_c :
LMAX2 | highest L in in LM expansion of charge and potential |
NCOM | number of LM terms in density |
NRAD | number of radial mesh points |
This program generates the charge density (or the potential) in a specified 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 files one can generate valence (case.clmval) or difference densities (i.e. crystalline minus superposed atomic densities) using the additional file (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 file lapw5.def has to be edited and you must replace case.clmval by the respective filename. The file case.rho contains in the first line
npx, npy, xlength, ylength;and then the density (potential) written with:
write(21,11) ((charge(i,j),j=1,npy),i=1,npx) 11 format(5e16.8)
It is strongly recommended that you use ``Run Programs Tasks Electron density plots'' from w2web, see the TiC example in Fig.3.6 .
The program lapw5 is executed by invoking the command:
lapw5 lapw5.def or lapw5c lapw5.def or x lapw5 [-c -up|dn]
The following parameters are listend in file param.inc:
LMAX2 | highest L in in LM expansion of charge and potential |
NCOM | number of LM terms in density |
NRAD | number of radial mesh points |
NPT00 | number of radial mesh points beyond RMT |
NSYM | order of point group |
An example is given below. You may want to use XCRYSDEN by T.Kokalj to generate this file (see sect. 9.23.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 file are as follows:
ix,iy,iz,idv | The plane and section of the plot is specified by three points in the unit cell, an origin of the plot, an x-end and an y-end. The first line specifies 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) |
ix,iy,iz,idv | coordinates of x-end |
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 difficult 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 define your plane. You can find this program using ``Run Programs Other Goodies'' from w2web. |
nxsh, nysh, nzsh | specifies 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) |
npx, npy | specifies number of grid points in plot. npy=1 produces a file 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. |
switch | RHO | charge (or potential) plots, no atomic density is used (regular case) |
DIFF | difference density plot (crystalline - superposed atomic densities), needs file case.sigma (which is generated with LSTART, see section 6.4) | |
OVER | superposition of atomic densities, needs file case.sigma | |
addsub | NO | (or blank field): use only the file from unit 9 |
ADD | adds densities from units 9 and 11 (if present), e.g. to add spin-up and down densities. | |
SUB | 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). |
iunits | ATU | density (potential) in atomic units e/ (or Ry) |
ANG | density in e/ (do not use this option for potentials) | |
cnorm | determines normalization factor | |
VAL | used for files case.clmval, r2v, vcoul, vtotal | |
TOT | used for files case.clmsum | |
debug | DEBU | debugging information is printed (large output) |
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 filenames (case.clmval, case.r2v, case.vcoul, case.vtotal) for units 9 and 11, and finally run lapw5 lapw5.def.
This program was contributed by:
This program analyses the topology of the electron density according to Bader's ``Atoms in molecules'' theory. For more information see Bader 2001 and Sofo and Fuhr 2001.
The original code has been significantly 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.
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.
The program aim is executed by invoking the command:
aim aim.def or aimc aim.def or x aim [-c ]
The following parameters are listed in file param.inc:
LMAX2 | highest L in in LM expansion of charge and potential |
NRAD | number of radial mesh points |
NSYM | order of point group |
The input file 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 file are as follows:
CRIT | Keyword to calculate critical points | |
iatom | index of the atom from where the search should be started. This count includes the multiplicity, i.e. if the first atom has MULT=2, the ``second atom'' has iatom=3 (Do not use simply the atom-numbers from case.struct) |
KEY | TWO, THRE, ALL, or FOUR | |
defines 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. |
specifies the number of nearest neighbor cells (in x,y,z direction) where atomic positions are generated. |
END | specifies 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 dist2where 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.10) and get in the file critical_points_ang a comprehensive list of the CP (sorted and unique) with all values given in (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 file are as follows:
SURF | Keyword to calculate the Bader surface. |
iatom | index of the atom from where the search should be started. This count includes the multiplicity, i.e. if the first atom has MULT=2, the ``second atom'' has iatom=3 (Do not use simply the atom-numbers from case.struct) |
ntheta | number of theta directions for the surface determination. This (and nphi) determines the accuracy (and computing time). | |
thmin | starting angle for theta | |
thmax | 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 . |
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 integration). |
h0 | step in real space to follow the gradient ( 0.1) | |
frmin | defines the radius, for which the routine assumes that the search path has entered an atom, given as ``rmin = frmin * rmt'' ( 0.8-1.0) | |
nstep | number of steps between testing the position being inside or outside of the surface ( 2-8). |
r0 | initial radius for the search of the surface radius ( 1.5) | |
dr0 | step for the search of the surface radius( 0.1) |
specifies the number of nearest neighbor cells (in x,y,z direction) where atomic positions are generated. |
IRHO | integrate function on ``unit 9'' (usually case.clmsum) inside previously defined surface (stored in case.surf). |
WEIT | specifies the use of weights in case.surf. |
npt | specifies number of points for radial integration outside the MT ( 30) |
END | specifies end of job. |
The program lapw7 generates wave function data on spatial grids for a given set of -points and electronic bands. lapw7 uses the wave function information stored in case.vector (or in reduced (filtered) form in case.vectorf which can be obtained from case.vector by running the program filtvec). Depending on the options set in the input file case.in7(c) one can generate the real or imaginary part of the wave functions, it's 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 specified in the input file(s). The grid can either be any arbitrary list of points (to be specified free-formatted in a separate file case.grid) or any -dimensional grid (). The operating mode and grid parameters are specified in the input file case.in7(c). As output lapw7 writes the specified 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 file 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 first storing the atomic augmentation coefficients , (and ) to a binary file 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.
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 (filtered) wave function file case.vectorf, otherwise the standard wave function file case.vector is used. The reduced vector file case.vectorf is assumed to resist in the current working directory, while the standard vector file case.vector (which may become quite large) is looked for in the WIEN scratch directory. For details see lapw7.def.
The following parameters are listed in file param.inc_(r/c):
NRAD | number of radial mesh points | |
NSYM | order of point group | |
LMAX7 | maximum L value used for plane wave augmentation | |
LOMAX | 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 defines 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 muffin 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.
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 - - - - - - - - - - - - - - - - - |
Interpretive comments on this file are as follows.
line 1: | format(A3,A1) | ||
mode flag | |||
mode | the type of grid to be used | ||
ANY | An arbitrary list of grid points is used. | ||
0D, 1D, 2D, or 3D | An -dim. grid of points is used. . | ||
flag | orthogonality checking flag (for -dim. grids only) | ||
N | The axes of the -dim. grid are allowed to be non-orthogonal. | ||
O or | The axes of the -dim. grid have to be mutual orthogonal. | ||
line 2: | free format -- (for -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. | ||
line 3: | free format -- (for -dim. grids with only) | ||
ix iy iz idiv | Coordinates of the end points of each grid axis.
This input line has to be repeated -times. |
||
line 4: | free format -- (not for 0-dim. grids) | ||
np ... npo ... | In case of an -dim. grid, first 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 first 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 first and last grid point are taken. Hence, for -dim. grids, altogether, integers must be provided; for arbitrary lists of grid points two intergers are expected. | ||
line 5: | 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. | ||
line 6: | format(A3,1X,A3,1X,A5) | ||
switch iunit whpsi | |||
switch | the type of wave function data to generate | ||
RE | The real part of the wave functions is evaluated. | ||
IM | The imaginary part of the wave functions is evaluated. | ||
ABS | The absolute value of the wave functions is evaluated. | ||
ARG | The argument the wave functions in the complex plane is evaluated. | ||
PSI | The complex wave functions are evaluated. | ||
iunit | the physical units for wave function output | ||
ANG | Å units are used for the wave functions. | ||
AU or ATU | Atomic units are used for the wave functions. | ||
whpsi | the relativistic component to be evaluated | ||
LARGE | The large relativistic component of wave function is evaluated. | ||
SMALL | The small relativistic component of wave function is evaluated. |
line 7: | free format | ||
iskpt iseig | |||
iskpt | The -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 -point in the original case.vector file! If iskpt is set to zero, all -points 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 file! If iseig is set to zero, all bands (for the selected -point(s)) which can found in case.vector(f) are considered. | ||
line 8: | format(A4) -- this line is optional | ||
handle | augmentation coefficient control flag | ||
SAVE or STOR(E) | Augmentation coefficients 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 coefficients are read in (from case.abc). This option is only allowed if the same single wave function as the one who's augmentation coefficients are stored in case.abc is selected in the previous input line. | ||
anything else | Augmentation coefficients are generated from the wave function information in case.vector(f). |
This program was contributed by:
The program filtvec reduces the information stored in case.vector files by filtering out a user-specified selection of wave functions. Either a fixed set of band indices can be selected which is used for all selected -points (global selection mode), or the band indices can be selected individually for each selected -point (individual selection mode). The complete wave function and band structure information for the selected -points and bands is transferred to case.vectorf. The information on all other wave functions in the original file is discarded. The structure of the generated case.vectorf file is identical to that of the original case.vector file. 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 filter vector files from spin-polarized calculations, filtvec has to be run separately for both the spin-up and the spin-down files.
filtvec has not yet been adapted for w2web.
The program filtvec is executed by invoking the command:
filtvec filtvec.def or filtvecc filtvec.def or x filtvec [-c] [-up|dn]
In accordance with the file handling for lapw1 and lapw7 the input vector file case.vector is assumed to be located in the WIEN scratch directory, while the reduced output vector file case.vectorf is written to the current working directory. See filtvec.def for details.
The following parameters are listed in file param.inc_(r/c):
NKPT | number of -points | |
LMAX | maximum number of L values used (as in lapw1) | |
LOMAX | 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.
Two examples are given below. The first uses global selection mode; the
second individual selection mode.
I. Global Selection Mode
- - - - - - - - - - - - - - - - - top of file - - - - - - - - - - - - - - - - - | |||
3 | 1 17 33 | # number of k-points, k-points | |
2 | 11 -18 | # number of bands, band indices | |
- - - - - - - - - - - - - - - - - end of file - - - - - - - - - - - - - - - - - |
Interpretive comments on this file are as follows.
line 1: | free format | |
kmax ik(1) ... ik(kmax) | Number of -point list items, followed by the list items themselves. Positive list items mean selection of the -point with the specified index; negative list items mean selection of a range of -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. | |
line 2: | free format | |
nmax ie(1) ... ie(nmax) | 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. |
II. Individual Selection Mode
- - - - - - - - - - - - - - - - - top of file - - - - - - - - - - - - - - - - - | ||||
2 : | # number of k-points | |||
17 | 4 | 11 13 15 17 | # k-point, number of bands, band indices | |
33 | 3 | 11 -14 18 | # k-point, number of bands, band indices | |
- - - - - - - - - - - - - - - - - end of file - - - - - - - - - - - - - - - - - |
Interpretive comments on this file are as follows.
line 1: | free format | |
kmax | the number of individual -points to be selected. This number must be followed by any text, e.g. 'SELECTIONS' or simply ':', to indicate individual selection mode. | |
line 2: | free format | |
ik nmax ie(1) ... ie(nmax) | First the index of the selected -point,
then the number of band index items, followed by the list items for
the current -point themselves. Positive list items mean
selection of the band with the specified 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. |
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 file 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 file case.txspec, broadened spectra in the file case.xspec. Other generated files 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.
xspec xspec.def or x xspec [-up|-dn]
The program initxspec is executed by invoking the command:
initxspec xspec.def or x initxspec [-up|-dn]
The program tetra is executed by invoking the command:
tetra tetra.def or x tetra [-up|-dn]
The program txspec is executed by invoking the command:
txspec xspec.def or x txspec [-up|-dn]
The program lorentz is executed by invoking the command:
lorentz xspec.def or x lorentz [-up|-dn]
The following dimensioning parameters are collected in the files param.inc of SRC_txspec and SRC_lorentz:
IEMAX0 | maximum number of energy steps in the spectrum (SRC_lorentz) |
NRAD | number of radial mesh points |
LMAX | highest l+1 in basis function inside sphere (consistent with input in case.in1) |
---------------- 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 ------------------------
---------------- 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) -2,0.1,30 (EMIN,DE,EMAX in eV) ABS (type of spectrum) 0.5 (S) 0.25 (gamma0) ------------------- bottom of file ------------------------
Interpretive comments on these files are as follows.
TITLE | Title |
NATO | Number of the selected atom (in case.struct file) |
NC | principle quantum number of the core state |
LC | azimuthal quantum number of the core state |
|
SPLIT, INT1, INT2 | split in eV between e.g. and spectrum (compare with the respective core eigenvalues), INT1 and INT2 specifies the relative intensity between these spectra. Values of 0, 0.5, 0.5 give unshifted spectra. |
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. |
TYPE | EMIS | X-ray emission spectrum |
ABS | X-ray absorption spectrum (default) |
S | broadening parameter for the spectrometer broadening. For absorption spectra S includes both experimental and core broadening. Set S to zero for no broadening. |
GAMMA0 | broadening parameter for the life-time broadening of the core states. Set GAMMA0 to zero to avoid lifetime broadening of the core states. |
W | broadening parameter for the life-time broadening of valence states. Set W to zero to avoid lifetime broadening of the valence states. |
BANDRA | ||
AUTO | band ranges are determined AUTOmatically (default) | |
MAN | band ranges have to be entered MANually |
E0 | Emission spectra: onset energy for broadening, E0, generated automatically if AUTO was set in line 10 | |
Absorption spectra: not used |
E1 | Emission spectra: onset energy for broadening, E1, generated automatically if AUTO was set in line 10 | |
Absorption spectra: not used |
E2 | Emission spectra: onset energy for broadening, E2, generated automatically if AUTO was set in line 10 | |
Absorption spectra: not used |
This program was contributed by:
The TELNES3 program calculates the double differential scattering cross section (DDSCS) on a grid of energy loss values and impulse transfer vectors. This double differential cross section is integrated to yield a differential cross section, which is written to file. The differential cross section is either a function of energy (ELNES integrated over impulse transfer q); or a function of impulse transfer (ELNES integrated over energy loss E), which shows the angular behavior of scattering.
The DDSCS is calculated as described in a forthcoming publication by K. Jorissen, C. Hebert, and J. Luitz. (The Ph.D. thesis of K. Jorissen (http://www.wien2k.at/reg_user/textbooks/) also describes the formalism onto which TELNES3 is built in great detail.) This formalism allows calculation of relativistic EELS including transitions of ‘arbitrary’ order (i.e., non-dipole transitions). It takes 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, simplifying the calculation. Both scenarios are implemented in TELNES3.
A note to our faithful fans from the early days: it used to be necessary to play such tricks as recompiling lapw2 with lxdos=3 ; to create k-meshes without symmetry ; and to edit case.struct and set ‘ISPLIT’ to 99. This is no longer necessary. Just sit back, relax, and press the buttons in w2web. The integration with the package qtl will do the job.
telnes3 telnes3.def or x telnes3 [-up|-dn]
TELNES3 requires one input file - case.innes. We recommend using InnesGen of w2web to create this input file in a clear and intuitive way. If you wish to manually edit the file, please refer to the following description. Please note that input files created for TELNES2 may or may not work with TELNES3, depending on which optional keywords were used. There isn't a shred of compatibility with the old TELNES program.
The file case.innes consists of two parts: a first block with required input, and a second block with optional input. In fact, the second part may be omitted altogether. The simplest input file 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) 0.0 20.0 0.1 (the energy mesh) 5.0 1.87 (collection semiangle, convergence semiangle, both in mrad) 10 1 (NR, NT, defining the integration mesh in the detector plane) 0.8 (spectrometer broadening in eV) END
This first part of the file is not formatted and contains the following information:
line | value | explanation |
1 | `Graphite ...' | Title (of no consequence for the calculation) |
2 | 1 | Atom number as given in case.struct (the index which numbers inequivalent atoms) |
3 | 1 0 | main and orbital quantum number n and l of the core state; eg. 1 0 stands for 1 s |
4 | 285 | energy of the edge onset in eV (here for the C K edge) |
5 | 300 | beam energy in keV |
6 | 0.0 20.0 0.1 | energy mesh given as ; all values in eV. 0.0 is the edge threshold. |
7 | 5.0 1.87 | detector collection semiangle and microscope convergence semiangle in mrad |
8 | 10 1 | parameters NR and NT which determine the mesh used for sampling the distribution of Q-vectors allowed by collection and convergence angles |
9 | 0.8 | spectrometer broadening FWHM in eV |
10 | END | keyword telling the program that there is no more input to read. Optional keywords and values must be inserted before this line! |
There are many other parameters that control the calculation, most of which are set to reasonable default values. To use these advanced parameters, add corresponding keywords before the END keyword. We recommend using InnesGen of w2web to create this input file.
Currently, the keywords listed below may be used. Although only the first four characters of each keyword are read, we recommend using the full keyword for clarity.
VERBOSITY n eg. : 1
Specifies how much output you'll get. n must be 0 (only basic output; default), 1 (medium output) or 2 (full output, including more technical information).
ATOMS n1 n2 eg. : 1 3 (default : 1 0 == 1 mult(natom) )
The atom number on line 2 (see above) corresponds to a class of equivalent atoms in case.struct. 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+1) for the orientation averaged spectrum, but as each equivalent atom has a different orientation with respect to the beam, this setting will influence the shape of an orientation sensitive spectrum.
DETECTOR POSITION theta_x theta_y eg. : 0.5 0.5 (default : 0 0)
By default, the detector is aligned with the incoming beam - i.e., source, sample, and detector are connected by a straight line. This card shifts the detector in a plane perpendicular to the incoming beam. The shift is expressed as an angle in mrad. If one draws a line between source and sample, and another line from the sample to the center of the detector aperture, these 2 lines will form an angle of mrad.
MODUS m eg. : angles (default is energy)The output is a spectrum as a function of energy if m=energy. The output is a spectrum as a function of impulse transfer/scattering angle if m=angle.
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 , and one corresponding to (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 specified 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. It is generally quite accurate.
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 .
NONRELATIVISTICThis key tells the program not to use the relativistic corrections to the scattering cross section. This option generates spectra identical to output of the old TELNES program. This produces incorrect results in many cases. By default, relativistic calculations are done.
INITIALIZATION make_dos write_dos eg. N N (default : Y Y) make_rot.mat. write_rot.mat eg. Y N (default : Y Y)
TELNES3 needs many ingredients for its calculations, and this key defines how it gets two of them: the density of states, and the rotation matrices (used for transforming q-vectors from one atom to an equivalent atom). The first entry says whether or not the ingredient has to be calculated (Y : calculate; N : read from file), and the second entry says whether or not the ingredient has to be written to file (Y : write; N : don't write). If make_dos=Y, a file case.qtl must be present from which the dos will be calculated. If make_dos=N, then either a file case.dos or a file case.xdos containing the (x)dos must exist. If make_rot.mat=N, a file case.rotij containg the rotation matrices must exist. If write_rot.mat=Y, a file case.rotij is written. If write_dos=Y, a file case.dos or case.xdos is written. The calculation of the rotation matrices is computationally negligible, but it is recommended to write the xdos to file and not calculate it over and over again.
QGRID qmodus eg. L (U by default) theta_0 eg. 0.05 (no default value) )
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 :
ORIENTATION SENSITIVE g1 g2 g3 (eg. 0.0 40.0 0.0) (no default value)
This key tells the program not to average over sample to beam orientations, but to use the particular sample to beam orientation defined 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 (default).
SELECTION RULE type (eg. : q) (default : n)The formula for the DDSCS contains an exponential factor in q, which we expand using the Rayleigh expansion. We identify each term in the expansion by the order lambda of the spherical Bessel function it contains. This key keeps some terms and discards others. This can be useful to eliminate unwanted transitions ; to study a spectrum in greater detail ; or simply to speed up the calculation significantly. Possible settings for `type' are :
m : use lambda = 0 only d : use lambda = 1 only q : use lambda = 2 only o : use lambda = 3 only n : no selection rule, calculate all transitions 0-3 : all transitions up to lambda (eg., 1 means lambda = 0 and 1)
Be aware that the availability of the DOS limits the possible transitions (WIEN2k gives us the DOS only up to l=3). In the nonrelativistic limit, the SELECTION RULE and LSELECTION RULE coincide – i.e., the terms correspond to dipole transitions etc. This is no longer true in the relativistic case.
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 final states. Possible settings for `type' are (the orbital momentum of the initial state being denoted with l):
m : L=l d : L=l +/- 1 q : L=l +/- 2 o : L=l +/- 3 n : no selection rule, calculate all transitions 0-3 : |L-l| <= type
Be aware that the availability of the DOS limits the possible transitions (WIEN2k gives us the DOS only up to l=3). In the nonrelativistic limit, the SELECTION RULE and LSELECTION RULE coincide – i.e., the terms correspond to dipole transitions etc. This is no longer true in the relativistic case.
EXTEND POTENTIALS Rmax sampling lmax refine (e.g.: 3.0 15 0 1.0) (no defaults)
Calculate matrix elements beyond the muffin tin radius up to r = rmax (in Bohr units). Refine the radial grid by a factor ‘refine’ (1 means default sampling density). This is done by evaluating the potential as given in case.vtotal, which must be present for this type of calculation, and reexpanding it in spherical harmonics, using an angular grid with step of ‘sampling’ degrees, and expanding up to l=lmax. Currently, users should keep lmax to 0 and almost certainly refine to 1.0 . However, advanced users can play around with the software and tweak it to do interesting things if they wish. TELNES3 only requires the spherical potential l=0.
FERMI ENERGY Ef (e.g. 0.75)
Manually set the Fermi energy to Ef (needs to be given in Rydberg units). (The default behavior is to get Ef from the header of case.qtl.)
CORE WAVEFUNCTION filename (e.g. case.cwf)
Read the wave function of the initial state from file. (Default behavior is to calculate it instead.)
FINAL STATE WAVEFUNCTION filename (e.g. case.finalwf)
Read the radial wave functions of the final state from file. (Default behavior is to calculate it instead.)
RELATIVISTIC Itype (e.g. 1)
Determines which flavor of relativity to use : 0 means nonrelativistic (as in TELNES), 1 means fully relativistic (default), 2 means using the contracted q-vector (only valid for dipole transitions ; as in TELNES2).
NOHEADERS
Don't put headers in output files. This can be helpful if your plotting program doesn't like the headers. (Gnuplot doesn't mind them.)
DOSONLY
Don't calculate the EELS spectrum – halt the program after the calculation of the density of states is finished.
NBTOT nb (e.g. 200 )
Arrays for the DOS are first allocated at some initial size, and then reallocated at larger size if necessary. Unfortunately, these reallocation routines appear unstable in some circumstances. This card allows the user to set an array size manually and avoid the need to reallocate (nb is the number of bands). However, very large systems may lead the system to run out of memory and cause a crash.
The following cards are not yet activated (placeholders): TABULATE, SPIN
The following cards are no longer active and must be removed or renamed: XQTL, WRONG.
A typical ELNES calculation consists of the following steps:
TELNES3 uses a lot of files. Many output files are only written if VERBOSITY is set to a high level. Many input files are required only for certain input settings in case.innes. We list here all files possibly used by TELNES3 (and listed in telnes3.def). Each filename is followed by “I†or “O†(input/output), a short description of the file content, and a comment on when the file is used.
This program was contributed by:
The broadening program can be used in conjunction with the TELNES3 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.
broadening broadening.def or x broadening
broadening needs one input file - case.inb. When running TELNES3 this input file 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
line | value | explanation |
1 | `GaN ...' | Title (of no consequence for the calculation) |
2 | ELNES | ABS | EMIS | Type of input spectrum |
3 | NC C1 C2 | specification of input file: NC number of columns to read, C1 and C2 column to broaden (only in ``ELNES'' mode) |
4 | SPLIT XINT1 XINT2 | split energy, XINT1|2 relative intensities of spectra in C1 and C2 |
5 | GA GB | core hole lifetime of the two edges |
6 | W WSHIFT | W: type of valence broadening (1: linear with , 2: Muller like ), edge offset |
7 | S | Spectrometer broadening FWHM in eV |
8 | dummy | dummy keyword for compatibility with lorentz |
9-11 | E0, E1, E2 | quadratic energy dependent broadening (only used for type ELNES and EMIS when selecting valence broadening type W=2) |
This program generates a series of new struct files corresponding to different volumes, c/a ratios, or otherwise different lattice parameters (depending on your input choice) from an existing struct file (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 find the corresponding equillibrium parameters (see Sec.5.3.1).
The program optimize is executed by invoking the command:
optimize optimize.def or x optimize
This package calculates elastic constants for cubic crystals. It is described in detail by the author in Charpin 2001. Please note, at http://www.wien2k.at/reg_user/unsupported you can find a package Hex-elastic by Morteza Jamal, which should calculate elastic constants also for hexagonal symmetry.
The package is driven by three scripts:
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 file which can be used in the next geometry/time step. Depending on the input options, mini helps to find the equilibrium positions of the atoms or performs a molecular dynamics simulation (which might take very long time).
For finding 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 modified 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 file case.finM, while the ``history'' of the geometry optimization or MD is stored in case.tmpM
One can constrain individual positions in case.inM or define 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 file). In case of calculations with linear constrains one should use NEW1 (in case.inM). When constraining individual positions and using PORT, one should after modifications in case.inM rerun x pairhess -copy (which copies .minpair to .minrestart and .min_hess).
The program mini is executed by invoking the command:
mini mini.def or x mini
The following dimensioning parameters are collected in the file param.inc:
MAXIT | maximum number of geometry steps |
NRAD | number of radial mesh points |
NCOM | number of LM terms in density |
NNN | number of neighboring atoms for nn |
NSYM | order of pointgroup |
---------------- 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 file are as follows.
MINMOD | Modus of the calculation | |
PORT | 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 | |
where and 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), will be set to . Please see also the comments in Sect. 5.3.2 | ||
BFGS | Performs geometry optimization with the variable metric method of BFGS. This option works only when a quadratic approximation is a good approximation to the specific potential surface. Obsolete. | |
TOLF | Force tolerance, geometry optimization will stop when all forces are below TOLF. | |
STEP0 | Initial "Trust-region radius". Determines size of first geometry step. |
DELTA(1-3) | For PORT (and BFGS): Precondition parameters: rescales the gradient and thus determines the size of the geometry steps | |
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 (for PORT: after setting a DELTA(i)=0, also rerun pairhess to set a proper Hessian). 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 file case.tmpM ! | ||
ETA | For NEWT: damping (friction) parameter. ETA=1 means no friction, ETA=0 means no speed from previous time steps | |
PORT: changes the strength of the bonds when running pairhess and ZWEIGHT is negative (see the pairhess description), otherwise not used | ||
NEW1: ETA is not used |
---------------- 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 file are as follows.
MINMOD | Modus of the calculation | |
MOLD | Performs next molecular dynamics timestep | |
NOSE | Performs next molecular dynamics timestep using a NOSE thermostat |
MASS | Atomic mass of atom | |
TIMESTEP | Time step of MD (in atomic units, depends on highest vibrational frequencies) |
TEMP | Simulation Temperature (K) |
NOSF | Nose-frequency |
This program was contributed by:
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 fine 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-file. After the vector-file 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
between all band combinations for each k-point given in the vector-file and stores them in case.symmat. For the orthogonal lattices the squared diagonal components can be found in the file case.mat_diag. For non-orthogonal systems all 6 components 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 non-spinpolarized.
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.
Since version WIEN2k_11.1 an option for the calculation of XMCD (X-ray
magnetic circular dichroism) has been added by Lorenzo Pardini
(loren.pard@gmail.com).
In the case of the XMCD calculation, the momentum matrix elements in
the dipole approximation between the selected core state
and conduction states are stored in case.symmat1up (higher energy core state, eg. L)
and case.symmat2up (lower energy core state, eg. L)
for each k-point and every band.
For K, L, and M edges, only case.symmat1up is written, since
in these cases there is only one edge, whereas both case.symmat1up and case.symmat2up
are written for the remaining cases.
XMCD calculation can be only performed for system with spin-polarized AND spin-orbit set up.
In order to calculate XMCD and x-ray absorption spectra, eigenvalues must be evaluated over a mesh in the whole
Brillouin zone; for that porpouse, the following procedure should be followed:
You must not use p-1/2 ``relativistic'' LOs in LAPWSO, since this basis is not supported on OPTICS yet.
optic(c) optic.def or x optic [-c -up|dn -so -p]
Recommended procedure for spin-orbit coupling:
In order to get the correct matrix elements, the files case.vectorso[up|dn] have to be used. For that purpose the following procedure is recommended:
In cases of non-spinpolarized spin-orbit calculations WITHOUT inversion symmetry one must do some tricks and ``mimick'' a spinpolarized calculation:
Due to the ``paramagnetic'' weight files (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-files are used at the same time.
The following dimensioning parameters (listed in param.inc_r and param.inc_c) are used:
LMAX | highest l+1 in basis function inside sphere (reducing LMAX to 4 or 5 may dramatically speed-up optics for large cases, but of course the matrix elements will be truncated and do not have full precision) |
LOMAX | highest l for local orbital basis (consistent with input in case.in1) |
NRAD | number of radial mesh points |
NSYM | order of point group |
An example is given below:
---------------- top of file: case.inop -------------------- 99999 1 : NKMAX, NKFIRST -5.0 2.0 18 : EMIN, EMAX, NBvalMAX XMCD 1 L23 : optional line: for XMCD of 1st atom and L23 spectrum 2 : number of choices (columns in *symmat) 1 : Re xx 3 : Re zz OFF : ON/OFF writes MME to unit 4 ------------------- bottom of file -------------------------
Interpretive comments on this file are as follows:
nkmax, nkfirst | maximal number of k-points , number of k-point to start calculation |
emin, emax | absolute energy range (Ry) for which matrix elements should be calculated | |
nbvalmax | optional input. Setting this to the number of occupied bands (see case.output2) will reduce cpu-time of optics (for large cases, MM only between occupied and empty bands) |
XMCD | fixed keyword to indicate XMCD calculation. You should also use NCOL=6 | |
natom | atom number (from case.struct file) for which XMCD should be calculated | |
edge | specify the edge: must be K, L1, L23, M1, M23 or M45 |
ncol | number of choices (columns in case.symmat) |
icol | column to select. Choices are: | |
1 ...Re | ||
2 ...Re | ||
3 ...Re | ||
4 ...Re | ||
5 ...Re | ||
6 ...Re | ||
7 ...Im | ||
8 ...Im | ||
9 ...Im | ||
Options 7-9 apply only in presence of SO, options 4-6 only in non-orthogonal cases. |
IMME | OFF/ON; optionally prints unsquared momentum matrix elements to unit 4 | |
NATOMS | number of atoms for which the opt. matrix elements should be calculated (The index of the atoms is read in the next line). Please note, that since we need the squared matrix elements, the sum of using atom ``1'' and atom ``2'' separately is NOT the same as using atom ``1 and 2'' together, since we miss crossterms. Nevertheless this can be a useful option to analyze the origin of certain peaks in . I recommend to repeat this analysis for all possible combinations, and also for a list of ``all'' atoms, since this shows the effect of the interstitial (and crossterms involving the interstitial). |
IATOMS | List of NMODUS atoms for which the opt. matrix elements should be calculated (see above). |
This program was contributed by:
This program carries out the BZ integration using the momentum matrix elements case.symmat calculated before by optic. The interband or the intraband contributions to the imaginary part of the dielectric tensor () can be computed. Alternatively, the DOS or the joint DOS can be derived.
The output in case.joint can be plotted with any xy-plotting package or opticplot_lapw or Curve_lapw.
Warning: Negative values for may occur due to negative weights in Blöchl's tetrahedron method.
For optional XMCD calculations (see OPTICS) an integration of the Brillouin zone is carried out using the momentum matrix elements from case.symmat1up and case.symmat2up (if both edges are present, otherwise only from case.symmat1up). The broadened and unbroadened spectra are written in files case.xmcd and case.rawxmcd: in these files, the first coloumn is the energy mesh, the second and third coloumns the left and right polarized absorption spectra, the fourth column the XMCD and the last is the XAS. For L, M, and M edges, the broadened and unbroadened spectra for the single edges (useful for the application of Carra's and Thole's sum rules) are stored in case.broad1 and case.broad2 and case.raw1 and case.raw2, respectively, where "1" and "2" are refererred to the higher and lower energy core state.
joint joint.def or x joint [-up|dn]
The following parameter is listend in files param.inc:
NSYM | order of point group |
MG0 | number of columns (usually 9) |
An example is given below:
---------------- top of file: case.injoint ----------------------- 1 9999 8 : LOWER,UPPER,upper-valence BANDINDEX -0.0000 0.00100 2.0000 : EMIN DE EMAX FOR ENERGYGRID IN ryd eV : output units eV / ryd XMCD : omitt these 4 lines for non-XMCD -49.88 -50.80 : core energies in Ry (grep :2P case.scfc) 1.6 0.6 : core-hole broadening (eV) for both core states 0.1 : spectrometer broadening (eV) 4 : SWITCH 2 : NUMBER OF COLUMNS 0.1 0.1 0.3 : BROADENING (FOR DRUDE MODEL - switch 6,7) ------------------- bottom of file -------------------------------
Interpretive comments on this file are as follows:
b1, b2, b3 | lower, upper and (optional) upper-valence band-index (Setting b3 may allow for additional analysis (restricting the occupied bands from b1-b3) and in big cases it will reduce memory requirements. Otherwise set b3 equal b2) |
emin, de, emax | Energy window and increment in Ry (emin must not be negative) |
units | eV | output in units of eV |
Ry | output in units of Ry |
XMCD | keyword for XMCD calculation, requires 3 more lines |
E_core1, E_core2 | lower and higher core energies (in Ry, get them using eg. ``grep :2P case.scf'') |
broad_core1, broad_core2 | lifetime broadening (eV) of lower and higher core state |
broad | spectrometer (Gaussian) broadening (eV) |
switch | 0 | joint DOS for each band combination |
1 | joint DOS as sum over all band combinations | |
2 | DOS for each band | |
3 | DOS as sum over all bands | |
4 | imaginary part of the dielectric tensor () | |
5 | imaginary part of the dielectric tensor for each band combination | |
6 | intraband contributions: number of ``free`` electrons per unit cell assuming bare electron mass (calculated around as defined in input line 4), plasma-frequency | |
7 | in addition to switch 6 the contributions from different bands to the plasma frequency are analyzed. |
ncol | number of columns |
x,y,z | broadening parameters (in units defined in line 3) for Drude-model |
The band analysis for all options (switches 0, 2, 5, and 7) has been improved: For each tensor component additional files are created, where each column contains the contributions from a single band or band combination. The file names are e.g. .Im_eps_xx_1, .Im_eps_xx_2, or .jdos_1 etc. where the number of files depend on the number of bands/band combinations.
Warning: The number of band combinations might be quite large!
This program was contributed by:
The Kramers-Kronig analysis is carried out for the actual number of columns contained in the case.joint[up|dn] file. For each real component its imaginary counterpart is created and vice versa. All dielectric tensor components can be found in file case.epsilon[up|dn]. The real and imaginary parts of the optical conductivity (in ) are written to file case.sigmak[up|dn]. In addition, file case.absorp contains the real parts of the optical conductivity (in and the absorption coefficients. 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 ) 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 (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 xy-plotting package, opticplot_lapw or the "OPTIC"-task in w2web.
kram kram.def or x kram [-up|dn]
The following parameters are listed in files param.inc:
MAXDE | maximum number of points in energy mesh |
MPOL | fixed at 6 |
An example is given below:
---------------- top of file: case.inkram ----------------------- 0.0 gamma for Lorentz broadening (in units selected in joint) 0.0 energy shift (scissors operator) (in units selected in joint) 1 add intraband contributions? yes/no: 1/0 12.60 plasma frequencies (for each ``column'' in case.injoint) 0.20 Gammas for Drude terms (for each ``column'' in case.injoint) ------------------- bottom of file -------------------------------
Interpretive comments on this file are as follows:
EGAMM | Lorentz broadening (in energy units selected in joint) |
ESHIFT | Energy shift (scissors operator) (in energy units selected in joint) |
INTRA | 0 | Intraband contributions are not added |
1 | Intraband contributions are added (requires plasma-frequencies calculated by joint using switch ``6'') ) |
EPL | Plasma-frequencies (calculated by joint using SWITCH=6 for all columns) |
EDRU | Broadening for Drude terms (for all columns) |
This program was contributed by:
This program calculates the magnetic dipolar hyperfine field and the dipolar magnetocrystalline anisotropy by a direct lattice summation over the magnetic moments of all sites.
According to Wikipedia
(13) |
(14) |
(15) |
(16) |
Expressing in T, in and in (a.u.) gives
(17) |
dipan dipan.def or x dipan
The following parameters are listed in files dipan.f:
NATO | number of inequivalent atoms in unit cell |
NDIF | total number of atoms in unit cell |
An example is given below:
---------------- top of file: case.indipan ----------------------- 160. 0 Rmax (a.u.), ipr (printing option) -0.26 Magnetic moment of 1s atom (Y) in mu_B 1.525 Magnetic moment of 2nd atom (Co(2c)) 1.529 Magnetic moments of 3rd atom (Co(3g)) in mu_B 1381. Volume in a.u.**(-3) 2 ndir: numder of magnetization directions 0. 0. 1. first direction for the magnetization 1. 1. 0. second direction ------------------- bottom of file -------------------------------
Interpretive comments on this file are as follows:
Rmax | max distance (bohr) for lattice summation. Vary it for convergence check. | |
IPR | Print switch. IPR=2 produces very large files case.outputdipan and case.nn_dipan |
mm | Magnetic moment () of first atom |
VOLUME | Unit cell volume in bohr**3 (grep :VOL case.scf) |
NDIR | number of magnetization directions for which the dipolar contributions will be calculated. For the differences are also calculated. |
h,k,l | direction of magnetization |
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.