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]
totsave[-1]
, or fromt0
totsave[-1]
ift0
is specified inoptions
. -
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. The default is solver-dependent, refer to the documentation of the chosen solver for more details.
-
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
.