Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
gaussiansystem.h
Go to the documentation of this file.
1 #ifndef GAUSSIANSYSTEM_H
2 #define GAUSSIANSYSTEM_H
3 
11 
12 class Vector3;
13 
15 {
16 public:
18 
19  // ElectronSystem interface
20 public:
21  virtual double coupledIntegral(int p, int q, int r, int s);
22  virtual double uncoupledIntegral(int p, int q);
23  virtual double overlapIntegral(int p, int q);
24  virtual uint nBasisFunctions();
25  virtual uint nParticles();
26  virtual double additionalEnergyTerms();
27 
28 // double particleDensity(double x, double y, double z);
29  double corePotential(const Vector3 &position);
30  double electronDensity(const mat &C, const Vector3 &position) const;
31  rowvec orbitalDensities(const mat &C, const Vector3 &position) const;
32  void addCore(const GaussianCore& core);
33 // double orbitalDensity(uint orbital, const mat &C, double x, double y, double z) const;
34  double electronPotential(const mat &C, const Vector3 position);
35  double electronPotential(uint p, uint q, const Vector3 &position);
36  double electrostaticPotential(const Vector3 &position);
37  double electrostaticPotential(const mat &C, const Vector3 &position);
38 protected:
39  void setAngularMomentumMax(int angularMomentumMax);
40 private:
41  uint m_nParticles;
42  uint m_nBasisFunctions;
43  int m_angularMomentumMax;
44 // vector<double> m_coreCharges;
45 
46  vector<GaussianCore> m_cores;
47  vector<GaussianContractedOrbital> m_basisFunctions;
48 // vector<Vector3> m_corePositions;
49  GaussianOverlapIntegral m_overlapIntegral;
50  GaussianKineticIntegral m_kineticIntegral;
51  GaussianColoumbAttractionIntegral m_coulombIntegral;
52  GaussianElectronInteractionIntegral m_electronInteractionIntegral;
53 };
54 
55 #endif // GAUSSIANSYSTEM_H