Coverage for dynasor / units.py: 100%
16 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-16 12:31 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-16 12:31 +0000
1"""This module contains convenient unit conversion factors.
2Here, `radians_per_fs_to_invcm`, for example, can be used to convert
3an angular frequency in units of radians/fs to a wavenumber in 1/cm, as
4demonstrated by the code snippet below::
6>>> # converting angular frequencies (omega) to wavenumbers in inverse cm
7>>> import numpy as np
8>>> omegas = np.linspace(0, 15, 100)
9>>> frequencies_invcm = omegas * radians_per_fs_to_invcm
10>>>
11>>> # converting from inverse cm to meV
12>>> frequencies_meV = frequencies_invcm / meV_to_invcm
14In practice you can apply this conversion directly to, e.g., the frequencies
15of a :class:`DynamicSample <sample.DynamicSample>` object.
16"""
17from math import pi
18from ase.units import _c, invcm, fs
20# Frequencies
21meV_to_invcm = 1 / invcm / 1e3
22r"""Conversion factor from meV (energy) to cm\ :math:`^{-1}` (wave numbers)."""
24THz_to_invcm = 1e12 / _c / 1e2
25r"""Conversion factor from THz (frequency) to cm\ :math:`^{-1}` (wave numbers)."""
27THz_to_meV = 1e13 * invcm / _c
28"""Conversion factor from THz (frequency) to meV (energy)."""
30# Angular frequencies
31radians_per_fs_to_THz = 1000 / (2 * pi)
32"""Conversion factor from rad/fs (radians per femtosecond) to THz (frequency)."""
34radians_per_fs_to_meV = radians_per_fs_to_THz * THz_to_meV
35"""Conversion factor from rad/fs (radians per femtosecond) to meV (energy)."""
37radians_per_fs_to_invcm = radians_per_fs_to_THz * THz_to_invcm
38r"""Conversion factor from rad/fs (radians per femtosecond) to cm\ :math:`^{-1}` (wave numbers)."""
40# Mass
41Dalton_to_dmu = 1 / fs**2
42"""Conversion factor from Daltons (SI mass unit) to the internal dynasor mass units."""