XTB(1)

okay bestie πŸ’– this is the manual for xtb(1) β€” the program that performs semiempirical quantummechanical calculations, for version 6.0 and newer. let's get into it! 🫢


✨ NAME ✨

xtb β€” performs semiempirical quantummechanical calculations, for version 6.0 and newer. πŸ’…


🌸 SYNOPSIS 🌸

xtb [OPTIONS] FILE [OPTIONS]

πŸ’– DESCRIPTION πŸ’–

okay so bestie, the xtb(1) program does semiempirical quantummechanical calculations. The underlying effective Hamiltonian is derived from density functional tight binding (DFTB). This implementation of the xTB Hamiltonian is currently compatible with the zeroth, first and second level parametrisation for geometries, frequencies and non-covalent interactions (GFN) as well as with the ionisation potential and electron affinity (IPEA) parametrisation of the GFN1 Hamiltonian. The generalized born (GB) model with solvent accessable surface area (SASA) is also available in this version. Ground state calculations for the simplified Tamm-Dancoff approximation (sTDA) with the vTB model are currently not implemented. 🫢

πŸ¦‹ GEOMETRY INPUT πŸ¦‹

The wide variety of input formats for the geometry are supported by using the mctc-lib. Supported formats are:

  • Xmol/xyz files (xyz, log)
  • Turbomole’s coord, riper’s periodic coord (tmol, coord)
  • DFTB+ genFormat geometry inputs as cluster, supercell or fractional (gen)
  • VASP’s POSCAR/CONTCAR input files (vasp, poscar, contcar)
  • Protein Database files, only single files (pdb)
  • Connection table files, molfile (mol) and structure data format (sdf)
  • Gaussian’s external program input (ein)
  • JSON input with qcschema_molecule or qcschema_input structure (json)
  • FHI-AIMS' input files (geometry.in)
  • Q-Chem molecule block inputs (qchem)

For a full list visit: https://grimme-lab.github.io/mctc-lib/page/index.html

xtb(1) reads additionally .CHRG and .UHF files if present.


🌈 INPUT SOURCES 🌈

xtb(1) gets its information from different sources. The one with highest priority is the commandline with all allowed flags and arguments described below. The secondary source is the xcontrol(7) system, which can in principle use as many input files as wished. The xcontrol(7) system is the successor of the set-block as present in version 5.8.2 and earlier. This implementation of xtb(1) reads the xcontrol(7) from two of three possible sources, the local xcontrol file or the FILE used to specify the geometry and the global configuration file found in the XTBPATH.


