Scine::Sparrow  5.0.0
Library for fast and agile quantum chemical calculations with semiempirical methods.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
Scine::Sparrow::NDDODipoleMatrixCalculator< NDDOMethod > Class Template Referencefinal

Class responsible for the calculation of the dipole matrix. More...

#include <NDDODipoleMatrixCalculator.h>

Inheritance diagram for Scine::Sparrow::NDDODipoleMatrixCalculator< NDDOMethod >:
Inheritance graph
Collaboration diagram for Scine::Sparrow::NDDODipoleMatrixCalculator< NDDOMethod >:
Collaboration graph

Public Member Functions

const Utils::DipoleMatrixgetAODipoleMatrix () const final
 Getter for the dipole matrix in AO.
 
Utils::DipoleMatrix getMODipoleMatrix () const final
 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. More...
 
void setAODipoleMatrix (Utils::DipoleMatrix dipoleMatrix) final
 Setter for the dipole matrix in AO basis.
 
void fillDipoleMatrix (const Eigen::RowVector3d &dipoleEvaluationCoordinate) final
 Calculates the dipole matrix in AO basis. More...
 
void initialize () final
 Initializes the matrices and invalidates the current dipole matrix.
 
void setIntegralMethod (const IntegralMethod &IntegralMethod) final
 Sets the dipole integral calculation method. More...
 
bool isValid () const final
 Return the validity status of the dipole matrix.
 
void invalidate () final
 Invalidates the underlying dipole matrices and forces a new calculation.
 

Static Public Member Functions

static std::unique_ptr
< NDDODipoleMatrixCalculator
< NDDOMethod > > 
create (NDDOMethod &method)
 

Detailed Description

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

Class responsible for the calculation of the dipole matrix.

Template Parameters
NDDOMethodAn 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.

Member Function Documentation

template<class NDDOMethod >
void Scine::Sparrow::NDDODipoleMatrixCalculator< NDDOMethod >::fillDipoleMatrix ( const Eigen::RowVector3d &  dipoleEvaluationCoordinate)
finalvirtual

Calculates the dipole matrix in AO basis.

Parameters
dipoleEvaluationCoordinateThe coordinates to consider as the origin for the dipole calculation.

Implements Scine::Sparrow::DipoleMatrixCalculator.

template<class NDDOMethod >
Utils::DipoleMatrix Scine::Sparrow::NDDODipoleMatrixCalculator< NDDOMethod >::getMODipoleMatrix ( ) const
finalvirtual

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.

Returns
The dipole matrix in MO basis.

Implements Scine::Sparrow::DipoleMatrixCalculator.

template<class NDDOMethod >
void Scine::Sparrow::NDDODipoleMatrixCalculator< NDDOMethod >::setIntegralMethod ( const IntegralMethod &  IntegralMethod)
finalvirtual

Sets the dipole integral calculation method.

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

Implements Scine::Sparrow::DipoleMatrixCalculator.


The documentation for this class was generated from the following files: