def vumps_params(checkpoint_every=500, gauge_via_svd=True, gradient_tol=1E-3,
                 max_iter=200):
    """
    Bundles parameters for the vumps solver itself.

    PARAMETERS
    ----------
    gradient_tol (float)   : Convergence is declared once the gradient norm is
                             at least this small.
    max_iter (int)         : VUMPS ends after this many iterations even if
                             unconverged.
    checkpoint_every (int) : Simulation data is pickled at this periodicity.
    out_directory (string) : Output is saved here. The directory is created
                             if it doesn't exist.
    gauge_via_svd (bool, True): With the Jax backend, toggles whether the gauge
                                match at the
                                end of each iteration is computed using
                                an SVD or the QDWH-based polar decomposition.
                                The former is typically faster on the CPU
                                or TPU, but the latter is much faster on the
                                GPU. With the NumPy backend, this
                                parameter has no effect and the SVD is always
                                used.

    RETURNS
    -------
    A dictionary storing each of these parameters.
    """

    return {"checkpoint_every": checkpoint_every,
            "gauge_via_svd": gauge_via_svd,
            "gradient_tol": gradient_tol, "max_iter": max_iter}