314 , tag_handler(
new table_type())
316 int Nmax = model[
"Nmax"];
317 double t = model[
"t"];
318 double U = model[
"U"];
319 double V = model[
"V"];
322 op_t create_op, destroy_op, count_op, interaction_op;
324 phys.
insert(std::make_pair(0, 1));
325 ident_op.insert_block(Matrix(1, 1, 1), 0, 0);
327 for (
int n=1; n<=Nmax; ++n)
329 phys.
insert(std::make_pair(n, 1));
331 ident_op.insert_block(Matrix(1, 1, 1), n, n);
333 count_op.insert_block(Matrix(1, 1, n), n, n);
335 interaction_op.insert_block(Matrix(1, 1, n*n-n), n, n);
338 create_op.insert_block(Matrix(1, 1,
std::sqrt(value_type(n))), n-1, n);
339 destroy_op.insert_block(Matrix(1, 1,
std::sqrt(value_type(n))), n, n-1);
347 #define REGISTER(op, kind) op = tag_handler->register_op(op ## _op, kind);
359 for (
int p=0; p<lat.
size(); ++p) {
364 term.push_back( boost::make_tuple(p, interaction) );
365 this->
terms_.push_back(term);
368 std::vector<int> neighs = lat.
forward(p);
369 for (
int n=0; n<neighs.size(); ++n) {
374 term.push_back( boost::make_tuple(p, create) );
375 term.push_back( boost::make_tuple(neighs[n], destroy) );
376 this->
terms_.push_back(term);
381 term.push_back( boost::make_tuple(p, destroy) );
382 term.push_back( boost::make_tuple(neighs[n], create) );
383 this->
terms_.push_back(term);
389 term.push_back( boost::make_tuple(p, count) );
390 term.push_back( boost::make_tuple(neighs[n], count) );
391 this->
terms_.push_back(term);
#define REGISTER(op, kind)
block_matrix< Matrix, SymmGroup > sqrt(block_matrix< Matrix, SymmGroup > m)
std::vector< pos_t > forward(pos_t site) const
std::size_t insert(std::pair< charge, std::size_t > const &x)