24#ifndef __NEWTON_SOLVER_H
25#define __NEWTON_SOLVER_H
29#include <dolfin/common/MPI.h>
30#include <dolfin/common/Variable.h>
36 class GenericLinearSolver;
37 class GenericLinearAlgebraFactory;
40 class NonlinearProblem;
41 class MixedNonlinearProblem;
62 NewtonSolver(MPI_Comm comm, std::shared_ptr<GenericLinearSolver> solver,
142 { _relaxation_parameter = relaxation_parameter; }
150 {
return _relaxation_parameter; }
187 virtual void solver_setup(std::shared_ptr<const GenericMatrix> A,
188 std::shared_ptr<const GenericMatrix> P,
210 double relaxation_parameter,
217 std::size_t _newton_iteration;
220 std::size_t _krylov_iterations;
223 double _relaxation_parameter;
226 double _residual, _residual0;
229 std::shared_ptr<GenericLinearSolver> _solver;
232 std::shared_ptr<GenericMatrix> _matA;
235 std::shared_ptr<GenericMatrix> _matP;
238 std::shared_ptr<GenericVector> _dx;
241 std::shared_ptr<GenericVector> _b;
Base class for LinearAlgebra factories.
Definition GenericLinearAlgebraFactory.h:47
This class provides a general solver for linear systems Ax = b.
Definition GenericLinearSolver.h:38
This class defines a common interface for vectors.
Definition GenericVector.h:48
Definition NewtonSolver.h:47
double residual0() const
Definition NewtonSolver.cpp:277
double residual() const
Definition NewtonSolver.cpp:272
std::pair< std::size_t, bool > solve(NonlinearProblem &nonlinear_function, GenericVector &x)
Definition NewtonSolver.cpp:102
virtual bool converged(const GenericVector &r, const NonlinearProblem &nonlinear_problem, std::size_t iteration)
Definition NewtonSolver.cpp:301
double relative_residual() const
Definition NewtonSolver.cpp:282
virtual ~NewtonSolver()
Destructor.
Definition NewtonSolver.cpp:96
void set_relaxation_parameter(double relaxation_parameter)
Definition NewtonSolver.h:141
std::size_t krylov_iterations() const
Definition NewtonSolver.cpp:267
virtual void solver_setup(std::shared_ptr< const GenericMatrix > A, std::shared_ptr< const GenericMatrix > P, const NonlinearProblem &nonlinear_problem, std::size_t iteration)
Definition NewtonSolver.cpp:332
std::size_t iteration() const
Definition NewtonSolver.cpp:262
GenericLinearSolver & linear_solver() const
Definition NewtonSolver.cpp:287
virtual void update_solution(GenericVector &x, const GenericVector &dx, double relaxation_parameter, const NonlinearProblem &nonlinear_problem, std::size_t iteration)
Definition NewtonSolver.cpp:349
double get_relaxation_parameter()
Definition NewtonSolver.h:149
static Parameters default_parameters()
Definition NewtonSolver.cpp:48
Definition NonlinearProblem.h:37
Definition Parameters.h:95
Common base class for DOLFIN variables.
Definition Variable.h:36