File GTOOverlapMatrixBlock.h

Copyright

This code is licensed under the 3-clause BSD license.

Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.

See LICENSE.txt for details.

namespace Scine
namespace Sparrow
namespace nddo
struct AngularMomentum

Public Functions

AngularMomentum(int lx = 0, int ly = 0, int lz = 0)

Public Members

int x
int y
int z
template<Utils::derivOrder O>
class GTOOverlapMatrixBlock
#include <GTOOverlapMatrixBlock.h>

This class calculates the overlap matrix block and its derivatives for two groups of orbitals on different atoms, each group of which shares the same angular momentum.

F.i. s-s, s-p, p-d, d-d, … according to the Obara-Saika method.

Public Types

template<>
using Value3D = Utils::AutomaticDifferentiation::Value3DType<O>
template<>
using Value1D = Utils::AutomaticDifferentiation::Value1DType<O>

Public Functions

GTOOverlapMatrixBlock()

Constructor initializing the angular momenta and indices of the orbitals used for the calculation.

Eigen::Matrix<Value3D, Eigen::Dynamic, Eigen::Dynamic> getMatrixBlock(const Utils::GtoExpansion &gA, const Utils::GtoExpansion &gB, const Eigen::Vector3d &Rab)

Getter for the matrix block calculated.

Private Functions

void addGTFContribution(int GTFA, int GTFB, const Utils::GtoExpansion &gA, const Utils::GtoExpansion &gB, const Eigen::Vector3d &Rab)
Eigen::Matrix<Value3D, Eigen::Dynamic, Eigen::Dynamic> computeBlock(const Utils::GtoExpansion &gA, const Utils::GtoExpansion &gB)
Value3D directionsProduct(const Value1D &X, const Value1D &Y, const Value1D &Z)
Value3D getKBase(double x, double y, double z, double fac)
void setRArray(double x, double y, double z, double expSum)

Private Members

const double sqrt3
const double pi
const Value1D nullValue
int startGTFA_
int startGTFB_
int nGTFsA_
int nGTFsB_
Eigen::Matrix<Value3D, Eigen::Dynamic, Eigen::Dynamic> result
template<>
AngularMomentum momenta[10]
template<>
int AOIndexes[10]
template<>
Value1D r[3]
template<>
Value1D p[3]
template<>
Value1D SDo[3][3][3]
Value3D KD
Value3D contributionD
Value1D Dist1
Value1D Dist2