|
| 1 | +from typing import TYPE_CHECKING, Any |
| 2 | + |
1 | 3 | import numpy as np |
2 | 4 | import pytest |
3 | | -from rydstate import BasisSQDTAlkali |
4 | | -from rydstate.basis.basis_sqdt import BasisSQDTAlkalineLS |
| 5 | +from rydstate import BasisSQDTAlkali, BasisSQDTAlkalineFJ, BasisSQDTAlkalineJJ, BasisSQDTAlkalineLS |
| 6 | + |
| 7 | +if TYPE_CHECKING: |
| 8 | + from rydstate.basis.basis_base import BasisBase |
5 | 9 |
|
6 | 10 |
|
7 | 11 | @pytest.mark.parametrize("species_name", ["Rb", "Na", "H"]) |
@@ -62,3 +66,13 @@ def test_alkaline_basis(species_name: str) -> None: |
62 | 66 | me_matrix = basis.calc_reduced_matrix_elements(basis, "electric_dipole", unit="e a0") |
63 | 67 | assert np.shape(me_matrix) == (len(basis.states), len(basis.states)) |
64 | 68 | assert np.count_nonzero(me_matrix) > 0 |
| 69 | + |
| 70 | + basis = BasisSQDTAlkalineLS(species_name, n_min=30, n_max=35) |
| 71 | + basis.filter_states("l_r", (6, 10)) |
| 72 | + for basis_class in [BasisSQDTAlkalineJJ, BasisSQDTAlkalineFJ]: |
| 73 | + basis2: BasisBase[Any] = basis_class(species_name, n_min=30, n_max=35) # type: ignore [assignment] |
| 74 | + basis2.filter_states("l_r", (6, 10)) |
| 75 | + assert len(basis2.states) == len(basis.states) |
| 76 | + trafo = basis.calc_reduced_overlaps(basis2) |
| 77 | + trafo_inv = basis2.calc_reduced_overlaps(basis) |
| 78 | + assert np.allclose(trafo @ trafo_inv, np.eye(len(basis.states)), atol=1e-3) |
0 commit comments