libMesh
Loading...
Searching...
No Matches
diff_solver.C
Go to the documentation of this file.
1// The libMesh Finite Element Library.
2// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3
4// This library is free software; you can redistribute it and/or
5// modify it under the terms of the GNU Lesser General Public
6// License as published by the Free Software Foundation; either
7// version 2.1 of the License, or (at your option) any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12// Lesser General Public License for more details.
13
14// You should have received a copy of the GNU Lesser General Public
15// License along with this library; if not, write to the Free Software
16// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
18
19#include "libmesh/libmesh_common.h"
20#include "libmesh/diff_solver.h"
21#include "libmesh/newton_solver.h"
22#include "libmesh/implicit_system.h"
23
24// C++ Includes
25#include <memory>
26
27namespace libMesh
28{
29
32 max_linear_iterations(1000),
33 max_nonlinear_iterations(100),
34 quiet(true),
35 verbose(false),
36 continue_after_max_iterations(true),
37 continue_after_backtrack_failure(false),
38 absolute_residual_tolerance(0.),
39 relative_residual_tolerance(0.),
40 absolute_step_tolerance(0.),
41 relative_step_tolerance(0.),
42 initial_linear_tolerance(1e-12),
43 minimum_linear_tolerance(TOLERANCE*TOLERANCE),
44 _exact_constraint_enforcement(true),
45 max_solution_norm(0.),
46 max_residual_norm(0.),
47 _outer_iterations(0),
48 _inner_iterations(0),
49 _system (s),
50 _solve_result(INVALID_SOLVE_RESULT)
51{
52}
53
54
55
56std::unique_ptr<DiffSolver> DiffSolver::build (sys_type & s)
57{
58 return std::make_unique<NewtonSolver>(s);
59}
60
61
62
64{
65 // Reset the max_step_size and max_residual_norm for a new mesh
68}
69
70
71
73{
74 // Reset the max_step_size and max_residual_norm for a new problem
77}
78
79} // namespace libMesh
static std::unique_ptr< DiffSolver > build(sys_type &s)
Factory method.
Definition diff_solver.C:56
Real max_residual_norm
The largest nonlinear residual which the DiffSolver has yet seen will be stored here,...
Real max_solution_norm
The largest solution norm which the DiffSolver has yet seen will be stored here, to be used for stopp...
virtual void init()
The initialization function.
Definition diff_solver.C:72
virtual void reinit()
The reinitialization function.
Definition diff_solver.C:63
DiffSolver(sys_type &s)
Constructor.
Definition diff_solver.C:30
Manages consistently variables, degrees of freedom, coefficient vectors, and matrices for implicit sy...
An object whose state is distributed along a set of processors.
The libMesh namespace provides an interface to certain functionality in the library.
static constexpr Real TOLERANCE