vibeqc.HessianResult

class vibeqc.HessianResult(hessian, hessian_mw, frequencies_cm1, normal_modes, imaginary_count, n_displacements, is_linear, dipole_derivatives=None, dipole_origin=None, masses_amu=None)[source]

Bases: object

Output of compute_hessian_fd().

hessian

(3N, 3N) matrix in Hartree/bohr². Indexing convention: row/col 3*i + α is atom i, Cartesian direction α {0, 1, 2} for {x, y, z}.

hessian_mw

Mass-weighted Hessian: M^(-1/2) H M^(-1/2) where M is the diagonal mass matrix in electron-mass units, with each atom’s mass duplicated 3× (one per Cartesian DOF). Eigenvalues of this matrix are ω² in atomic units.

frequencies_cm1

(3N,) array of harmonic frequencies in cm⁻¹, sorted ascending. Imaginary modes appear as negative numbers. Trans/rot zero modes appear as exact 0.0 when project_trans_rot=True.

normal_modes

(3N, 3N) orthonormal mass-weighted normal-mode matrix (each column is a mode). Cartesian displacement pattern for atom i in mode k is normal_modes[3i:3i+3, k] / sqrt(M_i).

imaginary_count

Number of modes with ω² < 0 after trans/rot projection.

n_displacements

6 * n_atoms for centered FD.

is_linear

True when the molecule’s inertia tensor is rank-deficient (collinear atoms) — 5 zero modes instead of 6.

Parameters:
__init__(hessian, hessian_mw, frequencies_cm1, normal_modes, imaginary_count, n_displacements, is_linear, dipole_derivatives=None, dipole_origin=None, masses_amu=None)
Parameters:
Return type:

None

Methods

__init__(hessian, hessian_mw, ...[, ...])

Attributes

dipole_derivatives

(3N, 3) tensor of ∂μ_β/∂R_iα in atomic units (e), populated when HessianFDOptions.include_dipole_derivatives=True (else None).

dipole_origin

(3,) array, the dipole reference origin in bohr — typically the center of mass of the reference (undisplaced) geometry, which keeps the dipole-derivative tensor origin-consistent across displacements.

masses_amu

(n_atoms,) atomic masses in amu used during mass-weighting.

hessian

hessian_mw

frequencies_cm1

normal_modes

imaginary_count

n_displacements

is_linear

hessian: ndarray
hessian_mw: ndarray
frequencies_cm1: ndarray
normal_modes: ndarray
imaginary_count: int
n_displacements: int
is_linear: bool
dipole_derivatives: ndarray | None = None

(3N, 3) tensor of ∂μ_β/∂R_iα in atomic units (e), populated when HessianFDOptions.include_dipole_derivatives=True (else None). Row index 3*i + α; column β {0,1,2} for {x,y,z}. Used by ir_intensities() to compute IR band intensities.

dipole_origin: ndarray | None = None

(3,) array, the dipole reference origin in bohr — typically the center of mass of the reference (undisplaced) geometry, which keeps the dipole-derivative tensor origin-consistent across displacements. None when dipole derivatives weren’t requested.

masses_amu: ndarray | None = None

(n_atoms,) atomic masses in amu used during mass-weighting. Stored so ir_intensities() and downstream thermochemistry can stay self-contained without re-deriving masses from the molecule.