Skip to content


    rtol: float = 1e-06,
    atol: float = 1e-06,
    safety_factor: float = 0.9,
    min_factor: float = 0.2,
    max_factor: float = 5.0,
    max_steps: int = 100000,

Kvaerno's method of order 5 (adaptive step size and implicit ODE solver).

This method is suitable for stiff problems, typically those with Hamiltonians or Liouvillians that have eigenvalues spanning different orders of magnitudes. This is for instance the case with problems involving high-order polynomials of the bosonic annihilation and creation operators, in large dimensions.

This solver is implemented by the Diffrax library, see diffrax.Kvaerno5.


If you find that your simulation is slow or that the progress bar gets stuck, consider switching to double-precision with dq.set_precision('double'). See more details in The sharp bits 🔪 tutorial.


  • rtol

    Relative tolerance.

  • atol

    Absolute tolerance.

  • safety_factor

    Safety factor for adaptive step sizing.

  • min_factor

    Minimum factor for adaptive step sizing.

  • max_factor

    Maximum factor for adaptive step sizing.

  • max_steps

    Maximum number of steps.

Supported gradients

This solver supports differentiation with dq.gradient.Autograd and dq.gradient.CheckpointAutograd.