28 #ifndef MAQUIS_DMRG_MODEL_MEAS_PREPARE_HPP
29 #define MAQUIS_DMRG_MODEL_MEAS_PREPARE_HPP
34 namespace meas_prepare {
36 template<
class Matrix,
class SymmGroup>
37 std::map<std::string, MPO<Matrix,SymmGroup> >
43 std::map<std::string, MPO<Matrix,SymmGroup> > mpos;
45 for (std::size_t p = 0; p < lat.
size(); ++p)
47 if (ops.size() == 1) {
48 int type = lat.
get_prop<
int>(
"type", p);
49 if (ops[0].first[type].n_blocks() > 0) {
52 term.
operators.push_back( std::make_pair(p, ops[0].first[type]) );
58 std::vector<Lattice::pos_t> neighs = lat.
forward(p);
59 for (
typename std::vector<Lattice::pos_t>::const_iterator hopto = neighs.begin();
60 hopto != neighs.end();
63 int type1 = lat.
get_prop<
int>(
"type", p);
64 int type2 = lat.
get_prop<
int>(
"type", *hopto);
65 if (ops[0].first[type1].n_blocks() > 0 && ops[1].first[type2].n_blocks() > 0) {
68 term.
operators.push_back( std::make_pair(p, ops[0].first[type1]) );
69 term.
operators.push_back( std::make_pair(*hopto, ops[1].first[type2]) );
83 template<
class Matrix,
class SymmGroup>
92 for (std::size_t p = 0; p < lat.
size(); ++p)
95 term.
operators.push_back( std::make_pair(p, ops[0].first[lat.
get_prop<
int>(
"type", p)]) );
96 if (ops.size() == 1) {
100 std::vector<Lattice::pos_t> neighs = lat.
forward(p);
101 for (
typename std::vector<Lattice::pos_t>::const_iterator hopto = neighs.begin();
102 hopto != neighs.end();
106 term2.
operators.push_back( std::make_pair(*hopto, ops[1].first[lat.
get_prop<
int>(
"type", p)]) );
include all MPO generator
definition of Lattice base class
std::map< std::string, MPO< Matrix, SymmGroup > > local(const Lattice &lat, std::vector< block_matrix< Matrix, SymmGroup > > const &identities, std::vector< block_matrix< Matrix, SymmGroup > > const &fillings, std::vector< std::pair< std::vector< block_matrix< Matrix, SymmGroup > >, bool > > const &ops)
MPO< Matrix, SymmGroup > average(const Lattice &lat, std::vector< block_matrix< Matrix, SymmGroup > > const &identities, std::vector< block_matrix< Matrix, SymmGroup > > const &fillings, std::vector< std::pair< std::vector< block_matrix< Matrix, SymmGroup > >, bool > > const &ops)
T get_prop(std::string property, pos_t site) const
std::vector< op_pair_t > operators
void add_term(Operator_Term< Matrix, SymmGroup > const &term)
std::vector< pos_t > forward(pos_t site) const
MPO< Matrix, SymmGroup > create_mpo()