Skip to content

dq.mepropagator

mepropagator(
    H: ArrayLike | TimeArray,
    jump_ops: list[ArrayLike | TimeArray],
    tsave: ArrayLike,
    *,
    solver: Solver = Expm(),
    gradient: Gradient | None = None,
    options: Options = Options()
) -> MEPropagatorResult

Compute the propagator of the Lindblad master equation.

This function computes the propagator \(\mathcal{U}(t)\) at time \(t\) of the Lindblad master equation (with \(\hbar=1\)) $$ \mathcal{U}(t) = \mathscr{T}\exp\left(\int_0^t\mathcal{L}(t')\dt'\right), $$ where \(\mathscr{T}\) is the time-ordering symbol and \(\mathcal{L}\) is the system's Liouvillian. The formula simplifies to \(\mathcal{U}(t)=e^{t\mathcal{L}}\) if the Liouvillian does not depend on time.

Warning

This function only supports constant or piecewise constant Hamiltonians and jump operators. Support for arbitrary time dependence will be added soon.

Defining a time-dependent Hamiltonian or jump operator

If the Hamiltonian or the jump operators depend on time, they can be converted to time-arrays using dq.pwc(), dq.modulated(), or dq.timecallable(). See the Time-dependent operators tutorial for more details.

Running multiple simulations concurrently

The Hamiltonian H and the jump operators jump_ops can be batched to compute multiple propagators concurrently. All other arguments are common to every batch. See the Batching simulations tutorial for more details.

Parameters

  • H (array-like or time-array of shape (...H, n, n)) –

    Hamiltonian.

  • jump_ops (list of array-like or time-array, each of shape (...Lk, n, n)) –

    List of jump operators.

  • tsave (array-like of shape (ntsave,)) –

    Times at which the propagators are saved. The equation is solved from tsave[0] to tsave[-1], or from t0 to tsave[-1] if t0 is specified in options.

  • solver –

    Solver for the integration. Defaults to dq.solver.Expm (explicit matrix exponentiation), which is the only supported solver for now.

  • gradient –

    Algorithm used to compute the gradient.

  • options –

    Generic options, see dq.Options.

Returns

dq.MEPropagatorResult object holding the result of the propagator computation. Use the attribute propagators to access saved quantities, more details in dq.MEPropagatorResult.