Scine::Sparrow  5.1.0
Library for fast and agile quantum chemical calculations with semiempirical methods.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
Scine::Sparrow::DiagonalPreconditionerEvaluator Class Referencefinal

Direct preconditioner calculator. More...

#include <DiagonalPreconditionerEvaluator.h>

Inheritance diagram for Scine::Sparrow::DiagonalPreconditionerEvaluator:
Inheritance graph
Collaboration diagram for Scine::Sparrow::DiagonalPreconditionerEvaluator:
Collaboration graph

Public Member Functions

 DiagonalPreconditionerEvaluator (const Eigen::VectorXd &energyDifferenceVector)
 The constructor generates a preconditioner from an ordered energy difference vector.
 
 DiagonalPreconditionerEvaluator (const Utils::SpinAdaptedContainer< Utils::Reference::Unrestricted, Eigen::VectorXd > &energyDifferenceVector)
 The constructor generates concatenated energyDifferences from an Unrestricted SpinAdaptedContainer.
 
 DiagonalPreconditionerEvaluator (const Utils::SpinAdaptedContainer< Utils::Reference::Restricted, Eigen::VectorXd > &energyDifferenceVector)
 The constructor generates energyDifferences from a Restricted SpinAdaptedContainer.
 
 DiagonalPreconditionerEvaluator (const Utils::SpinAdaptedContainer< Utils::Reference::Unrestricted, Eigen::VectorXd > &energyDifferenceVector, OrderTag)
 The constructor orders the energy differences in energetic increasing ordering from an Unrestricted SpinAdaptedContainer. More...
 
 DiagonalPreconditionerEvaluator (const Utils::SpinAdaptedContainer< Utils::Reference::Restricted, Eigen::VectorXd > &energyDifferenceVector, OrderTag)
 The constructor orders the energy differences in energetic increasing ordering from a Restricted SpinAdaptedContainer. More...
 
Eigen::VectorXd evaluate (const Eigen::VectorXd &vectorToPrecondition, double eigenvalue) const final
 Evaluates the preconditioner vector. The preconditioner elements are p_k = (H_{k,k} - h_k)^{-1}, where H_{k,k} is the approximated k-th diagonal element of H, given by the energy difference between the molecular orbitals. H_{k,k} = e_a - e_i. More...
 

Detailed Description

Direct preconditioner calculator.

Precondition
This class expects the occupation to be calculated with the aufbau principle. This class generates the preconditioner vector. For each eigenvalue it creates an element p_k = (H_{k,k} - h_k)^{-1}, where H_{k,k} is the approximated diagonal given by the energy difference between the molecular orbitals involved in the k-th single substitution, and h_k is the k-th guess eigenvalue. If the basis functions are ordered in energetic increasing order, then the preconditioning must also be, and it is ever more effective as more the matrix is diagonally dominant, which is the case normally for linear response problems with an Hamiltonian expanded in basis functions ordered by increasing energy.

Constructor & Destructor Documentation

Scine::Sparrow::DiagonalPreconditionerEvaluator::DiagonalPreconditionerEvaluator ( const Utils::SpinAdaptedContainer< Utils::Reference::Unrestricted, Eigen::VectorXd > &  energyDifferenceVector,
OrderTag   
)

The constructor orders the energy differences in energetic increasing ordering from an Unrestricted SpinAdaptedContainer.

Parameters
OrderTagTag to give if ordering is needed.
Scine::Sparrow::DiagonalPreconditionerEvaluator::DiagonalPreconditionerEvaluator ( const Utils::SpinAdaptedContainer< Utils::Reference::Restricted, Eigen::VectorXd > &  energyDifferenceVector,
OrderTag   
)

The constructor orders the energy differences in energetic increasing ordering from a Restricted SpinAdaptedContainer.

Parameters
OrderTagTag to give if ordering is needed.

Member Function Documentation

Eigen::VectorXd Scine::Sparrow::DiagonalPreconditionerEvaluator::evaluate ( const Eigen::VectorXd &  vectorToPrecondition,
double  eigenvalue 
) const
finalvirtual

Evaluates the preconditioner vector. The preconditioner elements are p_k = (H_{k,k} - h_k)^{-1}, where H_{k,k} is the approximated k-th diagonal element of H, given by the energy difference between the molecular orbitals. H_{k,k} = e_a - e_i.

Parameters
eigenValuesThe current guess for the eigenvalues: h_k

Implements Scine::Utils::PreconditionerEvaluator.


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