Coverage for dynasor / units.py: 100%

16 statements  

« 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:: 

5 

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 

13 

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 

19 

20# Frequencies 

21meV_to_invcm = 1 / invcm / 1e3 

22r"""Conversion factor from meV (energy) to cm\ :math:`^{-1}` (wave numbers).""" 

23 

24THz_to_invcm = 1e12 / _c / 1e2 

25r"""Conversion factor from THz (frequency) to cm\ :math:`^{-1}` (wave numbers).""" 

26 

27THz_to_meV = 1e13 * invcm / _c 

28"""Conversion factor from THz (frequency) to meV (energy).""" 

29 

30# Angular frequencies 

31radians_per_fs_to_THz = 1000 / (2 * pi) 

32"""Conversion factor from rad/fs (radians per femtosecond) to THz (frequency).""" 

33 

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).""" 

36 

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).""" 

39 

40# Mass 

41Dalton_to_dmu = 1 / fs**2 

42"""Conversion factor from Daltons (SI mass unit) to the internal dynasor mass units."""