Units

class Units

A utility class containing methods for units conversions.

Simple example usage:

from scm.libbase import Units

energies_in_hartree = [1,2,3]
energies_in_ev = Units.convert("Hartree", "eV", energies_in_hartree)

pressure_in_atm = 1.0
pressure_in_kpascal = pressure_in_atm * Units.get_factor('atm', 'kPascal')
classmethod convert(from_unit: str, to_unit: str, value: int) float
classmethod convert(from_unit: str, to_unit: str, value: float) float
classmethod convert(from_unit: str, to_unit: str, value: number) number
classmethod convert(from_unit: str, to_unit: str, value: List[int]) List[float]
classmethod convert(from_unit: str, to_unit: str, value: List[float]) List[float]
classmethod convert(from_unit: str, to_unit: str, value: List[number]) List[number]
classmethod convert(from_unit: str, to_unit: str, value: List[Any]) List[Any]
classmethod convert(from_unit: str, to_unit: str, value: Tuple[int, ...]) Tuple[float, ...]
classmethod convert(from_unit: str, to_unit: str, value: Tuple[float, ...]) Tuple[float, ...]
classmethod convert(from_unit: str, to_unit: str, value: Tuple[number, ...]) Tuple[number, ...]
classmethod convert(from_unit: str, to_unit: str, value: Tuple[Any, ...]) Tuple[Any, ...]
classmethod convert(from_unit: str, to_unit: str, value: ndarray[Any, dtype[ScalarType]]) ndarray[Any, dtype[ScalarType]]

Converts a value from one unit to another.

Parameters:
  • from_unit (str): The unit of the input value. Must be a recognized unit.

  • to_unit (str): The unit to convert the value to. Must be a recognized unit.

  • value: The value to convert.

Returns:
  • The value converted to the target unit. The type of the returned value will match the type of the input value.

Raises:
  • UnitsError: If either from_unit or to_unit are not supported or if you are trying to perform a conversion between incompatible units.

Examples:

>>> from scm.libbase import Units

>>> Units.convert("m", "km", 1000)
1.0
>>> Units.convert("km", "m", [1,2,3])
[1000.0, 2000.0, 3000.0]
classmethod get_factor(from_unit: str, to_unit: str) float

Returns the conversion factor between two units.

Parameters:
  • from_unit (str): The unit you want to convert from. Must be a recognized unit.

  • to_unit (str): The unit you want to convert to. Must be a recognized unit.

Returns:
  • float: The conversion factor for converting from_unit to to_unit.

Raises:
  • UnitsError: If either from_unit or to_unit is not supported or if you are trying to perform a conversion between incompatible units..

Examples:

>>> from scm.libbase import Units

>>> Units.get_factor("m", "km")
0.001
classmethod get_quantities() List[str]

Returns all defined quantities. Quantities are things like ‘LENGTH’, ‘ENERGY’ or ‘MASS’.

classmethod get_unit(alt: str) str

Returns the unit for the given alternative representation.

Will throw on ambiguous result if there is no exact match.

classmethod get_units(quantity: str) List[str]

Returns all units associated with a quantity. This will be in a nice unicode format.

classmethod units_summary_string() str

Returns a string containing a nicely formatted table of all the units available.

class UnitsError

Error thrown for unrecognized units or illegal conversions.

List of available units

To see the list available units, you can use the units_summary_string(). Here is the output of print(Units.units_summary_string()):

======================
Quantity: ACCELERATION
======================

unit name                     label
-----------------------------------

angstrom/fs2                  Å/fs²


===============
Quantity: ANGLE
===============

unit name                     label
-----------------------------------

degree                        °
rad                           rad
grad                          grad
turn                          tr


=================
Quantity: CURRENT
=================

unit name                     label
-----------------------------------

ehartree/hbar                 𝑒Ha/ℏ
ampere                        A
mampere                       mA
uampere                       μA


=================
Quantity: DENSITY
=================

unit name                     label
-----------------------------------

dalton/bohr3                  Da/Bohr³
kg/m3                         kg/m³
g/cm3                         g/cm³
kgl                           kg/L


================
Quantity: DIPOLE
================

unit name                     label
-----------------------------------

ebohr                         𝑒Bohr
coulombmeter                  Cm
debye                         D


=======================
Quantity: ELECTRICFIELD
=======================

unit name                     label
-----------------------------------

hartree/ebohr                 Ha/𝑒Bohr
volt/angstrom                 V/Å
volt/meter                    V/m


===========================
Quantity: ELECTRICPOTENTIAL
===========================

unit name                     label
-----------------------------------

volt                          V


================
Quantity: ENERGY
================

unit name                     label
-----------------------------------

hartree                       Ha
rydberg                       Ry
joule                         J
kjoule                        kJ
ev                            eV
kcalmol                       kcal/mol
kjmol                         kJ/mol
cm-1                          cm⁻¹
mhz                           MHz
thz                           THz


================
Quantity: FORCES
================

unit name                     label
-----------------------------------

