Skip to content

Commit 43adf3f

Browse files
make RydbergStateSQDT a proper clss and simplify
1 parent e485d04 commit 43adf3f

5 files changed

Lines changed: 196 additions & 127 deletions

File tree

src/rydstate/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
from rydstate import angular, radial, species
22
from rydstate.rydberg import (
3+
RydbergStateSQDT,
34
RydbergStateSQDTAlkali,
45
RydbergStateSQDTAlkalineJJ,
56
RydbergStateSQDTAlkalineLS,
67
)
78
from rydstate.units import ureg
89

910
__all__ = [
11+
"RydbergStateSQDT",
1012
"RydbergStateSQDTAlkali",
1113
"RydbergStateSQDTAlkalineJJ",
1214
"RydbergStateSQDTAlkalineLS",

src/rydstate/angular/angular_ket.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -708,3 +708,53 @@ def sanity_check(self, msgs: list[str] | None = None) -> None:
708708
msgs.append(f"{self.f_c=}, {self.j_r=}, {self.f_tot=} don't satisfy spin addition rule.")
709709

710710
super().sanity_check(msgs)
711+
712+
713+
def quantum_numbers_to_angular_ket(
714+
species: str | SpeciesObject,
715+
s_c: float | None = None,
716+
l_c: int = 0,
717+
j_c: float | None = None,
718+
f_c: float | None = None,
719+
s_r: float = 0.5,
720+
l_r: int | None = None,
721+
j_r: float | None = None,
722+
s_tot: float | None = None,
723+
l_tot: int | None = None,
724+
j_tot: float | None = None,
725+
f_tot: float | None = None,
726+
m: float | None = None,
727+
) -> AngularKetBase:
728+
r"""Return an AngularKet object in the corresponding coupling scheme from the given quantum numbers.
729+
730+
Args:
731+
species: Atomic species.
732+
s_c: Spin quantum number of the core electron (0 for Alkali, 0.5 for divalent atoms).
733+
l_c: Orbital angular momentum quantum number of the core electron.
734+
j_c: Total angular momentum quantum number of the core electron.
735+
f_c: Total angular momentum quantum number of the core (core electron + nucleus).
736+
s_r: Spin quantum number of the rydberg electron always 0.5)
737+
l_r: Orbital angular momentum quantum number of the rydberg electron.
738+
j_r: Total angular momentum quantum number of the rydberg electron.
739+
s_tot: Total spin quantum number of all electrons.
740+
l_tot: Total orbital angular momentum quantum number of all electrons.
741+
j_tot: Total angular momentum quantum number of all electrons.
742+
f_tot: Total angular momentum quantum number of the atom (rydberg electron + core)
743+
m: Total magnetic quantum number.
744+
Optional, only needed for concrete angular matrix elements.
745+
746+
"""
747+
if all(qn is None for qn in [j_c, f_c, j_r]):
748+
return AngularKetLS(
749+
s_c=s_c, l_c=l_c, s_r=s_r, l_r=l_r, s_tot=s_tot, l_tot=l_tot, j_tot=j_tot, f_tot=f_tot, m=m, species=species
750+
)
751+
if all(qn is None for qn in [s_tot, l_tot, f_c]):
752+
return AngularKetJJ(
753+
s_c=s_c, l_c=l_c, j_c=j_c, s_r=s_r, l_r=l_r, j_r=j_r, j_tot=j_tot, f_tot=f_tot, m=m, species=species
754+
)
755+
if all(qn is None for qn in [s_tot, l_tot, j_tot]):
756+
return AngularKetFJ(
757+
s_c=s_c, l_c=l_c, j_c=j_c, f_c=f_c, s_r=s_r, l_r=l_r, j_r=j_r, f_tot=f_tot, m=m, species=species
758+
)
759+
760+
raise ValueError("Invalid combination of angular quantum numbers provided.")

src/rydstate/rydberg/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
from rydstate.rydberg.rydberg_sqdt import (
2+
RydbergStateSQDT,
23
RydbergStateSQDTAlkali,
34
RydbergStateSQDTAlkalineJJ,
45
RydbergStateSQDTAlkalineLS,
5-
RydbergStateSQDTBase,
66
)
77

88
__all__ = [
9+
"RydbergStateSQDT",
910
"RydbergStateSQDTAlkali",
1011
"RydbergStateSQDTAlkalineJJ",
1112
"RydbergStateSQDTAlkalineLS",
12-
"RydbergStateSQDTBase",
1313
]

0 commit comments

Comments
 (0)