32 #ifndef _chemistry_qc_mbptr12_moindexspace_h
33 #define _chemistry_qc_mbptr12_moindexspace_h
36 #include <util/ref/ref.h>
37 #include <util/state/statein.h>
38 #include <util/state/stateout.h>
39 #include <math/scmat/abstract.h>
40 #include <util/state/statein.h>
41 #include <chemistry/qc/basis/basis.h>
60 enum IndexOrder { symmetry = 0, energy = 1, undefined = 2 };
82 const vector<int>& offsets,
const vector<int>& nmopi,
83 IndexOrder moorder = symmetry,
92 const RefDiagSCMatrix& evals,
int nfzc,
int nfzv, IndexOrder moorder = energy);
108 const std::string name()
const;
118 vector<int> mosym()
const;
120 IndexOrder moorder()
const;
124 int full_rank()
const;
128 vector<int> nmo()
const;
130 vector<int> offsets()
const;
132 int to_full_space(
const int i)
const;
135 size_t memory_in_use()
const;
138 void print(std::ostream&o=ExEnv::out0())
const;
140 void print_summary(std::ostream& os)
const;
156 vector<int> offsets_;
157 vector<int> map_to_full_space_;
162 void check_mosym()
const;
165 void frozen_to_blockinfo(
const int nfzc,
const int nfzv,
const RefDiagSCMatrix& evals);
175 static void dquicksort(
double *item,
int *index,
int n);
176 static void dqs(
double *item,
int *index,
int left,
int right);