#include <mps_initializers.h>
template<class Matrix, class SymmGroup>
class basis_dm_mps_init< Matrix, SymmGroup >
Definition at line 412 of file mps_initializers.h.
template<class Matrix , class SymmGroup >
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_)
template<class Matrix , class SymmGroup >
Implements mps_initializer< Matrix, SymmGroup >.
Definition at line 423 of file mps_initializers.h.
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;
432 size_t N =
sqrt(
double(phys_rho_dims[0][0].second));
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);
block_matrix< Matrix, SymmGroup > sqrt(block_matrix< Matrix, SymmGroup > m)
The documentation for this class was generated from the following file: