Initialise Valence Bond Product State as Initial State

Hi,

How do I initialise a product of valence bond states in MPS (in Julia iTensor language), say

| \psi\rangle = \left( \frac{1}{2} (| \uparrow_1 \downarrow_2 \rangle - | \downarrow_1 \uparrow_2 \rangle) \right) \otimes \left( \frac{1}{2} (| \uparrow_3 \downarrow_4 \rangle - | \downarrow_3 \uparrow_4 \rangle) \right) \otimes \dots \otimes \left( \frac{1}{2} (| \uparrow_{2L-1} \downarrow_{2L} \rangle - | \downarrow_{2L-1} \uparrow_{2L} \rangle) \right)

for a spin chain of length 2L?

Best,
Brian.

One convenient way to do this is to use DMRG:

using ITensors

let
  N = 10
  s = siteinds("S=1/2",N)

  hterms = OpSum()
  for j=1:2:N
    hterms += "Sz",j,"Sz",j+1
    hterms += 1/2,"S+",j,"S-",j+1
    hterms += 1/2,"S-",j,"S+",j+1
  end
  H = MPO(hterms,s)

  energy, psi = dmrg(H,randomMPS(s); nsweeps=2, maxdim=2)

  @show inner(psi',H,psi)
  @show (3/4)*(N÷2)

  return
end

Another way would be to explicitly make each singlet state as a two-site tensor (for each bond), then use singular value decompositions (SVD) to split the tensors into an MPS.

2 Likes