#include <Minimize.h>
| Public Member Functions | |
| virtual void | step (const Vector &dir, double alpha)=0 | 
| Move the state in parameter space along direction dir with scale alpha. | |
| virtual double | compute (Vector *grad, Vector *Kgrad)=0 | 
| Returns the objective function at the current state and store the gradient in grad and preconditioned gradient in Kgrad, if non-null. | |
| virtual bool | report (int iter) | 
| virtual void | constrain (Vector &) | 
| Constrain search directions to the space of free directions for minimize. | |
| virtual double | sync (double x) const | 
| Override to synchronize scalars over MPI processes (if the same minimization is happening in sync over many processes) | |
| virtual double | safeStepSize (const Vector &dir) const | 
| Override to return maximum safe step size along a given direction. Steps can be arbitrarily large by default. | |
| double | minimize (const MinimizeParams ¶ms) | 
| Minimize this objective function with algorithm controlled by params and return the minimized value. | |
| void | fdTest (const MinimizeParams ¶ms) | 
Interface (abstract base class) for the minimization algorithm template
| Vector | A data type that represents a direction in the tangent space of the parameter manifold, which must have the following functions/operators defined: 
 | 
| void Minimizable< Vector >::fdTest | ( | const MinimizeParams & | params | ) | 
Checks the consistency of the value and gradient returned by compute. params is used primarily to control output
| 
 | inlinevirtual | 
Override for optional processing/reporting after each/every few iterations It should return whether the state was modified
Reimplemented in WannierMinimizer, NonlinearPCM, LatticeMinimizer, IonicMinimizer, and ElecMinimizer.