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{
65 template <typename number,
66 typename VectorType = dealii::LinearAlgebra::distributed::Vector<number>>
68 {
69 public:
79 std::function<void(const VectorType &evaluation_point, VectorType &residual)> residual = {};
80
91 std::function<int(const VectorType &rhs, VectorType &dst)> solve_with_jacobian = {};
92
97 std::function<void(VectorType &v)> reinit_vector = {};
98
102 std::function<void(VectorType &v)> distribute_constraints = {};
103
108 // TODO: remove and replace by standard l2_norm() (?)
109 std::function<number()> norm_of_solution_vector = {};
110
111 private:
116
120 dealii::ConditionalOStream pcout;
121
127
133
140
144 VectorType rhs;
145
149 VectorType solution_update;
150
155
161
165 std::ostringstream str_;
166
167 public:
174
188 void
189 solve(VectorType &solution);
190
195 const VectorType &
197 {
198 return rhs;
199 }
200
205 const VectorType &
207 {
208 return solution_update;
209 }
210
211 private:
218 void
219 solve_increment(const VectorType &current_solution);
220
224 number
226
232 void
234
245 bool
246 is_converged(const VectorType &solution);
247
252 void
253 print_header() const;
254
258 std::string
259 print_checkmark(bool is_converged) const;
260 };
261
262} // namespace MeltPoolDG
Definition newton_raphson_solver.hpp:68
int linear_iter_acc
Definition newton_raphson_solver.hpp:154
std::function< void(const VectorType &evaluation_point, VectorType &residual)> residual
Definition newton_raphson_solver.hpp:79
VectorType solution_update
Definition newton_raphson_solver.hpp:149
std::function< void(VectorType &v)> reinit_vector
Definition newton_raphson_solver.hpp:97
number suggest_new_time_increment()
Definition newton_raphson_solver.cpp:102
number field_correction_tolerance
Definition newton_raphson_solver.hpp:139
VectorType rhs
Definition newton_raphson_solver.hpp:144
const VectorType & get_residual() const
Definition newton_raphson_solver.hpp:196
std::function< int(const VectorType &rhs, VectorType &dst)> solve_with_jacobian
Definition newton_raphson_solver.hpp:91
std::function< void(VectorType &v)> distribute_constraints
Definition newton_raphson_solver.hpp:102
std::function< number()> norm_of_solution_vector
Definition newton_raphson_solver.hpp:109
const NonlinearSolverData< number > nlsolve_data
Definition newton_raphson_solver.hpp:115
bool is_converged(const VectorType &solution)
Definition newton_raphson_solver.cpp:118
std::ostringstream str_
Definition newton_raphson_solver.hpp:165
const int max_number_of_iterations
Definition newton_raphson_solver.hpp:126
const VectorType & get_solution_update() const
Definition newton_raphson_solver.hpp:206
dealii::ConditionalOStream pcout
Definition newton_raphson_solver.hpp:120
void solve(VectorType &solution)
Definition newton_raphson_solver.cpp:24
void solve_increment(const VectorType &current_solution)
Definition newton_raphson_solver.cpp:161
number residual_tolerance
Definition newton_raphson_solver.hpp:132
std::string print_checkmark(bool is_converged) const
Definition newton_raphson_solver.cpp:154
void print_header() const
Definition newton_raphson_solver.cpp:84
number initial_residual_norm
Definition newton_raphson_solver.hpp:160
void set_tolerances_to_alternative_values()
Definition newton_raphson_solver.cpp:110
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