hartree/angstrom              Ha/Å
hartree/meter                 Ha/m
hartree/bohr                  Ha/Bohr
rydberg/angstrom              Ry/Å
rydberg/meter                 Ry/m
rydberg/bohr                  Ry/Bohr
joule/angstrom                J/Å
joule/m                       N
joule/bohr                    J/Bohr
kjoule/angstrom               kJ/Å
kjoule/meter                  kJ/m
kjoule/bohr                   kJ/Bohr
ev/angstrom                   eV/Å
ev/meter                      eV/m
ev/bohr                       eV/Bohr
kcalmol/angstrom              kcal/mol/Å
kcalmol/meter                 kcal/mol/m
kcalmol/bohr                  kcal/mol/Bohr
kjmol/angstrom                kJ/mol/Å
kjmol/meter                   kJ/mol/m
kjmol/bohr                    kJ/mol/Bohr
cm-1/angstrom                 cm⁻¹/Å
cm-1/meter                    cm⁻¹/m
cm-1/bohr                     cm⁻¹/Bohr
mhz/angstrom                  MHz/Å
mhz/meter                     MHz/m
mhz/bohr                      MHz/Bohr
thz/angstrom                  THz/Å
thz/meter                     THz/m
thz/bohr                      THz/Bohr


================
Quantity: LENGTH
================

unit name                     label
-----------------------------------

bohr                          Bohr
pm                            pm
angstrom                      Å
nm                            nm
cm                            cm
dm                            dm
meter                         m


=======================
Quantity: MAGNETICFIELD
=======================

unit name                     label
-----------------------------------

gauss                         G
tesla                         T
aumagsi                       a.u. (mag SI)


==============
Quantity: MASS
==============

unit name                     label
-----------------------------------

dalton                        Da
erestmass                     mₑ
proton                        mₚ
g                             g
kg                            kg


=========================
Quantity: MOMENTOFINERTIA
=========================

unit name                     label
-----------------------------------

kgm2                          kgm²


==================
Quantity: PRESSURE
==================

unit name                     label
-----------------------------------

kpascal                       kPa
mpascal                       MPa
gpascal                       GPa
bar                           bar
mbar                          mbar
kbar                          kbar
atm                           atm
torr                          Torr
hartree/angstrom3             Ha/ų
hartree/meter3                Ha/m³
hartree/bohr3                 Ha/Bohr³
rydberg/angstrom3             Ry/ų
rydberg/meter3                Ry/m³
rydberg/bohr3                 Ry/Bohr³
joule/angstrom3               J/ų
pascal                        Pa
joule/bohr3                   J/Bohr³
kjoule/angstrom3              kJ/ų
kjoule/meter3                 kJ/m³
kjoule/bohr3                  kJ/Bohr³
ev/angstrom3                  eV/ų
ev/meter3                     eV/m³
ev/bohr3                      eV/Bohr³
kcalmol/angstrom3             kcal/mol/ų
kcalmol/meter3                kcal/mol/m³
kcalmol/bohr3                 kcal/mol/Bohr³
kjmol/angstrom3               kJ/mol/ų
kjmol/meter3                  kJ/mol/m³
kjmol/bohr3                   kJ/mol/Bohr³
cm-1/angstrom3                cm⁻¹/ų
cm-1/meter3                   cm⁻¹/m³
cm-1/bohr3                    cm⁻¹/Bohr³
mhz/angstrom3                 MHz/ų
mhz/meter3                    MHz/m³
mhz/bohr3                     MHz/Bohr³
thz/angstrom3                 THz/ų
thz/meter3                    THz/m³
thz/bohr3                     THz/Bohr³


==========================
Quantity: RECIPROCALLENGTH
==========================

unit name                     label
-----------------------------------

bohr1                         Bohr⁻¹
meter1                        m⁻¹
angstrom1                     Å⁻¹
nm1                           nm⁻¹


===================
Quantity: SHIELDING
===================

unit name                     label
-----------------------------------

ppm                           ppm


===================
Quantity: STIFFNESS
===================

unit name                     label
-----------------------------------

hartree/angstrom2             Ha/Ų
hartree/meter2                Ha/m²
hartree/bohr2                 Ha/Bohr²
rydberg/angstrom2             Ry/Ų
rydberg/meter2                Ry/m²
rydberg/bohr2                 Ry/Bohr²
joule/angstrom2               J/Ų
joule/m2                      J/m²
joule/bohr2                   J/Bohr²
kjoule/angstrom2              kJ/Ų
kjoule/meter2                 kJ/m²
kjoule/bohr2                  kJ/Bohr²
ev/angstrom2                  eV/Ų
ev/meter2                     eV/m²
ev/bohr2                      eV/Bohr²
kcalmol/angstrom2             kcal/mol/Ų
kcalmol/meter2                kcal/mol/m²
kcalmol/bohr2                 kcal/mol/Bohr²
kjmol/angstrom2               kJ/mol/Ų
kjmol/meter2                  kJ/mol/m²
kjmol/bohr2                   kJ/mol/Bohr²
cm-1/angstrom2                cm⁻¹/Ų
cm-1/meter2                   cm⁻¹/m²
cm-1/bohr2                    cm⁻¹/Bohr²
mhz/angstrom2                 MHz/Ų
mhz/meter2                    MHz/m²
mhz/bohr2                     MHz/Bohr²
thz/angstrom2                 THz/Ų
thz/meter2                    THz/m²
thz/bohr2                     THz/Bohr²


=====================
Quantity: TEMPERATURE
=====================

unit name                     label
-----------------------------------

kelvin                        K
celsius                       °C
fahrenheit                    °F


==============
Quantity: TIME
==============

unit name                     label
-----------------------------------

s                             s
ms                            ms
us                            μs
ns                            ns
ps                            ps
fs                            fs
hartree_au_time               ℏ/Ha
rydberg_au_time               ℏ/Ry
hr                            hr
min                           min


==================
Quantity: VELOCITY
==================

unit name                     label
-----------------------------------

bohr/fs                       Bohr/fs


================
Quantity: VOLUME
================

unit name                     label
-----------------------------------

bohr3                         Bohr³
angstrom3                     ų
m3                            m³