Now I have another problem... It seems that after DMRG I can't regauge the MPS by (say) psi.position(1).
Test Hamiltonian:
k = 0;
ampo += -2.*t1,"Sz",k+1;
ampo += -2.*t1,"Sz",k+2;
ampo += -2.*t1,"Sz",k+3;
ampo += -4.*t1,"Sx",k+1,"Sx",k+2;
ampo += -4.*t1,"Sx",k+2,"Sx",k+3;
ampo += -2.*h,"Sx",k+4;
ampo += -2.*h,"Sx",k+5;
ampo += -2.*h,"Sx",k+6;
ampo += -2.*h,"Sx",k+7;
ampo += -2.*h,"Sx",k+8;
ampo += -2.*h,"Sx",k+9;
initial state:
auto state = InitState(sites);
for (j = 1; j <= N; ++j)
{
if (j % 2 == 1)
state.set(j,"Up");
else
state.set(j,"Dn");
}
with head file:
SpinHalfSite(int n, Args const& args = Args::global())
{
if ((n % 9 >= 1) && (n % 9 <= 3))
s = IQIndex{nameint("S=1/2 ",n),
Index(nameint("Up ",n),1,Site),QN({1,2}),
Index(nameint("Dn ",n),1,Site),QN({-1,2})};
else
s = IQIndex{nameint("site ",n), Index("0",2,Site),QN({0,2})};
}
I think the problem might have something to do with the site setup, but can't find a way out. What do you think? Thanks!