More Analysis

If you are interested in the DOS or a partitioning of the DOS, look for the description of the keys DOS, GrossPopulations for partial DOS, and OverlapPopulations for overlap DOS.

The eigen system can be printed with Print Eigens and the Mulliken populations per orbital per k-point can be printed with Print OrbPop.

A list of the basis functions will be printed with Print OrbLabels.

Charges

BAND prints always three charge analyses. Namely the Voronoi charges, the Mulliken analysis, and the Hirshfeld charges. The calculation comes at virtually no cost, so there are no keys associated with it. This is different for the Bader analysis.

Bader Analysis (AIM)

GridBasedAIM (block-type)

Invoke the ultra fast grid based Bader analysis.[33,34]

GridBasedAIM
   {SmallDensity rhosmall }
   {Iterations n }
   {UseStartDensity [false | true] }
End
SmallDensity
(Default: 1e-6) Where rhosmall is the value below which the density is ignored. This should not be chosen too small because it may lead to unassignable grid points.
Iterations
(Default: 40) The number n determines the maximum number of steps that may be taken to find the nuclear attractor for a grid point.
UseStartDensity
(Default: false) handles whether the analysis is performed on the startup density (true) rather than on the final density (false).
AIMCriticalPoints (block-type)

Also the critical points of the density can be determined. The algorithm starts from a regular mesh of points, and from each of these it walks towards its corresponding critical point.

AIMCriticalPoints
    { GridPadding pad }
    { GridSpacing space }
    { eqvPointsTol tol }
End
GridPadding
(Default: 0.7 Bohr) pad determines how much extra space is added to the starting guess domain in the search for the critical points.
GridSpacing
(Default: 0.5 Bohr) The variable space determines the distance between the initial trial points.
eqvPointsTol
(Default: 0.27 Bohr) tol is used as a criterion to whether or not two critical points are the same.

Density of States

DOS (block-type)

General Density-Of-States (DOS) information.

DOS
   { File filename }
   { Energies n }
   { Min emin }
   { Max emax }
   { IntegrateDeltaE [true | false] }
End
File
(Optional) handles the name of the output file with the DOS results.
Energies
(Default: 300) number of equidistant energy-values.
Min
(Default: -0.75 a.u.) lower bound energy (w.r.t. Fermi level).
Max
(Default: +0.75 a.u.) upper bound energy (w.r.t. Fermi level).
IntegrateDeltaE
(default=true) This subkey handles which algorithm is used to calculate the data-points in the plotted DOS. If the argument is true: the data-points represent an integral over the states in an energy interval. Here, the energy interval depends on the number of Energies and the user-defined upper and lower energy for the calculation of the DOS. The result has as unit [number of states / (energy interval * unit cell)]. If the argument is false: the data-points do represent the number of states for a specific energy and the resulting plot is equal to the DOS per unit cell (unit: [1/energy]). Since the resulting plot can be a wild function and one might miss features of the DOS due to the step length between the energies, the default is set to the integration algorithm.
An example input:
DOS
   FILE        plotfile
   ENERGIES      500
   MIN          -.35
   MAX          1.05
End

According to this example, DOS values will be generated in an equidistant mesh of 500 energy values, ranging from 0.35 a.u. below the Fermi level to 1.05 a.u. above it. All information will be written to a file plotfile. The information on the plot file is a long list of pairs of values (energy and DOS), with some informative text-headers and general information. DOS values are generated for the total DOS and optionally also for some partial DOS (see the keys GrossPopulations and OverlapPopulations).

Gross populations

GrossPopulations (block-type)

Partial densities-of-states (pDOS) are generated for the gross populations listed under this key.

GrossPopulations
   {iat lq}
   {FragFun jat ifun}
   {Frag kat}
   {Sum
    ...
    EndSum}
End
iat
pDOS is generated for atom lg.
FragFun
pDOS is generated for atom jat with all real spherical harmonics belonging to \(l\)-value ifun.
Frag
pDOS of the functions belonging to atom kat will be calculated.
Sum
sum all pDOS, specified in this block.

Example:

GrossPopulations
   FragFun 1 2:: Second function of first atom
   Frag 2 :: Sum of all functions from second atom
   SUM:: sum following PDOSes
      Frag 1::Atom nr.1
      FragFun 2 1::First function of second atom
      5 1:: All pfunctions of fifth atom
   EndSum
End

Overlap populations

OverlapPopulations (block-type)

