Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
unrestrictedhartreefocksolver.h
Go to the documentation of this file.
1 #ifndef UNRESTRICTEDHARTREEFOCKSOLVER_H
2 #define UNRESTRICTEDHARTREEFOCKSOLVER_H
3 
5 #include <vector>
6 
8 {
9 public:
11 
12  virtual void setup();
13  virtual void advance();
14  virtual double energy();
15  virtual void solve();
16 
17  const mat &coeffcientMatrixUp() const;
18  const mat &coeffcientMatrixDown() const;
19 
20  const mat &densityMatrixUp() const;
21  const mat &densityMatrixDown() const;
22 
23  void setInitialCoefficientMatrices(const mat& up, const mat &down);
24 
25  bool isDiisEnabled() const;
26  void setDiisEnabled(bool isDiisEnabled);
27 
28  int diisSampleCount() const;
29  void setDiisSampleCount(int diisSampleCount);
30 
31  int diisStartingIteration() const;
32  void setDiisStartingIteration(int diisStartingIteration);
33 
34 private:
35  void resetCoefficientMatrices();
36  void setupFockMatrices();
37  void setupDensityMatrices();
38  void resetFockMatrices();
39  void randomizeCoefficientMatrices();
40  void calculateEnergy();
41  void performDIIS();
42 
43  mat m_fockMatrixUp;
44  mat m_fockMatrixDown;
45 
46  mat m_coefficientMatrixUp;
47  mat m_coefficientMatrixDown;
48 
49  mat m_initialCoefficientMatrixUp;
50  mat m_initialCoefficientMatrixDown;
51 
52  mat m_densityMatrixUp;
53  mat m_densityMatrixDown;
54 
55  vec m_fockEnergiesUp;
56  vec m_fockEnergiesDown;
57 
58  double m_energyUHF;
59  bool m_initialCoefficientMatricesSetManually;
60 
61  int m_diisSampleCount;
62  int m_diisStartingIteration;
63 
64  std::vector<mat> m_errorsU, m_fockMatricesU;
65  std::vector<mat> m_errorsD, m_fockMatricesD;
66 
67  bool m_isDiisEnabled;
68 };
69 
70 #endif // UNRESTRICTEDHARTREEFOCKSOLVER_H