diff --git a/src/spinspg/core.py b/src/spinspg/core.py index 8f0fcf0..cee8302 100644 --- a/src/spinspg/core.py +++ b/src/spinspg/core.py @@ -23,6 +23,7 @@ def get_spin_symmetry( numbers: NDArrayInt, magmoms: NDArrayFloat, symprec: float = 1e-5, + mag_symprec: float | None = None, angle_tolerance: float = -1.0, backend: SYMMETRY_FINDER_BACKEND = "spglib", ) -> tuple[SpinOnlyGroup, NDArrayInt, NDArrayFloat, NDArrayFloat]: @@ -43,6 +44,8 @@ def get_spin_symmetry( ``magmoms[i, :]`` is a magnetic moments at the ``i``-th site in Cartesian coordinates. symprec: float, default=1e-5 See :ref:`spglib:variables_symprec`. + mag_symprec: float | None + See :ref:`spglib:variables_mag_symprec`. angle_tolerance: float, default=-1 See :ref:`spglib:variables_angle_tolerance`. @@ -61,7 +64,9 @@ def get_spin_symmetry( ns = get_symmetry_with_cell( lattice, positions, numbers, symprec, angle_tolerance, backend=backend ) - ssg = get_primitive_spin_symmetry(ns, magmoms, symprec) + ssg = get_primitive_spin_symmetry( + ns, magmoms, mag_symprec=mag_symprec if mag_symprec is not None else symprec + ) spin_only_group = ssg.spin_only_group tmat = ssg.transformation diff --git a/tests/test_group.py b/tests/test_group.py index 74a0dab..cecfa61 100644 --- a/tests/test_group.py +++ b/tests/test_group.py @@ -102,11 +102,12 @@ def test_spin_space_groups( assert num_sym >= len(mag_symmetry["rotations"]) +@pytest.mark.parametrize("mag_symprec", [1e-5, None]) @pytest.mark.parametrize("backend", ["spglib", "moyopy"]) -def test_get_spin_symmetry(rutile, backend: SYMMETRY_FINDER_BACKEND): +def test_get_spin_symmetry(rutile, mag_symprec: float | None, backend: SYMMETRY_FINDER_BACKEND): lattice, positions, numbers, magmoms = rutile sog, rotations, translations, spin_rotations = get_spin_symmetry( - lattice, positions, numbers, magmoms, backend=backend + lattice, positions, numbers, magmoms, mag_symprec=mag_symprec, backend=backend ) assert sog.spin_only_group_type == SpinOnlyGroupType.COLLINEAR