Various issues

Understanding the logfile

In practice you will look often at the logfile to see whether the calculation is going fine. Here is a logfile for a single point calculation.

10:04:09   INIT
10:04:09  BAND development version  RunTime: Sep30-2014 10:04:09  Nodes: 1  Procs: 8
10:04:09  Specify title in input
10:04:09  using 2014 defaults convention
10:04:09  All basis functions smoothly confined at radius:  7.0
10:04:10   RADIAL
10:04:10   POINTS
10:04:11   CELLS
10:04:11   NUMGRD
10:04:11   ELSTAT
10:04:11   ATMFNC
10:04:11  CalcAtomicProperties
10:04:11   PREPAREBAS
10:04:11  ------ K ..   6
10:04:12   PREPAREHAM
10:04:12  ------ K ..   6
10:04:12   PREPAREFIT
10:04:13  start of SCF loop
10:04:13  initial density from psi
10:04:14  cyc=  0 err=0.00E+00 cpu=   1s ela=   2s
10:04:16  cyc=  1 err=7.83E-01 meth=m nvec= 1 mix=0.0750 cpu=   1s ela=   2s fit=5.02E-02
10:04:17  cyc=  2 err=7.14E-01 meth=d nvec= 2 mix=0.2000 cpu=   1s ela=   1s fit=2.12E-02
10:04:19  cyc=  3 err=9.39E-02 meth=d nvec= 3 mix=0.2000 cpu=   1s ela=   2s fit=2.72E-02
10:04:20  cyc=  4 err=2.82E-02 meth=d nvec= 3 mix=0.2200 cpu=   1s ela=   1s fit=2.92E-02
10:04:22  cyc=  5 err=4.48E-03 meth=d nvec= 3 mix=0.2420 cpu=   1s ela=   2s fit=2.92E-02
10:04:23  HALFWAY
10:04:23  cyc=  6 err=3.07E-03 meth=d nvec= 4 mix=0.2420 cpu=   1s ela=   1s fit=2.93E-02
10:04:25  cyc=  7 err=6.90E-04 meth=d nvec= 4 mix=0.2662 cpu=   1s ela=   1s fit=2.93E-02
10:04:26  cyc=  8 err=2.68E-04 meth=d nvec= 4 mix=0.2928 cpu=   1s ela=   2s fit=2.93E-02
10:04:28  cyc=  9 err=1.28E-04 meth=d nvec= 4 mix=0.3221 cpu=   1s ela=   1s fit=2.93E-02
10:04:29  cyc= 10 err=6.90E-05 meth=d nvec= 4 mix=0.3543 cpu=   1s ela=   1s fit=2.93E-02
10:04:31  cyc= 11 err=3.43E-06 meth=d nvec= 5 mix=0.3543 cpu=   1s ela=   1s fit=2.93E-02
10:04:32  cyc= 12 err=3.43E-06 meth=d nvec= 1 mix=1.0000 cpu=   1s ela=   1s fit=2.93E-02
10:04:32  ------ K ..   6
10:04:34  Max. cycle time CP:       1.379
10:04:34                  IO:       0.309
10:04:34  Mean cycle time CP:       1.459
10:04:34                  IO:       0.151
10:04:34                  EL:       1.636
10:04:34  final mix.par.            0.083
10:04:34  Approx. conv.rate:        0.000
10:04:34  FERMI ENERGY:          -0.2198 A.U.
10:04:34                         -5.9802 E.V
10:04:34  Band gap:               0.1394 A.U.
10:04:34                          3.7943 E.V
10:04:34   ENERGY
10:04:34  ENERGY OF FORMATION:   -1.3496 A.U.
10:04:34                        -36.7236 E.V.
10:04:34                       -846.8654 KCAL/MOL
10:04:34   CHARGE
10:04:34   HIRSH
10:04:34   CM5CHARGES
10:04:34   GRADIENTS
10:04:38   DOS
10:04:38  cannot use good scaling dos routines
10:04:38  storing all partial DOS
10:04:38  integrate over delta E
10:04:39   BZSTRUCT
10:04:39   PREPAREBAS
10:04:39  ------ K ..   6
10:04:39   PREPAREHAM
10:04:39  ------ K ..   6
10:04:41  copy T(V/VOC)
10:04:41  copy eigensystem
10:04:41  END

There are three different phases. The first phase is the preparation phase. The second phase is the SCF procedure. The third part is the properties phase. Particularly important are the SCF CONVERGENCE and NORMAL TERMINATION messages.

Let us take a closer look at a line during the SCF.

10:04:19  cyc=  3 err=9.39E-02 meth=d nvec= 3 mix=0.2000 cpu=   1s ela=   2s fit=2.72E-02

The meaning of cyc is the iteration number, so it is the third iteration. The self consistent error (err) is 9.4e-2. The method (meth) to guess the density for the next cycle is d, meaning DIIS, being a linear combination (nvec) of three vectors. The density is biased (mix) by 0.2 towards output densities. The SCF cycle took 1 second of cpu time (per core), and needed 2 seconds of real time. Finally the error of the density fitting was 2.7e-2.

