atomsmltr.atoms package#
The atomsmltr.atoms subpackage provides classes to handle atomic species and their transitions.
Examples
Using an existing atom
from atomsmltr.atoms import Ytterbium # import `Ytterbium` class
yb = Ytterbium() # init an object
yb.print_info() # print atom informations
One can also define a new atom from scratch
from atomsmltr.atoms import Atom
from atomsmltr.atoms.transitions import DummyTransition
from scipy import constants as csts
atom = Atom(mass=4 * csts.m_u, name="Helium")
transition = DummyTransition("transition", Gamma=1, wavelength=1)
atom.add_transition(transition, tag="transition")
- class atomsmltr.atoms.Atom(mass: float, name: str)[source]#
Bases:
ABCA generic class to define atomic species.
- Parameters:
mass (float) – the atomic mass in kg
name (str) – a name to describe the atom
Example
>>> from atomsmltr.atoms import Atom >>> from scipy import constants as csts >>> atom = Atom(mass=4 * csts.m_u, name="Helium")
Note
Specific atomic species are implemented in
atomsmltr.atoms.collection- add_transition(transition: AtomicTransition, tag=None) None[source]#
adds a transition to the atom transition dict.
- Parameters:
transition (AtomicTransition) – an atomic transition (see
atomsmltr.atoms.transitions.AtomicTransition)tag (str, optional) – the tag identifying the transition in the transition dict. If nothing or
Noneis given, we will use the.tagproperty of theAtomicTransitionobject
- gen_info_string(**kwargs) str[source]#
generates an info string
- Returns:
info_string – a string with information on the atom
- Return type:
str
- gen_infostring_obj() InfoString[source]#
generates an
InfoStringobject.- Returns:
an
InfoStringobject- Return type:
- get_radiation_pressure(transition: str, intensity: float, mag_field: float, polarization: ndarray, detuning: float) float[source]#
Computes the radiation pressure.
- Parameters:
transition (str) – The tag of the considered transition. The transition has to be defined in the atom’s transition list, that can be accessed using the
list_transitions()method.intensity (float) – The laser intensity, in W/m^2
mag_field (float) – The norm of the magnetic field, in T (scalar).
polarization (ndarray, shape (,3)) – Projection of the laser polarization on (pi, sigma+, sigma-)
detuning (float) – The laser bare detuning, in rad/s
- Returns:
F_rad – The radiation pressure in SI (scalar)
- Return type:
float
Notes
Yields the radiation pressure felt by an atom excited on a given transition, by a laser with given intensity. It takes into account the value of the magnetic field, the polarization of the laser and its bare detuning.
The computation is based on the
get_scattering_rate()method, implemented in theAtomicTransitionclass.
- get_transitions_copy() dict[source]#
returns a copy of the transition dictionnary
- Returns:
a dict containing the atom’s transitions
- Return type:
dict
- list_transitions() list[source]#
returns a list of the transition tags (str)
- Returns:
list of transition tags
- Return type:
list of str
- property mass: float#
the atom mass in kg
- Type:
float
- property mass_au: float#
the atom mass in atomic units
- Type:
float
- property name: float#
the atom name
- Type:
str
- rm_transition(tag: str) None[source]#
removes a transition for the atom’s transition dict.
- Parameters:
tag (str) – the tag of the transition to remove
- property trans: dict#
a copy of the atom’s transition dictionnary
- Type:
dict
- property transitions: list#
a list of the atom’s transitions
- Type:
list
- class atomsmltr.atoms.DummyTransition(wavelength: float, Gamma: float, tag: str)[source]#
Bases:
AtomicTransitionDummy class, only for testing purposes
- get_resonant_speed(mag_field: float, polarization: str, detuning: float)[source]#
Returns the resonant speed for the DummyTransition model
This actually always return zero…
- Parameters:
mag_field (float) – (scalar) magnetic field amplitude (T)
polarization (str) – laser polarization : “pi”, “sigma+” or “sigma-”
detuning (float) – laser detuning (rad/s)
- Returns:
speed – resonant speed (m/s)
- Return type:
float
- get_scattering_rate(intensity: float, mag_field: float, polarization: str, detuning: float)[source]#
Returns the scattering rate for the DummyTransition model
This is just a two-level atom with no dependence on mag. field or polarization
- Parameters:
intensity (float) – laser intensity (W/m^)
mag_field (float) – (scalar) magnetic field amplitude (T)
polarization (ndarray, shape (,3)) – projection of the laser polarization on (pi, sigma+, sigma-)
detuning (float) – laser detuning (rad/s)
- Returns:
scattering rate – the transition scattering rate
- Return type:
float
- class atomsmltr.atoms.J0J1Transition(wavelength: float, Gamma: float, lande_factor: float, tag: str)[source]#
Bases:
AtomicTransitionA class to handle J=0 -> J=1 transitions
- Parameters:
wavelength (float) – the vacuum wavelength (in m)
Gamma (float) – the transition natural linewidth (in rad/s)
lande_factor (float) – the lande g-factor for the transition
tag (str) – a tag identifying the transition
- gen_infostring_obj()[source]#
generates an
InfoStringobject.- Returns:
an
InfoStringobject- Return type:
- get_resonant_speed(mag_field: float, polarization: str, detuning: float)[source]#
Returns the resonant speed for a given mag. field configuration
- Parameters:
mag_field (float) – (scalar) magnetic field amplitude (T)
polarization (str) – laser polarization : “pi”, “sigma+” or “sigma-”
detuning (float) – laser detuning (rad/s)
- Returns:
speed – resonant speed (m/s)
- Return type:
float
- get_scattering_rate(intensity: float, mag_field: float, polarization: list, detuning: float)[source]#
Returns the scattering rate for a given laser / mag. field configuration
- Parameters:
intensity (float) – laser intensity (W/m^)
mag_field (float) – (scalar) magnetic field amplitude (T)
polarization (ndarray, shape (,3)) – projection of the laser polarization on (pi, sigma+, sigma-)
detuning (float) – laser detuning (rad/s)
- Returns:
scattering rate – the transition scattering rate
- Return type:
float
- property lande_factor#
the lande g-factor for the transition
- Type:
float
Subpackages#
- atomsmltr.atoms.collection package
RubidiumStrontiumYtterbium- Submodules
- Rubidium
MainLineRUBIDIUM_87_MASSRUBIDIUM_D2_GAMMARUBIDIUM_D2_LANDE_FACTORRUBIDIUM_D2_WAVELENGTHRubidium- Strontium
IntercombinationLineMainLineSTRONTIUM_88_MASSSTRONTIUM_INTERCOMBINATION_GAMMASTRONTIUM_INTERCOMBINATION_LANDE_FACTORSTRONTIUM_INTERCOMBINATION_WAVELENGTHSTRONTIUM_MAIN_GAMMASTRONTIUM_MAIN_LANDE_FACTORSTRONTIUM_MAIN_WAVELENGTHStrontium- Ytterbium
IntercombinationLineMainLineYTTERBIUM_174_MASSYTTERBIUM_INTERCOMBINATION_GAMMAYTTERBIUM_INTERCOMBINATION_LANDE_FACTORYTTERBIUM_INTERCOMBINATION_WAVELENGTHYTTERBIUM_MAIN_GAMMAYTTERBIUM_MAIN_LANDE_FACTORYTTERBIUM_MAIN_WAVELENGTHYtterbium
Submodules#
- atoms
Atom- transitions
AtomicTransitionAtomicTransition.Doppler_temperatureAtomicTransition.GammaAtomicTransition.IsatAtomicTransition.Isat_mW_per_cm2AtomicTransition.gen_info_string()AtomicTransition.gen_infostring_obj()AtomicTransition.get_Doppler_temperature()AtomicTransition.get_resonant_speed()AtomicTransition.get_saturation_parameter()AtomicTransition.get_scattering_rate()AtomicTransition.kAtomicTransition.print_info()AtomicTransition.tagAtomicTransition.wavelength
DummyTransitionJ0J1Transition