Hi Miles, it seems that the code can not compile. When I try "make" I get error massage which reads

idmrg3.cc: In function ‘int main(int, char**)’:

idmrg3.cc:40:72: error: no matching function for call to ‘idmrg(itensor::MPSt<itensor::ITensorT<itensor::Index> >&, itensor::MPO&, std::vector<itensor::MPSt<itensor::ITensorT<itensor::Index> > >&, itensor::Sweeps&, <brace-enclosed initializer list>)’

auto res1 = idmrg(psi1,H,wfs,sweeps,{"OutputLevel",1,"Weight",20.0});

^

In file included from /global/scratch/chengshu/itensor-Nov_23/itensor/all_mps.h:27:0,

from /global/scratch/chengshu/itensor-Nov_23/itensor/all.h:20,

from idmrg3.cc:1:

/global/scratch/chengshu/itensor-Nov_23/itensor/mps/idmrg.h:380:1: note: candidate: template<class Tensor> itensor::idmrgRVal<Tensor> itensor::idmrg(itensor::MPSt<T>&, const itensor::MPOt<Tensor>&, const itensor::Sweeps&, const itensor::Args&)

idmrg(MPSt<Tensor> & psi,

^

/global/scratch/chengshu/itensor-Nov_23/itensor/mps/idmrg.h:380:1: note: template argument deduction/substitution failed:

idmrg3.cc:40:72: note: cannot convert ‘wfs’ (type ‘std::vector<itensor::MPSt<itensor::ITensorT<itensor::Index> > >’) to type ‘const itensor::Sweeps&’

auto res1 = idmrg(psi1,H,wfs,sweeps,{"OutputLevel",1,"Weight",20.0});

^

In file included from /global/scratch/chengshu/itensor-Nov_23/itensor/all_mps.h:27:0,

from /global/scratch/chengshu/itensor-Nov_23/itensor/all.h:20,

from idmrg3.cc:1:

/global/scratch/chengshu/itensor-Nov_23/itensor/mps/idmrg.h:364:1: note: candidate: template<class Tensor> itensor::idmrgRVal<Tensor> itensor::idmrg(itensor::MPSt<T>&, const itensor::MPOt<Tensor>&, const itensor::Sweeps&, itensor::DMRGObserver<Tensor>&, const itensor::Args&)

idmrg(MPSt<Tensor> & psi,

^

/global/scratch/chengshu/itensor-Nov_23/itensor/mps/idmrg.h:364:1: note: template argument deduction/substitution failed:

idmrg3.cc:40:72: note: cannot convert ‘wfs’ (type ‘std::vector<itensor::MPSt<itensor::ITensorT<itensor::Index> > >’) to type ‘const itensor::Sweeps&’

auto res1 = idmrg(psi1,H,wfs,sweeps,{"OutputLevel",1,"Weight",20.0});

^

In file included from /global/scratch/chengshu/itensor-Nov_23/itensor/all_mps.h:27:0,

from /global/scratch/chengshu/itensor-Nov_23/itensor/all.h:20,

from idmrg3.cc:1:

/global/scratch/chengshu/itensor-Nov_23/itensor/mps/idmrg.h:391:1: note: candidate: template<class Tensor> itensor::idmrgRVal<Tensor> itensor::idmrg(itensor::MPSt<T>&, const itensor::MPOt<Tensor>&, const itensor::idmrgRVal<Tensor>&, const itensor::Sweeps&, const itensor::Args&)

idmrg(MPSt<Tensor> & psi,

^

/global/scratch/chengshu/itensor-Nov_23/itensor/mps/idmrg.h:391:1: note: template argument deduction/substitution failed:

idmrg3.cc:40:72: note: ‘std::vector<itensor::MPSt<itensor::ITensorT<itensor::Index> > >’ is not derived from ‘const itensor::idmrgRVal<Tensor>’

auto res1 = idmrg(psi1,H,wfs,sweeps,{"OutputLevel",1,"Weight",20.0});

^

In file included from /global/scratch/chengshu/itensor-Nov_23/itensor/all_mps.h:27:0,

from /global/scratch/chengshu/itensor-Nov_23/itensor/all.h:20,

from idmrg3.cc:1:

/global/scratch/chengshu/itensor-Nov_23/itensor/mps/idmrg.h:105:1: note: candidate: template<class Tensor> itensor::idmrgRVal<Tensor> itensor::idmrg(itensor::MPSt<T>&, itensor::MPOt<Tensor>, itensor::idmrgRVal<Tensor>, const itensor::Sweeps&, itensor::DMRGObserver<Tensor>&, itensor::Args)

idmrg(MPSt<Tensor> & psi,

^

/global/scratch/chengshu/itensor-Nov_23/itensor/mps/idmrg.h:105:1: note: template argument deduction/substitution failed:

idmrg3.cc:40:72: note: ‘std::vector<itensor::MPSt<itensor::ITensorT<itensor::Index> > >’ is not derived from ‘itensor::idmrgRVal<Tensor>’

auto res1 = idmrg(psi1,H,wfs,sweeps,{"OutputLevel",1,"Weight",20.0});

So I guess there is something wrong in the code.