|
DOLFIN
DOLFIN C++ interface
|
#include <NewtonSolver.h>


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. | |
This class defines a Newton solver for nonlinear systems of equations of the form :math:F(x) = 0.
| 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.
|
protectedvirtual |
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.
|
static |
Default parameter values
Returns Parameters Parameter values.
|
inline |
Get relaxation parameter
Returns double Relaxation parameter value.
| std::size_t NewtonSolver::iteration | ( | ) | const |
Return current Newton iteration number
Returns std::size_t The iteration number.
| std::size_t NewtonSolver::krylov_iterations | ( | ) | const |
Return number of Krylov iterations elapsed since solve started
Returns std::size_t The number of iterations.
| GenericLinearSolver & NewtonSolver::linear_solver | ( | ) | const |
Return the linear solver
Returns GenericLinearSolver The linear solver.
| double NewtonSolver::relative_residual | ( | ) | const |
Return current relative residual
Returns double Current relative residual.
| double NewtonSolver::residual | ( | ) | const |
Return current residual
Returns double Current residual.
| double NewtonSolver::residual0 | ( | ) | const |
Return initial residual
Returns double Initial residual.
|
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.
| 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)
|
protectedvirtual |
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.
|
protectedvirtual |
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.
1.8.13