Loading...
Searching...
No Matches
dolfin::NewtonSolver Class Reference

`#include <NewtonSolver.h>`

Inheritance diagram for dolfin::NewtonSolver:
[legend]
Collaboration diagram for dolfin::NewtonSolver:
[legend]

## Public Member Functions

| NewtonSolver (MPI_Comm comm=MPI_COMM_WORLD)
| Create nonlinear solver.
| NewtonSolver (MPI_Comm comm, std::shared_ptr< GenericLinearSolver > solver, GenericLinearAlgebraFactory &factory)
virtual | ~NewtonSolver ()
| Destructor.
std::pair< std::size_t, bool > | solve (NonlinearProblem &nonlinear_function, GenericVector &x)
std::size_t | iteration () const
std::size_t | krylov_iterations () const
double | residual () const
double | residual0 () const
double | relative_residual () const
GenericLinearSolver & | linear_solver () const
void | set_relaxation_parameter (double relaxation_parameter)
double | get_relaxation_parameter ()
Public Member Functions inherited from dolfin::Variable
| Variable ()
| Create unnamed variable.
| Variable (const std::string name, const std::string label)
| Create variable with given name and label.
| Variable (const Variable &variable)
| Copy constructor.
virtual | ~Variable ()
| Destructor.
const Variable & | operator= (const Variable &variable)
| Assignment operator.
void | rename (const std::string name, const std::string label)
| Rename variable.
std::string | name () const
| Return name.
std::string | label () const
| Return label (description).
std::size_t | id () const
virtual std::string | str (bool verbose) const
| Return informal string representation (pretty-print).

## Static Public Member Functions

static Parameters | default_parameters ()

## Protected Member Functions

virtual bool | converged (const GenericVector &r, const NonlinearProblem &nonlinear_problem, std::size_t iteration)
virtual void | solver_setup (std::shared_ptr< const GenericMatrix > A, std::shared_ptr< const GenericMatrix > P, const NonlinearProblem &nonlinear_problem, std::size_t iteration)
virtual void | update_solution (GenericVector &x, const GenericVector &dx, double relaxation_parameter, const NonlinearProblem &nonlinear_problem, std::size_t iteration)

## Additional Inherited Members

Public Attributes inherited from dolfin::Variable
Parameters | parameters
| Parameters.

## Detailed Description

This class defines a Newton solver for nonlinear systems of equations of the form :math:F(x) = 0.

## Constructor & Destructor Documentation

## NewtonSolver()

NewtonSolver::NewtonSolver | ( | MPI_Comm | comm,
|  | std::shared_ptr< GenericLinearSolver > | solver,
|  | GenericLinearAlgebraFactory & | factory )

Create nonlinear solver using provided linear solver

Arguments comm (MPI_Ccmm) The MPI communicator. solver (GenericLinearSolver) The linear solver. factory (GenericLinearAlgebraFactory) The factory.

## Member Function Documentation

## converged()

bool NewtonSolver::converged | ( | const GenericVector & | r,
|  | const NonlinearProblem & | nonlinear_problem,
|  | std::size_t | iteration )

protected virtual

Convergence test. It may be overloaded using virtual inheritance and this base criterion may be called from derived, both in C++ and Python.

Arguments r (GenericVector) Residual for criterion evaluation. nonlinear_problem (NonlinearProblem) The nonlinear problem. iteration (std::size_t) Newton iteration number.

Returns bool Whether convergence occurred.

## default_parameters()

Parameters NewtonSolver::default_parameters | ( |  | ) |

static

Default parameter values

Returns Parameters Parameter values.

## get_relaxation_parameter()

double dolfin::NewtonSolver::get_relaxation_parameter | ( |  | ) |

inline

Get relaxation parameter

Returns double Relaxation parameter value.

## iteration()

std::size_t NewtonSolver::iteration | ( |  | ) | const

Return current Newton iteration number

Returns std::size_t The iteration number.

## krylov_iterations()

std::size_t NewtonSolver::krylov_iterations | ( |  | ) | const

Return number of Krylov iterations elapsed since solve started

Returns std::size_t The number of iterations.

## linear_solver()

GenericLinearSolver & NewtonSolver::linear_solver | ( |  | ) | const

Return the linear solver

Returns GenericLinearSolver The linear solver.

## relative_residual()

double NewtonSolver::relative_residual | ( |  | ) | const

Return current relative residual

Returns double Current relative residual.

## residual()

double NewtonSolver::residual | ( |  | ) | const

Return current residual

Returns double Current residual.

## residual0()

double NewtonSolver::residual0 | ( |  | ) | const

Return initial residual

Returns double Initial residual.

## set_relaxation_parameter()

void dolfin::NewtonSolver::set_relaxation_parameter | ( | double | relaxation_parameter | ) |

inline

Set relaxation parameter. Default value 1.0 means full Newton method, value smaller than 1.0 relaxes the method by shrinking effective Newton step size by the given factor.

Arguments relaxation_parameter(double) Relaxation parameter value.

## solve()

std::pair< std::size_t, bool > NewtonSolver::solve | ( | NonlinearProblem & | nonlinear_function,
|  | GenericVector & | x )

Solve abstract nonlinear problem :math:F(x) = 0 for given :math:F and Jacobian :math:\dfrac{\partial F}{\partial x}.

Arguments nonlinear_function (NonlinearProblem) The nonlinear problem. x (GenericVector) The vector.

Returns std::pair<std::size_t, bool> Pair of number of Newton iterations, and whether iteration converged)

## solver_setup()

void NewtonSolver::solver_setup | ( | std::shared_ptr< const GenericMatrix > | A,
|  | std::shared_ptr< const GenericMatrix > | P,
|  | const NonlinearProblem & | nonlinear_problem,
|  | std::size_t | iteration )

protected virtual

Setup solver to be used with system matrix A and preconditioner matrix P. It may be overloaded to get finer control over linear solver setup, various linesearch tricks, etc. Note that minimal implementation should call set_operators method of the linear solver.

Arguments A (std::shared_ptr<const GenericMatrix>) System Jacobian matrix. J (std::shared_ptr<const GenericMatrix>) System preconditioner matrix. nonlinear_problem (NonlinearProblem) The nonlinear problem. iteration (std::size_t) Newton iteration number.

## update_solution()

void NewtonSolver::update_solution | ( | GenericVector & | x,
|  | const GenericVector & | dx,
|  | double | relaxation_parameter,
|  | const NonlinearProblem & | nonlinear_problem,
|  | std::size_t | iteration )

protected virtual

Update solution vector by computed Newton step. Default update is given by formula::

x -= relaxation_parameter*dx

Arguments x (GenericVector>) The solution vector to be updated. dx (GenericVector>) The update vector computed by Newton step. relaxation_parameter (double) Newton relaxation parameter. nonlinear_problem (NonlinearProblem) The nonlinear problem. iteration (std::size_t) Newton iteration number.

The documentation for this class was generated from the following files:

- /build/dolfin-lFBzDh/dolfin-2019.2.0~legacy20240219.1c52e83/dolfin/nls/NewtonSolver.h
- /build/dolfin-lFBzDh/dolfin-2019.2.0~legacy20240219.1c52e83/dolfin/nls/NewtonSolver.cpp