XCONTROL(7)
π NAME π
okay so XCONTROL(7) is literally the instruction file for xtb(1) version 6.0 and newer. That's the whole vibe. π
β¨ SYNOPSIS β¨
xtb -I,--input xcontrol FILE
π¦ DESCRIPTION π¦
bestie, the xcontrol(7) instruction set is the glow-up successor of the set-block that lived in xtb(1) version 5.8 and earlier. The instruction set is similar to the data groups in Turbomole or the detailed input structure of ORCA. Every instruction starts with a flag ($) and ends when the next flag shows up. An instruction is only valid if the flag is in the first column, and the instruction name is the rest of the register. A valid instruction opens its blocks with its own options, and every option is a key-value pair. No cap.
There are two kind of instructions: logical and groups. Logical instructions toggle a specific operation and cannot contain a option block, while group instructions only open the option block without any further actions. Periodt.
A special instruction is the end instruction, which is optional, because EOF is a valid alternative in this implementation. iconic.
Also lowkey important: xtb(1) is able to produce xcontrol(7) instructions by itself. You can tell xtb(1) by --copy to save your original instructions. Note that this implementation will strip all comments while copying (print what you see, not what you read), to aid debugging. fr fr.
$fit π
logical instruction to set xtb(1) in mfit(1) compatibility mode and prints out further informations. This is a pure development feature and therefore should be absent in every productive run.
bestie, βpure development featureβ means do not bring this to a productive run. π
$samerand π²
logical instruction to initialize the random number generator with the same sequence.
$chrg int πΈ
set the charge of the molecule.
$spin int π
set Nalpha-Nbeta of the molecule.
$cma π§
shifts molecule to center of mass and transforms cartesian coordinates into the coordinate system of the principle axis (not affected by βisotopesβ-file).
$constrain βοΈ
Note π This data group refers to constraining the gradient by appling potentials. Exact fixing is done with the fix data group.
force constant=realβ force constant for constraining potential.all bonds=boolβ generate potentials to constrain the length of all bonds.all angles=boolβ generate potentials to constrain all bond angles.all torsions=boolβ generate potentials to constrain the angles of all torsions.elements: symbol|number,...β constrains all elements of the same type, the atom type is determined by the ordinal number or the element symbol.atoms: list,...β constrains the atom positions of all atoms in list. Needs at least two atoms since potential is applied on all atoms in list.distance: i,j,auto|realβ constrain the distance between atom i and j to the actual length (auto) or the value real, which has to be given in Γ ngstrΓΆm.angle: i,j,k,auto|realβ constrain the angle between atom i, j and k to the actual length (auto) or the value real, which has to be given in degrees.dihedral: i,j,k,l,auto|realβ constrain the angle between atom i, j, k and l to the actual length (auto) or the value real, which has to be given in degrees.center: real,intβ implemented and documented as in xtb 5.8, might use fragment1 information from split instruction.cma[ interface]: auto|realβ implemented and documented as in xtb 5.8, might use fragment1/fragment2 information from split instruction.z: realβ implemented and documented as in xtb 5.8, might use fragment1 information from split instruction.
$cube π§
step=realβ grid spacing for cube file.pthr=realβ density matrix neglect threshold.boff=realβ grid boundary offset (default: 3.0).cal=intβ =1 switches on cube-file output (=0 means writing molden file instead, -1=do nothing).
$embedding π«
at=intβ default atom type for point charges.es=boolβ use isotropic electrostatic with point charges.input=fileβ point charges are read from file (default: pcharge), format is:q x y z [iat|gam], where q is the partial charges, xyz are the position of the partial charge in bohr and iat is the ordinal number of the atom. The corresponding gam-Parameter of the element will be used in the potential. Alternatively the gam value can be given directly as fifth argument, to simulate point charges provide a huge value for gam.gradient='fileβ gradient of the point charges is written to file (default: pcgrad).
$external π
mopac bin=STRINGβ path tomopac(1)binary, will search PATH variable for binary if not set.mopac input=STRINGβ input string used formopac(1)calculation, make sure it generates an aux file forxtb(1)to read in.mopac file=STRINGβ name of themopac(1)input file.orca bin=STRINGβ path toorca(1)binary, will search PATH variable for binary if not set.orca input line=STRINGβ input string used fororca(1)calculation, will use engrad runtyp by default.orca input file=STRINGβ name of theorca(1)input file.turbodir=STRINGβ path to your Turbomole directory (usually found in TURBODIR or TURBOIMG variable).
$fix π
Note π the fix group refers to exact fixing. For geometry optimizations the gradient is set to zero, while for Hessians no displacements are calculated. Constraining with external potentials is done by the constrain data group.
elements: symbol|number,...β fixes all elements of the same type, the atom type is determined by the ordinal number or the element symbol. This is automatically deactivated for molecular dynamics since it leads to instabilities.atoms: list,...β fixes all atoms in list by setting the gradient to zero. This is automatically deactivated for molecular dynamics since it leads to instabilities.freeze frequency=realβ diagonal element used for freezing atoms in numerical Hessian calculation.freeze: list,...β freezes all atoms in list for hessian calculation.shake: i,j,...β use SHAKE to constrain the atompair ij in molecular dynamics.
$gbsa π§
solvent=stringβ solvent for the generalized born (GB) model with solvent accessable surface area (SASA), requires.param_gbsa.solventinXTBPATH. Does not activate GBSA (use commandline).ion_st=realβ ion strength for salt screening in GBSA.ion_rad=realβ ion radius for salt screening in GBSA.grid=levelβ changes the grid used for the surface accessable surface area (normal, tight, vtight, extreme are available).
$gfn βοΈ
method=intβ version of the GFN Hamiltonian.dispscale=realβ Scale dispersion energy of GFN-FF.
$hess πΉ
sccacc=realβ SCC accuracy level in Hessian runs.step=realβ Cartesian displacement increment for numerical Hessian.scale=realβ Scaling factor for the hessian elements (default: 1.0).element mass: int,real,...β set mass of elements int to real.isotope: int,real,... (6.1 only)β set mass of atom number int to real.modify mass: int,real,... (6.1 only)β set mass of atom number int to real.scale mass: int,real,... (6.1 only)β scale mass of atom number int by real.
$metadyn (6.1 only) π
save=intβ maximal number of structures for rmsd criteria.kpush=real,...β scaling factor for rmsd criteria can be positive and negative.modify factor=int,real,...β replace the factor int with real.scale factor=int,real,...β scales the factor int with real.alp=realβ width of the Gaussian potential used in the rmsd criteria.coord=fileβ external structures to initialize the rmsd criteria (xmol format required).atoms: list,...β atoms to include in rmsd calculation, if not present all atoms are taken into account.rmsd: real,...β target rmsd for biased hessian runs in Γ ngstrΓΆm.bias input=fileβ read static bias from file, requires xyz format with factor and width of the potential in the comment line.bias atoms: list,...β atoms to include in static rmsd calculation, if not present all atoms are taken into account.bias elements: id,...β elements to include in static rmsd calculation, if not present all atoms are taken into account. Elements can be referenced by their element symbol or their atomic number.
$md π₯
temp=realβ MD thermostat/GBSA temperature.time=realβ MD run time in ps.dump=realβ dump structure in every dump fs.sdump=realβ dump structure asscoord.<num>every sdump fs.velo=intβ set to 1 if dumps (trj file) should contain velocities.nvt=intβ use thermostat (=1, =0 for NVE).skip=intβ skip interval in-mdav,-mdopt.step=realβ MD time step in fs (automatically determined if < 0), could be 4-5 fs withshake =2,md_hmass=4.hmass=intβ increase hydrogen mass to this value in amu (at const. tot. mass) allowing large time steps (=0 off).shake=intβ shake on (=0: off which is default) for X-H bonds only (=1),sccacc=realβ SCC accuracy level in MD. Every 10th step the SCC is properly converged atsccconv=1.0.sccmdshould be < 5 in critical cases, effects may show up as bad thermostating.forcewrrestart=logicalβ forces the writing of a restart file at each dump step.
$modef πΆ
n=intβ of points along normal mode path scan.step=realβ step lengths for scan (should be around 1 because its adjusted internally to mode mass and FC).updat=realβ update search mode with a fraction of the displacement at every step (0.0 means no update, 0.1-0.2 is a good choice).local=intβ use canonical normal modes (=0) or Pipek-Mezey localized ones (=1).vthr=realβ threshold up to which frequency modes are used for mode based conformer search (def. is 300).prj=intβ number of second mode which should be projected out in mode following (normally = 7 ie the TS mode which is fixed then).mode=intβ can set by--modefvia cmdline.
$oniom π§©
inner logs=boolβ to print optimization log files for model region geometry (high.inner_region.logandlow.inner_region.log).derived k=boolβ to calculate prefactor k and create jacobian dynamically (see more ).ignore topo=boolβ to bypass topology check when breaking bonds.outer=boolβ to saturate outer region.silent=boolβ to hide the execution runs of external software.
π
$opt π
okay bestie this is THE glow-up group, the one where you tell xtb how to actually hunt down your minimum instead of just vibing at a random geometry. tons of knobs, all of them matter, let's go β¨
engine=methodβ which optimizer is driving the bus.methodcan berffor ANCopt (that's the default),lbfgsfor L-ANCopt, orinertialfor FIRE. pick your fighter π₯output=fileβ redirects the output of the optimization intofileinstead of your terminal.logfile='fileβ writes the optimization log tofile. default isxtbopt.logπoptlevel=levelβ convergence thresholds forancopt(3). the whole ladder:crude=-3,sloppy=-2,loose=-1,normal=0,tight=1,verytight=2,extreme=3. yes there are seven of them, she's thorough πmicrocycle=intβ how many optimization cycles happen before fresh ANCs get made. default is25.maxcycle=intβ total number of opt. cycles.0means it's automatically determined (i.e. let her cook π©βπ³).hlow=realβ lowest force constant in ANC generation. it should be> 0.005, no cap.maxdispl=realβ maximum coordinate displacement inancopt(3).average conv=boolβ averages the energy and gradient before checking for convergence, which accelerates things on numerically noisy potential energy surfaces. default:false.s6=realβ dispersion scaling in ANC generation.hessian=lindh-d2|lindh|swartβ the model hessian used to generate the ANC for the optimization.kstretch=realβ stretch force constant in the model hessian.kbend=realβ bend force constant in the model hessian.ktorsion=realβ torsion force constant in the model hessian.koutofp=realβ out-of-plain force constant to the model hessian.kvdw=realβ additional vdW contribution (lindh|swartonly).kes=realβ electrostatic contribution to the model hessian, courtesy of the EEQ model.rcut=realβ distance cutoff for bonds in the model hessian.exact rf=boolβ uses a better solver during the rational function optimization. treat yourself π
π§ $path (6.1 only) π§
the pathfinder era, only a thing in 6.1. she's out here tracing reaction paths like it's a group chat read receipt.
nrun=intβ number of runs for the pathfinder.nopt=intβ number of points on the path to optimize.anopt=intβ number of steps to optimize the points on the path.kpush=realβ factor for the RMSD criterium pushing away from the reactant structure.kpull=realβ factor for the RMSD criterium pulling towards the product structure.alp=realβ width of the RMSD criterium.product=fileβ file name of the product structure.
π $scan π
slowly dragging a coordinate across the whole vibe, step by step π
mode=sequential|concertedβ scans all constraints at once (concerted) or one after another (sequential). in sequential mode the final value of the scanned constraint is kept in place. in concerted mode all steps for the scans have to be the same. iykyk.int: start,end,stepsβ wherestartandendare real values andstepsis an integer value. defines a scan along constraintint(which has to be defined before, of course), fromstarttoendin a certain number of steps. and unlike5.8, there is no limitation in the number of steps. glow up fr.name: values; start,end,stepsβ defines the constrainnameon which the scan is performed. see above and the the constrain group for more information, sincename(e.g.distance) andvalues(e.g.i,j,value) are handed internally to the constrain parser.
Note β οΈ the scan parser will always terminate in error if the instruction could not be parsed correctly, while the constrain parser is able to skip instructions with wrong input by raising a warning. so likeβ¦ be careful with your syntax, bestie, she's not forgiving here π
β‘ $scc β‘
the self-consistent-field group, aka the main character of every single-point energy.
temp, etemp=realβ electronic temperature for the Fermi smearing.broydamp=realβ damping for the Broyden convergence accelerator.guess=gasteiger|goedecker|sadβ the different possible guess charges for a GFN2-xTB SCC calculation. pick one π²iterations, maxiterations=intβ adjusts the number of SCC iterations in the first/last SCC calculation.
π§© $split π§©
for when your molecule is really several molecules in a trench coat and you need to say so.
fragment1: list,...β defines atoms belonging to fragment 1.fragment2: list,...β defines atoms belonging to fragment 2.fragment: i,list,...β defines atoms belonging to fragmenti.
π¬ $stm (6.1 only) π¬
scanning tunneling microscopy sim hours. activate it with $write/stm=true β¨
broadening=realβ width of tip DOS energy broadening (eV).current=realβ constant current value (arb.u.).grid=realβ grid width (Bohr), half that value along Z.thr=realβ integral and density matrix neglect threshold.potential=realβ potential of tip vs. molecule. negative values let e flow from mol to tip i.e. occ space of mol is probed. π
π¦ $symmetry π¦
letting the molecule remember it's beautiful and symmetric.
desy=realβ point group symmetrization threshold.maxat=intβ point group determination is skipped if # atoms > this value (i.e.desymaxat 0switches it off).
π‘οΈ $thermo π‘οΈ
temperature stuff, frequencies stuff, the whole thermal vibe check.
temp=realβ temperature for thermostatistical calculation. default:298.15 K.imagthr=realβ threshold for inverting imaginary frequencies for thermo in cm-1. default:-20.0.scale=realβ scaling factor for frequencies in the vibrational partition function. default:1.0.sthr=realβ rotor cut-off (cm-1) in thermo. default:50.0.
π§± $wall π§±
walls!! we love a boundary condition. keeping your atoms from wandering off into the void π«Ά
potential=logfermi|polynomialβ sets the kind of wall potential used. default:polynomial.alpha=intβ exponent of the polynomial wall potential. default:30.beta=realβ exponent of the logfermi bias potential. default:6.0.autoscale=realβ scales the axis of automatically determined wall potentials byreal.axisshift=realβ constant offset used in the automatic dermined wall potential axis. default:3.5.temp=realβ temperature of the logfermi wall. default:300.0 K. the wall energy of logfermi is multiplied with kT.sphere: auto|real,all|list,...β sets up a spherical wall potential for all or the atoms inlistwith the radiusrealor an automatical determined sphere radius.ellipsoid: auto|real,auto|real,auto|real,all|list,...β sets up an ellipsoid wall potential for all or the atoms inlistwith the radiirealor an automatical determined sphere radius. ifautois chosen for axes, a sphere potential is applied, no ellipsoid!!! π¨sandwich: auto|real,all|list,...β sets up a sandwich wall potential for all or the atoms inlistwith the radiusrealor an automatical determined sandwich radius in Bohr. onlypotential=logfermiist available.diameter=2*radius+2*4Asafety buffer.
π $write π
the output group, aka the "show me everything" group. files go brrr π¨οΈ
esp=boolβ calculate and print electrostatic potential. this will create a data file and a cosmo file.gridfile=fileβ read gridpoints for the ESP calculation fromfile.mos=boolβ print molden file.lmo=boolβ localize orbitals and print out LMO centers.density=boolβ calculate density on a cube grid.spin population=boolβ spin population analysis.spin density=boolβ calculate spin density on a cube grid.fod=boolβ calculate FOD on a cube grid (set the electronic temperature to at least12500 K).wiberg=boolβ calculate and print Wiberg bond order.dipole=boolβ calculate and print dipole moment.charges=boolβ print charges file.mulliken=boolβ print mulliken population analysis.orbital energies=boolβ print orbital energies and occupation numbers.stm=boolβ creates an STM image of the molecule, see thestmgroup (6.1 only).geosum=boolβ old style geometry summary.inertia=boolβ geometry summary on moments on inertia and rotational constants (available with--define).distances=boolβ geometry summary on distances and bonds (available with--define).angles=boolβ geometry summary on angles (available with--define).torsions=boolβ geometry summary on dihedral angles and torsions (available with--define).vib_normal_modes=boolβ write normal modes as Turbomole vibrational modes data group.hessian.out=boolβ write a DFTB+ stylehessian.outfile containing the unprojected hessian.
π΅ LEGACY π΅
okay so for the old heads: to keep compatibility with versions of xtb(1) from before version 6.0, a group instruction set is allowed that accepts the same syntax as the original set-block. here's the whole list of set-block commands and their corresponding instructions in xcontrol(7) πΎ
Note β οΈxtb(1)can read a set-block by itself and will print out an equivalent instruction set. this feature will be deprecated in future versions since the set-block is less flexible thanxcontrol(7)and might be deactived without prior announcement! so like, migrate bestie, for real π
broydampβ usebroydampin thesccgroup insteadchrg,chargeβ usechrglogical insteadconstrainallbo,constralltboβ currently not supportedconstrainalltors,constralltorsβ currently not supportedconstrainβ use theconstraingroup insteadconstrainelβ currently not supportedconstrfcβ use force constant in theconstraingroup insteadconstrxyzβ useatomsin thefixgroup insteadcube_calβ usecalin thecubegroup insteadcube_pthrβ usepthrin thecubegroup insteadcube_stepβ usestepin thecubegroup insteaddesymaxatβ usemaxatin thesymmetrygroup insteaddesyβ usedesyin thesymmetrygroup insteadellipsβ useellipsoidin thewallgroup insteadetempβ usetempin thesccgroup insteadex_open_HSβ currently not supportedex_open_LSβ currently not supportedfitβ usefitlogical insteadfixβ useatomsin thefix/constraingroup insteadfixfcβ use force constant in theconstraingroup insteadfragment1β usefragment1in thesplitgroup insteadfragment2β usefragment1in thesplitgroup insteadgbsaβ usesolventin thegbsagroup insteadgfnverβ useversionin thegfngroup insteadhessaβ currently not supportedhessfβ usefreezein thefixgroup insteadhlowoptβ usehlowin theoptgroup insteadion_radβ useion_radin thegbasgroup insteadion_stβ useion_stin thegbsagroup insteadmaxdisplβ usemaxdiplin theoptgroup insteadmaxoptβ usemaxcyclein theoptgroup insteadmddumpxyzβ usedumpin themdgroup insteadmd_hmassβ usehmassin themdgroup insteadmdskipβ useskipin themdgroup insteadmdstepβ usestepin themdgroup insteadmdtempβ usetempin themdgroup insteadmdtimeβ usetimein themdgroup insteadmicrooptβ usemircocyclein theoptgroup insteadmode_localβ uselocalin themodefgroup insteadmode_nβ usenin themodefgroup insteadmode_prjβ useprjin*modefgroup insteadmode_stepβ usestepin themodefgroup insteadmode_updatβ useupdatin themodefgroup insteadmode_vthrβ usevthrin themodefgroup insteadnvtβ usenvtin themdgroup insteadoptlevβ useoptlevelin theoptgroup inteadorca_exeβ currently not supportedorca_lineβ currently not supported</p> π sorry bestie, it's just not a thing rnorca_mpiβ also currently not supported</p> πrestartmd,mdrestartβ nah, userestartin themdgroup instead β¨runtypβ please use the commandline instead, it might still work but likeβ¦ don't count on it πs6optβ uses6in theoptgroup instead πsamerandβ use thesamerandlogical instead π¦scanβ use thescangroup instead βscchessβ usesccaccin thehessgroup instead πsccmdβ usesccaccin themdgroup instead πshakeβ useshakein themdgroup instead πΈsphereβ usespherein thespheregroup instead πspringexpβ usespringexpin thefixgroup instead π§stephessβ usestepin the*hessgroup instead πthermo_sthrβ usesthrin thethermogroup instead π₯thermoβ usetempin thethermogroup instead π‘οΈuhfβ use theuhflogical instead πvelodumpβ useveloin themdgroup instead π
π BUGS π
ok so if you find a bug (and you will, it's software, it's giving humble π) please report it with:
- an example input π«Ά
- a
--copydump of the internal settings π - the geometry you used π
- and the
--verboseoutput π’
β¦and send all of that to xtb@thch.uni-bonn.de π
bestie, no cap, sending all four of those is the move β it's literally impossible to help you without them π
π RESOURCES π
Main web site: http://grimme.uni-bonn.de/software/xtb β¨
π COPYING π
Copyright (C) 2015-2020 S. Grimme. This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). π
and that's the whole page, bestie!! πβ¨ you made it to the end, which is honestly iconic of you π this was XCONTROL(7) from 2025-09-15 β mwah π
π
π¦ where this page comes from
- fedora 43: xtb 6.7.1-4.fc43 Β· LGPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms