Page 1 of 1

### Bipartitioning infinite MPS into 2 semi-infinite chains

Posted: 22 May 2020, 21:23
I'm trying to compute the Resta Polarization of a Fermionic SSH chain according to the method described in https://arxiv.org/pdf/1810.07043.pdf equations 13-15. In particular, I need to compute 'particle imbalance' by partitioning the system into 2 semi-infinite chains, and tracing out one of these to get components of the reduced density matrix. When I use the

Code: Select all

``get_rho_segment(, 1)``
function, I end up getting a trivial 2x2 matrix, and I'm pretty sure I'm not accurately cutting the system into semi-infinite chains.

Does anyone know how to bipartition an infinite MPS into 2 semi-infinite chains so that I can compute the Resta polarization?

Thank you in advance for the help ### Re: Bipartitioning infinite MPS into 2 semi-infinite chains

Posted: 23 May 2020, 01:54
There is a relevant post here!

viewtopic.php?f=7&t=95

### Re: Bipartitioning infinite MPS into 2 semi-infinite chains

Posted: 26 May 2020, 02:48
You want to cut the system into two halves, but get_rho_segment extracts the density matrix for the *few* sites you give as argument, so that's the wrong function.

The equations from the cited paper is really what's calculated by average_charge of the MPS (up to the prefactor constants, I believe), take a look at the (two-line) implementation of the function and probablity_per_charge.

Note that for infinite MPS this value is only defined modulo 1, i.e. `0.123` and `1.123` are equivalent: we need to subtract (somewhat) arbitrary integer numbers of charges to get a finite value.
However, adiabatically following the change of the value still makes sence, since then really you are interested in the *differences* of the charge values only - this is what's done in the paper.

The `examples/chern_insulators/chiral_pi_flux.py` make a similar "experiment" of flux pumping and following the value of the average charge, you can probably base your code on that example.