can not get close results with fixed parameters at finite temperature

Hi there!

I am trying to do the calculation at finite temperature in grand canonical ensemble. But I always get different results in multiple calculations with same parameters,like

L=10;beta_max=2;U=4;miu1=8.58;miu2=8.58;V1=3;V2=3;

where I fiexd the chemical potentials equal to 8.58 and made the average particle number around 1. The Hamiltotian is

s = siteinds("Boson", L; conserve_number=false);

for j in 1:(L-1)
  if j % 2 == 0
  terms += "a†", j, "A", j + 1
  terms += "A", j, "a†", j + 1
  terms += - U / 2, "N", j, "N", j
  terms += + U / 2, "N", j
  terms += - V1, "N", j, "N", j + 1
  terms += + miu1, "N", j
  else
  terms += "a†", j, "A", j + 1
  terms += "A", j, "a†", j + 1
  terms += - U / 2, "N", j, "N", j
  terms += + U / 2, "N", j
  terms += - V2, "N", j, "N", j + 1
  terms += + miu2, "N", j  
  end
end

H = MPO(terms, s);

The particle number of three independent calculations

##first time
10.437768933586849 - 1.1657341758564144e-15im

##second time
10.072616377900275 - 2.220446049250313e-16im

##third time 
11.507510834594838 + 3.3306690738754696e-16im

I set

δτ=0.005,linkdims=10

How to make the results more convergent?
With regards
Yuanyu

What type of calculation are you doing? (E.g. there is more than one technique possible to study finite temperature systems with MPS.) Does any part of your calculation involve random numbers or random initial states?

Hi, miles

I am so sorry for my naive and ambiguous question. My method is “ancilla” and I set my initial state through randomMPS,

L=10;

s = siteinds("Boson", L ;dim=5, conserve_qns=false);

state = [ "1"  for n=1:L];

psio = randomMPS(s,state;linkdims=L-1);

with regards
Yuanyu

I see, that’s a helpful detail. So there shouldn’t be any reason to be using a random MPS in the ancillary algorithm. The initial state in that algorithm, when viewed as a wave function MPS, should be a product state of maximally entangled pairs (Bell pairs) between each pair of sites (physical and ancilla sites). So it is a specific state and not random.

Hi miles,

Is that mean , for METTS , I need to set initial state through RandomMPS?Like this:

psio = randomMPS(s,state;linkdims=L-1);

But the random initial state might lead to a difference in results. How can this difference be reduced?

Yuanyu

METTS is a different algorithm from ancilla, and unlike ancilla it does inherently involve randomness. So with METTS you will get slightly different results each time and that is expected, because it is a type of Monte Carlo algorithm.

However I would also not see a use of the randomMPS function in METTS either. In METTS, the initial state of the time evolution is a product state that is generated in a specific way from the previous METTS state.

Please carefully review the original literature on both ancilla and METTS to understand all of the steps involved and how the two algorithms differ from each other.

Also, it may be helpful to look at the finite temperature example codes that are in the examples/ folder of the ITensors.jl source code:
https://github.com/ITensor/ITensors.jl/tree/main/examples/finite_temperature

Those are both fully working codes that can handle rather general Hamiltonians, and you can see certain important details there like, for example, how the purification (or ancilla) code is a fully deterministic algorithm with no random steps in it.

Hi miles

Thanks for your patient reply. I am reviewing the original literature on METTS in these days.
Honestly, I used to try to write code based on examples. In the METTS, the initial state is set through RANDOMMPS. I mistakenly thought, at infinite temperature, initial state shoulld be random. I misunderstood that random corresponds to disorder.

with regards
Yuanyu

I mean in the examples of METTS

I see, thanks for explaining that. Here are two points that may be helpful then:

(1) the METTS algorithm does involve random states, as you know, but only the first random state is usually chosen in an arbitrary way, such as by calling a function like randomMPS. After that first state, all of the remaining states are produced by “collapsing” the previous entangled METTS into a product state. This collapse procedure can be done in ITensor by calling the function sample on an MPS.

(2) as mentioned above, the ancilla or purification algorithm does not involve any random steps or random states.

About the interpretation of randomness and disorder, that interpretation is indeed right in the case of METTS. At infinite temperature, the METTS algorithm just samples over random product states which are totally random (uniform distribution over product states).

For ancilla/purification, the picture of infinite temperature is totally different: there the purified state is a product of maximally entangled pairs (Bell pairs or singlets) between the physical and ancilla sites. As an operator, this corresponds to just the identity operator, which is the correct density matrix or mixed state at infinite temperature.