Breaking the symmetry

In some cases you want to break the symmetry. An example of this is when you want to get the antiferromagnetic state of Fe. Another common example is when you want to apply geometry constraints on atoms.

The easiest way to do this is of course to disable all symmetry, see SYMMETRY%NOSYM, but this might make your calculation more expensive than is needed. A bit more elegant way is to define separate types for the equivalent atoms. Here follows an example input for antiferromagnetic iron

! The two iron atoms have different "types" to break the symmetry
  Fe.a   0.0    0.0    0.0
  Fe.b  -1.435 -1.435  1.435

   -1.435  1.435  1.435
    1.435 -1.435  1.435
    2.87   2.87  -2.87

   CRITERION 1.0e-4
   Degenerate default
   SpinFlip 2  ! Flip (startup) spin density at second atom

Another solution is to use the expert SYMMETRY keyword.

Labels for the basis functions

You see the labels for the basis functions in for instance the DOS section of the output. The labels are also used in combination with options like Print Eigens and Print OrbPop. (See also Print).

What do the labels look like? A normal atomic basis function, i.e. a numerical orbital or a Slater type orbital, gets a label like <atom number>/<element>/<orbital type>/<quantum numbers description>/<exp in sto>

Example with a Li and a H atom:


Core states will just get simple numbers as labels:


With the Fragment key you can give meaningful names to the fragment option, see Fragment%Labels and DosBas.

Reference and Startup Atoms

The formation energy of the crystal is calculated with respect to the reference atoms. BAND gives you the formation energy with respect to the spherically symmetric spin-restricted LDA atoms. If you want the program to do the spin-unrestricted calculation for the atoms you can give key Unrestricted the extra option Reference. We do not recommend this as it would give you the false (except in special cases) feeling that you’ve applied the right atomic correction energy so as to obtain the ‘true’ bonding energy with respect to isolated atoms. The true atomic correction energy is the difference in energy between the used artificial object, i.e. the spherically symmetric, spin-restricted atom with possibly fractional occupation numbers, and the appropriate multiplet state. The spin-unrestricted reference atom would still be spherically symmetric, with possibly fractional occupations: it would only have the probably correct (Hund’s rule) net spin polarization.

The startup density is normally the sum of the restricted atoms. In case you do an unrestricted calculation you may want to get the sum of the unrestricted atoms as startup density by giving key Unrestricted the extra option StartUp. This does not always provide a better startup density since all atoms will have their net-spins pointing up. If a frozen core is used this option can sometimes lead to a negative valence density, because the frozen core is derived from the restricted atom. The program will stop in such a case.

No matter what reference or startup atoms you use, core orbitals and NOs originate always from the restricted free-atom calculation, because we don’t want a spatial dependence of the basis functions on spin.

Numerical Atoms, Basis functions, and Fit functions

The program starts with a calculation of the free atoms, assuming spherical symmetry. The formation energy is calculated w.r.t such atoms. You have to specify the configuration (i.e. which orbitals are occupied) in the Dirac subkey of the block key AtomType, and you can for instance use the experimental configuration. Keep in mind, however, that this is not necessarily the optimal configuration for your density functional. For instance, Ni has experimentally two electrons in the 4s shell, but with LDA you will find that it is energetically more profitable to move one electron from the 4s to the 3d. The configuration of the reference atoms does not (i.e. should not) affect the final (SCF) density.

Besides the available basis sets in $ADFHOME/atomicdata/band, you could in principle use the basis functions from the database of the molecular ADF program (see the documentation of ADF for how this database is organized). The functions you will find there are STOs, which is not optimal since BAND offers you the option to use NOs from the numerical atom. The most efficient approach is to use the NOs and remove from the ADF basis set those STOs that are already well described by the NOs.

As an example we will construct a basis for the Ni atom with orbitals frozen up to the 2p shell, derived from a triple-zeta ADF basis. In the Dirac subkey of the block key AtomType you specify that the NOs up to 2p should be kept frozen and that the 3d and 4s NOs be included in the valence basis. Copy from the ADF database all 3d, 4s and the polarization functions into the BasisFunctions subkey of the block key AtomType and remove the middle STOs of the 3d and the 4s.

Usually it is already quite adequate for a good-quality basis to augment each NO with one STO. You could then take a double zeta ADF basis and remove one of the 3d and one of the 4s STOs. We often find that such a basis, with one STO added per NO, has a quality that is comparable to triple zeta STO sets. We strongly recommend that you use combined NO/STO bases. Of course, you may want to verify the quality of the basis set by calculations on a few simple systems.

You can copy the fit functions from the ADF database into the FitFunctions subkey of the block key AtomType. As a matter of experience (and justified by a somewhat different handling of fit functions between the two programs), BAND is in most cases (we have not yet seen an exception) less sensitive to the quality of the fit set than ADF is.