99
1010if 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
1415TEST_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 )
5657def 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 )
7669def 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