Pass through more settings for environment and gauging sub-algorithms#436
Conversation
lkdvos
left a comment
There was a problem hiding this comment.
Looks like a great addition, thanks!
I had always wanted to have a better way of dealing with the environment algorithms, but I think the annoying part is the distinction between the linear solver for hamiltonians and the eigensolver for MPOs. There might be a case to be made to replace the NamedTuple arguments with actual KrylovKit algorithms from the start too, although I guess that requires slightly more work?
Co-authored-by: Lukas Devos <ldevos98@gmail.com>
We could put in some algorithm selection logic similar to MatrixAlgebraKit, but I guess this would best be handled in KrylovKit itself instead of handling it here. I don't think working with actual KrylovKit algorithms from the start would be that easy, in particular for the environment alggorithms. These are instantiated when calling e.g. I'm personally fine with the
|
762e45a to
cabe665
Compare
|
I slightly reworked the approach by making use of I might still have to debug slightly,, but I think the idea at least makes sense |
cabe665 to
ef845fc
Compare
b5f7973 to
a9bfd5f
Compare
|
I promise I know what I'm doing... |
lkdvos
left a comment
There was a problem hiding this comment.
@leburgel sorry for taking a while to get this fixed, somehow this was more painful than I wanted. I now should have figured everything out to be consistent, which might be slightly more verbose but at least it is clear what is supposed to go where.
If you can have a look, feel free to merge if you are happy with this!
In any case, this probably counts as a breaking change, which I will slot in with the other (minor) breaking changes in some of the other PRs that I want to finish this and next week, and then just release another minor version.
An attempt to add more control over the VUMPS/VOMPS subroutines.
Previously, only the
tolof the environment algorithm was ever actually passed through to the environment solver in the ends, and there was no way to switch the orthogonalization method from the default value (QR-based orthogonalization. Here I tried to address that passing all of the kwargs in theenvironment_algdown to the solver, and adding the orthogonalization algorithm to the gauging algorithm and passing that down accordingly.