This program calculates total and partial density of states (DOS) by means of the modified tetrahedron method (Blöchl et al 1994). 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).
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]
The following parameters are listed in file param.inc:
| MG | max. number of DOS cases (usually 21) |
| LXDOS | usually 1, except for ``cross-DOS'' (TELNES program) = 3 |
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 # NUMBER OF DOS-CASES
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 and can get up to 21. The corresponding output is written in groups of 7 to respective case.dosX files |
| jatom | specifies for which atom the DOS is calculated. 0 means
total DOS, |
|
| 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 density of states,
spin projected densities of
states and densities of states projected on an arbitrary basis of a
given
-subshell of any atom (including the relativistic
basis)
using tetra. For example it supports calculations of ``
''
or ``
'' DOS or an ``approximate
/
'' splitting in a distrorted
structure.
The calculation is based on the spectral decomposition of a density matrix
on a given atomic site and its transformation to the required basis.
There are three types of input, which determine the results of the program:
a) the ordinary input file described below,
b) the unitary transformation matrix from the standard
-basis to the required one. For the most common bases (e.g.
,
, or
) these matrices 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.
c) the proper setting of the local rotation matrix in the case.struct
file, which
may be different from the setting for the scf calculation. In the special
case of
projected densities of states the local
-axis must coincide with
the magnetization direction defined in case.inso. This is not done automaticaly but
a message is written in the output together with the spin coordinate matrix.
qtl can use ``parallel'' vector-files and the output is written to case.qtl$iatom, which is used as an input for tetra.
The program qtl is executed by invoking the command:
x qtl [ -up/dn -so -p ] or
qtl qtl.def
| LMAX | highest l of wave function inside sphere (consistent with lapw1) |
| LABC | highest l of wave function inside sphere where SO is considered |
| LOMAX | max l for local orbital basis |
| NRAD | number of radial mesh points |
A sample input for case.inq is given below.
------------------ top of file: case.inq -------------------- FULL (SUMA,SPIN,TOTA) DOSYM (NOSYM) 0.0 1.2 Emin, Emax 0.768 Fermi energy 2 number of atoms for which density matrix is calculated 1 2 index of 1st atom, L 4 3 ------------------- bottom of file ------------------------
Interpretive comments on this file are as follows:
| FULL | all |
|
| SUMA | only sums defined by stars in the case.cf$n file calculated | |
| SPIN | projections of total DOS on up/dn subspaces for the case of a calculation with SOC | |
| TOTA | shortcut for calculating total DOS only. |
| DOSYM | standard option | |
| NOSYM | symmetrization schwiched off. Allowed only in special cases. |
| emin,emax | energy window |
| ef | Fermi energy |
| natom | number of atom for which projected DOS is calculated |
| iatom | index of atom for which projected DOS should be calculated | |
| l | l-value for which projected DOS should be calculated |
This program generates an energy bandstructure plot (postscript file) using the eigenvalues printed in case.output1 or case.outputso. Using the SCF potentials one runs lapw1 with a special k-mesh along some high-symmetry lines (some sample inputs can be found in SRC_templates/*.klist). 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 lapw2 with the QTL option and efmod set to ALL, see 7.4). 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.15 and 3.16).
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]
An example is given below:
----------------- top of file: case.insp -------------------
-15.0 10.0 2 5.0 9 # EMIN, EMAX(in), UNITS (1:Ry, 2:eV), major,minor ticks
14.0 12.5 # Size of plot (x,y) in [cm]
3.0 3.0 # Origin offset [cm]
1.0 # character height
0.58241 # E-Fermi (set to 999. to ignore)
20 25 # band indices for ``character plotting``
0 9 0.4 # jatom, jtype, size factor
for ``character plotting``
------------------- bottom of file ------------------------
Interpretive comments on this file are as follows:
| emin | energy minimum of plot, units in Ry or eV (with respect to Ef) depending on ``iunits`` | |
| emax | energy maximum of plot (see above) | |
| iunits | ||
| 1 | energies in Ry (internal scale) | |
| 2 | energies in eV with respect to |
|
| eincr | energy increment where y-axis labels are printed (major ticks) | |
| mtick | number of minor ticks of y-axis |
| xsize | plotsize in x direction (cm) |
| ysize | plotsize in y direction (cm) |
| xoffset | x offset (in cm) of origin of plot | |
| yoffset | y offset (in cm) of origin of plot |
| charh | scaling factor for size of labels |
| efermi | Fermi energy (Ry); can be found in the respective
case.scf file. If set to 999., |
| 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). 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.
It may not work in all cases (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). It is also possible to plot total densities (case.clmsum), Coulomb (case.vcoul), exchange-correlation or total (case.r2v) 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 inFig.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.9.2).
---------------- top of file: case.inc -------------------- 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 |
| 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 | 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). This is the default if this field is blank. |
| iunits | ATU | density (potential) in atomic units
e/ |
| ANG | density in e/
|
|
| cnorm | determines normalization factor | |
| VAL | used for files case.clmval, r2v, vcoul | |
| 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 XCYSDENS). |
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) 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.
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 listend in file param.inc:
| LMAX2 | highest L in in LM expansion of charge and potential |
| NRAD | number of radial mesh points |
| NPT00 | number of radial mesh points beyond RMT |
| 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 rhowhere 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).
---------------- 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 1.0 4 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 | |
| thmin | starting angle for theta | |
| thmax | ending angle for theta. If you have higher symmetry, you can
change thmin/max and use only the ``irreducible'' part, i.e. when you have a
mirror plane normal to z, 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 |
| 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 ( 4-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 |
||
| flag | orthogonality checking flag (for |
||
| N | The axes of the |
||
| O or
|
The axes of the |
||
| line 2: | free format -- (for |
||
| 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 |
||
| ix iy iz idiv | Coordinates of the end points of each grid axis.
This input line has to be repeated |
||
| line 4: | free format -- (not for 0-dim. grids) | ||
| np ... npo ... | In case of an |
||
| 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 |
||
| 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 |
||
| 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 |
|
| 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 |
|
| line 2: | free format | |
| 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 |
|
| line 2: | free format | |
| ik nmax ie(1) ... ie(nmax) | First the index of the selected 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: nbc.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: nbc.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) 1.0 (S) ------------------- 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. |
| 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:
This program calculates energy loss near edge structures (ELNES) according to the formalism described by Nelhiebel M. et al. 1999.
To calculate orientation dependent spectra the option formula must be set to ``F'' or ``H'' in the input. For systems with lower symmetry than orthorombic, ``H'' has to be selected and the following steps must be performed: generate a ``full-k mesh'' (make all positions inequivalent, set symmetry operations only to the identity), run x kgen, edit case.struct and set ISPLIT=99, rerun x lapw1 and x lapw2 -qtl. For Formula ``F'' ISPLIT=88 is required.
elnes elnes.def or x elnes [-up|-dn]
initelnes elnes.def or x initelnes [-up|-dn]
tetra tetra.def or x tetra [-up|-dn]
telnes elnes.def or x telnes [-up|-dn]
The following dimensioning parameters are collected in the file param.inc of SRC_telnes:
| IEMAX0 | maximum number of energy steps in the spectrum |
| NRAD | number of radial mesh points |
| LMAX | highest l+1 in basis function inside sphere (consistent with input in case.in1) |
| LMMX | number of LM terms in potential (should be at least NCOM-1) |
| NATO | number of inequivalent atoms |
| NDIF | total number of atoms per unit cell |
| NGAU | number of Gaunt coefficients for the non-spherical contributions to the matrix elements |
| NSLMAX | highest l+1 in basis functions for non-muffin-tin matrix elements (consistent with input in case.in1) |
| NPOSMAX | max. number of postions for simulation of a series of spectra |
| LAMBMAX | max. dimension of |
An example input for the B-K edge of BN is given below:
---------------- top of file: bn.innes -------------------- Title: Atom 1 K Peak 1, 1 (atom) 1 (n core) 0 (l core) 0,0.05,30 (EMIN,DE,EMAX) 190, 0, .8 (E-Loss, Split between edges, precision; all in [eV]) 200 (energy of the incident electrons (keV)) 0, 0 (ThetaX, ThetaY in mrad) 0 (double of Bragg angle in mrad) 0, 0, 0 (DeltaX, DeltaY, Number of cases - 1: (0=1 case)) 4 (LambdaMax) L (L for Line and P for Plane) N (N: Normal; F: Fine; H: HyperFine) 00.D0, 00.D0, 00.D0 (Euler angles) 0 (Spectrometer aperture in mrad) 0 (collection angle in mrad) 1, 1 (NR, NT) ------------------- bottom of file ------------------------
Interpretive comments on these files are as follows.
| TITLE | Title |
| NATO, NEQ | Number of the selected atom (in case.struct file), number
of the equivalent position (set to |
| NC | principle quantum number of the core state |
| LC | azimuthal quantum number of the core state |
| EMIN,DE,EMAX | Simulation of the edge will be performed from
EMIN to EMAX with a step size of DE (in eV with respect to |
| DeltaE, SPLIT, PreV | DeltaE is the energy loss of the first edge.
SPLIT is the energy difference between the 2 edges of the same l'
with 2 possible j, first edge: |
| Energy | Energy E0 of the incident electrons (in keV) |
| ThetaX, ThetaY | ThetaX (mrad): angle between 000 and the EELS aperture in the direction of the second excited spot. ThetaY: angle in the orthogonal direction. |
| TwoThetaB |
|
| DeltaThX, DeltaThY, NStep | Simulation of a series with different
Bragg angles: increments
|
| LambdaMax |
| Choice | Choice can either be L to simulate along a line or P to simulate in two dimensions |
| Formula | Formula can either be N (normal: use |
| AAlpha, ABeta, AGamma | Euler angles between observer and crystal basis (only used if formula = F or H) |
| SpecAp | spectrometer aperture (mrad) (only used if formula = F or H) |
| CoAng | collection angle (mrad) (only used if formula = F or H) |
| NR, NT | integration parameters; set if SpecAp or CoAng |
|
![]() |
This program generates a series of new struct files corresponding to different volumes or c/a ratios (depending on your input choice) from an existing struct file (either case_initial.struct or case.struct) and writes a shell script optimize.job. You may modify this script and execute it to find the equilibrium volume or c/a ratio (see Sec.5.3.1). When case_initial.struct is not present, it will be generated from the original case.struct.
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.
The package is driven by three scrips:
This program is usually called from the script min_lapw and performs movements of the atomic positions according to the calculated forces. 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 -using a damped Newton dynamics or a Broyden-Fletcher-Goldfarb-Shanno (BFGS) variable metric method- (see Kohler et al. 1996) or performs a molecular dynamics simulation. The forces are read from a file case.finM, while the ``history'' of the geometry optimization or MD is stored in case.tmpM
Note: We also tried several charge density extrapolation schemes, so that the new scf-run can be performed with a better starting density. However, they are currently not activated.
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: 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 |
|
| TIMESTEP | Time step of MD (in atomic units, depends on highest vibrational frequencies) |
| TEMP | Simulation Temperature (K) |
| NOSF | Nose-frequency |
---------------- top of file: nbc.inM -------------------- NEWT 2.0 (NEWT/BFGS tolf (a4,f5.2)) 0.3 0.3 0.3 0.8 ( 1..3:delta, 4:eta(1=friction zero)) 0.3 0.3 0.3 0.8 ( 1..3=0 constraint) ------------------- bottom of file ------------------------
Interpretive comments on this file are as follows.
| MINMOD | Modus of the calculation | |
| NEWT | Performs geometry optimization with damped Newton scheme according to | |
|
|
||
| where |
||
| BFGS | Performs geometry optimization with the variable metric method of BFGS. This option works well when a quadratic approximation is a good approximation to the specific potential surface | |
| TOLF | Force tolerance, determines when geometry optimization stops |
| DELTA(1-3) | x,y,z-delta parameters for damped Newton scheme. 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. DELTA(i) = 0 constrains the corresponding i-th coordinate (both in NEWT and BFGS) | |
| ETA | damping (friction) parameter for damped Newton scheme. ETA=1 means no friction, ETA=0 means no speed from previous time steps |
This program was contributed by:
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 / value=101. or ROOT/ALL in 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 momentum matrix elements
between all band combinations for each k-point given in the
vector-file. For the orthogonal lattices the squared diagonal
components can be found in the file case.outmat. 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 dielectric tensor components (and other quantities) 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. This in general, up to 9 components can be calculated at the same time.
optic(c) optic.def or x optic [-c -up|dn -so]
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:
Note: Also in the spin-polarized case 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 (consistent with input in case.in1) |
| 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 -------------------- 256 1 : NKMAX, NKFIRST -5.0 2.0 : EMIN, EMAX 2 : number of choices (columns in *outmat) 1 : Re xx 3 : Re zz ------------------- 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 |
| ncol | number of choices (columns in case.outmat) |
| 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. |
This program was contributed by:
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 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
may occur due to negative
weights in Blöchl's tetrahedron method.
joint joint.def or x joint [-up|dn]
The following parameter is listend in files param.inc:
| NSYM | order of point group |
| MG | number of columns |
Note: The program might become very large if MG is set to a large value!
An example is given below:
---------------- top of file: case.injoint -----------------------
1 40 : LOWER AND UPPER BANDINDEX
-0.0000 0.00100 2.0000 : EMIN DE EMAX FOR ENERGYGRID IN ryd
eV : output units eV / ryd
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 | lower and upper band index |
| emin, de, emax | Energy window and increment in Ry |
| units | eV | output in units of eV |
| Ry | output in units of Ry |
| 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 |
|
| 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. case.Im_eps_xx_1, case.Im_eps_xx_1, or case.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. The 3 sumrules are checked and
written to case.sumrules.
The output in case.epsilon[up|dn] and case.sigmak[up|dn] can be plotted with an xy-plotting package.
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 0.20 Gammas for Drude terms ------------------- 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-frequency) |
| EPL | Plasma-frequency (calculated by joint using SWITCH=6) |
| EDRU | Broadening for Drude terms |
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.