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: ABC

A 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 None is given, we will use the .tag property of the AtomicTransition object

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 InfoString object.

Returns:

an InfoString object

Return type:

InfoString

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 the AtomicTransition class.

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

print_info() None[source]#

prints the atom infostring

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: AtomicTransition

Dummy 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: AtomicTransition

A 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 InfoString object.

Returns:

an InfoString object

Return type:

InfoString

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

class atomsmltr.atoms.Rubidium[source]#

Bases: Atom

Rubidium 87 atomic class

class atomsmltr.atoms.Strontium[source]#

Bases: Atom

Strontium 88 atomic class

class atomsmltr.atoms.Ytterbium[source]#

Bases: Atom

Strontium 174 atomic class

Subpackages#

Submodules#