8 #ifndef SPARROW_GTODIPOLEMATRIXBLOCK_H
9 #define SPARROW_GTODIPOLEMATRIXBLOCK_H
32 using oneDimensionalArray = std::array<double, 3>;
33 using twoDimensionalArray = std::array<oneDimensionalArray, 3>;
34 using threeDimensionalArray = std::array<twoDimensionalArray, 3>;
48 void initialize(
const Eigen::RowVector3d& Ra,
const Eigen::RowVector3d& Rb,
49 const Eigen::RowVector3d& dipoleEvaluationCoordinate,
double expA,
double expB,
56 const Eigen::RowVector3d& Ra,
const Eigen::RowVector3d& Rb,
57 const Eigen::Vector3d& Rab,
const Eigen::Vector3d& dipoleEvaluationCoordinate);
60 void dOrbitalsFromSixCartesianToFiveRealSolidHarmonics();
61 static double getNormalizationFactorAndCoefficient(
int GaussTypeFunctionIndexA,
int GaussTypeFunctionIndexB,
63 double expCoefficientS_00,
const Eigen::Vector3d& Rab);
64 void calculateAnalyticalDipoleIntegrals(
int GaussTypeFunctionIndexA,
int GaussTypeFunctionIndexB,
66 const Eigen::RowVector3d& Ra,
const Eigen::RowVector3d& Rb,
67 const Eigen::Vector3d& dipoleEvaluationCoordinate);
68 void calculateSingleGTFPair(
int GaussTypeFunctionIndexA,
int GaussTypeFunctionIndexB,
const Utils::GtoExpansion& gtoA,
69 const Utils::GtoExpansion& gtoB,
const Eigen::RowVector3d& Ra,
const Eigen::RowVector3d& Rb,
70 const Eigen::Vector3d& Rab,
const Eigen::Vector3d& dipoleEvaluationCoordinate);
73 void createBlockForOneGTFOverShell(
double normalizedCoefficientPrefactor);
77 int orbitalShellSizeA_;
78 int orbitalShellSizeB_;
79 std::array<Eigen::Matrix<double, 6, 6>, 3> dipoleComponentsBlocks_;
80 std::array<nddo::AngularMomentum, 10> AOMomenta_;
81 std::array<int, 10> AOIndexes_;
82 oneDimensionalArray PminusA_;
83 oneDimensionalArray PminusB_;
84 oneDimensionalArray PminusC_;
85 threeDimensionalArray overlapIntegral_;
86 threeDimensionalArray dipoleIntegral_;
87 IntegralMethod method_;
93 #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:30
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