DOCI-Exact  1.0
DOCIHamtilonian.h
Go to the documentation of this file.
1 #ifndef DOCI_HAMILTONIAN_H
2 #define DOCI_HAMILTONIAN_H
3 
4 #include <vector>
5 #include <memory>
6 
7 #include "Permutation.h"
8 #include "Molecule.h"
9 #include "SparseMatrix_CRS.h"
10 
11 namespace doci {
12 
19 {
20  public:
21  DOCIHamiltonian(const Permutation &,const Molecule &);
22 
23  DOCIHamiltonian(const Molecule &);
24 
26 
28 
29  DOCIHamiltonian(DOCIHamiltonian &&) = default;
30 
31  virtual ~DOCIHamiltonian() = default;
32 
34 
36 
37  Molecule const & getMolecule() const;
38 
40 
41  Permutation const & getPermutation() const;
42 
43  unsigned int getdim() const;
44 
45  void Build();
46 
47  std::pair< std::vector<double>,helpers::matrix > DiagonalizeFull() const;
48 
49  std::pair< double,std::vector<double> > Diagonalize() const;
50 
51  double CalcEnergy() const;
52 
53  std::vector<double> CalcEnergy(int) const;
54 
55  static unsigned int CountBits(mybitset);
56 
57  static int CalcSign(unsigned int i,unsigned int j, const mybitset a);
58 
59  void SaveToFile(std::string) const;
60 
61  void ReadFromFile(std::string);
62  private:
63 
64  void Diagonalize_arpack(double &energy, std::vector<double> &eigv, bool eigvec) const;
65 
66  void Build_iter(Permutation &, helpers::SparseMatrix_CRS &,unsigned long long, unsigned long long, Molecule &);
67 
68  std::unique_ptr<Permutation> permutations;
69 
70  std::unique_ptr<Molecule> molecule;
71 
72  std::unique_ptr<helpers::SparseMatrix_CRS> mat;
73 };
74 
75 }
76 
77 #endif /* DOCI_HAMILTONIAN_H */
78 
79 /* vim: set ts=3 sw=3 expandtab :*/
std::pair< double, std::vector< double > > Diagonalize() const
static int CalcSign(unsigned int i, unsigned int j, const mybitset a)
void ReadFromFile(std::string)
DOCIHamiltonian(const Permutation &, const Molecule &)
Molecule const & getMolecule() const
static unsigned int CountBits(mybitset)
void SaveToFile(std::string) const
DOCIHamiltonian & operator=(const DOCIHamiltonian &)
double CalcEnergy() const
std::pair< std::vector< double >, helpers::matrix > DiagonalizeFull() const
unsigned int getdim() const
Permutation const & getPermutation() const
virtual ~DOCIHamiltonian()=default