Class Scine::Sparrow::NDDODipoleMatrixCalculator

template<class NDDOMethod>
class NDDODipoleMatrixCalculator : public Scine::Sparrow::DipoleMatrixCalculator

Class responsible for the calculation of the dipole matrix.

Template Parameters
  • NDDOMethod: An NDDO method, must derive from Utils::SCFMethod and must have the method getInitializer(). getInitializer must return a valid NDDOInitializer instance. This class is responsible for the calculation of the dipole matrix in both atomic and molecular orbital basis. The dipole matrix in atomic orbital basis is calculated by explicitly integrating in closed form or using the highly efficient Obara-Saika scheme the dipole integral <|r|>. The dipole matrix in atomic orbital basis is then transformed in molecular orbital basis by D_{MO} = C^T * D_{AO} * C in restricted formalism, D_{MO} = C_^T * D_{AO} * C_ + C_^T * D_{AO} * C_ in unrestricted formalism.

Public Functions

const Utils::DipoleMatrix &getAODipoleMatrix() const

Getter for the dipole matrix in AO.

Utils::DipoleMatrix getMODipoleMatrix() const

Getter for the dipole matrix in MO.

The dipole matrix in MO basis is transformed from the one in AO basis with every call to this function.

Return

The dipole matrix in MO basis.

void setAODipoleMatrix(Utils::DipoleMatrix dipoleMatrix)

Setter for the dipole matrix in AO basis.

void fillDipoleMatrix(const Eigen::RowVector3d &dipoleEvaluationCoordinate)

Calculates the dipole matrix in AO basis.

Parameters
  • dipoleEvaluationCoordinate: The coordinates to consider as the origin for the dipole calculation.

void initialize()

Initializes the matrices and invalidates the current dipole matrix.

void setIntegralMethod(const IntegralMethod &IntegralMethod)

Sets the dipole integral calculation method.

Parameters
  • IntegralMethod: Either calculates is from the evaluation of a closed form formula, or with the Obara-Saika recursive algorithm.

bool isValid() const

Return the validity status of the dipole matrix.

void invalidate()

Invalidates the underlying dipole matrices and forces a new calculation.