Hi Miles,

I have some questions for DMRG in ITensor. Hope you could help.

What kind of optimization algorithm does it use, single-site or twosite?

PBC is difficult. Will the "Efficient matrix-product state method for periodic boundary conditions" be built in this Library?

Can it run in parallel?

I tried some simulation with DMRG. I get different numbers with different sweeps.maxm(). The code is:

`#include "itensor/all.h" using namespace itensor; int main() { int N = 32; auto sites = SpinOne(N); auto ampo = AutoMPO(sites); for(int j = 1; j < N; ++j) { ampo += 10.0,"S+",j,"S-",j+1; ampo += 10.0,"S-",j,"S+",j+1; ampo += "Sz*Sz",j; } ampo += 10.0,"S+",N,"S-",1; ampo += 10.0,"S-",N,"S+",1; ampo += "Sz*Sz",N; auto H = IQMPO(ampo); auto state = InitState(sites); for(int i = 1; i <= N; ++i) { if(i%2 == 1) state.set(i,"Up"); else state.set(i,"Dn"); } auto psi = IQMPS(state); auto sweeps = Sweeps(200); sweeps.maxm() = 20,40,100,100,200; sweeps.cutoff() = 1E-10; auto energy = dmrg(psi,H,sweeps,{"Quiet=",true}); return 0; }`

For this case, the vN Entropy at center bond converges at 1.834080476998. If I use "sweeps.maxm() = 20,40,60,80,100,120,140,160,180,200;", the vN Entropy at center bond converges at 1.834080201341. The difference is not big. But when I set "N=64", the two vN entropy become 2.059443246913 and 2.059446044498. It seems this difference will be bigger with larger N. Is this normal? Which one I should trust? Is there a rule to set "sweeps.maxm()"?

Many thanks.

Best regards,

Jin