Skip to content
This repository was archived by the owner on Nov 10, 2025. It is now read-only.

Commit 434478b

Browse files
improve test angular
1 parent 547d6f6 commit 434478b

1 file changed

Lines changed: 24 additions & 37 deletions

File tree

tests/test_angular_matrix_elements.py

Lines changed: 24 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
if TYPE_CHECKING:
1111
from ryd_numerov.angular import AngularKetBase
12+
from ryd_numerov.angular.angular_ket import CouplingScheme
1213
from ryd_numerov.angular.angular_matrix_element import AngularOperatorType
1314

1415
TEST_KET_PAIRS = [
@@ -55,39 +56,25 @@ def test_exp_q_different_coupling_schemes(ket: AngularKetBase) -> None:
5556
@pytest.mark.parametrize(("ket1", "ket2"), TEST_KET_PAIRS)
5657
def test_overlap_different_coupling_schemes(ket1: AngularKetBase, ket2: AngularKetBase) -> None:
5758
ov = ket1.calc_reduced_overlap(ket2)
58-
state1 = ket1.to_state()
59-
state2 = ket2.to_state()
60-
assert np.isclose(ov, state1.calc_reduced_overlap(ket2.to_state("LS")))
61-
assert np.isclose(ov, state1.calc_reduced_overlap(ket2.to_state("JJ")))
62-
assert np.isclose(ov, state1.calc_reduced_overlap(ket2.to_state("FJ")))
63-
assert np.isclose(ov, ket1.to_state("LS").calc_reduced_overlap(state2))
64-
assert np.isclose(ov, ket1.to_state("JJ").calc_reduced_overlap(state2))
65-
assert np.isclose(ov, ket1.to_state("FJ").calc_reduced_overlap(state2))
66-
67-
assert np.isclose(1, ket2.to_state("LS").calc_reduced_overlap(ket2))
68-
assert np.isclose(1, ket2.to_state("JJ").calc_reduced_overlap(ket2))
69-
assert np.isclose(1, ket2.to_state("FJ").calc_reduced_overlap(ket2))
70-
assert np.isclose(1, ket2.to_state("LS").calc_reduced_overlap(ket2))
71-
assert np.isclose(1, ket2.to_state("JJ").calc_reduced_overlap(ket2))
72-
assert np.isclose(1, ket2.to_state("FJ").calc_reduced_overlap(ket2))
59+
60+
coupling_schemes: list[CouplingScheme] = ["LS", "JJ", "FJ"]
61+
for scheme in coupling_schemes:
62+
assert np.isclose(ov, ket1.to_state().calc_reduced_overlap(ket2.to_state(scheme)))
63+
assert np.isclose(ov, ket1.to_state(scheme).calc_reduced_overlap(ket2))
64+
assert np.isclose(1, ket1.to_state(scheme).calc_reduced_overlap(ket1))
65+
assert np.isclose(1, ket2.to_state(scheme).calc_reduced_overlap(ket2))
7366

7467

7568
@pytest.mark.parametrize("ket", TEST_KETS)
7669
def test_reduced_identity(ket: AngularKetBase) -> None:
7770
reduced_identity = np.sqrt(2 * ket.f_tot + 1)
78-
state_ls = ket.to_state("LS")
79-
state_jj = ket.to_state("JJ")
80-
state_fj = ket.to_state("FJ")
8171

8272
op: AngularMomentumQuantumNumbers
83-
for op in state_ls.kets[0].quantum_number_names:
84-
assert np.isclose(reduced_identity, state_ls.calc_reduced_matrix_element(state_ls, "identity_" + op, kappa=0)) # type: ignore [arg-type]
85-
86-
for op in state_jj.kets[0].quantum_number_names:
87-
assert np.isclose(reduced_identity, state_jj.calc_reduced_matrix_element(state_jj, "identity_" + op, kappa=0)) # type: ignore [arg-type]
88-
89-
for op in state_fj.kets[0].quantum_number_names:
90-
assert np.isclose(reduced_identity, state_fj.calc_reduced_matrix_element(state_fj, "identity_" + op, kappa=0)) # type: ignore [arg-type]
73+
coupling_schemes: list[CouplingScheme] = ["LS", "JJ", "FJ"]
74+
for scheme in coupling_schemes:
75+
state = ket.to_state(scheme)
76+
for op in state.kets[0].quantum_number_names:
77+
assert np.isclose(reduced_identity, state.calc_reduced_matrix_element(state, "identity_" + op, kappa=0)) # type: ignore [arg-type]
9178

9279

9380
@pytest.mark.parametrize(("ket1", "ket2"), TEST_KET_PAIRS)
@@ -103,14 +90,14 @@ def test_matrix_elements_in_different_coupling_schemes(ket1: AngularKetBase, ket
10390
("f_tot", 1),
10491
("j_tot", 1),
10592
]
106-
for operator, kappa in example_list:
107-
msg = f"{operator=}, {kappa=}, {ket1=}, {ket2=}"
108-
val = ket1.calc_reduced_matrix_element(ket2, operator, kappa)
109-
state1 = ket1.to_state("LS")
110-
state2 = ket2.to_state("LS")
111-
assert np.isclose(val, state1.calc_reduced_matrix_element(ket2.to_state("LS"), operator, kappa)), msg
112-
assert np.isclose(val, state1.calc_reduced_matrix_element(ket2.to_state("JJ"), operator, kappa)), msg
113-
assert np.isclose(val, state1.calc_reduced_matrix_element(ket2.to_state("FJ"), operator, kappa)), msg
114-
assert np.isclose(val, ket1.to_state("LS").calc_reduced_matrix_element(state2, operator, kappa)), msg
115-
assert np.isclose(val, ket1.to_state("JJ").calc_reduced_matrix_element(state2, operator, kappa)), msg
116-
assert np.isclose(val, ket1.to_state("FJ").calc_reduced_matrix_element(state2, operator, kappa)), msg
93+
coupling_schemes: list[CouplingScheme] = ["LS", "JJ", "FJ"]
94+
95+
for scheme in coupling_schemes:
96+
for operator, kappa in example_list:
97+
msg = f"{operator=}, {kappa=}, {ket1=}, {ket2=}, {scheme=}"
98+
val = ket1.calc_reduced_matrix_element(ket2, operator, kappa)
99+
100+
assert np.isclose(
101+
val, ket1.to_state().calc_reduced_matrix_element(ket2.to_state(scheme), operator, kappa)
102+
), msg
103+
assert np.isclose(val, ket1.to_state(scheme).calc_reduced_matrix_element(ket2, operator, kappa)), msg

0 commit comments

Comments
 (0)