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

#include <mps_initializers.h>

Inheritance diagram for basis_dm_mps_init< Matrix, SymmGroup >:
mps_initializer< Matrix, SymmGroup >

Public Member Functions

 basis_dm_mps_init (BaseParameters &params, std::vector< Index< SymmGroup > > const &phys_dims_, std::vector< int > const &site_type_)
 
void operator() (MPS< Matrix, SymmGroup > &mps)
 

Detailed Description

template<class Matrix, class SymmGroup>
class basis_dm_mps_init< Matrix, SymmGroup >

Definition at line 412 of file mps_initializers.h.

Constructor & Destructor Documentation

template<class Matrix , class SymmGroup >
basis_dm_mps_init< Matrix, SymmGroup >::basis_dm_mps_init ( BaseParameters params,
std::vector< Index< SymmGroup > > const &  phys_dims_,
std::vector< int > const &  site_type_ 
)
inline

Definition at line 415 of file mps_initializers.h.

418  : occupation(params["init_basis_state"].as<std::vector<int> >())
419  , phys_rho_dims(phys_dims_)
420  , site_type(site_type_)
421  { }

Member Function Documentation

template<class Matrix , class SymmGroup >
void basis_dm_mps_init< Matrix, SymmGroup >::operator() ( MPS< Matrix, SymmGroup > &  mps)
inlinevirtual

Implements mps_initializer< Matrix, SymmGroup >.

Definition at line 423 of file mps_initializers.h.

424  {
425  assert(occupation.size() == mps.length());
426  if (phys_rho_dims.size() != 1) throw std::runtime_error("basis_dm_mps_init only for unique site basis.");
427  if (phys_rho_dims[0].size() != 1) throw std::runtime_error("basis_dm_mps_init only for TrivialGroup.");
428  typedef typename SymmGroup::charge charge;
429  charge C = SymmGroup::IdentityCharge;
430 
431  using std::sqrt;
432  size_t N = sqrt(double(phys_rho_dims[0][0].second));
433 
434  std::vector<boost::tuple<charge, size_t> > state(mps.length());
435  for (int i=0; i<mps.length(); ++i)
436  state[i] = boost::make_tuple(C, occupation[i] + occupation[i]*N);
437  mps = state_mps<Matrix>(state, phys_rho_dims, site_type);
438  }
block_matrix< Matrix, SymmGroup > sqrt(block_matrix< Matrix, SymmGroup > m)
size_t length() const
Definition: mps.h:58

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