24 m_angularMomentumMax(0),
28 m_electronInteractionIntegral(0)
46 result += pP.weight() * rP.weight() * qP.weight() * sP.weight()
63 result += pP.weight() * qP.weight() * m_kineticIntegral.
kineticIntegral(pP, qP);
64 for(uint i = 0; i < m_cores.size(); i++) {
84 result += pP.weight() * qP.weight() * m_overlapIntegral.
overlapIntegral(pP, qP);
92 return m_nBasisFunctions;
103 for(uint i = 0; i < m_cores.size(); i++) {
105 for(uint j = i + 1; j < m_cores.size(); j++) {
123 double potential = 0;
125 Vector3 diff = position - core.position();
126 double distance = sqrt(
dot(diff, diff));
127 potential += core.charge() / distance;
135 for(uint p = 0; p < (m_basisFunctions.size()); p++) {
137 for(uint orbital = 0; orbital < C.n_cols; orbital++) {
138 result += C(p, orbital) * C(p,orbital) * potential;
140 for(uint q = p+1; q < (m_basisFunctions.size()); q++) {
142 for(uint orbital = 0; orbital < C.n_cols; orbital++) {
143 result += 2.0 * C(p, orbital) * C(q, orbital) * potential;
157 const Vector3 &corePositionC = position;
184 rowvec result = zeros(C.n_cols);
185 for(uint p = 0; p < (m_basisFunctions.size()); p++) {
187 double evaluationp = bfp.
evaluated(position);
188 for(uint orbital = 0; orbital < C.n_cols; orbital++) {
189 result(orbital) += C(p,orbital) * C(p,orbital) * evaluationp * evaluationp;
191 for(uint q = p+1; q < (m_basisFunctions.size()); q++) {
193 double evaluationq = bfq.
evaluated(position);
194 for(uint orbital = 0; orbital < C.n_cols; orbital++) {
195 result(orbital) += 2.0 * C(p,orbital) * C(q,orbital) * evaluationp * evaluationq;
227 m_cores.push_back(core);
228 int angularMomentumMax = 0;
231 angularMomentumMax = max(angularMomentumMax, primitive.xExponent());
232 angularMomentumMax = max(angularMomentumMax, primitive.yExponent());
233 angularMomentumMax = max(angularMomentumMax, primitive.zExponent());
241 m_angularMomentumMax = angularMomentumMax;