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