File ECQPP.h¶
- Copyright
This code is licensed under the 3-clause BSD license.
Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.
See LICENSE.txt for details.
-
namespace
Scine
This header file contains functions that allow for common notation for common things that can be done at a different degree of derivatives.
This header contains alias definitions defining which classes to use for the different degrees of derivatives.
-
namespace
Utils
-
class
ECQPP
- #include <ECQPP.h>
Equality Constrained Quadratic Programming Problem solver for EDIIS. This class solves the optimization problem for an EDIIS iteration. It minimizes the expression E*c - 0.5 c^T*B*c with the constraint that sum(c_i) = 1. To do so, it solves the above equation for all subsets of c, rejects inadmissible solutions (c_i < 0) and keeps the best one.
Public Functions
-
ECQPP
(const Eigen::MatrixXd &B, const Eigen::VectorXd &E)¶
-
Eigen::VectorXd
calculateOptimalCoefficients
()¶
Private Functions
-
void
solveAllConstrainedProblems
()¶
-
void
solveAllConstrainedProblemsForNumberZeros
(unsigned int numberZeros)¶
-
void
generatePreviousIndexesVector
(const std::vector<bool> &consideredIndexes, unsigned numberZeros)¶
-
void
generateReducedObjects
()¶
-
void
solveConstrainedProblem
()¶
-
bool
solutionIsValid
() const¶
-
void
addSolution
()¶
-
void
generateSolutionFromReducedSolution
()¶
-
void
setBestSolutionIfHasLowerEnergy
()¶
Private Members
-
const Eigen::MatrixXd &
B_
¶
-
const Eigen::VectorXd &
E_
¶
-
const unsigned
dimension_
¶
-
std::vector<unsigned>
previousIndexes_
¶
-
Eigen::MatrixXd
reducedB_
¶
-
Eigen::VectorXd
reducedE_
¶
-
Eigen::VectorXd
reducedSolution_
¶
-
Eigen::VectorXd
fullSolution_
¶
-
Eigen::VectorXd
solution_
¶
-
double
bestSolutionEnergy_
¶
-
-
class
-
namespace