Open-Source Quantum Chemistry

Psi4

Use Psi4 for interaction-energy analysis with SAPT and for conceptual-DFT quantities such as Fukui functions and the dual descriptor.

Role
Open-source quantum chemistry
Typical input
Psi4 input or Python API
Typical output
Energies, SAPT terms, cube fields

1. Overview

Psi4 provides a text input language and a Python API. This chapter focuses on SAPT for intermolecular interactions and finite-difference density descriptors for local reactivity.

2. Energy and geometry optimization

molecule mol {
  0 1
  O  0.0000  0.0000  0.0000
  H  0.0000 -0.7570  0.5870
  H  0.0000  0.7570  0.5870
}
set basis def2-svp
energy("b3lyp-d3bj")
optimize("b3lyp-d3bj")

Check SCF and optimization convergence and use a Hessian or frequency calculation to establish the stationary-point character.

3. SAPT

Symmetry-adapted perturbation theory partitions an interaction energy into physically motivated components.

EintEelst+Eexch+Eind+Edisp

Electrostatics, exchange, induction, and dispersion depend on the chosen SAPT level and grouping convention.

Psi4 input
molecule dimer {
  0 1
  --
  0 1
}
set { basis jun-cc-pVDZ }
energy("sapt0")

Exchange is normally repulsive, while electrostatics, induction, and dispersion may be attractive or repulsive depending on convention and geometry. Compare terms only at the same SAPT level and basis.

4. Fragment definition

Use the -- separator to define monomers and assign charge and multiplicity to each fragment. Preserve the dimer geometry when computing an interaction at a fixed structure.

Keep monomers in the dimer geometry

If monomers are relaxed separately, deformation energy is mixed into the comparison. State whether counterpoise or ghost-basis conventions are used.

5. Fukui functions

Finite differences of N, N+1, and N-1 electron densities approximate nucleophilic and electrophilic response.

f+(r)ρN+1-ρNf-(r)ρN-ρN-1

Finite-difference densities may change spin state or orbital occupation between N, N+1, and N-1 systems. Check these states explicitly; frontier-orbital approximations and relaxed finite differences are not identical definitions.

6. Dual descriptor

The dual descriptor is Δf(r)=f+-f-. Interpret sign conventions explicitly and keep geometry, basis, grid, and electronic-state treatment consistent across charge states.

With the convention above, positive values are commonly associated with regions more susceptible to nucleophilic attack and negative values with electrophilic attack. Always state the convention because signs are sometimes reported oppositely.

7. Cube output

cubeprop writes orbitals, density, electrostatic potential, and related quantities to real-space grids. Record grid spacing, padding, orbital indices, and units.

set cubeprop_tasks ["DENSITY", "FRONTIER_ORBITALS", "DUAL_DESCRIPTOR"]
set cubic_grid_spacing [0.15, 0.15, 0.15]
set cubic_grid_overage [4.0, 4.0, 4.0]
energy("b3lyp")
cubeprop()

8. Validation

  1. Verify fragment charges, multiplicities, and geometries.
  2. Report SAPT level, basis, frozen-core and density-fitting settings.
  3. Keep charge-state geometries and grids consistent for finite differences.
  4. State dual-descriptor sign convention.
  5. Check cube extents, spacing, and orbital indices.

9. References

Last reviewed: August 4, 2026. Check the linked official documentation for syntax specific to the installed software version.