NewtonSolver¶
-
class
dolfin.cpp.la.NewtonSolver(*args)¶ Bases:
dolfin.cpp.common.VariableThis class defines a Newton solver for nonlinear systems of equations of the form \(F(x) = 0\) .
Create nonlinear solver using provided linear solver Arguments comm (MPI_Ccmm) The
MPIcommunicator. solver (GenericLinearSolver) The linear solver. factory (GenericLinearAlgebraFactory) The factory.Parameters: - comm (MPI_Comm) –
- GenericLinearSolver > solver (std::shared_ptr<) –
- & factory (GenericLinearAlgebraFactory) –
-
converged()¶ 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.Parameters: - GenericVector & r (const) –
- NonlinearProblem & nonlinear_problem (const) –
- iteration (std::size_t) –
Return type:
-
static
default_parameters()¶
-
get_relaxation_parameter()¶ Get relaxation parameter Returns double Relaxation parameter value.
Return type: double
-
iteration()¶ Return current Newton iteration number Returns std::size_t The iteration number.
Return type: std::size_t
-
krylov_iterations()¶ Return number of Krylov iterations elapsed since solve started Returns std::size_t The number of iterations.
Return type: std::size_t
-
linear_solver()¶ Return the linear solver Returns:cpp:any:GenericLinearSolver The linear solver.
Return type: GenericLinearSolver &
-
relative_residual()¶ Return current relative residual Returns double Current relative residual.
Return type: double
-
residual()¶ Return current residual Returns double Current residual.
Return type: double
-
residual0()¶ Return initial residual Returns double Initial residual.
Return type: double
-
set_relaxation_parameter()¶ Setrelaxation 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.Parameters: relaxation_parameter (double) – Return type: void
-
solve()¶ Solve abstract nonlinear problem \(F(x) = 0\) for given \(F\) and Jacobian \(\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)Parameters: - & nonlinear_function (NonlinearProblem) –
- & x (GenericVector) –
Return type: std::pair< std::size_t, bool >
-
solver_setup()¶ 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.Parameters: - const GenericMatrix > A (std::shared_ptr<) –
- const GenericMatrix > P (std::shared_ptr<) –
- NonlinearProblem & nonlinear_problem (const) –
- iteration (std::size_t) –
Return type: void
-
thisown¶ The membership flag
-
update_solution()¶ 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.Parameters: - & x (GenericVector) –
- GenericVector & dx (const) –
- relaxation_parameter (double) –
- NonlinearProblem & nonlinear_problem (const) –
- iteration (std::size_t) –
Return type: void