DOLFIN-X
DOLFIN-X C++ interface
NonlinearProblem.h
1 // Copyright (C) 2005-2018 Garth N. Wells
2 //
3 // This file is part of DOLFINX (https://www.fenicsproject.org)
4 //
5 // SPDX-License-Identifier: LGPL-3.0-or-later
6 
7 #pragma once
8 
9 #include <petscmat.h>
10 #include <petscvec.h>
11 
12 namespace dolfinx::nls
13 {
14 
17 
19 {
20 public:
22  NonlinearProblem() = default;
23 
25  virtual ~NonlinearProblem() {}
26 
31  virtual void form(Vec)
32  {
33  // Do nothing if not supplied by the user
34  }
35 
37  virtual Vec F(const Vec x) = 0;
38 
40  virtual Mat J(const Vec x) = 0;
41 
45  virtual Mat P(const Vec) { return nullptr; }
46 };
47 } // namespace dolfinx::nls
dolfinx::nls::NonlinearProblem::~NonlinearProblem
virtual ~NonlinearProblem()
Destructor.
Definition: NonlinearProblem.h:25
dolfinx::nls::NonlinearProblem::J
virtual Mat J(const Vec x)=0
Compute J = F' at current point x.
dolfinx::nls::NonlinearProblem::form
virtual void form(Vec)
Function called by Newton solver before requesting F, J or J_pc. This can be used to compute F,...
Definition: NonlinearProblem.h:31
dolfinx::nls::NonlinearProblem::P
virtual Mat P(const Vec)
Compute J_pc used to precondition J. Not implementing this or leaving P empty results in system matri...
Definition: NonlinearProblem.h:45
dolfinx::nls::NonlinearProblem::NonlinearProblem
NonlinearProblem()=default
Constructor.
dolfinx::nls
Nonlinear solvers.
dolfinx::nls::NonlinearProblem
This is a base class for nonlinear problems which can return the nonlinear function F(u) and its Jaco...
Definition: NonlinearProblem.h:19
dolfinx::nls::NonlinearProblem::F
virtual Vec F(const Vec x)=0
Compute F at current point x.