32 public Step<EigenproblemEnvironment<double>> {
35 size_t number_of_requested_eigenpairs;
36 double correction_threshold;
49 number_of_requested_eigenpairs {number_of_requested_eigenpairs},
50 correction_threshold {correction_threshold} {}
61 return "Calculate the correction vectors by solving the residual equations.";
74 const auto& diagonal = environment.
diagonal;
75 const auto& Lambda = environment.
Lambda;
77 const auto& VA = environment.
VA;
78 const auto& Z = environment.
Z;
79 const auto& X = environment.
X;
80 const auto& R = environment.
R;
85 for (
size_t column_index = 0; column_index < this->number_of_requested_eigenpairs; column_index++) {
92 environment.
Delta.col(column_index) = (denominator.array().abs() > this->correction_threshold).select(
93 R.col(column_index).array() / denominator.array().abs(),
94 R.col(column_index) / this->correction_threshold
97 environment.
Delta.col(column_index).normalize();
Definition: CorrectionVectorCalculation.hpp:32
std::string description() const override
Definition: CorrectionVectorCalculation.hpp:60
CorrectionVectorCalculation(const size_t number_of_requested_eigenpairs=1, const double correction_threshold=1.0e-12)
Definition: CorrectionVectorCalculation.hpp:48
void execute(EigenproblemEnvironment< double > &environment) override
Definition: CorrectionVectorCalculation.hpp:70
Definition: EigenproblemEnvironment.hpp:35
MatrixX< Scalar > X
Definition: EigenproblemEnvironment.hpp:79
VectorX< Scalar > diagonal
Definition: EigenproblemEnvironment.hpp:50
MatrixX< Scalar > Delta
Definition: EigenproblemEnvironment.hpp:86
size_t dimension
Definition: EigenproblemEnvironment.hpp:53
MatrixX< Scalar > Z
Definition: EigenproblemEnvironment.hpp:69
VectorX< double > Lambda
Definition: EigenproblemEnvironment.hpp:66
MatrixX< Scalar > VA
Definition: EigenproblemEnvironment.hpp:76
MatrixX< Scalar > R
Definition: EigenproblemEnvironment.hpp:83
Definition: Matrix.hpp:47
Definition: BaseOneElectronIntegralBuffer.hpp:25