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

#include <symm_handler.hpp>

Public Types

typedef short I
 
typedef SymmGroup::charge charge_t
 
typedef std::size_t size_t
 
typedef std::pair< charge_t,
size_t
coord_t
 
typedef std::map< std::string,
int > 
qn_map_type
 

Public Member Functions

 symmetric_basis_descriptor ()
 
 symmetric_basis_descriptor (alps::SiteBasisDescriptor< I > const &b, qn_map_type const &all_conserved_qn)
 
size_t size () const
 
coord_t coords (size_t i) const
 
charge_t charge (size_t i) const
 
size_t block_size (size_t i) const
 
Index< SymmGroup > const & phys_dim () const
 

Detailed Description

template<class SymmGroup>
class symmetric_basis_descriptor< SymmGroup >

Definition at line 53 of file symm_handler.hpp.

Member Typedef Documentation

template<class SymmGroup >
typedef SymmGroup::charge symmetric_basis_descriptor< SymmGroup >::charge_t

Definition at line 56 of file symm_handler.hpp.

template<class SymmGroup >
typedef std::pair<charge_t, size_t> symmetric_basis_descriptor< SymmGroup >::coord_t

Definition at line 58 of file symm_handler.hpp.

template<class SymmGroup >
typedef short symmetric_basis_descriptor< SymmGroup >::I

Definition at line 55 of file symm_handler.hpp.

template<class SymmGroup >
typedef std::map<std::string, int> symmetric_basis_descriptor< SymmGroup >::qn_map_type

Definition at line 59 of file symm_handler.hpp.

template<class SymmGroup >
typedef std::size_t symmetric_basis_descriptor< SymmGroup >::size_t

Definition at line 57 of file symm_handler.hpp.

Constructor & Destructor Documentation

template<class SymmGroup >
symmetric_basis_descriptor< SymmGroup >::symmetric_basis_descriptor ( )
inline

Definition at line 61 of file symm_handler.hpp.

61 : numstates_(0) { }
template<class SymmGroup >
symmetric_basis_descriptor< SymmGroup >::symmetric_basis_descriptor ( alps::SiteBasisDescriptor< I > const &  b,
qn_map_type const &  all_conserved_qn 
)
inline

Definition at line 63 of file symm_handler.hpp.

64  {
65  alps::site_basis<I> states(b);
66 
67  numstates_ = states.size();
68  state_index_.resize(numstates_);
69  state_offset_.resize(numstates_);
70  std::vector<charge_t> state_charge(numstates_);
71 
72  // loop over states and create phys_
73  for (size_t i=0; i<states.size(); ++i) {
74  state_charge[i] = state_to_charge<SymmGroup>(states[i], b, all_conserved_qn);
75 
76  size_t ci = phys_.position(state_charge[i]);
77  if (ci < phys_.size()) phys_[ci].second += 1;
78  else ci = phys_.insert( std::make_pair(state_charge[i], 1) );
79 
80  state_offset_[i] = phys_[ci].second - 1;
81  }
82 
83  // cache mapping state -> phys
84  for (size_t i=0; i<states.size(); ++i)
85  state_index_[i] = phys_.position(state_charge[i]);
86  }

Member Function Documentation

template<class SymmGroup >
size_t symmetric_basis_descriptor< SymmGroup >::block_size ( size_t  i) const
inline

Definition at line 91 of file symm_handler.hpp.

91 { return phys_[state_index_[i]].second; }
template<class SymmGroup >
charge_t symmetric_basis_descriptor< SymmGroup >::charge ( size_t  i) const
inline

Definition at line 90 of file symm_handler.hpp.

90 { return phys_[state_index_[i]].first; }
template<class SymmGroup >
coord_t symmetric_basis_descriptor< SymmGroup >::coords ( size_t  i) const
inline

Definition at line 89 of file symm_handler.hpp.

89 { return coord_t(phys_[state_index_[i]].first, state_offset_[i]); }
std::pair< charge_t, size_t > coord_t
template<class SymmGroup >
Index<SymmGroup> const& symmetric_basis_descriptor< SymmGroup >::phys_dim ( ) const
inline

Definition at line 92 of file symm_handler.hpp.

92 { return phys_; }
template<class SymmGroup >
size_t symmetric_basis_descriptor< SymmGroup >::size ( ) const
inline

Definition at line 88 of file symm_handler.hpp.

88 { return numstates_; }

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