✨ OPTIONS ✨

  • -c, --chrg INT β€” specify molecular charge as INT, overrides .CHRG file and xcontrol option. πŸ’–
  • -c, --chrg INT:INT β€” specify charges for inner region:outer region for oniom calculation, overrides .CHRG file and xcontrol option. πŸŒ€
  • -u, --uhf INT β€” specify number of unpaired electrons as INT, overrides .UHF file and xcontrol option. πŸ‘‘
  • --gfn INT β€” specify parametrisation of GFN-xTB (default = 2). ✨
  • --gfnff, --gff β€” specify parametrisation of GFN-FF. 🌸
  • --tblite β€” use tblite library as implementation for xTB. πŸ¦‹
  • --ceh* β€” calculate CEH (Charge-Extended HΓΌckel model) charges and write them to ceh.charges file. πŸ’…
  • --ptb β€” performs single-point calculation with the density tight-binding method PTB. Provides electronic structure and properties, such as, e.g., atomic charges, bond orders, and dipole moments, but does not provide any energy-related properties, such as, e.g., total energy, nuclear gradients, or vibrational frequencies. 😭
  • --spinpol β€” enables spin-polarization for xTB methods (tblite required). πŸ”₯
  • --oniom METHOD LIST β€” use subtractive embedding via ONIOM method. METHOD is given as high:low where high can be orca, turbomole, gfn2, gfn1, or gfnff and low can be gfn2, gfn1, or gfnff. The inner region is given as comma-separated indices directly in the commandline or in a file with each index on a separate line. 🧚
  • --etemp, --temp REAL β€” electronic temperature for SCC (default = 300K). 🌑️
  • --esp β€” calculate electrostatic potential on VdW-grid. ⚑
  • --stm β€” calculate STM image. πŸ–ΌοΈ
  • -a, --acc REAL β€” accuracy for SCC calculation, lower is better (default = 1.0). 🎯
  • --iterations, --maxiterations INT β€” maximum number of SCC iterations per single point calculation (default = 250). πŸ”
  • --vparam FILE β€” Parameter file for xTB calculation. πŸ“
  • --alpb SOLVENT [STATE] β€” analytical linearized Poisson-Boltzmann (ALPB) model, available solvents are acetone, acetonitrile, aniline, benzaldehyde, benzene, ch2cl2, chcl3, cs2, dioxane, dmf, dmso, ether, ethylacetate, furane, hexandecane, hexane, methanol, nitromethane, octanol, woctanol, phenol, toluene, thf, water. The solvent input is not case-sensitive. The Gsolv reference state can be chosen as reference, bar1M, or gsolv (default). 🌊
  • -g, --gbsa SOLVENT [STATE] β€” generalized born (GB) model with solvent accessable surface (SASA) model, available solvents are acetone, acetonitrile, benzene (only GFN1-xTB), CH2Cl2, CHCl3, CS2, DMF (only GFN2-xTB), DMSO, ether, H2O, methanol, n-hexane (only GFN2-xTB), THF and toluene. The solvent input is not case-sensitive. The Gsolv reference state can be chosen as reference, bar1M, or gsolv (default). πŸ’§
  • --cosmo SOLVENT/EPSILON β€” domain decomposition conductor-like screening model (ddCOSMO) available solvents are all solvents that are available for alpb. Additionally, the dielectric constant can be set manually or an ideal conductor can be chosen by setting epsilon to infinity. 🌌
  • --tmcosmo SOLVENT/EPSILON β€” same as --cosmo, but uses TM convention for writing the .cosmo files. ✨
  • --cpcmx SOLVENT β€” extended conduction-like polarizable continuum solvation model (CPCM-X), available solvents are all solvents included in the Minnesota Solvation Database. πŸ—„οΈ
  • --cma β€” shifts molecule to center of mass and transforms cartesian coordinates into the coordinate system of the principle axis (not affected by β€˜isotopes’-file). βš–οΈ
  • --pop β€” requests printout of Mulliken population analysis. πŸ“Š
  • --molden β€” requests printout of molden file. 🧬
  • --alpha β€” requests the extension of electrical properties to static molecular dipole polarizabilities. ⚑
  • --raman β€” requests Raman spectrum calculation via combination of GFN2-xTB and PTB using the temperature REAL (default 298.15 K) and the wavelength of the incident laser which must be given in nm REAL (default 514 nm). 🌈
  • --dipole β€” requests dipole printout. 🧲
  • --wbo β€” requests Wiberg bond order printout. πŸ”—
  • --lmo β€” requests localization of orbitals. πŸŒ€
  • --fod β€” requests FOD calculation. πŸ’«

πŸŽ€ RUNTYPS πŸŽ€

Note πŸ“ You can only select one runtyp, only the first runtyp will be used from the program, use implemented composite runtyps to perform several operations at once.
  • --scc, --sp β€” performs a single point calculation. 🎯
  • --vip β€” performs calculation of ionisation potential. This needs the .param_ipea.xtb parameters and a GFN1 Hamiltonian. ⚑
  • --vea β€” performs calculation of electron affinity. This needs the .param_ipea.xtb parameters and a GFN1 Hamiltonian. 🌟
  • --vipea β€” performs calculation of electron affinity and ionisation potential. This needs the .param_ipea.xtb parameters and a GFN1 Hamiltonian. πŸ’₯
  • --vfukui β€” performs calculation of Fukui indices. πŸ§ͺ
  • --vomega β€” performs calculation of electrophilicity index. This needs the .param_ipea.xtb parameters and a GFN1 Hamiltonian. πŸŒ€
  • --grad β€” performs a gradient calculation. πŸ“‰
  • -o, --opt [LEVEL] β€” call ancopt(3) to perform a geometry optimization, levels from crude, sloppy, loose, normal (default), tight, verytight to extreme can be chosen. πŸ”οΈ
  • --hess β€” perform a numerical hessian calculation on input geometry. 🎢
  • --ohess [LEVEL] β€” perform a numerical hessian calculation on an ancopt(3) optimized geometry. 🎡
  • --bhess [LEVEL] β€” perform a biased numerical hessian calculation on an ancopt(3) optimized geometry. 🎼
  • --md β€” molecular dynamics simulation on start geometry. 🎬
  • --metadyn [int] β€” meta dynamics simulation on start geometry, saving int snapshots of the trajectory to bias the simulation. πŸŒ€
  • --omd β€” molecular dynamics simulation on ancopt(3) optimized geometry, a loose optimization level will be chosen. πŸƒβ€β™€οΈ
  • --metaopt [LEVEL] β€” call ancopt(3) to perform a geometry optimization, then try to find other minimas by meta dynamics. πŸ”
  • --path [FILE] β€” use meta dynamics to calculate a path from the input geometry to the given product structure. πŸ›€οΈ
  • --reactor β€” experimental. πŸ§ͺ
  • --modef INT β€” modefollowing algorithm. INT specifies the mode that should be used for the modefollowing. 🎚️
  • --dipro [REAL] β€” the dimer projection method for the calculation of electronic coupling integrals between two fragments. REAL sets the threshold for nearly degenerate orbitals to still be considered (default = 0.1 eV). 🧲

