Using the expand function with a 1-site TDVP

Hi everyone,
I had a query regarding the workflow for using the expand() function with the 1-site TDVP. My current idea is to just using the expand function on a product state till it reaches some Dmax and then initialize the tdvp function for the full evolution. But is it possible to pass the expand function into the tdvp arguments so that you can expand the MPS every 5 time steps or so?
The workaround I could think of was to use a for loop and evolve the state for every dt, but I remember reading somewhere on this discourse page that it involves recomputing the environment tensors and leads to a slowdown.

Another issue I had was the distribution of bond dimensions when using the expand function. It seems to create bond dimensions that peak at the center and decrease gradually towards the boundaries. Is there a way to ensure that the bond dimensions are uniform across a couple of sites in the bulk? This seems to be the default behaviour for the 2-site algorithm, and I wanted to replicate that in the expand function.

Any help is appreciated! Thanks!

Unfortunately, a drawback of the global subspace approach is that it modifies every MPS tensor when it is used, so that even if it was integrated inside of our TDVP code we would still have to “invalidate” all of the Hamiltonian environment tensors and the same loss of performance issue would occur. (Of course there may be some smarter way to integrate it with TDVP, but this is an area of open research.)

About the distribution of bond dimensions, it’s a little hard to know in advance what you’d get. In general, bond dimensions of MPS should decrease toward the edges just due to the trivial rank bound on rectangular matrices. But maybe you are talking about a more gradual bond dimension decrease throughout the bulk. Is there a reason this is important? Usually it’s ok if bond dimensions vary however an algorithm finds they should, as long as global accuracy is preserved.

Thanks for your reply
Ah, I had a suspicion this might be an issue after I posted this question :')
I suppose one would have to implement the CBE method to do this?

Yes, at the boundary, I would expect a trivial rank. I was thinking more along the lines of the bulk, say for a 60-site lattice, the bulk would be the 30 sites in the middle.
I seem to get very different behaviour for local expectation values in the 1-site and 2-site TDVP runs, and my first guess was that the distribution of bond dimensions results in lower accuracy for local observables. For particular parameter regimes, the spread of my local observables is quite large, so it might be better to have a more uniform distribution of bond dimensions.
Is it possible to force this behaviour?