Skip to content

atomli.vibrations

Generated from the public Python surface of Atomli 0.1.4.

Vibrations(atoms, indices=None, name='vib', delta=0.01, nfree=2, method='auto')

Section titled “Vibrations(atoms, indices=None, name='vib', delta=0.01, nfree=2, method='auto')”

Harmonic frequencies and modes for an Atoms object.

Mirrors ase.vibrations.Vibrations. The physics runs natively; this class is the ASE-shaped surface over it.

atoms: Atoms carrying a native atomli calculator on .calc. indices: Active atom indices; None means every unconstrained atom. Restricting the set forces the finite-difference route, because a partial Hessian is a displacement quantity. name: Prefix for files written by write_mode. delta: Finite-difference displacement in angstrom. nfree: Displacements per degree of freedom: 2 or 4. method: "auto" (analytical where available), "analytical", or "finite_difference". The one parameter ASE does not have; everything before it keeps ASE’s positional order.

Mode energies in eV as a complex array.

Imaginary modes carry their magnitude in the imaginary part, which is ASE’s convention and what summary marks with an i.

Mode frequencies in cm^-1 as a complex array.

The same Hessian shaped (n_active, 3, n_active, 3).

Cartesian Hessian in eV/angstrom^2, (3n_active, 3n_active).

Rows and columns run over the active atoms in get_indices() order, three Cartesian components per atom.

The atom indices the Hessian was actually built over.

Mode n as an (n_atoms, 3) Cartesian displacement.

Inactive atoms get a zero displacement, matching ase.vibrations.Vibrations.get_mode.

Every mode as a (3n_active, n_atoms, 3) array.

Mode n pairs with get_energies()[n]: both orders come from the ascending eigenvalues of the same mass-weighted Hessian.

Zero-point energy in eV; imaginary modes contribute zero.

Compute the Hessian and diagonalize it.

Returns: This object, so Vibrations(atoms).run().summary() reads as one statement.

Write the ASE frequency table.

log: An open text stream, a path, or None for stdout.

The frequency table as one string, in ASE’s layout.

write_mode(self, n=None, kT=0.02585199101165164, nimages=30)

Section titled “write_mode(self, n=None, kT=0.02585199101165164, nimages=30)”

Animate a mode into <name>.<n>.xyz.

n: Mode index, or None to write every non-zero mode. kT: Vibrational amplitude as an energy, units.kB * T. nimages: Frames in one full period.