🌟 GENERAL 🌟

  • -I, --input FILE β€” use FILE as input source for xcontrol(7) instructions. πŸ“„
  • --namespace STRING β€” give this xtb(1) run a namespace. All files, even temporary ones, will be named according to STRING (might not work everywhere). 🏷️
  • --[no]copy β€” copies the xcontrol file at startup (default = true). πŸ“‹
  • --[no]restart β€” restarts calculation from xtbrestart (default = true). πŸ”„
  • -P, --parallel INT β€” number of parallel processes. ⚑
  • --define β€” performs automatic check of input and terminate. βœ…
  • --json β€” write xtbout.json file. πŸ“
  • --citation β€” print citation and terminate. πŸ“š
  • --license β€” print license and terminate. πŸ“œ
  • -v, --verbose β€” be more verbose (not supported in every unit). πŸ—£οΈ
  • -s, --silent β€” clutter the screen less (not supported in every unit). 🀫
  • --ceasefiles β€” reduce the amount of output and files written (e.g. xtbtopo.mol). πŸ—‚οΈ
  • --strict β€” turns all warnings into hard errors. ⚠️
  • -h, --help β€” show help page. πŸ†˜
  • --cut β€” create inner region for oniom calculation without performing any calcultion. βœ‚οΈ

🌸 ENVIRONMENT VARIABLES 🌸

okay so xtb(1) goes looking for its parameter files through a path-like variable, and bestie, you are the one who has to provide it β€” it's called XTBPATH, and you write it in exactly the same syntax as the system PATH variable. no cap.

  • if XTBPATH isn't set, xtb(1) will try to generate it from the XTBHOME variable β€” which is deprecated, fyi πŸ’€
  • and if XTBHOME isn't set either, it gets generated from the HOME variable.

so technically?? storing your parameter files in the user's home directory is sufficient, but it might lead to some cluttering. like, it works, but the vibe is messy 🫠

since the XTBHOME variable is deprecated with version 6.0 and newer, xtb(1) will issue a warning if XTBHOME is not part of the XTBPATH, because XTBHOME is simply not used in production runs. periodt.

πŸŽ€ LOCAL FILES πŸŽ€

xtb(1) accesses a whole bunch of local files in the current working directory, and it also writes some output into specific files. lowkey important: not all input and output files allow the --namespace option β€” so keep that in mind, queen πŸ‘‘

✨ INPUT ✨

  • .CHRG β€” molecular charge as int
  • .UHF β€” Number of unpaired electrons as int
  • mdrestart β€” contains restart information for MD, --namespace compatible
  • pcharge β€” point charge input, format is real real real real [int]. The first real is used as partial charge, the next three entries are the cartesian coordinates and the last is an optional atom type. Note that the point charge input is not affected by a CMA transformation. Also parallel Hessian calculations will fail due to I/O errors when using point charge embedding 😭
  • xcontrol β€” default input file in --copy mode, see xcontrol(7) for details, set by --input
  • xtbrestart β€” contains restart information for SCC, --namespace compatible

