|
NEML2 2.1.0
|
The nonlinear solver solves a nonlinear system of equations. More...
The nonlinear solver solves a nonlinear system of equations.
The Newton-Raphson method is used to iteratively update the initial guess until the residual becomes zero within specified tolerances.
Armijo line search strategy is used to search along the direction of the full Newton step for a decreasing residual norm.
#include <NewtonWithLineSearch.h>

Public Member Functions | |
| NewtonWithLineSearch (const OptionSet &options) | |
| Public Member Functions inherited from Newton | |
| Newton (const OptionSet &options) | |
| Result | solve (NonlinearSystem &) override |
| Solve the given nonlinear system. | |
| Public Member Functions inherited from NonlinearSolver | |
| NonlinearSolver (const OptionSet &options) | |
| void | to (const TensorOptions &) override |
| Change the device and dtype of the solver's internal data. | |
| Public Member Functions inherited from Solver | |
| Solver (const OptionSet &options) | |
| Construct a new Solver object. | |
| Public Member Functions inherited from NEML2Object | |
| NEML2Object ()=delete | |
| NEML2Object (NEML2Object &&)=delete | |
| NEML2Object (const NEML2Object &)=delete | |
| NEML2Object & | operator= (NEML2Object &&)=delete |
| NEML2Object & | operator= (const NEML2Object &)=delete |
| virtual | ~NEML2Object ()=default |
| NEML2Object (const OptionSet &options) | |
| Construct a new NEML2Object object. | |
| const OptionSet & | input_options () const |
| virtual void | setup () |
| Setup this object. | |
| const std::string & | name () const |
| A readonly reference to the object's name. | |
| const std::string & | type () const |
| A readonly reference to the object's type. | |
| const std::string & | path () const |
| A readonly reference to the object's path. | |
| const std::string & | doc () const |
| A readonly reference to the object's docstring. | |
| Factory * | factory () const |
| Get the factory that created this object. | |
| const Settings & | settings () const |
| Settings. | |
| template<typename T = NEML2Object> | |
| const T * | host () const |
| Get a readonly pointer to the host. | |
| template<typename T = NEML2Object> | |
| T * | host () |
| Get a writable pointer to the host. | |
| template<typename T> | |
| const T & | resolve_tensor (const std::string &name) |
| Resolve a TensorName to a Tensor. | |
| template<class T> | |
| std::shared_ptr< T > | get_object (const std::string §ion, const std::string &name) |
| template<class T = EquationSystem> | |
| std::shared_ptr< T > | get_es (const std::string &name) |
| Get an equation system from the factory. | |
| template<class T = Solver> | |
| std::shared_ptr< T > | get_solver (const std::string &name) |
| Get a solver from the factory. | |
| template<class T = Data> | |
| std::shared_ptr< T > | get_data (const std::string &name) |
| Get a data from the factory. | |
| template<class T = Model> | |
| std::shared_ptr< T > | get_model (const std::string &name) |
| Get a model from the factory. | |
| template<class T = Driver> | |
| std::shared_ptr< T > | get_driver (const std::string &name) |
| Get a driver from the factory. | |
| template<class T = WorkScheduler> | |
| std::shared_ptr< T > | get_scheduler (const std::string &name) |
| Get a scheduler from the factory. | |
Static Public Member Functions | |
| static OptionSet | expected_options () |
| Static Public Member Functions inherited from Newton | |
| static OptionSet | expected_options () |
| Static Public Member Functions inherited from NonlinearSolver | |
| static OptionSet | expected_options () |
| Static Public Member Functions inherited from Solver | |
| static OptionSet | expected_options () |
| Static Public Member Functions inherited from NEML2Object | |
| static OptionSet | expected_options () |
Protected Member Functions | |
| void | update (NonlinearSystem &) override |
| Update trial solution. | |
| Protected Member Functions inherited from Newton | |
| virtual void | prepare (const NonlinearSystem &) |
| Prepare solver internal data before the iterative update. | |
| virtual bool | converged (size_t itr, const Scalar &nb, const Scalar &nb0) const |
| Check for convergence. The current iteration is said to be converged if the residual norm is below the absolute tolerance or or the ratio between the residual norm and the initial residual norm is below the relative tolerance. | |
| virtual void | final_update (NonlinearSystem &sys) |
| Update solution with function graph. | |
Protected Attributes | |
| const unsigned int | _linesearch_miter |
| Linesearch maximum iterations. | |
| const double | _linesearch_sigma |
| Decrease factor for linesearch. | |
| const double | _linesearch_c |
| Stopping criteria for linesearch. | |
| const EnumSelection | _type |
| Select the type of line search. | |
| const bool | _check_crit |
| Whether to check the Armijo condition. | |
Additional Inherited Members | |
| Public Types inherited from NonlinearSolver | |
| enum class | RetCode : std::uint8_t { SUCCESS = 0 , MAXITER = 1 , FAILURE = 2 } |
| Public Attributes inherited from NonlinearSolver | |
| std::shared_ptr< LinearSolver > | linear_solver |
| Linear solver used by the nonlinear solver. | |
| double | atol |
| Absolute tolerance. | |
| double | rtol |
| Relative tolerance. | |
| unsigned int | miters |
| Maximum number of iterations. | |
| Public Attributes inherited from Solver | |
| const bool | verbose |
| Whether to print additional (debugging) information during the solve. | |
| NewtonWithLineSearch | ( | const OptionSet & | options | ) |
|
static |
|
overrideprotectedvirtual |
Update trial solution.
Reimplemented from Newton.
|
protected |
Whether to check the Armijo condition.
|
protected |
Stopping criteria for linesearch.
|
protected |
Linesearch maximum iterations.
|
protected |
Decrease factor for linesearch.
|
protected |
Select the type of line search.