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, unfrozen_indices=None)[source]¶
Bases:
objectOutput of
compute_hessian_fd().- hessian
(3N, 3N) matrix in Hartree/bohr². Indexing convention: row/col
3*i + αis atomi, Cartesian directionα ∈ {0, 1, 2}for{x, y, z}.- hessian_mw
Mass-weighted Hessian:
M^(-1/2) H M^(-1/2)whereMis 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
iin modekisnormal_modes[3i:3i+3, k] / sqrt(M_i).- imaginary_count
Number of modes with ω² < 0 after trans/rot projection.
- n_displacements
6 * n_atomsfor 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, unfrozen_indices=None)¶
- Parameters:
- Return type:
None
Methods
__init__(hessian, hessian_mw, ...[, ...])Attributes
(3N, 3) tensor of
∂μ_β/∂R_iαin atomic units (e), populated whenHessianFDOptions.include_dipole_derivatives=True(else 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.
(n_atoms,) atomic masses in amu used during mass-weighting — for a partial Hessian (frozen atoms) this is the
Munfrozen masses, matching the3Mrows/columns.Nonefor a full Hessian.- dipole_derivatives: ndarray | None = None¶
(3N, 3) tensor of
∂μ_β/∂R_iαin atomic units (e), populated whenHessianFDOptions.include_dipole_derivatives=True(else None). Row index3*i + α; columnβ ∈ {0,1,2}for{x,y,z}. Used byir_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 — for a partial Hessian (frozen atoms) this is the
Munfrozen masses, matching the3Mrows/columns. Stored soir_intensities()and downstream thermochemistry can stay self-contained without re-deriving masses from the molecule.
- unfrozen_indices: ndarray | None = None¶
Nonefor a full Hessian. WhenHessianFDOptions.frozen_indiceswas set, the(M,)array of unfrozen atom indices this partial Hessian’s3Mrows/columns correspond to (row/col3*k + αis unfrozen atomunfrozen_indices[k], Cartesianα). Lets callers map normal modes back to atoms and signalsvibeqc.compute_thermochemistry()to use the vibrational-only (anchored-system) partition function.