Skip to main content

Hindered Rotor Candidates

Automatically identify single-bond torsions that behave as hindered rotors — rotations that are neither free rotation nor pure harmonic vibrations. These candidates are the torsions you should scan to obtain one-dimensional rotational potentials for quantitative thermochemistry.

Summary

The job analyses the molecular geometry, optimises it, computes its harmonic vibrational modes, and then projects each candidate torsion onto the low-frequency normal modes. Bonds whose torsional coordinate overlaps strongly with one or more low-frequency modes are returned as candidates.

The overlap threshold and low-frequency cutoff are documented below. The system-dependent nature of hindered rotors means these defaults work well for most organic molecules but may need custom tuning for especially floppy or especially rigid systems. Contact us if you need custom thresholds.

Quick Example

import atomiverse
from atomiverse import Atoms, HinderedRotorCandidates
from atomiverse.levels import GFN2_XTB

butane = Atoms.from_smiles("CCCC")

job = HinderedRotorCandidates(
atoms=butane,
level_of_theory=GFN2_XTB,
)
job.submit()

result = job.require_result()
print(f"Dihedrals: {result.dihedrals}")
# Output: [(0,1,2,3), (1,2,3,4), ...]

Inputs

FieldTypeDescription
atomsAtomsInput molecular geometry (3D coordinates).
chargeintTotal system charge (default 0).
multiplicityintSpin multiplicity 2S+1 (default 1).
level_of_theoryLevelOfTheoryComputational method (DFT, semi-empirical, MLIP).

Results

FieldTypeDescription
dihedralslist[tuple[int,int,int,int]]0-based atom-index quadruplets per candidate.

Each dihedral is a (a,i,j,b) quadruplet where i–j is the rotor bond and a and b are the outer anchor atoms.

Algorithm Details

Candidate bond detection

RDKit identifies candidate single bonds with a custom SMARTS pattern based on the Lipinski rotatable-bond definition but without excluding terminal heavy atoms (e.g. methyl rotors). The SMARTS is:

[!$(*#*)&!#1]-&!@[!$(*#*)&!#1]

This matches single bonds that are not in rings and are not adjacent to multiple bonds.

Optimisation and vibrations

The input geometry is optimised at the requested level of theory, followed by a harmonic frequency calculation. If any genuine imaginary frequencies remain (above 20 cm⁻¹), the job fails — hindered rotor candidates must be derived from a local minimum.

Mode projection

For each candidate bond i–j, a torsional displacement vector is constructed by rotating the smaller molecular fragment around the i–j axis by a small angle. Mass-weighted normal modes are computed from the Cartesian Hessian.

The mass-weighted overlap (absolute dot product) between the torsion vector and each low-frequency normal mode is evaluated.

Filtering

A candidate bond is kept when its maximum overlap with any low-frequency mode meets or exceeds the overlap threshold.

Default thresholds

ParameterValueDescription
Low-frequency cutoff300 cm⁻¹Only modes ≤ this value are considered.
Overlap threshold0.35Minimum mass-weighted overlap to keep a candidate.
Imaginary frequency tolerance20 cm⁻¹Modes below −20 cm⁻¹ are treated as genuine imaginary.

Floppy molecules may benefit from a higher cutoff; rigid conjugated systems may need a lower one. The torsional scan itself determines symmetry.

Compute Resources

This job performs one geometry optimisation and one vibrational analysis, so walltime is comparable to an optimisation + frequency calculation on the same system. Typical walltime multipliers reflect this two-step nature.