8#include <kernel/solver/linesearch.hpp> 
   30    template<
typename Functional_, 
typename Filter_>
 
   39        typedef typename Functional_::DataType 
DataType;
 
   58          BaseClass(
"NR-LS", functional, filter, keep_iterates)
 
   81        Functional_& functional, Filter_& filter) :
 
   82          BaseClass(
"NR-LS", section_name, section, functional, filter)
 
   94          return "Newton-Raphson-Linesearch";
 
  157          Statistics::add_solver_expression(std::make_shared<ExpressionStartSolve>(this->
name()));
 
  196              this->_fval_min = fval;
 
  215            vec_sol.axpy(this->
_vec_pn, alpha);
 
  256    template<
typename Functional_, 
typename Filter_>
 
  258      Functional_& functional, Filter_& filter, 
bool keep_iterates = 
false)
 
  260        return std::make_shared<NewtonRaphsonLinesearch<Functional_, Filter_>>(functional, filter, keep_iterates);
 
  281    template<
typename Functional_, 
typename Filter_>
 
  284      Functional_& functional, Filter_& filter)
 
  286        return std::make_shared<NewtonRaphsonLinesearch<Functional_, Filter_>>(section_name, section, functional, filter);
 
A class organizing a tree of key-value pairs.
Helper class for iteration statistics collection.
Index get_num_iter() const
Returns number of performed iterations.
Status _status
current status of the solver
Index _num_iter
number of performed iterations
virtual void plot_summary() const
Plot a summary of the last solver run.
VectorType _vec_grad
Gradient vector.
Functional_ & _functional
The (nonlinear) functional.
VectorType _vec_initial_sol
Initial solution.
virtual void trim_func_grad(DataType &func)
Trims the function value and gradient according to some threshold.
virtual Status _startup(DataType &alpha, DataType &fval, DataType &delta, const VectorType &vec_sol, const VectorType &vec_dir)
Performs the startup of the iteration.
VectorType _vec_pn
descend direction vector, normalized for better numerical stability
DataType _fval_min
Functional functional value.
Filter_ & _filter
The filter to be applied to the functional's gradient.
DataType _alpha_min
Line search parameter.
VectorType _vec_tmp
temporary vector
virtual Status _check_convergence(const DataType fval, const DataType df, const DataType alpha)
Performs the line search convergence checks using the strong Wolfe conditions.
Newton Raphson linesearch.
NewtonRaphsonLinesearch(const String §ion_name, const PropertyMap *section, Functional_ &functional, Filter_ &filter)
Constructor using a PropertyMap.
Functional_::VectorTypeR VectorType
Input vector type for the functional's gradient.
NewtonRaphsonLinesearch(Functional_ &functional, Filter_ &filter, bool keep_iterates=false)
Standard constructor.
virtual Status correct(VectorType &vec_sol, const VectorType &vec_dir) override
Applies the solver, making use of an initial guess.
Filter_ FilterType
Filter type to be applied to the gradient of the functional.
virtual Status apply(VectorType &vec_cor, const VectorType &vec_dir) override
Applies the solver, setting the initial guess to zero.
virtual ~NewtonRaphsonLinesearch()
Functional_::DataType DataType
Underlying floating point type.
virtual String name() const override
Returns a descriptive string.
virtual Status _apply_intern(VectorType &vec_sol, const VectorType &vec_dir)
Internal function: Applies the solver.
Linesearch< Functional_, Filter_ > BaseClass
Our base class.
String class implementation.
std::shared_ptr< NewtonRaphsonLinesearch< Functional_, Filter_ > > new_newton_raphson_linesearch(Functional_ &functional, Filter_ &filter, bool keep_iterates=false)
Creates a new NewtonRaphsonLinesearch object.
Status
Solver status return codes enumeration.
@ success
solving successful (convergence criterion fulfilled)
@ progress
continue iteration (internal use only)
@ undefined
undefined status