DOCI-Exact  1.0
Molecule.h
Go to the documentation of this file.
1 #ifndef MOLECULE_H
2 #define MOLECULE_H
3 
4 #include <string>
5 #include <memory>
6 
7 #include "helpers.h"
8 
9 namespace doci {
10 
15 class Molecule
16 {
17  public:
18 
19  virtual ~Molecule() = default;
20 
21  virtual Molecule* clone() const = 0;
22 
23  virtual Molecule* move() = 0;
24 
25  virtual double getT(int, int) const = 0;
26 
27  virtual double getV(int, int, int, int) const = 0;
28 
29  virtual double get_nucl_rep() const;
30 
31  virtual unsigned int get_n_sp() const;
32 
33  virtual unsigned int get_n_electrons() const;
34 
35  protected:
36 
38  unsigned int n_electrons;
39 
41  double nucl_rep;
42 
44  unsigned int n_sp;
45 };
46 
47 
55 class PSI_C1_Molecule: public Molecule
56 {
57  public:
58  PSI_C1_Molecule(std::string);
59 
61 
63 
65 
67 
68  PSI_C1_Molecule* clone() const;
69 
71 
72  double getT(int, int) const;
73 
74  double getV(int, int, int, int) const;
75 
76  void Print() const;
77 
78  double HF_Energy() const;
79 
80  private:
82  std::unique_ptr<helpers::matrix> OEI;
83 
85  std::unique_ptr<helpers::matrix> TEI;
86 };
87 
88 }
89 
90 #endif /* MOLECULE_H */
91 
92 /* vim: set ts=3 sw=3 expandtab :*/
virtual double get_nucl_rep() const
Definition: Molecule.cpp:16
virtual Molecule * clone() const =0
unsigned int n_electrons
number of electrons
Definition: Molecule.h:38
double getV(int, int, int, int) const
Definition: Molecule.cpp:210
double HF_Energy() const
Definition: Molecule.cpp:244
PSI_C1_Molecule(std::string)
Definition: Molecule.cpp:50
double nucl_rep
nuclear repulsion (const part to add to the energy)
Definition: Molecule.h:41
double getT(int, int) const
Definition: Molecule.cpp:194
void Print() const
Definition: Molecule.cpp:221
virtual unsigned int get_n_electrons() const
Definition: Molecule.cpp:32
virtual double getT(int, int) const =0
unsigned int n_sp
the size of the single particles space (without spin)
Definition: Molecule.h:44
PSI_C1_Molecule * move()
Definition: Molecule.cpp:182
virtual Molecule * move()=0
virtual double getV(int, int, int, int) const =0
virtual ~Molecule()=default
PSI_C1_Molecule * clone() const
Definition: Molecule.cpp:177
PSI_C1_Molecule & operator=(const PSI_C1_Molecule &)
Definition: Molecule.cpp:147
virtual unsigned int get_n_sp() const
Definition: Molecule.cpp:24