Skip to content

Commit 6fa8d68

Browse files
WIP fix KS
1 parent 2662198 commit 6fa8d68

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

src/rydstate/angular/angular_ket.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,9 @@ def calc_reduced_overlap(self, other: AngularKetBase | AngularState[Any]) -> flo
438438
# - KS overlaps
439439
if any(isinstance(s, AngularKetKS) for s in kets):
440440
ks = next(s for s in kets if isinstance(s, AngularKetKS))
441-
return clebsch_gordan_6j(ks.s_r, ks.l_r, ks.j_c, jj.j_r, ks.k, ks.j_tot)
441+
# we have some gauge degree of freedom, which one must use to get consistent matrix elements
442+
prefactor = -1 if (jj.j_r + jj.j_c) % 2 == 0 else 1 # TODO not quite correct yet
443+
return prefactor * clebsch_gordan_6j(ks.s_r, ks.l_r, ks.j_c, jj.j_r, ks.k, ks.j_tot)
442444

443445
raise NotImplementedError(f"calc_reduced_overlap not implemented for {kets!r}.")
444446

@@ -594,8 +596,12 @@ def _calc_prefactor_of_operator_in_coupled_scheme(
594596
f1, f2, f_tot = (self.get_qn(qn1), self.get_qn(qn2), self.get_qn(qn_combined))
595597
i1, i2, i_tot = (other.get_qn(qn1), other.get_qn(qn2), other.get_qn(qn_combined))
596598

599+
# this should already been taken care of by _kronecker_delta_non_involved_spins
600+
# TODO alternatively, remove _kronecker_delta_non_involved_spins,
601+
# and check here a descending qns from qn1 or qn2
597602
if (operator_acts_on == "first" and f2 != i2) or (operator_acts_on == "second" and f1 != i1):
598603
return 0
604+
599605
prefactor = calc_prefactor_of_operator_in_coupled_scheme(f1, f2, f_tot, i1, i2, i_tot, kappa, operator_acts_on)
600606
return prefactor * self._calc_prefactor_of_operator_in_coupled_scheme(other, qn_combined, kappa)
601607

0 commit comments

Comments
 (0)