qm-dft

Use when working with quantum chemistry (QM) and DFT calculations. Covers DFT functional/basis set selection, ORCA input/output, xTB semi-empirical methods (GFN2, CREST), PySCF Python-native QM, and standard workflows (geometry opt, frequencies, NMR, TD-DFT, reaction barriers, RESP charges).

QM/DFT — Quantum Chemistry Calculations

Quantum mechanics-based methods compute electronic structure explicitly — enabling bond breaking/forming, spectroscopic properties, and accurate energetics beyond force fields. Python ecosystem: ORCA (best free QM, subprocess), xTB/tblite (fast semi-empirical, Python API), PySCF (pure Python, scriptable).

When to Use This Skill

  • Geometry optimization with QM accuracy (beyond MM force fields)
  • Reaction energetics: transition states, barrier heights, IRC
  • Spectroscopy: IR/Raman frequencies, NMR shifts, UV-Vis (TD-DFT)
  • Partial charge calculation: RESP, ESP, NBO, Mulliken
  • pKa estimation, protonation states
  • Conformer search and ranking (CREST + xTB)
  • Parametrization validation: compare QM vs force field energies
  • Property prediction: dipole moment, polarizability, HOMO/LUMO gaps

Method Cost Hierarchy

MethodCostAccuracyUse case
GFN-FFO(N²)~MMPre-screening, conformers
GFN2-xTBO(N²·8)GoodConformers, pre-opt, pKa
r²SCAN-3cO(N³)Very goodRoutine geometry opt
B3LYP-D3BJ/def2-SVPO(N⁴)GoodDrug-like molecules opt
B3LYP-D3BJ/def2-TZVPO(N⁴)BetterSingle-point on opt geom
ωB97X-D/def2-TZVPO(N⁴)Very goodReaction barriers, CT states
DLPNO-CCSD(T)/CBSO(N⁵⁺)BenchmarkHigh-accuracy energetics

Quick Start

# xTB geometry optimization (fastest QM-level method)
import subprocess

result = subprocess.run(
    ['xtb', 'mol.xyz', '--opt', '--gfn', '2', '--alpb', 'water'],
    capture_output=True, text=True, cwd='workdir/'
)
# Output: xtbopt.xyz (optimized), xtbopt.log

# Parse final energy
for line in result.stdout.split('\n'):
    if 'TOTAL ENERGY' in line:
        energy = float(line.split()[3])  # Hartree
        print(f"E = {energy:.8f} Eh")
# ORCA single-point DFT (via subprocess)
orca_input = """\
! B3LYP D3BJ def2-SVP TightSCF
%pal nprocs 4 end
%maxcore 2000

* xyzfile 0 1 mol.xyz
"""

with open('sp.inp', 'w') as f:
    f.write(orca_input)

result = subprocess.run(['orca', 'sp.inp'], capture_output=True, text=True)
# Parse with chem_qm.py: python chem_qm.py --parse sp.out

Router — What to Read

TaskReference
DFT functionals, basis sets, dispersion, Jacob's ladderreferences/dft-theory.md
ORCA: input syntax, optimization, freq, NMR, TD-DFT, output parsingreferences/orca-practical.md
xTB/GFN2: CLI, Python (tblite), CREST, solvation, pKareferences/xtb-semiempirical.md
PySCF: Python QM, HF/DFT/MP2/CCSD, NMR, ESP chargesreferences/pyscf-python.md
Standard recipes: opt→freq, RESP, UV-Vis, barriers, NBOreferences/common-workflows.md

Key Tools

ToolVersionInstallRole
ORCA6.0orca-forum.org (free)General QM: DFT, MP2, CCSD(T), TD-DFT
xTB6.7conda install -c conda-forge xtbFast semi-empirical
tblite0.3pip install tblitexTB Python API
CREST3.0conda install -c conda-forge crestConformer/ensemble search
PySCF2.7pip install pyscfPython-native QM
Psi41.9conda install -c conda-forge psi4Python QM + MP2/CCSD

Related Skills

  • ase — structure building, ASE-driven optimization with ORCA/xTB calculators
  • force-fields — pre-optimize with MM before QM; GAFF2 validation
  • docking — QM refinement of top docking poses
  • scripts: chem_qm.py — ORCA/Gaussian input gen + output parsing (ALKYL native)
  • scientific-skills:rowan — cloud QM (DFT, pKa, Chai-1) without local ORCA install