37 debug_constructor_printf(1);
39 if(this->
totalSpace().sysSize() == 0) {
return; }
40
41 Eigen::ArrayX<bool> calculated = Eigen::ArrayX<bool>::Constant(mbHSpace.dim(), false);
42 for(int state = 0; state != mbHSpace.dim(); ++state) {
43 if(calculated[state]) continue;
44 calculated[state] = true;
45
46 int reversed = mbHSpace.reverse(state);
47 if(reversed == state)
49 else
50 calculated[reversed] = true;
51 }
54 debug_print(
"mbHSpace.dim() = " << mbHSpace.dim() <<
", dim = " <<
dim
56
58 this->
basis().reserve(Eigen::VectorXi::Constant(
dim, 2));
60 calculated = Eigen::ArrayX<bool>::Constant(mbHSpace.dim(), false);
63 for(int state = 0; state != mbHSpace.dim(); ++state) {
64 if(calculated[state]) continue;
65 calculated[state] = true;
66
67 int reversed = mbHSpace.reverse(state);
69 else {
70 this->
basis().insert(state,
dim) = 1.0 / sqrt(2.0);
71 this->
basis().insert(reversed,
dim) = 1.0 / sqrt(2.0);
72 calculated[reversed] = true;
74 }
75 }
77 for(int j = 0; j != parityEigen.size(); ++j)
78 this->
basis().insert(parityEigen[j],
dim++) = 1;
79 }
80
81 debug_print(
"mbHSpace.dim() = " << mbHSpace.dim() <<
", dim = " <<
dim
82 << ", this->dim() = " << this->dim());
83 this->
basis().makeCompressed();
84 assert(
dim == this->
dim());
85 };
__host__ __device__ int dim() const
Definition HilbertSpace.hpp:34
SubSpace< ManyBodySpace, RealType > Base
Definition ParitySector.hpp:26
__host__ __device__ int parity() const
Definition ParitySector.hpp:99
int m_parity
Definition ParitySector.hpp:17
int m_NumParityEigens
Definition ParitySector.hpp:18
__host__ __device__ void resize(int rows, int cols, int reserved=1)
Definition MatrixUtils.cuh:353
__host__ __device__ Matrix_t & basis()
Definition HilbertSpace.hpp:668
__host__ __device__ TotalSpace const & totalSpace() const
Definition HilbertSpace.hpp:671
debug_print("# Determining GPU configuration.")