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.