Skip to content

Measurement in a large patch of PEPS and momentum space #396

Description

@Yue-Zhengyuan

This is motivated by the finite-T study of t-J model 2510.04756. There are two places that involves measuring in a large patch of an iPEPS:

  • Fig. 3, which measures h_num ⊗ S_exchange where h_num acts on (0, 0), and S_exchange acts on arbitrary NN or NNN bonds in a (2n+1) x (2n+1) window (n = 3 in this paper) around the origin. So the largest patch occurs during contraction is 4x4, where S_exchange acts on [(3, 2), (3, 3)]. When I naively try to use expectation_value, it seems to use a huge amount of memory for anything spanning beyond 2 rows and 2 columns (this paper use D = 18 and χ > 72, although with fZ2 x charge-U(1) x spin-U(1) symmetry). I doubt we can solve this by improving contraction order, since we already use @autoopt.

  • Fig. 13, which plots the Fourier transform of $T_{i-j} = \langle c^\dagger_{i\sigma} c_{j\sigma} \rangle$, i.e. the particle number distribution in momentum space $n_{k\sigma} = \langle c^\dagger_{k\sigma} c_{k\sigma} \rangle$. Assuming $T_{i-j}$ decays sufficiently fast, one can measure $T_{i-j}$ in a (2n+1) x (2n+1) window, with i at the origin. The largest patch we need to contract has size (n+1) x (n+1). (There may be more advanced approaches.)

So I suggest we implement an approximate way to contract a large patch of the iPEPS/iPEPO, which is relevant to #188 (comment) that @lkdvos and @leburgel may be most familiar with.

  • After we find the CTMRG environment, we use the CTM tensors to build boundary MPS for this finite patch (regarded as a finite PEPS/PEPO - maybe it's a chance for us to introduce FinitePEPS into the package?).
  • The boundary MPS is contracted with the patch with truncation, instead of done exactly (as we currently do).
  • The operator to be measured, if acting on multiple sites, is first converted to an MPO along a convenient path and acts on the ket state.
  • In the expectation_value function, we switch to this approximate contraction whenever the patch size is larger than 2 in both axis directions, and add a truncation algorithm as a keyword argument.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions