Skip to content

Controlled Bond Expansion: randomized SVD approach#438

Draft
lkdvos wants to merge 5 commits into
mainfrom
ld-cbe
Draft

Controlled Bond Expansion: randomized SVD approach#438
lkdvos wants to merge 5 commits into
mainfrom
ld-cbe

Conversation

@lkdvos

@lkdvos lkdvos commented Jun 19, 2026

Copy link
Copy Markdown
Member

This is a WIP implementation of a CBE-like expansion scheme based on randomized SVD.
The long story short is that instead of a full twosite (OptimalExpand) -based approach, we can sketch out this update to select the expansion directions.
Mainly I'm still struggling slightly with committing to an interface, and checking what goes where.
I'm somewhat convinced that the changebond! (as opposed to changebonds!) abstraction for doing a single expansion on a bond is probably good, but still struggling a bit to see if I want to default this into DMRG (and TDVP), or get a dedicated CBE_DMRG algorithm for it.
Interestingly, I think I've set it up in such a way that the various expansion schemes can be used interchangibly, so it is quite modular.

The main source of complexity/messiness is mostly that the FiniteMPS structs and environments are very untransparant about what they do, so trying to reuse functionality involves a lot of assumptions on which tensors exactly are where and which ones are used.
It would be nice to revisit that at some point, but I also just don't have the time to actually go ahead and do this...

Still to do:

  • Implement for TDVP
  • Clean up DMRG implementation
  • Verify interaction with symmetries and block selection / oversampling
  • Check this works for density matrices
  • correctly rebase with timeroutputs

@github-actions

Copy link
Copy Markdown
Contributor

Your PR requires formatting changes to meet the project's style guidelines.
Please consider running Runic (git runic main) to apply these changes.

Click here to view the suggested changes.
diff --git a/test/algorithms/groundstate.jl b/test/algorithms/groundstate.jl
index 05bb693..7719cf6 100644
--- a/test/algorithms/groundstate.jl
+++ b/test/algorithms/groundstate.jl
@@ -114,7 +114,7 @@ verbosity_conv = 1
     end
 
     @testset "CBEDMRG warmstart $(nameof(Exp))" for (Exp, kw) in
-            ((OptimalExpand, (;)), (SketchedExpand, (; oversampling = 4)))
+        ((OptimalExpand, (;)), (SketchedExpand, (; oversampling = 4)))
         # warmstart seeds the expansion with the two-site gradient (alters the state); the
         # ground-state search should still converge to the correct low-variance state
         Random.seed!(2025)

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

Successfully merging this pull request may close these issues.

1 participant