8 #ifndef SPARROW_GTODIPOLEMATRIXBLOCK_H
9 #define SPARROW_GTODIPOLEMATRIXBLOCK_H
31 using oneDimensionalArray = std::array<double, 3>;
32 using twoDimensionalArray = std::array<oneDimensionalArray, 3>;
33 using threeDimensionalArray = std::array<twoDimensionalArray, 3>;
47 void initialize(
const Eigen::RowVector3d& Ra,
const Eigen::RowVector3d& Rb,
48 const Eigen::RowVector3d& dipoleEvaluationCoordinate,
double expA,
double expB,
55 const Eigen::RowVector3d& Ra,
const Eigen::RowVector3d& Rb,
56 const Eigen::Vector3d& Rab,
const Eigen::Vector3d& dipoleEvaluationCoordinate);
59 void dOrbitalsFromSixCartesianToFiveRealSolidHarmonics();
60 static double getNormalizationFactorAndCoefficient(
int GaussTypeFunctionIndexA,
int GaussTypeFunctionIndexB,
62 double expCoefficientS_00,
const Eigen::Vector3d& Rab);
63 void calculateAnalyticalDipoleIntegrals(
int GaussTypeFunctionIndexA,
int GaussTypeFunctionIndexB,
65 const Eigen::RowVector3d& Ra,
const Eigen::RowVector3d& Rb,
66 const Eigen::Vector3d& dipoleEvaluationCoordinate);
67 void calculateSingleGTFPair(
int GaussTypeFunctionIndexA,
int GaussTypeFunctionIndexB,
const Utils::GtoExpansion& gtoA,
68 const Utils::GtoExpansion& gtoB,
const Eigen::RowVector3d& Ra,
const Eigen::RowVector3d& Rb,
69 const Eigen::Vector3d& Rab,
const Eigen::Vector3d& dipoleEvaluationCoordinate);
72 void createBlockForOneGTFOverShell(
double normalizedCoefficientPrefactor);
76 int orbitalShellSizeA_;
77 int orbitalShellSizeB_;
78 std::array<Eigen::Matrix<double, 6, 6>, 3> dipoleComponentsBlocks_;
79 std::array<nddo::AngularMomentum, 10> AOMomenta_;
80 std::array<int, 10> AOIndexes_;
81 oneDimensionalArray PminusA_;
82 oneDimensionalArray PminusB_;
83 oneDimensionalArray PminusC_;
84 threeDimensionalArray overlapIntegral_;
85 threeDimensionalArray dipoleIntegral_;
86 IntegralMethod method_;
92 #endif // SPARROW_GTODIPOLEMATRIXBLOCK_H
Class responsible for calculating a block of the dipole matrix in GTO ao basis. The basis must be one...
Definition: GTODipoleMatrixBlock.h:29
void setIntegralMethod(IntegralMethod method)
Definition: GTODipoleMatrixBlock.cpp:228
void initialize(const Eigen::RowVector3d &Ra, const Eigen::RowVector3d &Rb, const Eigen::RowVector3d &dipoleEvaluationCoordinate, double expA, double expB, const Utils::GtoExpansion >oA, const Utils::GtoExpansion >oB)
Initializes the data structures used throughout the calculation.
Definition: GTODipoleMatrixBlock.cpp:232
std::array< Eigen::MatrixXd, 3 > createSTOBlock(const Utils::GtoExpansion >oA, const Utils::GtoExpansion >oB, const Eigen::RowVector3d &Ra, const Eigen::RowVector3d &Rb, const Eigen::Vector3d &Rab, const Eigen::Vector3d &dipoleEvaluationCoordinate)
Calculates a block of the dipole matrix.
Definition: GTODipoleMatrixBlock.cpp:180
GTODipoleMatrixBlock()
Constructor. It initializes the angular momenta and the orbital AO indices.
Definition: GTODipoleMatrixBlock.cpp:20