Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
gaussiankineticintegral.cpp
Go to the documentation of this file.
2 
3 #include "math/vector3.h"
7 
9  m_overlapIntegral(angularMomentumMax + 2)
10 {
11 }
12 
13 void GaussianKineticIntegral::set(const Vector3& corePositionA, const Vector3& corePositionB,
14  const GaussianPrimitiveOrbital& primitiveA, const GaussianPrimitiveOrbital& primitiveB)
15 {
16  m_exponentB = primitiveB.exponent();
17  m_exponentSum = primitiveA.exponent() + primitiveB.exponent();
18  m_overlapIntegral.set(corePositionA, corePositionB, primitiveA, primitiveB, true);
19 }
20 
21 double GaussianKineticIntegral::kineticIntegral(int dim, int iA, int iB) {
22  double b = m_exponentB;
23  double S_iA_iBnn = m_overlapIntegral.overlapIntegral(dim, iA, iB + 2);
24  double S_iA_iB = m_overlapIntegral.overlapIntegral(dim, iA, iB);
25  double S_iA_iBpp;
26  if(iB - 2 >= 0) {
27  S_iA_iBpp= m_overlapIntegral.overlapIntegral(dim, iA, iB - 2);
28  } else {
29  S_iA_iBpp = 0;
30  }
31  return 4 * b * b * S_iA_iBnn - 2*b * (2*iB + 1) * S_iA_iB + iB * (iB - 1) * S_iA_iBpp;
32 }
33 
35  const GaussianPrimitiveOrbital& primitiveB) {
36  return kineticIntegral(primitiveA.xExponent(), primitiveA.yExponent(), primitiveA.zExponent(),
37  primitiveB.xExponent(), primitiveB.yExponent(), primitiveB.zExponent());
38 }
39 
40 double GaussianKineticIntegral::kineticIntegral(int iA, int jA, int kA, int iB, int jB, int kB) {
41  double T_iA_iB = kineticIntegral(0, iA, iB);
42  double T_jA_jB = kineticIntegral(1, jA, jB);
43  double T_kA_kB = kineticIntegral(2, kA, kB);
44 
45  double S_iA_iB = m_overlapIntegral.overlapIntegral(0, iA, iB);
46  double S_jA_jB = m_overlapIntegral.overlapIntegral(1, jA, jB);
47  double S_kA_kB = m_overlapIntegral.overlapIntegral(2, kA, kB);
48 
49  double result = T_iA_iB * S_jA_jB * S_kA_kB + S_iA_iB * T_jA_jB * S_kA_kB + S_iA_iB * S_jA_jB * T_kA_kB;
50  result *= -0.5;
51  return result; // TODO: Is there an error in the slides here?
52 }