Table Of Contents

Previous topic

Local invariants (qit.invariant)

Next topic

Control sequences (qit.seq)

This Page

Born-Markov noise (qit.markov)

This module simulates the effects of a heat bath coupled to a quantum system, using the Born-Markov approximation.

The treatment in this module mostly follows Ref. [3].

Contents

ops(H, D) Jump operators for a Born-Markov master equation.
lindblad_ops(H, D, B) Lindblad operators for a Born-Markov master equation.
superop(H, D, B) Liouvillian superoperator for a Born-Markov master equation.
bath(type, omega0, T) Markovian heat bath.

bath methods

build_LUT() Build a lookup table for the S integral.
S_func(x) Spectral correlation tensor, imaginary part.
set_cutoff(type, lim) Set the spectral density cutoff.
corr(x) Bath spectral correlation tensor.
fit(delta, T1, T2) Qubit-bath coupling that reproduces given decoherence times.
class qit.markov.bath(type, omega0, T)

Markovian heat bath.

Currently only one type of bath is supported, a bosonic canonical ensemble at absolute temperature T, with a single-term coupling to the system. The bath spectral density is Ohmic with a cutoff:

J(\omega) = \hbar^2 \omega \mathrm{cut}(\omega) \Theta(\omega)

Two types of cutoffs are supported: exponential and sharp.

\mathrm{cut}_{\text{exp}}(\omega)   &= \exp(-\omega / \omega_c),\\
\mathrm{cut}_{\text{sharp}}(\omega) &= \Theta(\omega_c - \omega)

The effects of the bath on the system are contained in the complex spectral correlation tensor

\Gamma(\omega) = \frac{1}{2} \gamma(\omega) +i S(\omega)

where \gamma and S are real. Computing values of this tensor is the main purpose of this class.

\gamma(\omega) &= \frac{2 \pi}{\hbar^2} (J(\omega) -J(-\omega))(1 + n(\omega)),\\
S(\omega) &= \frac{1}{\hbar^2} \int_0^\infty \mathrm{d}\nu J(\nu) \frac{\omega \coth(\beta \hbar \nu/2) +\nu}{\omega^2 -\nu^2}.

where n(\omega) := 1/(e^{\beta \hbar \omega} - 1) is the Planc function and \beta = 1/(k_B T). Since \Gamma is pretty expensive to compute, we store the computed results into a lookup table which is used to interpolate nearby values.

Public data:

Data member Description
type Bath type. Currently only ‘ohmic’ is supported.
omega0 Energy scale (in Hz). \hbar \omega_0 is the unit of energy for all Hamiltonians related to this bath.
T Absolute temperature of the bath (in K).
scale Dimensionless temperature scaling parameter \hbar \omega_0 / (k_B T).
cut_type Spectral density cutoff type (string).
cut_limit Spectral density cutoff limit \omega_c / \omega_0.

Private data (set automatically):

Data member Description
cut_func Spectral density cutoff function.
j Spectral density profile. J(\omega_0 x)/\omega_0 = \hbar^2 j(x) \mathrm{cut\_func}(x) \Theta(x).
g_func Spectral correlation tensor, real part. \gamma(\omega_0 x) / \omega_0 = \mathrm{g\_func}(x) \mathrm{cut\_func}(x). For the imaginary part, see S_func.
g0 \lim_{\omega \to 0} \gamma(\omega).
s0 \lim_{\omega \to 0} S(\omega).
dH Lookup table.
gs_table Lookup table. (\gamma / S)(\omega_0 \text{dH[k]}) / \omega_0 = gs_table[k, (0/1)].
S_func(x)

Spectral correlation tensor, imaginary part.

\mathrm{S\_func}(x) = S(x \omega_0) / \omega_0
= \frac{1}{\hbar^2 \omega_0} P\int_0^\infty \mathrm{d}\nu J(\omega_0 \nu) \frac{x \coth(\nu \mathrm{scale}/2) +\nu}{x^2 -\nu^2}.

build_LUT()

Build a lookup table for the S integral. Unused.

corr(x)

Bath spectral correlation tensor.

g, s = corr(x)

Returns the bath spectral correlation tensor \Gamma evaluated at \omega_0 x:

\Gamma(\omega_0 x) / \omega_0 = \frac{1}{2} g +i s

fit(delta, T1, T2)

Qubit-bath coupling that reproduces given decoherence times.

H, D = fit(delta, T1, T2)

Returns the qubit Hamiltonian H and the qubit-bath coupling operator D that reproduce the decoherence times T1 and T2 (in units of 1/\omega_0) for a single-qubit system coupled to the bath. delta is the energy splitting for the qubit (in units of \hbar \omega_0).

The bath object is not modified.

set_cutoff(type, lim)

Set the spectral density cutoff.

qit.markov.ops(H, D)

Jump operators for a Born-Markov master equation.

dH, A = ops(H, D)

Builds the jump operators for a Hamiltonian operator H and a (Hermitian) interaction operator D.

Returns (dH, A), where dH is a list of the sorted unique nonnegative differences between eigenvalues of H, and A is a sequence of the corresponding jump operators: A_k(dH_i) = A[k][i].

Since A_k(-dH) = A_k^\dagger(dH), only the nonnegative dH:s and corresponding A:s are returned.

qit.markov.lindblad_ops(H, D, B)

Lindblad operators for a Born-Markov master equation.

L, H_LS = lindblad_ops(H, D, B)

Builds the Lindblad operators corresponding to a base Hamiltonian H and a (Hermitian) interaction operator D coupling the system to bath B.

Returns L = \{A_i / \omega_0 \}_i and H_{\text{LS}} / (\hbar \omega_0), where A_i are the Lindblad operators and H_{\text{LS}} is the Lamb shift.

B can also be a list of baths, in which case D has to be a list of the corresponding interaction operators.

qit.markov.superop(H, D, B)

Liouvillian superoperator for a Born-Markov master equation.

Builds the Liouvillian superoperator L corresponding to a base Hamiltonian H and a (Hermitian) interaction operator D coupling the system to bath B.

Returns L/\omega_0, which includes the system Hamiltonian, the Lamb shift, and the Lindblad dissipator.

B can also be a list of baths, in which case D has to be a list of the corresponding interaction operators.