Initialising MPS for qudit systems

Hello,

I am new to using iTensor and I am looking to perform the Trotterised time-evolution for a system of qudits which I currently initialise in the following way

N = 10
sites = siteinds("Qudit",N; conserve_number = true )
Psi = MPS(sites)

I wish to have a lattice of qudits which are connected to each other by a nearest neighbour hopping term. To do so, I want to start the lattice off in some initial state and then time evolve the system. I have been looking at the tutorials for time evolution of an MPS, however they are only for spin 1/2 particles, and the initial state prep seems straightforward.

Is there a way that I can initialise the MPS such that each qudit has some vector of amplitudes defining its Fock amplitudes? Once I have done that, is it then straightforward to apply nearest neighbour interactions?

Thank you for your help!

Simon

Hi @simonwilliams,
since this is your fist post, welcome in the community.

I’m gonna talk about bosons since we are talking about Fock space, but it is actually equivalent to qudits, this is because for computational reasons when working with bosons you must limit the local hilbert space (that can be infinite in principle), at that point there is a one to one correspondence between a d dimension qudit and a boson with maximum occupation number d-1.

The syntax to create a bosonic initial state with a maximum of 3 bosons per sit, we can create a state with that has 0 bosons on odd sites, and 2 bosons on even sites like this:

chain_length=10
sites = siteinds("Boson",chain_length;dim=4)
psi=MPS(sites,i->isodd(i) ? "0" : "2")

let me know if this answers your question