spectral
Spectral analysis of MBSolve results.
- maxwellbloch.spectral.absorption(mb_solve: MBSolve, field_idx: int, z_idx: int = -1, *, window: str | None = None) np.ndarray[source]
Field absorption in the frequency domain.
- Parameters:
mb_solve – An MBSolve object.
field_idx – Field to return spectrum of.
z_idx – z step at which to return absorption.
window – Optional SciPy window name passed to
rabi_freq().
- Returns:
Array[num_freq_points] of absorption values.
Note
In the linear regime this is the imaginary part of the linear susceptibility (with a factor k/2). See TP Ogden thesis Eqn (2.58)
- maxwellbloch.spectral.absorption_two_linear_known(freq_list: ndarray, interaction_strength: float, decay_rate: float) ndarray[source]
The absorption is half the imaginary part of the susecptibility.
- maxwellbloch.spectral.dispersion(mb_solve: MBSolve, field_idx: int, z_idx: int = -1, *, window: str | None = None) np.ndarray[source]
Field dispersion in the frequency domain.
- Parameters:
mb_solve – An MBSolve object.
field_idx – Field to return spectrum of.
z_idx – z step at which to return absorption.
window – Optional SciPy window name passed to
rabi_freq().
Note
In the linear regime this is the real part of the linear susceptibility.
See TP Ogden Thesis Eqn (2.59)
- maxwellbloch.spectral.dispersion_two_linear_known(freq_list: ndarray, interaction_strength: float, decay_rate: float) ndarray[source]
The dispersion is half the real part of the susecptibility.
- maxwellbloch.spectral.freq_list(mb_solve: MBSolve) np.ndarray[source]
- Fourier transform of the tlist into the frequency domain for
spectral analysis.
- Parameters:
mb_solve – An MBSolve object.
Returns – Array[num_time_points] of frequency values.
- maxwellbloch.spectral.rabi_freq(mb_solve: MBSolve, field_idx: int, *, window: str | None = None) np.ndarray[source]
Fourier transform of the field result of field index.
- Parameters:
mb_solve – An MBSolve object.
field_idx – Field to return FFT of.
window – Optional SciPy window name (e.g.
'hann','blackman') applied to the time axis before the FFT to reduce spectral leakage.None(default) applies no windowing and does not change the result.
- Returns:
Array[num_z_steps, num_t_steps] Field result in frequency domain.
- maxwellbloch.spectral.susceptibility_two_linear_known(freq_list: ndarray, interaction_strength: float, decay_rate: float) ndarray[source]
In the linear regime for a two-level system, the suecpetibility is known analytically. This is here for useful comparison, as good agreement between a simulated weak field in a two-level system tells us that the model is accurate in the linear regime, which gives us confidence in the scheme for going beyond the weak field limit.
Notes
See TP Ogden Thesis Eqn(2.61)
- maxwellbloch.spectral.voigt_two_linear_known(freq_list: ndarray, decay_rate: float, thermal_width: float) ndarray[source]
Returns the Voigt profile for a two-level system in the linear regime.
The Voigt profile is the convolution of a Lorentzian with a Gaussian, and describes the absorption lineshape for a thermal two-level system.
- Parameters:
freq_list – List of frequency detunings from resonance (in 2pi Gamma).
decay_rate – Spontaneous decay rate of the transition (in 2pi Gamma).
thermal_width – Width of the lineshape in the same units as decay rate (in 2pi Gamma).
Notes
See my thesis section 2.5.6 for more information.