# How do I set an MPS bond dimension that is higher than needed?

I am working on an implementation of the 1-site TDVP algorithm. In this variant of the algorithm I need to choose bond dimensions for my initial state MPS beforehand, as the bond dimension can not be changed during runtime. If I start with a product state, this means that I need to start with an MPS with a bond dimension that is higher than needed to exactly store the state.
I already tried merging and decomposing adjacent site tensors of the initial MPS via an svd and passing a mindim parameter, but this only resulted in bonds of dimension 1. I presume this is the case because no higher bond dimension is needed to represent a product state.

Is there some way to force an MPS to have an unnecessarily high bond dimension?

``````using ITensors: inner, linkdims, randomMPS, siteinds
using LinearAlgebra: norm
s = siteinds("S=1/2", 4)
b = 0 * randomMPS(s; linkdims=3)
c = +(a, b; alg="directsum")
@show inner(a, b)
@show inner(a, c)
``````
``````(linkdims(a), norm(a)) = ([3, 3, 2], 1.0)
(linkdims(b), norm(b)) = ([3, 3, 2], 0.0)
(linkdims(c), norm(c)) = ([6, 6, 4], 0.9999999999999998)
inner(a, b) = 0.0
inner(a, c) = 0.9999999999999993
``````
1 Like

Hi Benjamin,
Please use Mattâ€™s solution above, which should give you exactly what you need. From the `inner` part at the end of the example code above, you can see that the expanded MPS is exactly the same state as your input state, just with a large bond dimension now.

In the future, we are planning to offer a â€śglobal subspace expansionâ€ť feature to make this more â€śpush buttonâ€ť for users like yourself.

Miles

1 Like