vibeqc.HessianFDOptions¶
- class vibeqc.HessianFDOptions(step_bohr=0.005, sym_strict=True, project_trans_rot=True, atomic_masses_amu=None, include_dipole_derivatives=False, frozen_indices=None)[source]¶
Bases:
objectKnobs for
compute_hessian_fd().- step_bohr
Centered-finite-difference displacement (default 0.005 bohr). Smaller -> more sensitive to SCF round-off; larger -> more anharmonicity contamination. 0.001-0.01 bohr is the practical sweet spot.
- sym_strict
Symmetrize the FD Hessian as
H = (H + H.T) / 2before mass-weighting (default True). Set False to keep the raw FD matrix – useful for diagnosing translational invariance of the gradient.- project_trans_rot
Project the 3 (linear: 2) translational + 3 (linear: 2) rotational zero modes out of the mass-weighted Hessian before diagonalisation (default True). When True, the corresponding entries of
frequencies_cm1are exactly zero so callers can slice[6:](or[5:]for linear molecules) for the vibrational subset.- atomic_masses_amu
Optional per-atom mass override (length n_atoms, in amu). Defaults to the standard atomic masses for the molecule’s Z values. Use this for isotope substitution (D for H, ¹^3C, etc.).
- Parameters:
- __init__(step_bohr=0.005, sym_strict=True, project_trans_rot=True, atomic_masses_amu=None, include_dipole_derivatives=False, frozen_indices=None)¶
Methods
__init__([step_bohr, sym_strict, ...])Attributes
Atom indices to hold fixed (not displaced).
When True, also evaluate the dipole moment at every displaced geometry and assemble the dipole-derivative tensor
dmu_b/dR_ia(in atomic units, e).- include_dipole_derivatives: bool = False¶
When True, also evaluate the dipole moment at every displaced geometry and assemble the dipole-derivative tensor
dmu_b/dR_ia(in atomic units, e). Cheap because the SCF is already done – adds only onecompute_dipolecall per displacement. Required byir_intensities(). Default False.
- frozen_indices: Sequence[int] | None = None¶
Atom indices to hold fixed (not displaced). When set, the result is the partial-Hessian sub-block over the unfrozen atoms only – the
(3M, 3M)block of the full Hessian forMunfrozen atoms – and its3Mfrequencies are all vibrational: the frozen atoms anchor the system, so there are no translational/rotational zero modes andproject_trans_rotis forced off. This is the partial-Hessian vibrational analysis (PHVA; Li & Jensen, Theor. Chem. Acc. 2002) used to characterise a transition state on a slab while holding the bulk-like substrate layers fixed – it cuts the displacement count from6Nto6M.None=> every atom is displaced (the full Hessian). Downstreamvibeqc.compute_thermochemistry()treats a partial-Hessian result as a vibrational-only (anchored) system: no gas-phase translational / rotational partition functions.