Overlap population weighted DOS (OPWDOS) are generated for the overlap populations listed

OVERLAPPOPULATIONS
   Left
      { iat lq }
      { FragFun jat ifun }
      { Frag kat }
   Right
      ...
End

You can use this to get the OPWDOS, also known as the crystal orbital overlap population (COOP), of two functions, or, if you like, one bunch of functions with another bunch of functions. The key-block should consist of left-right pairs. After a line with left you enter lines that specify one or more functions (according to GrossPopulations), followed by a similar structure beginning with right, which will produce the OPWDOS of the left functions with the right functions. Example:

OVERLAPPOPULATIONS
   LEFT::First OPWDOS
      Frag 1
   RIGHT
      Frag 2
   LEFT:: Next OPWDOS
      FragFun 1 1
   RIGHT
      2 1
      FragFun 3 5
End

Band structure

The band structure is best examined with the GUI module “Bandstructure”. The band gap (if any) is printed in the output. Here is an example for the NaCl crystal

----------------------------------------
Band gap information
----------------------------------------
Number of valence electrons                    16
Valence Band index                              8
Top of valence Band (a.u.)                 -0.192
Bottom of conduction Band (a.u.)           -0.039
Band gap (a.u.)                             0.153
Band gap (eV)                               4.173
Band gap (kcal)                            96.235

With the normal k-points the band structure looks rather coarse. The brute force solution is simply to crank up the KSPACE parameter, but this is very expensive and not needed for the precision. BAND has an option to interpolate the band curves for the path through the Brillouin zone.

Band structure interpolation

BZStruct (block-type)

Influences how BAND outputs the band structure to the RUNKF file.

BZStruct
  Interpol ipol
  {Enabled [true | false]}
  {Automatic [true | false]}
End
Interpol
The higher the value of ipol the more refined the interpolation.
Enabled
(Default: true) Whether or not to generate band structure data.
Automatic
(Default: true) Whether or not to use the automatic path along high symmetry lines in the BZ.
BZPath (block-type)

User defined path through the Brillouin zone.

BZPath
  kmesh mesh
  path
End

When BZStruct%Automatic is false you can specify manually a path. Increasing mesh leads to more points per line segment. The line segments are specified by some path subkeys. The coordinates are in terms of reciprocal lattice vectors. If you want to make a jump in the BZ, you need to specify a new path. Here is an example:

bzpath
  kmesh 2
  path
    0.25 0.25 0.25
    0 0 0.5
    0 0 0
    0.5 -0.5 0.5
    0.25 0.25 0.25
    0 0 0
  subend
  path
    0 0 0.5
    0.5 -0.5 0.5
  subend
end

Effective Mass

EffectiveMass (block-type)

In a semi conductor the mobility of the electrons and holes is related to the curvature of the bands at the top of the valence band and the bottom of the conduction band. With the effective mass option, this curvature is obtained with numerical differentiation. The estimation is done with the specified step size, and twice the specified step size, and both results are printed to give a hint on the accuracy. By far the most convenient way to use this key is without specifying any subkeys.

EffectiveMass
  StepSize step
  NumAbove na
  NumBelow nb
  UniqueKPoints k1 k2 ...
End
StepSize
(Default: 1e-3) Size of the step taken in reciprocal space to perform the numerical differentiation.
NumAbove
(Default: 1) Number of bands to take into account above the Fermi level.
NumBelow
(Default: 1) Number of bands to take into account below the Fermi level.
UniqueKPoints
List of unique k-points where to print the effective mass. If this option is omitted, it will use the top of valence band and the bottom of the conduction band.

Properties at Nuclei

PropertiesAtNuclei (block-type)

A number of properties can be obtained near the nucleus. An average is taken over a tiny sphere around the nucleus. Technically the following properties are available.

PropertiesAtNuclei
  vxc[rho(fit)]
  rho(fit)
  rho(scf)
  v(coulomb/scf)
  rho(deformation/fit)
  rho(deformation/scf)
End

Physically rho(scf), being the electronic density, is the most relevant one.

Form Factors

FormFactors

X-ray structure factors (Fourier analysis of the charge density) are computed after termination of the SCF procedure.

{FormFactors ival}

The key is followed by an integer specifying the number of stars of K-vectors for which the structure factors are computed. (Default: 2)

Fragments

