New release: v0.7.1.

## Initial product states

How do I use this algorithm? What does that parameter do?
steven_tao
Posts: 12
Joined: 11 Mar 2020, 01:07

### Initial product states

Dear TeNPy members:

I am asking how to set the initial product state for the DMRG simulation. For example, if we consider the following spin-1/2 1D Fermi-Hubbard chain:

$$H = \sum_{i, \sigma} c_{i, \sigma}^\dagger c_{i+1, \sigma} + c_{i+1, \sigma}^\dagger c_{i, \sigma} + \sum_i n_{i,\uparrow} n_{i,\downarrow}$$

If we consider half-filling, we can set the initial product state as

Code: Select all

product_state = ["up", "down"] * (M.lat.N_sites//2)
psi = MPS.from_product_state(M.lat.mps_sites(), product_state, bc=M.lat.bc_MPS)
1. But how we set the initial product state for the case of half-filling plus one spin up , i.e., $$N_{\uparrow} = L/2 + 1,~ N_{\downarrow} = L/2$$ ?

2. How we set the initial product state where each site is the superposition of spin up and spin down ?
Johannes
Posts: 188
Joined: 21 Jul 2018, 12:52
Location: UC Berkeley

### Re: Initial product states

1. Having one more up than down electron can only work if you have an odd number of sites.
Then you can do, e.g,

Code: Select all

initial_state = ["up", "down"] * (M.lat.N_sites // 2)
initial_state.append("up")

If you have an even number of sites and want two more up than down electrons,

Code: Select all

initial_state = ["up", "down"] * (M.lat.N_sites // 2)
initial_state = "up"  # for some index where there is a "down" before

For an infinite MPS, that is not possible, because you can only change the filling density,
and one extra electron in an infinite system is a vanishing density.
You can chose a larger unit cell size (e.g L=11) and have e.g. 6 up and 5 down spins.
2. If you want to use charge conservation, your state has to have a fixed particle number (of up spins), and this is not possible with a pure product state, since that wouldn't have a well defined number of up/down spins, see this discussion.
Initializing singlets with from_singlets should still work and have well defined particle numbers, but is probably not what you want...