Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
gaussiancontractedorbital.cpp
Go to the documentation of this file.
2 
3 #include "math/vector3.h"
4 
6  GaussianContractedOrbital(Vector3::createZeros())
7 {
8 }
9 
11  m_corePosition(corePosition)
12 {
13 
14 }
15 
17 {
18  m_primitiveBasisFunctions.push_back(primitive);
19 }
20 
22 {
23  return m_primitiveBasisFunctions.at(index);
24 }
26 {
27  return m_corePosition;
28 }
29 
31 {
32  m_corePosition = corePosition;
33 }
34 const vector<GaussianPrimitiveOrbital> &GaussianContractedOrbital::primitiveBasisFunctions() const
35 {
36  return m_primitiveBasisFunctions;
37 }
38 
39 void GaussianContractedOrbital::setPrimitiveBasisFunctions(const vector<GaussianPrimitiveOrbital> &primitiveBasisFunctions)
40 {
41  m_primitiveBasisFunctions = primitiveBasisFunctions;
42 }
43 
44 double GaussianContractedOrbital::evaluated(const Vector3& position) const
45 {
46  Vector3 diff = position - corePosition();
47  double rSquared = dot(diff, diff);
48  double result = 0;
49  for(uint i = 0; i < m_primitiveBasisFunctions.size(); i++) {
50  const GaussianPrimitiveOrbital &p = m_primitiveBasisFunctions.at(i);
51  result += p.weight() * pow(diff.x(), p.xExponent()) * pow (diff.y(), p.yExponent()) * pow(diff.z(), p.zExponent())
52  * exp(-p.exponent() * rSquared);
53  }
54  return result;
55 }
56 
57