Source code for pantea.units

from dataclasses import dataclass, field
from typing import TYPE_CHECKING, Any

_optional_attr = field(default=None, repr=False)
if TYPE_CHECKING:
    Float = Any
else:
    Float = float


[docs]@dataclass class PhysicalUnits: """Physical constants for units conversions.""" BOLTZMANN_CONSTANT: float TO_ANGSTROM: float TO_PICO_SECOND: float TO_BAR: float TO_ELECTRON_VOLT: float TO_ATOMIC_MASS: float TO_NANO_METER: Float = _optional_attr TO_FEMTO_SECOND: Float = _optional_attr TO_NANO_SECOND: Float = _optional_attr TO_GIGA_PASCAL: Float = _optional_attr TO_PASCAL: Float = _optional_attr TO_ATMOSPHERE: Float = _optional_attr TO_KILO_BAR: Float = _optional_attr TO_KCAL_PER_MOL: Float = _optional_attr FROM_ANGSTROM: Float = _optional_attr FROM_NANO_METER: Float = _optional_attr FROM_FEMTO_SECOND: Float = _optional_attr FROM_PICO_SECOND: Float = _optional_attr FROM_NANO_SECOND: Float = _optional_attr FROM_GIGA_PASCAL: Float = _optional_attr FROM_KILO_BAR: Float = _optional_attr FROM_BAR: Float = _optional_attr FROM_ELECTRON_VOLT: Float = _optional_attr FROM_ATOMIC_MASS: Float = _optional_attr FROM_KCAL_PER_MOL: Float = _optional_attr def __post_init__(self) -> None: self.TO_NANO_METER = self.TO_ANGSTROM * 0.1 self.TO_FEMTO_SECOND = self.TO_PICO_SECOND * 1000 self.TO_NANO_SECOND = self.TO_PICO_SECOND * 0.001 self.TO_GIGA_PASCAL = self.TO_BAR * 0.0001 self.TO_PASCAL = self.TO_BAR * 100000 self.TO_ATMOSPHERE = self.TO_BAR * 0.986923 self.TO_KILO_BAR = self.TO_BAR * 0.001 self.TO_KCAL_PER_MOL = self.TO_ELECTRON_VOLT * 23.0609 self.FROM_ANGSTROM = 1 / self.TO_ANGSTROM self.FROM_NANO_METER = 1 / self.TO_NANO_METER self.FROM_FEMTO_SECOND = 1 / self.TO_FEMTO_SECOND self.FROM_PICO_SECOND = 1 / self.TO_PICO_SECOND self.FROM_NANO_SECOND = 1 / self.TO_NANO_SECOND self.FROM_GIGA_PASCAL = 1 / self.TO_GIGA_PASCAL self.FROM_KILO_BAR = 1 / self.TO_KILO_BAR self.FROM_BAR = 1 / self.TO_BAR self.FROM_ELECTRON_VOLT = 1 / self.TO_ELECTRON_VOLT self.FROM_ATOMIC_MASS = 1 / self.TO_ATOMIC_MASS self.FROM_KCAL_PER_MOL = 1 / self.TO_KCAL_PER_MOL
hartree_units = PhysicalUnits( BOLTZMANN_CONSTANT=3.166811563e-6, TO_ANGSTROM=5.29177249e-01, TO_PICO_SECOND=2.418884326e-05, TO_BAR=2.942102648e08, TO_ELECTRON_VOLT=2.7211407953e01, TO_ATOMIC_MASS=5.48579957163e-4, ) units = hartree_units