πŸ’– OUTPUT πŸ’–

  • charges β€” contains Mulliken partial charges calculated in SCC
  • ceh.charges β€” contains CEH (Charge-Extended HΓΌckel) charges
  • wbo β€” contains Wiberg bond order calculated in SCC, --namespace compatible
  • energy β€” total energy in Turbomole format
  • gradient β€” geometry, energy and gradient in Turbomole format
  • hessian β€” contains the (not mass weighted) cartesian Hessian, --namespace compatible
  • xtbtopo.mol β€” topology information written in molfile format
  • xtbopt.xyz, xtbopt.coord β€” optimized geometry in the same format as the input geometry
  • xtbhess.coord β€” distorted geometry if imaginary frequency was found
  • xtbopt.log β€” contains all structures obtained in the geometry optimization with the respective energy in the comment line in a XMOL formatted trajectory
  • xtbsiman.log, xtb.trj.int β€” trajectories from MD
  • scoord.int β€” coordinate dump of MD
  • fod.cub β€” FOD on a cube-type grid
  • spindensity.cub β€” spindensity on a cube-type grid
  • density.cub β€” density on a cube-type grid
  • molden.input β€” MOs and occupation for visualisation and sTDA-xTB calculations
  • pcgrad β€” gradient of the point charges
  • xtb_esp.cosmo β€” ESP fake cosmo output
  • xtb_esp_profile.dat β€” ESP histogramm data
  • vibspectrum β€” Turbomole style vibrational spectrum data group
  • g98.out, g98l.out, g98_canmode.out, g98_locmode.out β€” g98 fake output with normal or local modes
  • .tmpxtbmodef β€” input for mode following
  • coordprot.0 β€” protonated species
  • xtblmoinfo β€” centers of the localized molecular orbitals
  • lmocent.coord β€” centers of the localized molecular orbitals
  • tmpxx β€” number of recommended modes for mode following
  • xtb_normalmodes, xtb_localmodes β€” binary dump for mode following

πŸ¦‹ TOUCH πŸ¦‹

(these are the lil' marker files that get created, iykyk)

  • xtbmdok β€” generated by successful MD
  • .xtbok β€” generated after each successful xtb(1) run
  • .sccnotconverged β€” generated after failed SCC with printlevel=2

πŸ‘‘ WARNINGS πŸ‘‘

okay bestie, listen up, because xtb(1) can generate two types of warnings and you should NOT ignore them πŸ’…

The first warning section is printed immediately after the normal banner at startup, summing up the evaluation of all input sources (commandline, xcontrol, xtbrc). To check these warnings exclusively before running an expensive calculation, an input check is implemented via the --define flag. Please, study these warnings carefully! fr fr.

After xtb(1) has evaluated all the input sources, it immediately enters production mode. Severe errors will lead to an abnormal termination, which is signalled by the printout to STDERR and a non-zero return value (usually 128) πŸ’€

All non-fatal errors are summerized at the end of the calculation in one block, right before the timing analysis.

To aid the user in fixing the problems generating these warnings, here's a brief summary of each warning with its respective string representation in the output:

  • ANCopt failed to converge the optimization β€” geometry optimization has failed to converge in the given number of optimization cycles. This is not neccessary a problem if only a small number of cycles was given for the optimization on purpose. All further calculations are done on the last geometry of the optimization.
  • Hessian on incompletely optimized geometry! β€” This warning will be issued twice: once before the Hessian calculation starts (it would otherwise take some time before this warning could be detected) and in the warning block in the end. The warning will be generated if the gradient norm on the given geometry is higher than a certain threshold.

🌈 EXIT STATUS 🌈

  • 0 β€” normal termination of xtb(1) ✨
  • 128 β€” Failure (termination via error stop generates 128 as return value)

πŸ› BUGS πŸ›

please report all bugs with an example input, --copy dump of internal settings and the used geometry, as well as the --verbose output to xtb@thch.uni-bonn.de 🫢


⭐ RESOURCES ⭐

Main web site: http://grimme.uni-bonn.de/software/xtb


πŸ’œ COPYING πŸ’œ

Copyright Β© 2017-2023 Stefan Grimme

xtb is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

xtb is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with xtb. If not, see https://www.gnu.org/licenses/.


aaaaand that's the whole page, bestie!! πŸŽ€ this beauty is dated 09/16/2025 and belongs to XTB(1) β€” go forth and do iconic computational chemistry, mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from