Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
Public Member Functions | Protected Attributes | List of all members
GaussianKineticIntegral Class Reference

#include <gaussiankineticintegral.h>

Collaboration diagram for GaussianKineticIntegral:
Collaboration graph
[legend]

Public Member Functions

 GaussianKineticIntegral (int angularMomentumMax)
 
void set (const Vector3 &corePositionA, const Vector3 &corePositionB, const GaussianPrimitiveOrbital &primitiveA, const GaussianPrimitiveOrbital &primitiveB)
 
double kineticIntegral (int dim, int iA, int iB)
 
double kineticIntegral (int iA, int jA, int kA, int iB, int jB, int kB)
 
double kineticIntegral (const GaussianPrimitiveOrbital &primitiveA, const GaussianPrimitiveOrbital &primitiveB)
 

Protected Attributes

double m_exponentB
 
double m_exponentSum
 
GaussianOverlapIntegral m_overlapIntegral
 

Detailed Description

Definition at line 14 of file gaussiankineticintegral.h.

Constructor & Destructor Documentation

GaussianKineticIntegral::GaussianKineticIntegral ( int  angularMomentumMax)
explicit

Definition at line 8 of file gaussiankineticintegral.cpp.

8  :
9  m_overlapIntegral(angularMomentumMax + 2)
10 {
11 }

Member Function Documentation

double GaussianKineticIntegral::kineticIntegral ( int  dim,
int  iA,
int  iB 
)

Definition at line 21 of file gaussiankineticintegral.cpp.

21  {
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 }
double GaussianKineticIntegral::kineticIntegral ( int  iA,
int  jA,
int  kA,
int  iB,
int  jB,
int  kB 
)

Definition at line 40 of file gaussiankineticintegral.cpp.

40  {
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 }
double GaussianKineticIntegral::kineticIntegral ( const GaussianPrimitiveOrbital primitiveA,
const GaussianPrimitiveOrbital primitiveB 
)

Definition at line 34 of file gaussiankineticintegral.cpp.

35  {
36  return kineticIntegral(primitiveA.xExponent(), primitiveA.yExponent(), primitiveA.zExponent(),
37  primitiveB.xExponent(), primitiveB.yExponent(), primitiveB.zExponent());
38 }
void GaussianKineticIntegral::set ( const Vector3 corePositionA,
const Vector3 corePositionB,
const GaussianPrimitiveOrbital primitiveA,
const GaussianPrimitiveOrbital primitiveB 
)

Definition at line 13 of file gaussiankineticintegral.cpp.

15 {
16  m_exponentB = primitiveB.exponent();
17  m_exponentSum = primitiveA.exponent() + primitiveB.exponent();
18  m_overlapIntegral.set(corePositionA, corePositionB, primitiveA, primitiveB, true);
19 }

Member Data Documentation

double GaussianKineticIntegral::m_exponentB
protected

Definition at line 24 of file gaussiankineticintegral.h.

double GaussianKineticIntegral::m_exponentSum
protected

Definition at line 25 of file gaussiankineticintegral.h.

GaussianOverlapIntegral GaussianKineticIntegral::m_overlapIntegral
protected

Definition at line 28 of file gaussiankineticintegral.h.


The documentation for this class was generated from the following files: