include/meltpooldg/level_set/reinitialization_elliptic_operation_CG_newton.hpp Source File

Developer Documentation: include/meltpooldg/level_set/reinitialization_elliptic_operation_CG_newton.hpp Source File
Developer Documentation
reinitialization_elliptic_operation_CG_newton.hpp
Go to the documentation of this file.
1#pragma once
2
10
11#include <limits>
12
25{
32 template <int dim, typename number>
34 {
35 public:
36 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
38
52 const unsigned int reinit_dof_idx_in,
53 const unsigned int reinit_quad_idx_in,
54 const unsigned int ls_dof_idx_in);
55
59 void
60 solve() override;
61
65 void
67
74 void
75 reinit() override;
76
82 void
83 set_initial_condition(const VectorType &solution_level_set_in) override;
84
94 void
95 set_initial_condition(const dealii::Function<dim> &initial_field_function) override;
96
102 const VectorType &
103 get_level_set() const override;
104
110 VectorType &
111 get_level_set() override;
112
121 void
123 std::vector<dealii::LinearAlgebra::distributed::Vector<number> *> &vectors) override;
124
130 void
131 attach_output_vectors(GenericDataOut<dim, number> &data_out) const override;
132
138 number
140
141
142 private:
146 void
148
151
155 void
157
160
163
169 mutable unsigned int reinit_dof_idx;
170 const unsigned int reinit_quad_idx;
171 const unsigned int ls_dof_idx;
172
177 // level set field from the previous step: initial condition
179 // level set update from the new Newton-Raphson iteration
181
183 std::unique_ptr<ReinitializationEllipticOperatorNewton<dim, number>> reinit_operator;
186
189 number relative_change_level_set = std::numeric_limits<number>::max();
190
193
197 void
198 setup_newton();
199 };
200} // namespace MeltPoolDG::LevelSet
A generic utility for managing simulation output data in the MeltPoolDG context.
Definition generic_data_out.hpp:32
Operation that performs the elliptic reinitialization process.
Definition reinitialization_elliptic_operation_CG_newton.hpp:34
void setup_newton()
Set up and solve the system.
Definition reinitialization_elliptic_operation_CG_newton.cpp:44
void create_operator()
Create the elliptic reinitialization operator.
Definition reinitialization_elliptic_operation_CG_newton.cpp:205
number get_relative_change_level_set() const
Get the relative change of the level set L2 norm between the current and previous Newton-Raphson iter...
Definition reinitialization_elliptic_operation_CG_newton.cpp:180
const unsigned int ls_dof_idx
Definition reinitialization_elliptic_operation_CG_newton.hpp:171
VectorType level_set_old
Definition reinitialization_elliptic_operation_CG_newton.hpp:178
VectorType solution_level_set
This is the primary solution vector of this class.
Definition reinitialization_elliptic_operation_CG_newton.hpp:174
Preconditioner< dim, VectorType, number > preconditioner
Preconditioner for the linear solver.
Definition reinitialization_elliptic_operation_CG_newton.hpp:185
std::unique_ptr< ReinitializationEllipticOperatorNewton< dim, number > > reinit_operator
Pointer to the elliptic reinitialization operator object.
Definition reinitialization_elliptic_operation_CG_newton.hpp:183
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition reinitialization_elliptic_operation_CG_newton.hpp:36
const ScratchData< dim, dim, number > & scratch_data
Scratch data object.
Definition reinitialization_elliptic_operation_CG_newton.hpp:159
void attach_vectors(std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors) override
Attach internal vectors to an external container.
Definition reinitialization_elliptic_operation_CG_newton.cpp:187
CutUtil::MappingInfoType< dim, number > MappingInfoType
Definition reinitialization_elliptic_operation_CG_newton.hpp:37
void attach_output_vectors(GenericDataOut< dim, number > &data_out) const override
Attach the level-set solution, and normal vector components for output.
Definition reinitialization_elliptic_operation_CG_newton.cpp:195
VectorType delta_level_set
Definition reinitialization_elliptic_operation_CG_newton.hpp:180
number relative_change_level_set
Definition reinitialization_elliptic_operation_CG_newton.hpp:189
void reinit() override
Resizes the vectors to the right size of the underlying DoF handler and initializes further internal ...
Definition reinitialization_elliptic_operation_CG_newton.cpp:99
const unsigned int reinit_quad_idx
Definition reinitialization_elliptic_operation_CG_newton.hpp:170
VectorType rhs
Vector for the right-hand side of the Newton-Raphson iteration (residuum).
Definition reinitialization_elliptic_operation_CG_newton.hpp:176
void compute_intersected_quadrature()
Compute the quadrature rules for the immersed phase boundaries.
Definition reinitialization_elliptic_operation_CG_newton.cpp:224
void set_initial_condition(const VectorType &solution_level_set_in) override
Copies a solution field to solution_level_set.
Definition reinitialization_elliptic_operation_CG_newton.cpp:116
void solve_one_iter()
Solve one Newton-Raphson iteration for the elliptic reinitialization problem.
NewtonRaphsonSolver< number, VectorType > newton
Newton-Raphson solver class for iterative solution of the non-linear system.
Definition reinitialization_elliptic_operation_CG_newton.hpp:192
MappingInfoType mapping_info_surface
Mapping information for integration over immersed boundaries.
Definition reinitialization_elliptic_operation_CG_newton.hpp:150
unsigned int reinit_dof_idx
Definition reinitialization_elliptic_operation_CG_newton.hpp:169
const ReinitializationData< number > reinit_data
Container for reinitialization-related data.
Definition reinitialization_elliptic_operation_CG_newton.hpp:162
void solve() override
Solve the elliptic reinitialization problem using analytical implicit Newton-Raphson method.
Definition reinitialization_elliptic_operation_CG_newton.cpp:85
const VectorType & get_level_set() const override
Access the level-set field (const version).
Definition reinitialization_elliptic_operation_CG_newton.cpp:166
Definition reinitialization_operation_base.hpp:10
Definition newton_raphson_solver.hpp:68
Definition preconditioner.hpp:42
Container for shared scratch data between operations/operators.
Definition scratch_data.hpp:61
dealii::NonMatching::MappingInfo< dim, dim, dealii::VectorizedArray< number > > MappingInfoType
Definition util.hpp:53
This operation solves the reinitialization problem for a CG-FEM-based discrete level-set field by sol...
Definition advection_DG_operation.hpp:20
Definition reinitialization_data.hpp:133