Hello,
I am trying to construct a finite temperature 1/beta MPS state using the ancilla/purification method, namely in a chain of 2 N spin half, then build the initial state as the identity matrix
auto psi = MPS(sites);
for(int n = 1; n <= 2*N; n += 2)
{
auto s1 = sites(n);
auto s2 = sites(n+1);
auto wf = ITensor(s1,s2);
wf.set(s1(1),s2(2), ISqrt2);
wf.set(s1(2),s2(1), -ISqrt2);
ITensor D;
psi.Aref(n) = ITensor(s1);
psi.Aref(n+1) = ITensor(s2);
svd(wf,psi.Aref(n),D,psi.Aref(n+1));
psi.Aref(n) *= D;
}
and now apply exp[- beta/2 H] X 1 on psi. I want to time evolve with Trotter gates that only apply on the physical legs of the MPS. So I have built the gates
for(int b = 1; b <= N-1; ++b)
{
auto s1 = 2b+1,
s2 = 2b-1;
auto hterm = sites.op("Sz",s1)*sites.op("Sz",s2);
hterm += 0.5*sites.op("S+",s1)*sites.op("S-",s2);
hterm += 0.5*sites.op("S-",s1)*sites.op("S+",s2);
auto g = Gate(sites,s1,s2,Gate::tImag,tau/2.,hterm);
gatesPhys.push_back(g);
}
and with the reverse direction, but when I run
gateTEvol(gatesPhys,ttotal,tau,psi,{"Cutoff=",cutoff,"Verbose=",true});
I obtain the error
From line 84, file itdata/combiner.cc
No contracted indices in combiner-tensor product
No contracted indices in combiner-tensor product
Abort trap: 6
What am I doing wrong?
Thanks so much!
Jacopo.