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
DiagonalPreconditionerEvaluator.h
Go to the documentation of this file.
1 
8 #ifndef SPARROW_DIAGONALPRECONDITIONEREVALUATOR_H
9 #define SPARROW_DIAGONALPRECONDITIONEREVALUATOR_H
10 #include "OrderTag.h"
12 #include <Utils/Math/IterativeDiagonalizer/SpinAdaptedEigenContainer.h>
13 namespace Scine {
14 namespace Utils {
15 namespace LcaoUtils {
16 class ElectronicOccupation;
17 }
18 class SingleParticleEnergies;
19 } // namespace Utils
20 namespace Sparrow {
21 
35  public:
39  explicit DiagonalPreconditionerEvaluator(const Eigen::VectorXd& energyDifferenceVector);
56  OrderTag);
63  OrderTag);
64  ~DiagonalPreconditionerEvaluator() final = default;
73  Eigen::VectorXd evaluate(const Eigen::VectorXd& vectorToPrecondition, double eigenvalue) const final;
74 
75  private:
76  Eigen::VectorXd energyDifferences_;
77 };
78 } // namespace Sparrow
79 } // namespace Scine
80 
81 #endif // SPARROW_UNRESTRICTEDDIAGONALPRECONDITIONEREVALUATOR_H
DiagonalPreconditionerEvaluator(const Eigen::VectorXd &energyDifferenceVector)
The constructor generates a preconditioner from an ordered energy difference vector.
Definition: DiagonalPreconditionerEvaluator.cpp:13
Tag to define the order in the preconditioner evaluators. This is in a single file to prevent needing...
Definition: OrderTag.h:18
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}...
Definition: DiagonalPreconditionerEvaluator.cpp:50
Direct preconditioner calculator.
Definition: DiagonalPreconditionerEvaluator.h:34