ALPS MPS Codes
Reference documentation.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Protected Attributes | List of all members
model_impl< Matrix, SymmGroup > Class Template Referenceabstract

#include <model.h>

Inheritance diagram for model_impl< Matrix, SymmGroup >:
ALPSModel< Matrix, SymmGroup >

Public Types

typedef boost::shared_ptr
< mps_initializer< Matrix,
SymmGroup > > 
initializer_ptr
 
typedef TagHandler< Matrix,
SymmGroup > 
table_type
 
typedef boost::shared_ptr
< table_type
table_ptr
 
typedef table_type::tag_type tag_type
 
typedef ::term_descriptor
< typename Matrix::value_type > 
term_descriptor
 
typedef std::vector
< term_descriptor
terms_type
 
typedef block_matrix< Matrix,
SymmGroup > 
op_t
 
typedef boost::ptr_vector
< measurement< Matrix,
SymmGroup > > 
measurements_type
 
typedef std::size_t size_t
 

Public Member Functions

virtual ~model_impl ()
 
virtual void update (BaseParameters const &p)=0
 
virtual Index< SymmGroup > const & phys_dim (size_t type) const =0
 
virtual op_t const & identity_matrix (size_t type) const
 
virtual tag_type identity_matrix_tag (size_t type) const =0
 
virtual op_t const & filling_matrix (size_t type) const
 
virtual tag_type filling_matrix_tag (size_t type) const =0
 
virtual SymmGroup::charge total_quantum_numbers (BaseParameters &parms) const =0
 
virtual terms_type const & hamiltonian_terms () const
 
virtual measurements_type measurements () const =0
 
virtual op_t const & get_operator (std::string const &name, size_t type) const
 
virtual tag_type get_operator_tag (std::string const &name, size_t type) const =0
 
virtual table_ptr operators_table () const =0
 
virtual initializer_ptr initializer (Lattice const &lat, BaseParameters &parms) const
 

Protected Attributes

terms_type terms_
 

Detailed Description

template<class Matrix, class SymmGroup>
class model_impl< Matrix, SymmGroup >

Definition at line 47 of file model.h.

Member Typedef Documentation

template<class Matrix, class SymmGroup>
typedef boost::shared_ptr<mps_initializer<Matrix, SymmGroup> > model_impl< Matrix, SymmGroup >::initializer_ptr

Definition at line 49 of file model.h.

template<class Matrix, class SymmGroup>
typedef boost::ptr_vector<measurement<Matrix, SymmGroup> > model_impl< Matrix, SymmGroup >::measurements_type

Definition at line 58 of file model.h.

template<class Matrix, class SymmGroup>
typedef block_matrix<Matrix, SymmGroup> model_impl< Matrix, SymmGroup >::op_t

Definition at line 57 of file model.h.

template<class Matrix, class SymmGroup>
typedef std::size_t model_impl< Matrix, SymmGroup >::size_t

Definition at line 60 of file model.h.

template<class Matrix, class SymmGroup>
typedef boost::shared_ptr<table_type> model_impl< Matrix, SymmGroup >::table_ptr

Definition at line 52 of file model.h.

template<class Matrix, class SymmGroup>
typedef TagHandler<Matrix, SymmGroup> model_impl< Matrix, SymmGroup >::table_type

Definition at line 51 of file model.h.

template<class Matrix, class SymmGroup>
typedef table_type::tag_type model_impl< Matrix, SymmGroup >::tag_type

Definition at line 53 of file model.h.

template<class Matrix, class SymmGroup>
typedef ::term_descriptor<typename Matrix::value_type> model_impl< Matrix, SymmGroup >::term_descriptor

Definition at line 55 of file model.h.

template<class Matrix, class SymmGroup>
typedef std::vector<term_descriptor> model_impl< Matrix, SymmGroup >::terms_type

Definition at line 56 of file model.h.

Constructor & Destructor Documentation

template<class Matrix, class SymmGroup>
virtual model_impl< Matrix, SymmGroup >::~model_impl ( )
inlinevirtual

Definition at line 62 of file model.h.

62 {}

Member Function Documentation

template<class Matrix, class SymmGroup>
virtual op_t const& model_impl< Matrix, SymmGroup >::filling_matrix ( size_t  type) const
inlinevirtual

Definition at line 69 of file model.h.

69 { return operators_table()->get_op( filling_matrix_tag(type) ); }
virtual table_ptr operators_table() const =0
virtual tag_type filling_matrix_tag(size_t type) const =0
template<class Matrix, class SymmGroup>
virtual tag_type model_impl< Matrix, SymmGroup >::filling_matrix_tag ( size_t  type) const
pure virtual
template<class Matrix, class SymmGroup>
virtual op_t const& model_impl< Matrix, SymmGroup >::get_operator ( std::string const &  name,
size_t  type 
) const
inlinevirtual

Definition at line 77 of file model.h.

77 { return operators_table()->get_op( get_operator_tag(name, type) ); }
virtual tag_type get_operator_tag(std::string const &name, size_t type) const =0
virtual table_ptr operators_table() const =0
template<class Matrix, class SymmGroup>
virtual tag_type model_impl< Matrix, SymmGroup >::get_operator_tag ( std::string const &  name,
size_t  type 
) const
pure virtual
template<class Matrix, class SymmGroup>
virtual terms_type const& model_impl< Matrix, SymmGroup >::hamiltonian_terms ( ) const
inlinevirtual

