1#ifndef VANILLA_VUMPS_TRANSFERMATRIXQ
2#define VANILLA_VUMPS_TRANSFERMATRIXQ
6template<
typename Symmetry,
typename Scalar>
12 const vector<vector<
Biped<Symmetry,Matrix<Scalar,Dynamic,Dynamic> > > > &Abra_input,
13 const vector<vector<
Biped<Symmetry,Matrix<Scalar,Dynamic,Dynamic> > > > &Aket_input,
15 const typename Symmetry::qType& Qtot = Symmetry::qvacuum())
26 vector<vector<Biped<Symmetry,Matrix<Scalar,Dynamic,Dynamic> > > >
Abra;
27 vector<vector<Biped<Symmetry,Matrix<Scalar,Dynamic,Dynamic> > > >
Aket;
30 vector<vector<qarray<Symmetry::Nq> > >
qloc;
33template<
typename Symmetry,
typename Scalar1,
typename Scalar2>
37 size_t Lcell = H.
qloc.size();
46 for (
int l=Lcell-1; l>=0; --l)
60 for (
size_t l=0; l<Lcell; ++l)
71 assert(1==0 and
"Unknown VMPS::DIRECTION::OPTION in TransferMatrixQ!");
77template<
typename Symmetry,
typename Scalar1,
typename Scalar2>
85template<
typename Symmetry,
typename Scalar>
size_t dim(const TransferMatrixQ< Symmetry, Scalar > &H)
void HxV(const TransferMatrixQ< Symmetry, Scalar1 > &H, const MpoTransferVector< Symmetry, Scalar2 > &Vin, MpoTransferVector< Symmetry, Scalar2 > &Vout)
const std::vector< std::vector< std::vector< Biped< Symmetry, MatrixType > > > > & W_at(const std::size_t loc) const
const std::vector< std::vector< qType > > & opBasis() const
Mpo< Symmetry, Scalar > Identity() const
void contract_R(const Tripod< Symmetry, MatrixType2 > &Rold, const vector< Biped< Symmetry, MatrixType > > &Abra, const vector< vector< vector< Biped< Symmetry, MpoMatrixType > > > > &W, const vector< Biped< Symmetry, MatrixType > > &Aket, const vector< qarray< Symmetry::Nq > > &qloc, const vector< qarray< Symmetry::Nq > > &qOp, Tripod< Symmetry, MatrixType2 > &Rnew, bool RANDOMIZE=false, tuple< CONTRACT_LR_MODE, size_t > MODE_input=make_pair(FULL, 0), const std::unordered_map< pair< qarray< Symmetry::Nq >, size_t >, size_t > &basis_order_map={})
void contract_L(const Tripod< Symmetry, MatrixType2 > &Lold, const vector< Biped< Symmetry, MatrixType > > &Abra, const vector< vector< vector< Biped< Symmetry, MpoMatrixType > > > > &W, const vector< Biped< Symmetry, MatrixType > > &Aket, const vector< qarray< Symmetry::Nq > > &qloc, const vector< qarray< Symmetry::Nq > > &qOp, Tripod< Symmetry, MatrixType2 > &Lnew, bool RANDOMIZE=false, tuple< CONTRACT_LR_MODE, size_t > MODE_input=make_pair(FULL, 0), const std::unordered_map< pair< qarray< Symmetry::Nq >, size_t >, size_t > &basis_order_map={})
Tripod< Symmetry, Matrix< Scalar, Dynamic, Dynamic > > data
qType mid(size_t q) const
Mpo< Symmetry, Scalar > Id
vector< vector< qarray< Symmetry::Nq > > > qloc
VMPS::DIRECTION::OPTION DIR
vector< vector< Biped< Symmetry, Matrix< Scalar, Dynamic, Dynamic > > > > Abra
TransferMatrixQ(VMPS::DIRECTION::OPTION DIR_input, const vector< vector< Biped< Symmetry, Matrix< Scalar, Dynamic, Dynamic > > > > &Abra_input, const vector< vector< Biped< Symmetry, Matrix< Scalar, Dynamic, Dynamic > > > > &Aket_input, const vector< vector< qarray< Symmetry::Nq > > > &qloc_input, const typename Symmetry::qType &Qtot=Symmetry::qvacuum())
vector< vector< Biped< Symmetry, Matrix< Scalar, Dynamic, Dynamic > > > > Aket