Dear all,
I think that there is a bug in how mps_optim changes the bond dimension during successive sweeps. In the alps-2.2.b3-r7462-src/alps/applications/dmrg/mps/mps_optim/run_sim.cpp file, line 64 reads: double step = (int(parms["MAXSTATES"]) - init_bond) / (parms["nsweeps"]-1); It is supposed to compute the increment of the bond size at each step (starting from init_bond at the first sweep, reaching MAXSTATES at the final sweep). How, the division if performed using integers before being written to the variable step as a double. For example, if (int(parms["MAXSTATES"]) - init_bond) < (parms["nsweeps"]-1), step will be 0.0, presumably not the intended value.
A simple fix is to perform the division using double, something like: double step = ((double)(int(parms["MAXSTATES"]) - init_bond)) / (parms["nsweeps"]-1);
Best regards
Dominique Delande