KetAtom
Class Methods
|
Create a single atomic canonical basis state, which is defined by its species and quantum numbers. |
|
Calculate the black body transition rates of the KetAtom. |
|
Get the energy of the ket in the given unit. |
|
Label representing the ket. |
|
Calculate the lifetime of the KetAtom. |
|
Get the matrix element between two atomic basis states from the database. |
|
Calculate the spontaneous transition rates for the KetAtom. |
Class Attributes and Properties
The database used for this object. |
|
The total momentum quantum number f (int or half-int). |
|
Whether the state was calculated with multi-channel quantum defect theory. |
|
Whether j is the total momentum quantum number, otherwise f is the total momentum quantum number. |
|
The expectation value of the total angular quantum number j of all valence electrons. |
|
The expectation value of the total angular quantum number j_{Ryd} of the Rydberg electron. |
|
The standard deviation of the total angular quantum number j_{Ryd} of the Rydberg electron. |
|
The standard deviation of the total angular quantum number j of all valence electrons. |
|
The expectation value of the orbital quantum number l of all valence electrons. |
|
The expectation value of the orbital quantum number l_{Ryd} of the Rydberg electron. |
|
The standard deviation of the orbital quantum number l_{Ryd} of the Rydberg electron. |
|
The standard deviation of the orbital quantum number l of all valence electrons. |
|
The magnetic quantum number m (int or half-int). |
|
The principal quantum number n. |
|
The effective principal quantum number nu. |
|
The expectation value of the effective principal quantum numbers nu_i of the channels. |
|
The standard deviation of the effective principal quantum numbers nu_i of the channels. |
|
The parity of the ket. |
|
The expectation value of the total spin quantum number s of all valence electrons. |
|
The standard deviation of the total spin quantum number s of all valence electrons. |
|
The atomic species. |
|
The contribution of channels whose quantum numbers are not exactly known. |
- class KetAtom[source]
Ket for an atomic basis state.
Each KetAtom object uniquely represents a single atomic basis state (and therefore all KetAtom objects are orthogonal). When initializing a KetAtom you have to provide the species of the atom and a combination of quantum numbers, which uniquely define a single atomic basis state (this always includes providing a magnetic quantum number m).
- SQDT (Single Channel Quantum Defect Theory) for one valence electron (alkali atoms):
The quantum numbers n (int), l (int), j (half-int) and m (half-int) should be used to define the desired atomic basis state. All other quantum numbers are trivially derived from these: s = 1/2, f = j (we neglect hyperfine interaction for SQDT), nu = n - delta, l_ryd = l, j_ryd = j.
- SQDT (Single Channel Quantum Defect Theory) for two valence electrons (earth-alkaline atoms):
The quantum numbers n (int), l_ryd (int), j (int) and m (int) should be used to define the desired atomic basis state. The spin quantum number s is taken from the species label, which must end either with “_singlet” (s=0) or “_triplet” (s=1). Again we neglect hyperfine interaction, thus f = j. And nu = n - delta. All other quantum numbers are not necessarily eigenvalues anymore and are given as expectation values.
- MQDT (Multi Channel Quantum Defect Theory) for two valence electrons (earth-alkaline atoms):
The quantum numbers nu (float), f (int or half-int) and m (int or half-int) are still good quantum numbers. All other quantum numbers (like l, s, j, l_ryd, j_ryd) are not necessarily eigenvalues anymore. You can still provide them to specify the atomic basis state, whose expectation value is closest to the provided value.
Examples
>>> import pairinteraction.real as pi >>> ket_sqdt = pi.KetAtom("Rb", n=60, l=0, m=0.5) >>> (ket_sqdt.species, ket_sqdt.n, ket_sqdt.l, ket_sqdt.j, ket_sqdt.m, ket_sqdt.s) ('Rb', 60, 0.0, 0.5, 0.5, 0.5) >>> print(ket_sqdt) |Rb:60,S_1/2,1/2⟩ >>> ket_mqdt = pi.KetAtom("Yb174_mqdt", nu=60, l=1, f=1, m=1) >>> (ket_mqdt.species, round(ket_mqdt.nu, 3), ket_mqdt.f, ket_mqdt.m) ('Yb174_mqdt', 60.049, 1.0, 1.0) >>> print(ket_mqdt) |Yb174:S=0.4,nu=60.0,L=1.0,J=1,1⟩
- __init__(species, n=None, nu=None, nui=None, l=None, s=None, j=None, l_ryd=None, j_ryd=None, f=None, m=None, energy=None, energy_unit=None, parity=None, database=None)[source]
Create a single atomic canonical basis state, which is defined by its species and quantum numbers.
- Parameters:
species (
str
) – See attribute.n (
Optional
[int
]) – See attribute. Default None, i.e. load from the database.nu (
Optional
[float
]) – See attribute. Default None, i.e. load from the database.nui (
Optional
[float
]) – See attribute. Default None, i.e. load from the database.l (
Optional
[float
]) – See attribute. Default None, i.e. load from the database.s (
Optional
[float
]) – See attribute. Default None, i.e. load from the database.j (
Optional
[float
]) – See attribute. Default None, i.e. load from the database.l_ryd (
Optional
[float
]) – See attribute. Default None, i.e. load from the database.j_ryd (
Optional
[float
]) – See attribute. Default None, i.e. load from the database.f (
Optional
[float
]) – See attribute. Default None, i.e. load from the database.m (
Optional
[float
]) – See attribute. This should always be provided.energy (
Union
[float
,PlainQuantity
[float
],None
]) – See attribute. Default None, i.e. load from the database.energy_unit (
Optional
[str
]) – In which unit the energy is given, e.g. “GHz”. Default None, i.e. energy is provided as pint object.parity (
Optional
[Literal
['even'
,'odd'
,'unknown'
]]) – See attribute. Default None, i.e. load from the database.database (
Optional
[Database
]) – Which database to use. Default None, i.e. use the global database instance.
- Return type:
None
- property species: str
The atomic species.
- property n: int
The principal quantum number n.
- property nu: float
The effective principal quantum number nu.
- property nui: float
The expectation value of the effective principal quantum numbers nu_i of the channels.
- property l: float
The expectation value of the orbital quantum number l of all valence electrons.
- property s: float
The expectation value of the total spin quantum number s of all valence electrons.
- property j: float
The expectation value of the total angular quantum number j of all valence electrons.
- property l_ryd: float
The expectation value of the orbital quantum number l_{Ryd} of the Rydberg electron.
- property j_ryd: float
The expectation value of the total angular quantum number j_{Ryd} of the Rydberg electron.
- property nui_std: float
The standard deviation of the effective principal quantum numbers nu_i of the channels.
- property l_std: float
The standard deviation of the orbital quantum number l of all valence electrons.
- property s_std: float
The standard deviation of the total spin quantum number s of all valence electrons.
- property j_std: float
The standard deviation of the total angular quantum number j of all valence electrons.
- property l_ryd_std: float
The standard deviation of the orbital quantum number l_{Ryd} of the Rydberg electron.
- property j_ryd_std: float
The standard deviation of the total angular quantum number j_{Ryd} of the Rydberg electron.
- property is_j_total_momentum: bool
Whether j is the total momentum quantum number, otherwise f is the total momentum quantum number.
- property is_calculated_with_mqdt: bool
Whether the state was calculated with multi-channel quantum defect theory.
- property underspecified_channel_contribution: float
The contribution of channels whose quantum numbers are not exactly known.
- get_matrix_element(ket, operator, q, unit=None)[source]
Get the matrix element between two atomic basis states from the database.
- Parameters:
ket (
Self
) – The second atomic basis state to calculate the matrix element with.operator (
Literal
['zero'
,'energy'
,'electric_dipole'
,'electric_quadrupole'
,'electric_quadrupole_zero'
,'electric_octupole'
,'magnetic_dipole'
,'arbitrary'
]) – The operator, for which to calculate the matrix element.q (
int
) – The index for the matrix element.unit (
Optional
[str
]) – The unit to return the matrix element in. Default None will return a pint.Quantity.
- Return type:
Union
[PlainQuantity
[float
],PlainQuantity
[complex
],float
,complex
]- Returns:
The matrix element between the two states in the given unit or as a pint.Quantity.
- property f: float
The total momentum quantum number f (int or half-int).
- get_energy(unit=None)
Get the energy of the ket in the given unit.
- Parameters:
unit (
Optional
[str
]) – The unit to which to convert the energy to. Default None will return a pint.Quantity.- Return type:
Union
[float
,PlainQuantity
[float
]]- Returns:
The energy as float if a unit was given, otherwise a pint.Quantity.
- get_label(fmt)
Label representing the ket.
- Parameters:
fmt (
Literal
['raw'
,'ket'
,'bra'
]) – The format of the label, i.e. whether to return the raw label, or the label in ket or bra notation.- Return type:
str
- Returns:
The label of the ket in the given format.
- property m: float
The magnetic quantum number m (int or half-int).
- property parity: Literal['even', 'odd', 'unknown']
The parity of the ket.
- get_spontaneous_transition_rates(unit=None)[source]
Calculate the spontaneous transition rates for the KetAtom.
The spontaneous transition rates are given by the Einstein A coefficients.
- Parameters:
unit (
Optional
[str
]) – The unit to which to convert the result. Default None will return a pint.Quantity.- Return type:
tuple
[list
[KetAtom
],Union
[ndarray
[tuple
[int
,...
],dtype
[Any
]],PlainQuantity
[ndarray
[tuple
[int
,...
],dtype
[Any
]]]]]- Returns:
The relevant states and the transition rates.
- get_black_body_transition_rates(temperature, temperature_unit=None, unit=None)[source]
Calculate the black body transition rates of the KetAtom.
The black body transitions rates are given by the Einstein B coefficients, with a weight factor given by Planck’s law.
- Parameters:
temperature (
Union
[float
,PlainQuantity
[float
]]) – The temperature, for which to calculate the black body transition rates.temperature_unit (
Optional
[str
]) – The unit of the temperature. Default None will assume the temperature is given as pint.Quantity.unit (
Optional
[str
]) – The unit to which to convert the result. Default None will return a pint.Quantity.
- Return type:
tuple
[list
[KetAtom
],Union
[ndarray
[tuple
[int
,...
],dtype
[Any
]],PlainQuantity
[ndarray
[tuple
[int
,...
],dtype
[Any
]]]]]- Returns:
The relevant states and the transition rates.
- get_lifetime(temperature=None, temperature_unit=None, unit=None)[source]
Calculate the lifetime of the KetAtom.
The lifetime is the inverse of the sum of all transition rates.
- Parameters:
temperature (
Union
[float
,PlainQuantity
[float
],None
]) – The temperature, for which to calculate the black body transition rates. Default None will not include black body transitions.temperature_unit (
Optional
[str
]) – The unit of the temperature. Default None will assume the temperature is given as pint.Quantity.unit (
Optional
[str
]) – The unit to which to convert the result. Default None will return a pint.Quantity.
- Return type:
Union
[float
,PlainQuantity
[float
]]- Returns:
The lifetime of the state.