Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify vumps interface #66

Open
mtfishman opened this issue Jul 15, 2022 · 0 comments
Open

Simplify vumps interface #66

mtfishman opened this issue Jul 15, 2022 · 0 comments

Comments

@mtfishman
Copy link
Member

Currently you have to call vumps and subspace_expansion in separate function calls, for example:

for _ in 1:n_subspace_expansions
  ψ = subspace_expansion(ψ, H; maxdim=100, cutoff=1e-8)
  ψ = vumps(H, ψ; tol=1e-5, maxiter=20)
end

which performs subspace expansion n_subspace_expansions times, and for each bond dimension runs VUMPS to some level of convergence.

It would be better to hide the subspace expansion inside the vumps call, and use an interface closer to the keyword argument interface of ITensors.dmrg.

The closest interface would be something like:

maxdim = [10, 10, 10, 10, 20, 20, 20, 20, 50, 50, 50, 50, 100]
ψ = vumps(ψ, H; maxdim, cutoff=1e-8, maxiter=50, precision_error_tol=1e-5)

This would attempt to perform subspace expansion at each iteration, which automatically skips if the bond dimension is saturated.

We could rely on Julia functions to make it easier to specify more maxdims, for example:

niter_per_dim = 20
maxdims = [10, 20, 50, 100]
maxdim = [fill(maxdim_i,niter_per_dim) for maxdim_i in maxdims] 
ψ = vumps(ψ, H; maxdim, cutoff=1e-8, precision_error_tol=1e-5)

A disadvantage is that we probably want to provide a variety of subspace expansion techniques, but that could be specified with a different interface, like passing a function:

ψ = vumps(ψ, H; maxdim, cutoff=1e-8, precision_error_tol=1e-5, subspace_expansion=my_subspace_expansion)

@hershsingh @LHerviou

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant