qdk_chemistry.algorithms.propagator.magnus_propagator module
Time-averaged propagator with Magnus expansion.
Computes the effective (time-independent) Hamiltonian for a time interval \([t_1, t_2]\) via the Magnus expansion of the time-ordered propagator. With \(A(t) = -\mathrm{i}H(t)\), the evolution is \(U(t_2, t_1) = \exp(\Omega(t_2, t_1))\), where
is a series of nested time integrals of \(A(t)\). The leading (order-1) term is
while higher orders add nested-commutator corrections, e.g.
and in general the \(\Omega_n\) follow the recursion
where \(B_k\) are Bernoulli numbers.
Implementation status
Only the leading-order (order-1) term is currently implemented, and only
for
DrivenContainer
Hamiltonians of the form \(H(t) = H_0 + f(t)\,H_1\). Requesting an
order greater than 1, or passing any other container type, raises
NotImplementedError.
Accuracy
For sufficiently smooth \(H(t)\), truncation after \(\Omega_1\) has \(O(\delta t^3)\) local error and therefore second-order global accuracy over a fixed evolution interval.
- class qdk_chemistry.algorithms.propagator.magnus_propagator.MagnusPropagator[source]
Bases:
PropagatorMagnus propagator for time-dependent Hamiltonian simulation.
Evaluates the effective Hamiltonian for an interval \([t_1, t_2]\) via the Magnus expansion. Currently only the leading-order (order 1, time averaging) term is implemented, and only for
DrivenContainerHamiltonians \(H(t) = H_0 + f(t)\,H_1\), for which the drive integral reduces to a scalar quadrature and\[H_\text{eff} = H_0 + \bar f\,H_1, \qquad \bar f = \frac{1}{\delta t}\int_{t_1}^{t_2} f(t')\,\mathrm{d}t'.\]Since \(\Omega_1 = -\mathrm{i}\int_{t_1}^{t_2}H(t')\,\mathrm{d}t'\), the propagator returns the Hermitian effective Hamiltonian \(H_\text{eff} = \mathrm{i}\Omega_1 / \delta t\). A time-stepping integrator then applies \(\exp(-\mathrm{i}\,\delta t\,H_\text{eff}) = \exp(\Omega_1)\), where \(\delta t = t_2 - t_1\). For sufficiently smooth \(H(t)\), this has \(O(\delta t^3)\) local error and second-order global accuracy over a fixed evolution interval.
Requesting an
ordergreater than 1, or passing any other container type, raisesNotImplementedError.
- class qdk_chemistry.algorithms.propagator.magnus_propagator.MagnusPropagatorSettings[source]
Bases:
SettingsSettings for the Magnus propagator.
- order
Magnus expansion order (default = 1). Only the leading-order term (order 1, time averaging) is currently implemented; any larger value raises
NotImplementedErrorwhen the propagator runs.- Type: