Using AutoMPO with toExpH

+1 vote

We have recently tried to do time evolution in the Bose Hubbard model as detailed in http://itensor.org/support/322/time-evolution-in-bose-hubbard?show=322#q322.

We wanted to do time evolution on a five particle superfluid ground state with a Mott Hamiltonian and see the revival of the condensate fraction.
However, we encountered an issue performing time evolution with toExpH.
At first we tried,

auto ampo2ops = AutoMPO(sites);
for (int i = 1; i <= N; ++i) {
ampo2ops += U/2.0,"N",i,"N-1", i;
}

auto expH = toExpH<IQTensor>(ampo2ops,tau*Cplx_i);


And defined the operators "N" and "N-1" accordingly. This did not work. The code runs, but we reach the Mott ground state and get stuck there. On the other hand,

for (int i = 1; i <= N; ++i) {
ampo1op += U/2.0,"N(N-1)",i;
}

auto expH = toExpH<IQTensor>(ampo1op,tau*Cplx_i);


with "N(N-1)" as just one single operator, works just fine. In addition,

for (int i = 1; i <= N; ++i) {
ampo2opagain += U/2.0,"N",i"N",i;
ampo2opagain += -U/2.0, "N",i;
}

auto expH = toExpH<IQTensor>(ampo2opagain,tau*Cplx_i);


didn't work either.

This leads us to believe that toExpH doesn't work for two-operator autompos. Is this a bug? Do you have any workaround for this?