Line data Source code
1 : # SPDX-FileCopyrightText: 2024 PairInteraction Developers 2 : # SPDX-License-Identifier: LGPL-3.0-or-later 3 : 4 1 : from __future__ import annotations 5 : 6 1 : from typing import TYPE_CHECKING 7 : 8 1 : import pytest 9 : 10 1 : from tests.constants import ( 11 : GAUSS_IN_ATOMIC_UNITS, 12 : HARTREE_IN_GHZ, 13 : HARTREE_IN_INVERSE_CM, 14 : HARTREE_IN_JOULES, 15 : VOLT_PER_CM_IN_ATOMIC_UNITS, 16 : ) 17 : 18 : if TYPE_CHECKING: 19 : from pint import UnitRegistry 20 : 21 : 22 1 : def test_hartree_to_joules(ureg: UnitRegistry) -> None: 23 : """Test conversion from Hartree to Joules.""" 24 1 : one_hartree = 1 * ureg.hartree 25 1 : one_hartree_in_joules = one_hartree.to("joule") 26 1 : assert pytest.approx(one_hartree_in_joules.magnitude, rel=1e-12) == HARTREE_IN_JOULES # NOSONAR 27 : 28 : 29 1 : def test_joules_to_hartree(ureg: UnitRegistry) -> None: 30 : """Test conversion from Joules to Hartree.""" 31 1 : one_hartree_in_joules = HARTREE_IN_JOULES * ureg.joule 32 1 : result = one_hartree_in_joules.to_base_units() 33 1 : assert pytest.approx(result.magnitude, rel=1e-12) == 1.0 # NOSONAR 34 : 35 : 36 1 : def test_hartree_to_thz(ureg: UnitRegistry) -> None: 37 : """Test conversion from Hartree to THz.""" 38 1 : one_hartree = 1 * ureg.hartree 39 1 : one_hartree_in_ghz = one_hartree.to("gigahertz", "spectroscopy") 40 1 : assert pytest.approx(one_hartree_in_ghz.magnitude, rel=1e-12) == HARTREE_IN_GHZ # NOSONAR 41 : 42 : 43 1 : def test_hartree_to_inverse_cm(ureg: UnitRegistry) -> None: 44 : """Test conversion from Hartree to inverse cm.""" 45 1 : one_hartree = 1 * ureg.hartree 46 1 : one_hartree_in_inverse_cm = one_hartree.to("1/cm", "spectroscopy") 47 1 : assert pytest.approx(one_hartree_in_inverse_cm.magnitude, rel=1e-12) == HARTREE_IN_INVERSE_CM # NOSONAR 48 : 49 : 50 1 : def test_electric_field_to_atomic_units(ureg: UnitRegistry) -> None: 51 : """Test conversion from V/cm to atomic units of electric field.""" 52 1 : one_v_per_cm = 1 * ureg.volt / ureg.centimeter 53 1 : one_v_per_cm_in_atomic_units = one_v_per_cm.to_base_units() 54 1 : assert pytest.approx(one_v_per_cm_in_atomic_units.magnitude, rel=1e-12) == VOLT_PER_CM_IN_ATOMIC_UNITS # NOSONAR 55 : 56 : 57 1 : def test_magnetic_field_to_atomic_units(ureg: UnitRegistry) -> None: 58 : """Test conversion from Gauss to atomic units of magnetic field.""" 59 1 : one_gauss = 1e-4 * ureg.tesla 60 1 : one_gauss_in_atomic_units = one_gauss.to_base_units() 61 1 : assert pytest.approx(one_gauss_in_atomic_units.magnitude, rel=1e-12) == GAUSS_IN_ATOMIC_UNITS # NOSONAR