Definition at line 74 of file model.h.

74 { return terms_; }
terms_type terms_
Definition: model.h:85
template<class Matrix, class SymmGroup>
virtual op_t const& model_impl< Matrix, SymmGroup >::identity_matrix ( size_t  type) const
inlinevirtual

Definition at line 67 of file model.h.

67 { return operators_table()->get_op( identity_matrix_tag(type) ); }
virtual table_ptr operators_table() const =0
virtual tag_type identity_matrix_tag(size_t type) const =0
template<class Matrix, class SymmGroup>
virtual tag_type model_impl< Matrix, SymmGroup >::identity_matrix_tag ( size_t  type) const
pure virtual
template<class Matrix , class SymmGroup >
model_impl< Matrix, SymmGroup >::initializer_ptr model_impl< Matrix, SymmGroup >::initializer ( Lattice const &  lat,
BaseParameters parms 
) const
virtual

Reimplemented in ALPSModel< Matrix, SymmGroup >.

Definition at line 36 of file initializer_factory.h.

37 {
38  typename SymmGroup::charge initc = this->total_quantum_numbers(parms);
39 
40  int max_site_type = 0;
41  std::vector<int> site_types(lat.size(), 0);
42  for (int p = 0; p < lat.size(); ++p) {
43  site_types[p] = lat.get_prop<int>("type", p);
44  max_site_type = std::max(site_types[p], max_site_type);
45  }
46 
47  std::cout << "site_types: ";
48  std::copy(site_types.begin(), site_types.end(), std::ostream_iterator<int>(std::cout, " "));
49  std::cout << std::endl;
50 
51  std::vector<Index<SymmGroup> > site_bases(max_site_type+1);
52  for (int type = 0; type < site_bases.size(); ++type) {
53  site_bases[type] = this->phys_dim(type);
54  std::cout << "phys["<<type <<"]: " << site_bases[type] << std::endl;
55  }
56 
57  if (parms["init_state"] == "default")
58  return initializer_ptr(new default_mps_init<Matrix, SymmGroup>(parms, site_bases, initc, site_types));
59 
60  else if (parms["init_state"] == "const")
61  return initializer_ptr(new const_mps_init<Matrix, SymmGroup>(parms, site_bases, initc, site_types));
62 
63  else if (parms["init_state"] == "thin")
64  return initializer_ptr(new thin_mps_init<Matrix, SymmGroup>(parms, site_bases, initc, site_types));
65 
66  else if (parms["init_state"] == "thin_const")
67  return initializer_ptr(new thin_const_mps_init<Matrix, SymmGroup>(parms, site_bases, initc, site_types));
68 
69  else if (parms["init_state"] == "basis_state")
70  return initializer_ptr(new basis_mps_init<Matrix, SymmGroup>(parms, site_bases, site_types));
71 
72  else if (parms["init_state"] == "basis_state_generic")
73  return initializer_ptr(new basis_mps_init_generic<Matrix, SymmGroup>(parms, site_bases, initc, site_types));
74 
75  else if (parms["init_state"] == "coherent")
76  return initializer_ptr(new coherent_mps_init<Matrix, SymmGroup>(parms, site_bases, site_types));
77 
78  else if (parms["init_state"] == "basis_state_dm")
79  return initializer_ptr(new basis_dm_mps_init<Matrix, SymmGroup>(parms, site_bases, site_types));
80 
81  else if (parms["init_state"] == "coherent_dm")
82  return initializer_ptr(new coherent_dm_mps_init<Matrix, SymmGroup>(parms, site_bases, site_types));
83 
84  else {
85  throw std::runtime_error("Don't know this initial state.");
86  return initializer_ptr();
87  }
88 
89 }
virtual SymmGroup::charge total_quantum_numbers(BaseParameters &parms) const =0
virtual Index< SymmGroup > const & phys_dim(size_t type) const =0
boost::shared_ptr< mps_initializer< Matrix, SymmGroup > > initializer_ptr
Definition: model.h:49
template<class Matrix, class SymmGroup>
virtual measurements_type model_impl< Matrix, SymmGroup >::measurements ( ) const
pure virtual
template<class Matrix, class SymmGroup>
virtual table_ptr model_impl< Matrix, SymmGroup >::operators_table ( ) const
pure virtual
template<class Matrix, class SymmGroup>
virtual Index<SymmGroup> const& model_impl< Matrix, SymmGroup >::phys_dim ( size_t  type) const
pure virtual
template<class Matrix, class SymmGroup>
virtual SymmGroup::charge model_impl< Matrix, SymmGroup >::total_quantum_numbers ( BaseParameters parms) const
pure virtual
template<class Matrix, class SymmGroup>
virtual void model_impl< Matrix, SymmGroup >::update ( BaseParameters const &  p)
pure virtual

Member Data Documentation

template<class Matrix, class SymmGroup>
terms_type model_impl< Matrix, SymmGroup >::terms_
protected

Definition at line 85 of file model.h.


The documentation for this class was generated from the following files: