In this chapter, all necessary information about the properties of xTB will be given. Description of how to acquire different output information will be provided. Calculation of FOD will be described.

General printout

First the orbital energies and occupation are printed, where the highest occupied molecular orbital (HOMO) and the lowest unoccupied molecular orbital (LUMO) are marked. The HOMO-LUMO gap and the Fermi-level are summed up.

      |                Property Printout                |

* Orbital Energies and Occupations

     #    Occupation            Energy/Eh            Energy/eV
     1        2.0000           -0.6801050             -18.5066
     2        2.0000           -0.5683264             -15.4649
     3        2.0000           -0.5108650             -13.9013
     4        2.0000           -0.4463919             -12.1469 (HOMO)
     5                          0.0826818               2.2499 (LUMO)
     6                          0.2518567               6.8534
              HL-Gap            0.5290737 Eh           14.3968 eV
         Fermi-level           -0.1818551 Eh           -4.9485 eV

The information provided by the printout can be modified and extended. This can be done either by using the option-flags when calling the program (-c / –check), or by editing the input file (Detailed Input). The kind of default information given is determined by the GFN-xTB version used. The default values called by the program are given:


requests printout of Mulliken population analysis


requests printout of molden file


requests printout of dipole moments


requests Wiberg bond order printout


Default settings for GFN1-xTB first prints the Mulliken and CM5 charges. n(x) denotes the population partioned to the x = s/p/d shells:

Mulliken/CM5 charges        n(s)   n(p)   n(d)
   1 O   0.67569  0.33312   1.682  4.994  0.000
   2 H  -0.33784 -0.16656   0.662  0.000  0.000
   3 H  -0.33784 -0.16656   0.662  0.000  0.000

Wiberg bond orders describe the partial bond orders and their disposition onto the atoms:

Wiberg/Mayer (AO) data.
largest (>0.10) Wiberg bond orders for each atom
         total WBO            WBO to atom ...
   1  O   1.782        H    2 0.891    H    3 0.891
   2  H   0.892        O    1 0.891
   3  H   0.892        O    1 0.891

The molecular dipole moment and its cartesian components calculated from the electron density. The components are given in atomic units while the total dipole moment is given in Debye, to convert from atomic units to Debye multiply by 2.5417 D/au.

dipole moment from electron density (au)
     X       Y       Z
   0.8659   0.0000   0.6123  total (Debye):    2.696


Default settings for GFN2-xTB first prints populations and coefficients. From left to right, these are the atomic number Z, Coordination number CN, Atomic partial charge q, Dispersion coefficient C6, Polarizability alpha:

#   Z        covCN         q      C6AA      α(0)
1   8 O      1.613    -0.568    24.435     6.672
2   1 H      0.806     0.284     0.771     1.379
3   1 H      0.806     0.284     0.771     1.379

The C6, C8 and alpha coefficients are denoted explicitly in a.u.:

Mol. C6AA /au·bohr⁶  :         44.553640
Mol. C8AA /au·bohr⁸  :        796.459844
Mol. α(0) /au        :          9.429351

Wiberg bond orders:

Wiberg/Mayer (AO) data.
 largest (>0.10) Wiberg bond orders for each atom
          total WBO             WBO to atom ...
     1  O   1.839        H    3 0.919    H    2 0.919
     2  H   0.919        O    1 0.919
     3  H   0.919        O    1 0.919

Molecular dipole and quadropole moments. The contributions are seperated into their respective cartesian dimensions. ‘Full’ represents the corresponding contributions of the molecular dipole or quadropole moments.

molecular dipole:
                x           y           z       tot (Debye)
 q only:        0.481       0.000       0.340
   full:        0.696       0.000       0.492       2.167

molecular quadrupole (traceless):
                xx          xy          yy          xz          yz          zz
 q only:        0.305       0.000      -0.916      -0.432       0.000       0.610
  q+dip:        0.390       0.000      -1.177      -0.563       0.000       0.787
   full:        0.495      -0.000      -1.436      -0.632      -0.000       0.942

All is summed up in the end in both GFN-xTB versions:

| TOTAL ENERGY               -5.070322476938 Eh   |
| GRADIENT NORM               0.019484395925 Eh/α |
| HOMO-LUMO GAP              14.652302902752 eV   |

Density Properties

Cube Files

The xtb program is able to calculate the density, spin-density and the fractional occupation number weighted density (FOD). For these caclualtions, the program first creates a proper cube grid. The corresponding file is created in your working directory and marked as .cub file. It provides density and step size informations. An overview is already given in the printout:

 cube file module (SG, 7/16)
 cube_pthr     :   0.050
 cube_step     :   0.400
 non-zero P (%):  76.190   nmat:      16
 Grid Boundaries (x y z) :
   4.69257109135830        3.00000000000000        4.79524030780751
  -3.00000000000000       -3.00000000000000       -3.59840693802375
 Total # of points        6720
 writing density.cub
cpu  time for cube    0.01 s
wall time for cube    0.01 s

Here, various information are provided, like the density matrix neglect threshold cube_pthr and the grid step size cube_step (in Bohr). These values can be changed in the input (xcontrol) file (Detailed Input).

For visualization, programs like chimera can be used, for which the .cub file can be loaded as volume data.

Density and Spin-Density

To calculate the density or the spin denisty, the input (xcontrol) file has to be manipulated. Here, the bools density='bool' or respectively spin density='bool' have to be set to 'true'. This will create a .cub cube file, where the corresponding information is gathered.

For visualization, programs like chimera can be used, for which the .cub file can be loaded as volume data.

Fractional Occupation Density (FOD) calculation

The fractional occupation density analysis (FOD) is a diagnostic scheme that displays the static electron correlation localized on a molecule. The density is hereby obtained by performing a computationally cheap Finite-Temperature DFT computation. The electrons are therefore self-consistenly smeared over the molecular orbitals according to a Fermi-Dirac distribution. For a more detailed insight and the theory behind the FOD analytics, please see the original publication. To use FOD for selecting active spaces in CASSCF calculations, refer to our later work on this topic.

To access the FOD analysis, simply use the flag --fod or set fod='true' in the input (xcontrol) file. This will create a fod.cub file and calculate the FOD on the cube grid. Be sure to set the electronic temperature to a higher value, e.g. 5000 K (--etemp 5000). The FOD population will be displayed in the printout section as:

NFOD :     0.6698

Loewdin FODpop     n(s)   n(p)   n(d)
   1 C   0.1924   0.018  0.175  0.000
   2 C   0.0673   0.003  0.064  0.000
   3 C   0.0673   0.003  0.064  0.000
   4 C   0.1924   0.018  0.175  0.000
   5 C   0.0673   0.003  0.064  0.000
   6 C   0.0673   0.003  0.064  0.000
   7 H   0.0039   0.004  0.000  0.000
   8 H   0.0039   0.004  0.000  0.000
   9 H   0.0039   0.004  0.000  0.000
  10 H   0.0039   0.004  0.000  0.000

The NFOD number indicates the static electon correlation

If you do not want to write a full fod.cub file, but still want to analyse the FOD population at least qualitatively, change the fod population ='bool' in the input (xcontrol) file to true. This will display the fractional loewdin population of the system (see above) and only writes the fod file, where this information is stored.

Redirecting Property Printout

For large systems the property printout can become quite lenghty and will clutter maybe thousands of lines in the standard output. One possibility is to rigourously deactivate all printouts using the $write instruction in the input file, but if one might need this information later it is hard to recover, as an alternative the property printout can be redirected. Simply add

   output file=properties.out

to your input and specify the name for the redirection. The calculations of the properties are performed as usual but the standard output will show something like

Property printout bound to 'properties.out'

instead of the header, the usual printout can be found in properties.out. In the file the command line call and current time is saved additionally to ensure that the printout is reproducable.

Machine Readable Data Dump

xtb is able to dump parts of the calculated data in a machine-readable way using the json-format. To activate the dump into a json file use the input


which will write a xtbout.json file containing partial charges, cumulative atomic multipole moments, occupation number and orbtial energies for single point calculations or frequencies, reduced masses and IR intensities from hessian calculations.