The different DOS and bandstructure modes of FLEUR

Fleur supports the calculation of several "DOS-like" quantities which can be understood to be obtained in a two-step procedure.

  1. For each of the eigenstates a set of "weights" is obtained.
  2. These weights are then used in a k-integration.

From this general structure one can already conclude that there are two different possible output quantities that could be of interest. On the one hand the weight as a function of k-vector, band-index and possibly spin and on the other hand the integrated weight as a function of energy and spin. The first of these can be used to further describe the eigenspectrum in a "bandstructure" view, while the second is a "DOS"-like quantity. If <output band="T"> in the inp.xml Fleur will output these weights for each state, while the <output dos="T"> switch will trigger the k-integration to write out the integrated weights. Hence, the modes as described below can be used with setting the band and/or dos switch in the output section.

The different weights supported by Fleur include the local, -resolved density, the orbital decomposed charges, vacuum charges, the MCD matrix elements and the band-resolved local density matrix. Details are described below.

Common input switches and resulting output

The most basic setings for generating a DOS-like quantity are then specified in the output/bandDOS tag. For example:

<output dos="T">
  <bandDOS minEnergy="-0.5" maxEnergy="0.5" sigma="0.01" numberPoints="1321"  />
</output>

The banddos tag must be used to specify the most basic quantities controlling the DOS k-point integration. |attribute|description |----|---- |minEnergy| minimal energy of the DOS grid in Hartree (default=-0.5) |maxEnergy| maximal energy of the DOS grid in Hartree (default=0.5) |sigma| smearing energy to smoothen the DOS in Hartree (default=0.01) |numberPoints| point between minEnergy and maxEnergy (default=1321)

Local and -resolved charges

By default Fleur calculates weights by considering the local -resolved charges in the muffin-tin spheres due to the states. Here we calculate for each atom the charge expanded in spherical harmonics, i.e. the contributions of the l=0, l=1, l=2, and l=3 or s,p,d,f-like charges. The corresponding weights will be labeled by a string like "MT:5d" for the d-like charge of the 5th atom type.

Weight labels

A label like MT:6s is to be understood as the s-like charge of the 6th atom type. Not as a charge of 6s-states.

In addition, the default mode also creates three additional weight "Total", "INT" and "Sym". While the "Total" weight is simply "1.0" for all states, the "INT" weight contains the local DOS in the Interstitial region. The "Sym" weight contains a integer value indicating which representation of the local symmetry corresponding to the k-point the state belongs to.

The data generated in this mode are written to the files "Local.1/2" and/or to the corresponding groups in the banddos.hdf file.

Orbital decomposed charges

In addition to the simple projection onto s,p,d,f orbital, you can also generate more detailed information projecting onto the different (real) spherical harmonics. This mode is switched on by setting the attribute orbcomp="T" in the banddos tag. So a minimal input setting in the output section would be:

<output dos="T">
  <bandDOS orbcomp="T"  />
</output>

This will give you weights like ORB:1ind:3. Here again the first number after the ORB: will indicate the atom considered.

Counting of atoms in ORB-mode

As the orbital decomposition is calculated for each atom not only once for each atom-type be sure you analyse the correct atom. Use the List of atoms in the output to verify which atom you are looking at.

The second number in the label of the weight, i.e. the number after the ind:, is an index counting though the orbitals as follows: 1:s-state, 2-4: p-states, 5-9: d-states, 10-16: f-states(cubic), 17-23: f-states(low symmetry).

1 2 3 4 5 6 7 8 9
s px py pz dxy dyz dxz dx^2-y^2 dz^2

The data generated in this mode are written to the "Orbcomp" group in the banddos.hdf file.

Vacuum charges

For film-setups, i.e. if Fleur is using an input for a film, one can write out various projections of the states in the vacuum. The correspond section in the inp.xml file is:

<output dos="T">
  <vacuumDOS vacdos="T" integ="F" star="F" nstars="1" locx1="0.0" locy1="0.0" locx2="1.0" locy2="1.0" nstm="0" tworkf="0.0">
     <layer> 10 </layer>
  </vacuumDOS>   
</output>
attribute/tag description
vacdos switch on/off the evaluation of vacuum charges (required)
integ switch to activate a z-integration between the layers specified (default="F")
stars switch to activate a decomposition according to 2D stars (default="F")
nstars number of stars to use in decomposition (must be given if stars="T")
locx/y/1/2 definition of a 2D area in which to integrate the DOS (optional)
nstm switch for different simulation modes for an STM tip (expert usage)
tworkf work function of the tip in STM mode (expert usage)
layer layer at which the DOS should be evaluated. Several layers can be given.

The layers are specified on the internal z-grid Fleur is using in the vacuum. By default we use 100 points with a spacing of 0.1 a.u. So layer should be a number between 1 and 100.

The weights generated by this mode are specified by the following labels:

