Setting xTB Parameters¶
Simple Input¶
The xtb_ase calculator lets you set any of the typical command-line arguments for xtb.
The xtb_ase calculator uses a "profile" system to set how the xtb executable is called. By default, the xtb_ase calculator will run via xtb --parallel <NCPUS> where <NCPUS> is the number of accessible CPUs.
If you want to change the default command-line arguments, you can do so by instantiating a new profile. For example, to run the xtb executable as xtb --tblite:
from ase.build import molecule
from xtb_ase import XTB, XTBProfile
atoms = molecule("H2O")
profile = XTBProfile(["xtb", "--tblite"])
atoms.calc = XTB(profile=profile)
atoms.get_potential_energy()
print(atoms.calc.results)
Note
You should never specify the --input (-I) or coordinate file command-line arguments. The xtb_ase calculator will take care of those automatically.
Detailed Input¶
For more complex inputs, xTB supports a detailed input format called xcontrol. This is also supported by the xtb_ase calculator, but instead of passing the arguments as an adjustment to the executable call in the XTBProfile, we modify the parameters of the XTB calculator instance. If desired, both an XTBProfile and XTB parameters can be supplied.
from ase.build import molecule
from xtb_ase import XTB, XTBProfile
atoms = molecule("H2O")
profile = XTBProfile(["xtb", "--opt"])
atoms.calc = XTB(profile=profile, scc={"temp": 500})
atoms.get_potential_energy()
print(atoms.calc.results)
An xcontrol file will be automatically written out to the runtime directory as xtb.inp.
Warning
The xtb code automatically ignores invalid parameters in the xcontrol file. When setting up a new calculation, it is recommended to check the xtb.inp and xtb.out files to ensure that the parameters were set correctly.
Memory and Parallelization¶
The typical xtb suggestions apply when dealing with memory and parallelization, and xtb_ase lets the user make these decisions for themselves.
For instance, most users will benefit from unlimiting the system stack:
Additionally, one can speed up calculations by specifiying the OMP_NUM_THREADS, OMP_MAX_ACTIVE_LEVELS, and/or MKL_NUM_THREADS environment variables as described in the xTB manual.