phonons module

torch_tdscha.phonons.displace_along_mode(mod, eigv, eta)

Build a Cartesian displacement vector corresponding to a single normal mode.

Parameters:
  • mod (int) – Mode index (0-based).

  • eigv ((3N, 3N) ndarray) – Normal-mode eigenvectors (columns).

  • eta (float) – Amplitude of displacement in Å.

Returns:

disp – Mass-weighted Cartesian displacement vector.

Return type:

(3N,) ndarray

Notes

  • Converts η from Å to Bohr·√amu using 1 Å = 1.889725988 Bohr and 1 amu = 911.444175 m_e.

torch_tdscha.phonons.get_AB(fom, feigv, T)

Build Gaussian covariance matrices A and B for a harmonic system at temperature T.

Parameters:
  • fom ((3N,) ndarray) – Phonon frequencies (a.u.).

  • feigv ((3N, 3N) ndarray) – Normal-mode eigenvectors (columns).

  • T (float) – Temperature in kelvin.

Returns:

  • A ((3N, 3N) ndarray) – Coordinate covariance matrix ⟨u_i u_j⟩.

  • B ((3N, 3N) ndarray) – Momentum covariance matrix ⟨p_i p_j⟩.

Notes

  • Converts T to Rydberg atomic units (K_to_Ry = 6.336857×10⁻⁶).

  • Acoustic modes (ω<1e-6) are removed before computing A and B.

torch_tdscha.phonons.get_alpha(om, eigv, T)

Compute α matrix = 2 ω tanh(ω / 2T) projected to Cartesian coordinates.

Parameters:
  • om ((3N,) ndarray) – Phonon frequencies (a.u.).

  • eigv ((3N, 3N) ndarray) – Normal-mode eigenvectors.

  • T (float) – Temperature in kelvin.

Returns:

alpha – Dynamical matrix α in Cartesian coordinates.

Return type:

(3N, 3N) ndarray

torch_tdscha.phonons.get_phonons(phi)

Diagonalize a harmonic force-constant matrix and return phonon frequencies in internal atomic-unit scale (√Ry/Bohr).

Parameters:

phi ((3N, 3N) ndarray) – Harmonic force-constant matrix.

Returns:

  • om ((3N,) ndarray) – Square-root eigenvalues of phi (frequencies in a.u.).

  • eigv ((3N, 3N) ndarray) – Eigenvectors (columns).

torch_tdscha.phonons.get_phonons_THz(phi)

Diagonalize a harmonic force-constant matrix and return phonon frequencies in THz.

Parameters:

phi ((3N, 3N) ndarray) – Harmonic force-constant matrix in atomic units (Ry/Bohr²).

Returns:

  • om ((3N,) ndarray) – Phonon frequencies in terahertz (THz).

  • eigv ((3N, 3N) ndarray) – Normal-mode eigenvectors (columns).

torch_tdscha.phonons.get_phonons_r(phi)

Diagonalize the force-constant matrix using scipy.linalg.eigh and return positive phonon frequencies (absolute value).

Parameters:

phi ((3N, 3N) ndarray) – Harmonic force-constant matrix.

Returns:

  • om ((3N,) ndarray) – Positive phonon frequencies (a.u.).

  • eigv ((3N, 3N) ndarray) – Eigenvectors (columns).

torch_tdscha.phonons.inv_Phi(fom, feigv)

Construct the inverse of the harmonic force-constant matrix using normal-mode decomposition.

Parameters:
  • fom ((3N,) ndarray) – Phonon frequencies (a.u.).

  • feigv ((3N, 3N) ndarray) – Corresponding eigenvectors.

Returns:

inv_phi – Matrix sum_k |e_k⟩⟨e_k| / ω_k^2 excluding acoustic modes.

Return type:

(3N, 3N) ndarray

torch_tdscha.phonons.print_phonons(om)

Print phonon frequencies to standard output in THz.

Parameters:

om ((3N,) ndarray) – Frequencies in internal units (a.u.); converted to THz before printing.

torch_tdscha.phonons.print_phonons_mat(phi)

Diagonalize a force-constant matrix and print phonon frequencies both in THz and cm⁻¹ units.

Parameters:

phi ((3N, 3N) ndarray) – Harmonic force-constant matrix.

torch_tdscha.phonons.regularize(phi)

Replace negative eigenvalues of a force-constant matrix by their absolute values to enforce positive definiteness.

Parameters:

phi ((3N, 3N) ndarray) – Harmonic force-constant matrix (possibly with small negative modes).

Returns:

phi_reg – Regularized force-constant matrix with all positive eigenvalues.

Return type:

(3N, 3N) ndarray

torch_tdscha.phonons.remove_translations(om, eigv, thr=1e-06)

Remove translational acoustic modes (ω≈0) from a phonon spectrum.

Parameters:
  • om ((3N,) ndarray) – Phonon frequencies (a.u.).

  • eigv ((3N, 3N) ndarray) – Corresponding eigenvectors (columns).

  • thr (float, optional) – Threshold below which a mode is considered acoustic. Default 1e-6.

Returns:

  • nom ((3N-3,) ndarray) – Non-acoustic frequencies.

  • neigv ((3N, 3N-3) ndarray) – Eigenvectors of optical modes.

torch_tdscha.phonons.remove_translations_from_mat(phi, thr=1e-06)

Remove translational acoustic modes directly from a force-constant matrix.

Parameters:
  • phi ((3N, 3N) ndarray) – Harmonic force-constant matrix.

  • thr (float, optional) – Threshold below which eigenmodes are treated as acoustic. Default 1e-6.

Returns:

  • nom ((3N-3,) ndarray) – Non-acoustic frequencies.

  • neigv ((3N, 3N-3) ndarray) – Corresponding eigenvectors.