A fragment feature is available albeit rather primitive. It allows for the analysis of the DOS in a fragment basis and for the calculation of the deformation density with respect to fragment densities. A typical application is the periodical adsorption of one or more molecules on a surface. For instance, consider periodic adsorption of hydrogen molecules over a surface. First you calculate the free molecule in the same orientation as when adsorbed to the substrate. Since you would like to use a molecular fragment, it makes sense to put the molecules far apart (large lattice spacing) and force dispersion to be neglected (KSPACE 1). To use the fragment in the next run you need to rename the result file (“RUNKF”), to something like “frag.runkf”, see the example script discussed below.

Specifying

Print Eigens

for this calculation produces output concerning the eigen states, thereby providing a means to identify the eigen states (e.g. to be sigma, pi, et cetera).

Next, prepare the input for the overlayer with the substrate. With one or more Fragment keys you specify which fragment file(s) to use and to which atoms they should be mapped. It is allowed to have more than one fragment. The subkey Labels of a fragment gives you the possibility to introduce labels for the fragment orbitals. Finally you can specify which fragments to use in the DOS analysis, via the DosBas key.

An example of using the fragments feature in BAND is provided in one of the sample runs (CO on a Cu surface) in the directory $ADFHOME/examples/band/Frags_COCu, see the example. The provided example is a slab calculation of Cu with a CO molecule adsorbed. A DOS analysis is performed in terms of the Cu atomic orbitals and the CO molecular orbitals. Note in the first step the use of KSPACE 1, together with a large lattice spacing. In this way a ‘molecular’ solution is obtained, which can be used as a fragment. This fragment is saved as CO.runkf, and is input for the second step of this example. Some of the orbital labels are adapted by specifying Labels. In the remaining steps this example demonstrates how to obtain the deformation density with respect to the sum of fragments (CO molecule + bare Cu slab) densities.

Fragment key

Fragment (block-type)
Define a fragment. This key takes as argument the fragment file name (absolute path or path relative to the executing directory) and its contents are for each atom in the fragment two integers: atom number in the fragment versus atom number in this calculation. It has a subkey Labels so that you can assign meaningful names to the orbitals. You can define several fragments. Example
Fragment
  1 3 !  atom 1 of this fragment is assigned to third atom
  2 4 !  atom 2 of this fragment is assigned to fourth atom
  Labels
   Sigma
   Sigma*
   Pi_x
   Pi_y
   Pi_x*
   Pi_y*
  Subend
End

In this example the first four fragment orbitals will be labeled as stated in the body of this key. The remaining orbitals are labeled by the default labeling system (e.g. 1/FO/5, etc.). The labels are used in combination with options like Print Eigens and Print OrbPop. (See also Print OrbLabels). This key can be given once for each fragment.

Energy Decomposition Analysis Methods

In BAND there are two fragment-based energy decomposition methods available: the periodic energy decomposition analysis (PEDA)[56] and the periodic energy decomposition analysis combined with the natural orbitals of chemical valency method (PEDA-NOCV)[56].

Periodic Energy Decomposition Analysis (PEDA)

PEDA
PEDA

If present in combination with the fragment key blocks the decomposition of the interaction energy between fragments is invoked and the resulting energy terms (\(\Delta E_{int}\), \(\Delta E_{disp}\), \(\Delta E_{Pauli}\), \(\Delta E_{elstat}\), \(\Delta E_{orb}\)) presented in the output file. (See the example or the tutorial)

Periodic Energy Decomposition Analysis and natural orbitals of chemical valency (PEDA-NOCV)

PEDANOCV (block-type)
PEDANOCV
   {EigValThresh rval}
End
EigValThresh
(Default: 0.001) The threshold controls that for all NOCV deformation densities with NOCV eigenvalues larger than rval the energy contribution will be calculated and the respective pEDA-NOCV results will be printed in the output

If present in combination with the fragment key blocks and the PEDA the decomposition of the orbital relaxation term is performed. The binary result file will contain the information to plot NOCV Orbitals and NOCV deformation densities. (See the example or the tutorial)

General Remark: In case of the error message “Fragments cannot be assigned by a simple translation!”, BAND does only allow for fragments which can be transformed to the structure in the PEDA calculation by a simple translation. So, a rotation is not allowed. Furthermore, one has to keep in mind that BAND will use a centralized version of the coordinates with respect to the geometrical center. During this routine, the atoms of a not centralized structure can end up at one or the other side of the unit cell. Hence, the same error message will appear. - Here, the whole structure should be centralized with respect to the geometrical center of the problematic fragment!