Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
multihydrogen.h
Go to the documentation of this file.
1 #ifndef MULTIHYDROGEN_H
2 #define MULTIHYDROGEN_H
3 
5 
6 #include <armadillo>
7 #include <fstream>
8 
9 using namespace arma;
10 
12 {
13 public:
14  MultiHydrogen(mat nucleiPositions);
15  virtual ~MultiHydrogen();
16 
17  virtual double coupledIntegral(int p, int r, int q, int s);
18  virtual double kineticIntegral(int p, int q);
19  virtual double nuclearAttractionIntegral(int p, int q);
20  virtual double overlapIntegral(int p, int q);
21 
22  virtual uint nBasisFunctions();
23  virtual uint nParticles();
24 
25  mat R;
26 
27  vec alpha;
28 
29  // Constants to be precalculated
30  const double powPi5over2 = pow(M_PI, 5./2.);
31  double errorFunction(double arg);
32 
33  double additionalEnergyTerms();
34 private:
35  uint m_nNuclei;
36  uint m_nOrbitalsPerNuclei;
37 
38  // ElectronSystem interface
39 public:
40  double uncoupledIntegral(int p, int q);
41 };
42 
44  return m_nNuclei;
45 }
46 
48 {
49  return m_nNuclei * m_nOrbitalsPerNuclei;
50 }
51 
52 #endif // MULTIHYDROGEN_H