JDFTx  1.7.0
MinimizeLinmin Namespace Reference

Line minimization methods Each of the linmin methods in this namespace advance the parameters in obj along direction d. updating the energy E, gradient g, and the step-size alpha. The return value specifies if the step succeeded at reducing E. If the step fails, alpha MUST contain the total progress along dir. made by this step, so that minimize may reset it back to the original value. More...

Functions

template<typename Vector >
bool linminRelax (Minimizable< Vector > &obj, const MinimizeParams &p, const Vector &d, double alphaT, double &alpha, double &E, Vector &g, Vector &Kg)
 
template<typename Vector >
bool linminQuad (Minimizable< Vector > &obj, const MinimizeParams &p, const Vector &d, double alphaT, double &alpha, double &E, Vector &g, Vector &Kg)
 Quadratic line minimization.
 
template<typename Vector >
bool linminCubicWolfe (Minimizable< Vector > &obj, const MinimizeParams &p, const Vector &d, double alphaT, double &alpha, double &E, Vector &g, Vector &Kg)
 Cubic line minimization, designed to handle fluids which can be highly non-quadratic.
 

Detailed Description

Line minimization methods Each of the linmin methods in this namespace advance the parameters in obj along direction d. updating the energy E, gradient g, and the step-size alpha. The return value specifies if the step succeeded at reducing E. If the step fails, alpha MUST contain the total progress along dir. made by this step, so that minimize may reset it back to the original value.

Function Documentation

◆ linminRelax()

template<typename Vector >
bool MinimizeLinmin::linminRelax ( Minimizable< Vector > &  obj,
const MinimizeParams p,
const Vector &  d,
double  alphaT,
double &  alpha,
double &  E,
Vector &  g,
Vector &  Kg 
)

Equation-of-motion / Relaxation method stepping. NOTE: Criterion for success of this method is different from the others. It only ensures that the energy is not NaN/Inf.