include/meltpooldg/linear_algebra/newton_raphson_solver.hpp Source File

Developer Documentation: include/meltpooldg/linear_algebra/newton_raphson_solver.hpp Source File
Developer Documentation
newton_raphson_solver.hpp
Go to the documentation of this file.
1#pragma once
2#include <deal.II/lac/generic_linear_algebra.h>
3
7
8namespace MeltPoolDG
9{
10 template <typename number,
11 typename VectorType = dealii::LinearAlgebra::distributed::Vector<number>>
13 {
14 public:
15 std::function<void(const VectorType &evaluation_point, VectorType &residual)> residual = {};
16 std::function<int(const VectorType &rhs, VectorType &dst)> solve_with_jacobian = {};
17 std::function<void(VectorType &v)> reinit_vector = {};
18 std::function<void(VectorType &v)> distribute_constraints = {};
19
20 // TODO: remove and replace by standard l2_norm() (?)
21 std::function<number()> norm_of_solution_vector = {};
22
23 private:
25
26 dealii::ConditionalOStream pcout;
27
31
32 VectorType rhs;
33 VectorType solution_update;
34
37 std::ostringstream str_;
38
39 public:
41
42 void
43 solve(VectorType &solution);
44
45 const VectorType &
47 {
48 return rhs;
49 }
50
51 const VectorType &
53 {
54 return solution_update;
55 }
56
57 private:
58 void
59 solve_increment(const VectorType &current_solution);
60
61 number
63
64 void
66
67 bool
69
70 void
71 print_header() const;
72
73 std::string
74 print_checkmark(bool is_converged) const;
75 };
76
77} // namespace MeltPoolDG
Definition newton_raphson_solver.hpp:13
int linear_iter_acc
Definition newton_raphson_solver.hpp:36
std::function< void(const VectorType &evaluation_point, VectorType &residual)> residual
Definition newton_raphson_solver.hpp:15
VectorType solution_update
Definition newton_raphson_solver.hpp:33
std::function< void(VectorType &v)> reinit_vector
Definition newton_raphson_solver.hpp:17
number suggest_new_time_increment()
Definition newton_raphson_solver.cpp:88
number field_correction_tolerance
Definition newton_raphson_solver.hpp:30
VectorType rhs
Definition newton_raphson_solver.hpp:32
const VectorType & get_residual() const
Definition newton_raphson_solver.hpp:46
std::function< int(const VectorType &rhs, VectorType &dst)> solve_with_jacobian
Definition newton_raphson_solver.hpp:16
std::function< void(VectorType &v)> distribute_constraints
Definition newton_raphson_solver.hpp:18
bool is_converged()
Definition newton_raphson_solver.cpp:104
std::function< number()> norm_of_solution_vector
Definition newton_raphson_solver.hpp:21
const NonlinearSolverData< number > nlsolve_data
Definition newton_raphson_solver.hpp:24
std::ostringstream str_
Definition newton_raphson_solver.hpp:37
const int max_number_of_iterations
Definition newton_raphson_solver.hpp:28
const VectorType & get_solution_update() const
Definition newton_raphson_solver.hpp:52
dealii::ConditionalOStream pcout
Definition newton_raphson_solver.hpp:26
void solve(VectorType &solution)
Definition newton_raphson_solver.cpp:24
void solve_increment(const VectorType &current_solution)
Definition newton_raphson_solver.cpp:138
number residual_tolerance
Definition newton_raphson_solver.hpp:29
std::string print_checkmark(bool is_converged) const
Definition newton_raphson_solver.cpp:131
void print_header() const
Definition newton_raphson_solver.cpp:72
int iteration_counter
Definition newton_raphson_solver.hpp:35
void set_tolerances_to_alternative_values()
Definition newton_raphson_solver.cpp:96
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition utilities_matrixfree.hpp:15
Interface for a general preconditioner.
Definition boundary_condition_functions.hpp:17
Definition nonlinear_solver_data.hpp:12