label description
VAC1 total weight in the first vacuum
VAC2 total weight in the second vacuum
Layer1-x weight (2D) integrated on the layer x (first vacuum)
Layer2-x weight (2D) integrated on the Layer x (second vacuum)
R(gVAC1)-x-y Real part of weight for star y on layer x (first vacuum)
I(gVAC1)-x-y Imaginary part of weight for star y on layer x (first vacuum)
R(gVAC2)-x-y Real part of weight for star y on layer x (second vacuum)
I(gVAC2)-x-y Imaginary part of weight for star y on layer x (second vacuum)

The data generated in this mode are written to the "Vacuum" group in the banddos.hdf file.

MCD matrix elements

To evaluate MCD matrix elements the following tags can be set:

<output dos="T">
  <magneticCircularDichroism mcd="T" energyLo="-2.0" energyUp="-1.0" />
</output>

Besides switching on the mode using the mcd attribute, you also have to specify the energy window for the selection of the core-states.

This mode generates weight labels by a string like "At1NC2pos", where again the first number after the "At" labels the atom type considered, the number after "NC" iterates through the core-states used and the description ends in "pos","neg","cir" for the positive, negative and circular contributions.

The data generated in this mode is written to the "MCD" group in the banddos.hdf file.

Band-resolved local density matrix

The densityMatrix element in bandDOS stores the full local density matrix of every state, k point and selected atom in the banddos.hdf file. Usage is described in Band-resolved local density matrices, the definitions in the theory section. The mode requires dos="T" or band="T" and fleurInputVersion="0.39" or newer.

<output dos="T">
  <bandDOS minEnergy="-0.5" maxEnergy="0.5" sigma="0.015">
    <densityMatrix l="spd" lCross="pd" symmetrize="auto"/>
  </bandDOS>
</output>
attribute description
l channels to store, any subset of spdf (default="spd")
lCross additional blocks between different : none, all (all pairs of the channels in l) or a list of pairs such as "sd pd"; both channels must be listed in l (default="none")
symmetrize T: average over the site symmetry and the equivalent atoms, one matrix per atom type; F: every selected atom separately; auto: T unless the k points form a path (default="auto")

The atoms are selected as for the other modes (see below). The matrices are given in the orbital frame set by the alpha, beta, gamma or alignToSpin attributes of the atom positions and, in non-collinear calculations with globalspin="T" in bandDOS, in the global spin frame. Matrices of degenerate states are averaged.

The traces of the diagonal blocks are available as ordinary weights:

label description
DM:1d d-like charge of the state in the sphere of atom 1 (collinear: per spin)
DM:1dmx, DM:1dmy, DM:1dmz d-like spin moment components of the state (non-collinear only)

The number after DM: is the index of the atom, not of the atom type. Symmetrized data are labelled with the first selected atom of each type. These weights are written to the "DensityMatrix" group in the banddos.hdf file (subgroups "DOS", "EV", "BS" as for the other modes) and to the files "DensityMatrix.1/2". After the run, FLEUR writes to the out file the storage needed for the matrices and the largest deviation of the traces from the MT:<type><l> weights of the local DOS.

The matrices are written to the subgroup "DensityMatrix/matrix" (only with HDF5). Shapes are given as seen from Python/h5py:

dataset or attribute description
matrix/@symmetrized T if the matrices are symmetrized
matrix/@globalSpinFrame T if the spin blocks are in the global spin frame
matrix/@nSpinBlocks 1: block 11 (non-magnetic); 2: 11, 22 (collinear); 4: 11, 22, 21, 12 (non-collinear)
matrix/eigenvalues (spin, k point, band): eigenvalues in Hartree, not shifted by the Fermi energy
matrix/elem_n/@atom, @atomType atom and atom type of element n
matrix/elem_n/@eulerAngles Euler angles (radians) of the orbital frame applied to element n
matrix/elem_n/pair_ll' (k point, band, spin block, , , 2): block with , e.g. pair_dd, pair_pd

The last index of pair_ll' holds the real and imaginary part. The element [k, band, b, i, j, :] is , where is spin block b. Blocks with follow as . Memory and file size scale with the number of spin blocks, bands, k points, blocks and elements.

Selection of atoms for the DOS/Bandstructure output

As some of the modes can lead to a large amount of data being generated, the application of the switches can be restricted to a subset of atoms only. For this two different switches are implemented:

  1. In the bandDOS section a all_atoms attribute can be specified. It defaults to "T" but can be used to switch off the generation of weights for all atoms.
<output dos="T">
  <bandDOS all_atoms="F" />
</output>
  1. For each atomic position, a banddos attribute can be given to switch on/off the generation of weights:
<relPos label="something" banddos="F"> 0.0 0.0 0.0 </relPos>

In addition, one can use the alpha, beta, gamma attributes to rotate the coordinate frame of the atom and thus change the assignment of the orbital decomposed weights and the frame of the band-resolved density matrix.

<relPos label="something" alpha="0.0" beta="0.0" gamma="Pi"> 0.0 0.0 0.0 </relPos>