NEML2 2.1.0
Loading...
Searching...
No Matches

The nonlinear solver solves a nonlinear system of equations. More...

Detailed Description

The nonlinear solver solves a nonlinear system of equations.

#include <NonlinearSolver.h>

Inheritance diagram for NonlinearSolver:

Classes

struct  Result

Public Types

enum class  RetCode : std::uint8_t { SUCCESS = 0 , MAXITER = 1 , FAILURE = 2 }

Public Member Functions

 NonlinearSolver (const OptionSet &options)
void to (const TensorOptions &) override
 Change the device and dtype of the solver's internal data.
virtual Result solve (NonlinearSystem &system)=0
 Solve the given nonlinear system.
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
NEML2Objectoperator= (NEML2Object &&)=delete
NEML2Objectoperator= (const NEML2Object &)=delete
virtual ~NEML2Object ()=default
 NEML2Object (const OptionSet &options)
 Construct a new NEML2Object object.
const OptionSetinput_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.
Factoryfactory () const
 Get the factory that created this object.
const Settingssettings () 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 &section, 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 Solver
static OptionSet expected_options ()
Static Public Member Functions inherited from NEML2Object
static OptionSet expected_options ()

Public Attributes

std::shared_ptr< LinearSolverlinear_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.

Member Enumeration Documentation

◆ RetCode

enum class RetCode : std::uint8_t
strong
Enumerator
SUCCESS 

Solver converged successfully.

MAXITER 

Maximum number of iterations reached (without convergence).

FAILURE 

Solver failed to converge.

Constructor & Destructor Documentation

◆ NonlinearSolver()

NonlinearSolver ( const OptionSet & options)

Member Function Documentation

◆ expected_options()

OptionSet expected_options ( )
static

◆ solve()

virtual Result solve ( NonlinearSystem & system)
pure virtual

Solve the given nonlinear system.

Parameters
systemThe nonlinear system to solve
Returns
See also
neml2::NonlinearSolver::Result

Implemented in Newton.

◆ to()

void to ( const TensorOptions & )
overridevirtual

Change the device and dtype of the solver's internal data.

Reimplemented from Solver.

Member Data Documentation

◆ atol

double atol

Absolute tolerance.

◆ linear_solver

std::shared_ptr<LinearSolver> linear_solver

Linear solver used by the nonlinear solver.

◆ miters

unsigned int miters

Maximum number of iterations.

◆ rtol

double rtol

Relative tolerance.