transitions#

This module implements the AtomicTransition class, that is meant to be embedded in the Atom class.

Example

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.transitions.AtomicTransition(wavelength: float, Gamma: float, tag: str)[source]#

Bases: ABC

A generic (abstract) class to define electronic transitions in atoms

Parameters:
  • wavelength (float) – the vacuum wavelength (in m)

  • Gamma (float) – the transition natural linewidth (in rad/s)

  • tag (str) – a tag identifying the transition

Notes

This is an abstract class that cannot be used in simulations. For that purpose, see actual implementations of transitions.

property Doppler_temperature#

Doppler temperature TD = hbar k / 2 / kB (K)

Type:

float

property Gamma#

transition natural linewidth (rad/s)

Type:

float

property Isat#

transition saturation intensity (W/m^2)

Type:

float

property Isat_mW_per_cm2#

transition saturation intensity (mW/cm^2)

Type:

float

gen_info_string(**kwargs)[source]#

generates an info string

Returns:

info_string – a string with information on the atom

Return type:

str

gen_infostring_obj()[source]#

generates an InfoString object.

Returns:

an InfoString object

Return type:

InfoString

get_Doppler_temperature(detuning: float) float[source]#

Returns the Doppler temperature for a given laser detuning

Parameters:

detuning (float) – laser detuning, in Hz

Returns:

the Doppler temperature, in K

Return type:

float

abstractmethod 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_saturation_parameter(intensity: float, detuning: float) float[source]#

Returns the saturation parameter (for a two-level system)

Parameters:
  • intensity (float) – laser intensity in W/m^2

  • detuning (float) – laser detuning in rad/s

Returns:

s – the saturation parameter

Return type:

float

abstractmethod get_scattering_rate(intensity: float, mag_field: float, polarization: ndarray, 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 k#

transition wavenumber k = 2π / λ (m^-1)

Type:

float

print_info()[source]#

prints the atom infostring

property tag#

transition identifier

Type:

str

property wavelength#

transition vacuum wavelength (m)

Type:

float

class atomsmltr.atoms.transitions.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.transitions.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