rydiqule.doppler_utils.get_doppler_equations

rydiqule.doppler_utils.get_doppler_equations(base_eoms: ndarray, doppler_hamiltonians: ndarray, Vs: ndarray, ground_removed: bool = True) ndarray[source]

Returns the equations for each slice of the doppler profile.

A new axes corresponding to these slices are appended to the beginning. For example, if equations are of shape (m,m) and there are n_doppler doppler values being sampled, the return will be of shape (n_doppler, m, m).

Parameters:
  • base_eoms (numpy.ndarray) – Stacked square arrays representing the unshifted equations, i.e. the theoretical equations for an ensemble of atoms with zero momentum.

  • doppler_hamiltonians (numpy.ndarray) – Arrays of hamiltonians with only doppler shifts present. One for each spatial dimension needed. See get_doppler_shifts() for details.

  • Vs (numpy.ndarray) – Mesh of velocity classes to sample, with same spatial dimensions as dop_ham. See doppler_mesh() for details.

  • ground_removed (bool, optional) – Whether to remove the ground state from the equations. Default is True.

Returns:

An array of shape (*Vs.shape[1:], *base_eoms.shape) which is a, potentially multi-dimensional, stack of individual equations of shape (m, m). Each slice of this stack is an equation of shape (m, m) with the corresponding doppler shifts applied.

Return type:

numpy.ndarray

Note

Each doppler shift is equal to k_i*vP*det_i, in units of Mrad/s, where i denotes the einstein summation along the spatial dimensions. det is the normalized velocity class, with vP*det_i=v_i giving the velocity. vP is the most probable speed from the Maxwell-Boltzmann distribution: sqrt(2*kB*T/m). k_i is the k-vector of the field along the same axis as det_i. doppler_hamiltonians provides k_i*vP, Vs provides det_i.