Weak interactions (NCI, IGM)#

QTAIM and ELF described the strong bonds within a molecule. Chemistry also runs on weak, non-covalent interactions — hydrogen bonds, van der Waals contacts, steric clashes — that hold dimers, host–guest complexes, and folded biomolecules together. They are too weak to show up as ordinary bonds, but they leave a clear fingerprint in the density. This chapter maps them with NCI and IGM.

Theory: interactions hide in the low-density, low-gradient regions#

A non-covalent contact appears where two fragments’ densities gently overlap — a region of low density and low reduced density gradient. The non-covalent interaction (NCI) analysis exposes exactly these regions using two fields:

  • the reduced density gradient \(s = \dfrac{|\nabla\rho|}{2(3\pi^2)^{1/3}\rho^{4/3}}\), which spikes down toward zero wherever an interaction flattens the density, and

  • \(\text{sign}(\lambda_2)\,\rho\), the density signed by the sign of the second Hessian eigenvalue \(\lambda_2\), which tells you the interaction type: \(\lambda_2 < 0\) = attractive (H-bond), \(\lambda_2 \approx 0\) = van der Waals, \(\lambda_2 > 0\) = repulsive (steric clash).

A 2-D plot of \(s\) against \(\text{sign}(\lambda_2)\rho\) shows a spike per interaction, coloured by type. The independent gradient model (IGM), and its Hirshfeld-partitioned variant IGMH, refine this by constructing a reference “non-interacting” density, isolating the interaction signal into a clean \(\delta g\) descriptor.

Usage#

These are qc.prop.mesh fields — computed on a grid around the molecule. A hydrogen-bonded water dimer is the canonical example:

import qc
dimer = ("O 0 0 0; H 0.76 0 0.59; H -0.76 0 0.59; "
         "O 0 0 2.98; H 0 0.76 3.57; H 0 -0.76 3.57")
m = qc.chk.new(atom=dimer, ao="cc-pvdz", unit="angstrom").scf(ref="r").run()   # E = -152.060006

nci = qc.prop.mesh.nci_data(m)     # {'sign_lambda2_rho': ..., 'rdg': ...}  the two NCI axes
igm = qc.prop.mesh.igm(m)          # {'origin','spacing','shape','rho','delta_g','sign_lambda2_rho','rdg'}
igmh = qc.prop.mesh.igmh(m)        # the Hirshfeld-partitioned IGM

nci_data returns the two point-wise fields (sign_lambda2_rho, rdg) that make the NCI scatter plot; igm/igmh add the gridded density, the interaction descriptor delta_g, and the grid geometry (origin/spacing/shape) for a 3-D isosurface.

Seeing it#

The whole point is the picture. From the visualization chapter:

m.plot_nci()             # the 2-D NCI diagram: s vs sign(λ₂)ρ, with the interaction spikes
m.view3d("nci")          # the 3-D NCI isosurface, coloured by interaction type

For the water dimer, plot_nci() shows a spike at negative \(\text{sign}(\lambda_2)\rho\) — the signature of the O–H···O hydrogen bond — plus a broad van der Waals feature near zero.

Intrinsic bond strength (IBSI)#

To put a number on a contact’s strength, qc.prop.bond.ibsi computes the intrinsic bond-strength index (built on the IGM \(\delta g\)), which correlates with interaction energy across bond types — covalent and non-covalent alike:

qc.prop.bond.ibsi(m)     # per-atom-pair intrinsic bond-strength indices

Worked example#

import qc
dimer = ("O 0 0 0; H 0.76 0 0.59; H -0.76 0 0.59; "
         "O 0 0 2.98; H 0 0.76 3.57; H 0 -0.76 3.57")
m = qc.chk.new(atom=dimer, ao="cc-pvdz", unit="angstrom").scf(ref="r").run()

print("dimer energy:", round(m.scf.energy, 6))     # -152.060006
nci = m.prop.mesh.nci_data()
print("NCI fields   :", list(nci.keys()))          # ['sign_lambda2_rho', 'rdg']
m.plot_nci()                                        # visualize the H-bond spike

Exercise 12

  1. In an NCI plot, an interaction shows a spike at \(\text{sign}(\lambda_2)\rho \approx -0.03\) a.u. Attractive or repulsive? What kind of contact is it likely to be?

  2. Why do NCI/IGM need a grid (making them slower than a Mulliken charge), while a bond order does not?

  3. You have two conformers of a molecule and want to know which has a stronger internal hydrogen bond. Name two qc.prop tools from this chapter you could use, and what each would tell you.

Next, aromaticity quantifies a different collective property — the special stability of conjugated rings.