Page 1 of 1

exponential of the sum of operators on different sites

Posted: 18 May 2023, 09:03
by nnit
Hello,
I'm trying to calculate the expectation value of the charge parity operator. I'm working with the Bose-Hubbard model and in 1D I'm able to correctly compute the expectation value of the operator
\( O(r) = \prod_{i=0}^{r-1} \exp(i\pi(n_{i}-1)) \)
as product of single site operators.
The problem arises when I try to move on a NLegLadder. I have to consider the following operator
\( O(r, N) = \prod _{i=0}^{r-1} \exp(i \pi \sum_{y=0}^{N-1} (n_{i,y}-1)) \)
I can not use just another product of single site operators \( \exp(i \pi (n_{i,y}-1)) \), it gives me the wrong result.
I have to consider first the sites of one rung m, and then multiply it by the following rung.
How can I construct the exponential of the sum of single site operators acting on different sites?
Thank you

Re: exponential of the sum of operators on different sites

Posted: 22 May 2023, 17:05
by Johannes
I'm confused what the problem is. Clearly, there's a mathematical identity
\(\exp(i \pi \sum_y( n_{x,y} - 1)) = \prod_y \exp(i \pi (n_{x,y} - 1))\), so
\(\prod_x \exp(i \pi \sum_y( n_{x,y} - 1)) = \prod_{x,y} \exp(i \pi (n_{x,y} - 1))\), which is a product of exponentials of onsite-operators.
How do you know that "it gives the wrong result"?
Maybe, you actually want to calculate something else, like the individual signs for given x? The sum of those?

Re: exponential of the sum of operators on different sites

Posted: 22 May 2023, 20:25
by nnit
Hi Johannes,
I think that the result is wrong by making a comparison with this article:
https://doi.org/10.1103/PhysRevLett.118.157602
In this case they are using GFMC to simulate a system of one or more chains and calculate the quantity described above.
In my case it seems to me that I continue to treat the system as if it were a single chain in which interaction is considered only between successive sites according to the snake order of the ladder. In reality I am not sure that their result is correct and mine is wrong, but their results are aligned with other works in literature.
I also tried to build a multi-site operator by multiplying the single site operators this way

Code: Select all

Ddens = psi.sites[0].get_op('dN') 
O_p_c = np_conserved.expm(1.j * np.pi * Ddens)
psi.sites[0].add_op('O_p_c', O_p_c, hc = False)
NewOpc = tenpy.networks.site.kron(O_p_c, O_p_c, group=False)
Is this method different in principle from simply applying the product of single-site operators?
Thank you very much

Re: exponential of the sum of operators on different sites

Posted: 23 May 2023, 13:41
by Johannes
Okay, it wasn't clear to me that r < Lx, such that this is a non-trivial operator (given charge conservation). In the paper, they use r = L/2, what did you try?

if you always start at x=0, it's actually just measuring the parity of particles to the left at a given bond (say in the center at L/2, but make sure that you choose a bond between ladder rungs). If you use particle number conservation in the MPS, you basically get it for free from the charge numbers and Schmidt weights:

Code: Select all

def parity_fluctuation(psi, r, Ly):
    assert psi.chinfo.names == ['N'] or psi.chinfo.names == ['N_parity']
    charge_values, probabilities = psi.probability_per_charge(bond=r*Ly)
    return np.sum(np.mod(charge_values[:, 0], 2) * probabilities)
If you want to double-check it explicitly, you can use expectation_value_term or expectation_value_multi_sites with exactly the local O_p_c you defined, assuming that you passed the correct filling to get the desired offset.