Programs¶
Each program page explains how qccodec maps a ProgramInput onto that program, then
gives a complete example script for every calculation type it supports. The scripts
run as written (they are tested), show every common option, and document the
program's quirks for that kind of calculation.
Conventions shared by every program¶
- Keywords are the program's own.
ProgramInput.keywordspass through to the program in its native form, so the program's documentation applies. The program pages say where each codec puts them (an input file, command-line flags, a TOML document, ...). - Structured data stays structured. The method and basis go in
model; the geometry, charge, and multiplicity go instructure. Codecs reject keywords that duplicate them. - Atom indices are 0-based, matching
structure. Codecs convert them for programs that count from 1; files you supply verbatim (such as an xtbxcontrol) use the program's own convention. - Results describe your structure exactly. Codecs stop programs from moving, reorienting, or symmetrizing the molecule, so gradients, Hessians, and trajectories line up with the input.
- Coordinates are in bohr and energies in Hartree, as everywhere in qcdata.
- Errors carry the program's explanation. When a program fails, the error message says why, and any partial results are attached.
Finding the program¶
qccompute runs a program by name from PATH. To use a different build, or one that
isn't on PATH, pass compute(..., executables={"orca": "/path/to/orca"}) or set
QCCOMPUTE_ORCA_EXECUTABLE (the program name in capitals).
xtb or CREST?¶
Both run the GFN-xTB methods and give the same GFN2-xTB energies and gradients. Use
program="xtb" for single points, Hessians, and optimizations with xtb's full set of
options, and for g-xTB. Use program="crest" for conformer searches and CREST's other
workflows.
Optimizations: the program's optimizer or geomeTRIC?¶
Programs with their own optimizer (CREST, ORCA, Psi4, TeraChem, xtb) run
optimization themselves. geomeTRIC can drive any program's gradients
instead, which is useful for a consistent optimizer across programs, constraints, and
QM/MM optimizations with Psi4 point charges.