include/meltpooldg/level_set/reinitialization_elliptic_operator_fixed_point.hpp Source File

Developer Documentation: include/meltpooldg/level_set/reinitialization_elliptic_operator_fixed_point.hpp Source File
Developer Documentation
reinitialization_elliptic_operator_fixed_point.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/fe/fe_dgq.h>
4#include <deal.II/fe/fe_system.h>
5
6#include <deal.II/lac/generic_linear_algebra.h>
7#include <deal.II/lac/la_parallel_block_vector.h>
8
9#include <deal.II/matrix_free/fe_evaluation.h>
10#include <deal.II/matrix_free/fe_point_evaluation.h>
11#include <deal.II/matrix_free/matrix_free.h>
12#include <deal.II/matrix_free/operators.h>
13
19
20
22{
37 template <int dim, typename number>
39 {
40 using OperatorMatrixFree<dim, number>::vmult;
41 using OperatorMatrixFree<dim, number>::create_rhs;
43
44 public:
45 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
46 using VectorizedArrayType = dealii::VectorizedArray<number>;
48 using PointEvaluationType = dealii::FEPointEvaluation<1, dim, dim, VectorizedArrayType>;
49
50
64 const MeltPoolDG::ScratchData<dim, dim, number> &scratch_data_in,
65 const ReinitializationData<number> &reinit_data_in,
66 const unsigned int reinit_dof_idx_in,
67 const unsigned int reinit_quad_idx_in,
68 const MappingInfoType &mapping_info_surface_in,
69 const unsigned int ls_dof_idx_in);
70
71
79 void
80 vmult(VectorType &dst, const VectorType &src) const final;
81
89 void
90 create_rhs(VectorType &rhs, const VectorType &old_level_set) const final;
91
95 void
96 reinit() final;
97
104 void
106 dealii::TrilinosWrappers::SparseMatrix &system_matrix) const final;
107
114 void
116
117
118 private:
126 void
127 rhs_cell_operation(FECellIntegrator<dim, 1, number> &cell_eval,
128 const FECellIntegrator<dim, 1, number> &psi_old) const;
129
140 void
141 interface_penalty_cell_operation(PointEvaluationType &interface_penalty_surface,
142 FECellIntegrator<dim, 1, number> &interface_penalty,
143 const unsigned int lane,
144 const number penalty_coefficient) const;
145
153 template <typename EvaluatorType>
155 evaluate_rhs_coefficient(const EvaluatorType &phi_old, const unsigned int q_index) const;
156
166 void
167 lhs_cell_operation(FECellIntegrator<dim, 1, number> &interface_penalty,
168 FECellIntegrator<dim, 1, number> &cell_eval,
169 PointEvaluationType &interface_penalty_surface) const;
170
176 void
177 laplace_cell_operation(FECellIntegrator<dim, 1, number> &cell_eval) const;
178
185 void
186 lhs_inner_face_operation(FEFaceIntegrator<dim, 1, number> &eval_minus,
187 FEFaceIntegrator<dim, 1, number> &eval_plus) const;
188
190 const ScratchData<dim, dim, number> &scratch_data;
191
194
196 const unsigned int reinit_quad_idx;
197
200
203
205 const unsigned int n_dofs_per_cell;
206
208 const unsigned int ls_dof_idx;
209
211 dealii::AlignedVector<dealii::VectorizedArray<number>> solution_old;
212
217
220 };
221} // namespace MeltPoolDG::LevelSet
Operator for the matrix-free evaluation of diffusive reinitialization of the level set function.
Definition reinitialization_elliptic_operator_fixed_point.hpp:39
const unsigned int ls_dof_idx
DOF handler index for the level set field.
Definition reinitialization_elliptic_operator_fixed_point.hpp:208
void laplace_cell_operation(FECellIntegrator< dim, 1, number > &cell_eval) const
Calculate the contribution of the laplace operator of a cell to the lhs.
Definition reinitialization_elliptic_operator_fixed_point.cpp:122
void lhs_cell_operation(FECellIntegrator< dim, 1, number > &interface_penalty, FECellIntegrator< dim, 1, number > &cell_eval, PointEvaluationType &interface_penalty_surface) const
Calculate the contribution of a single cell integral to the left-hand side. First-level function for ...
Definition reinitialization_elliptic_operator_fixed_point.cpp:357
void vmult(VectorType &dst, const VectorType &src) const final
Apply the operator in a matrix-free fashion. Top-level function for the evaluation of the left-hand s...
Definition reinitialization_elliptic_operator_fixed_point.cpp:55
dealii::VectorizedArray< number > VectorizedArrayType
Definition reinitialization_elliptic_operator_fixed_point.hpp:46
void interface_penalty_cell_operation(PointEvaluationType &interface_penalty_surface, FECellIntegrator< dim, 1, number > &interface_penalty, const unsigned int lane, const number penalty_coefficient) const
Calculate the contribution of a single cell surface integral to the penalty term for the weak imposit...
Definition reinitialization_elliptic_operator_fixed_point.cpp:223
void lhs_inner_face_operation(FEFaceIntegrator< dim, 1, number > &eval_minus, FEFaceIntegrator< dim, 1, number > &eval_plus) const
Calculate the contribution of an interior face integral to the left-hand side.
Definition reinitialization_elliptic_operator_fixed_point.cpp:398
dealii::FE_Q< dim > fe_point_level_set
Temporary FE object required by FEPointEvaluation.
Definition reinitialization_elliptic_operator_fixed_point.hpp:202
const unsigned int reinit_quad_idx
Quadrature index for evaluating terms during reinitialization.
Definition reinitialization_elliptic_operator_fixed_point.hpp:196
void compute_inverse_diagonal_from_matrixfree(VectorType &diagonal) const final
Compute the inverse diagonal of the system matrix. Used by the preconditioner.
Definition reinitialization_elliptic_operator_fixed_point.cpp:309
dealii::FEPointEvaluation< 1, dim, dim, VectorizedArrayType > PointEvaluationType
Definition reinitialization_elliptic_operator_fixed_point.hpp:48
void compute_system_matrix_from_matrixfree(dealii::TrilinosWrappers::SparseMatrix &system_matrix) const final
Compute and assemble the system matrix from matrix-free operator evaluations. Used by the preconditio...
Definition reinitialization_elliptic_operator_fixed_point.cpp:258
const MappingInfoType & mapping_info_surface
Mapping information for integration over the interface.
Definition reinitialization_elliptic_operator_fixed_point.hpp:199
void rhs_cell_operation(FECellIntegrator< dim, 1, number > &cell_eval, const FECellIntegrator< dim, 1, number > &psi_old) const
Compute the contribution of a single cell integral to the right-hand side. First-level function for t...
Definition reinitialization_elliptic_operator_fixed_point.cpp:242
VectorType zero_interface
Definition reinitialization_elliptic_operator_fixed_point.hpp:216
CutUtil::MappingInfoType< dim, number > MappingInfoType
Definition reinitialization_elliptic_operator_fixed_point.hpp:47
const ReinitializationData< number > & reinit_data
Reference to the reinitialization parameters and coefficients.
Definition reinitialization_elliptic_operator_fixed_point.hpp:193
const unsigned int n_dofs_per_cell
Number of DoFs per cell of the temporary FE.
Definition reinitialization_elliptic_operator_fixed_point.hpp:205
VectorizedArrayType evaluate_rhs_coefficient(const EvaluatorType &phi_old, const unsigned int q_index) const
This evaluates the coefficient for the rhs integral.
Definition reinitialization_elliptic_operator_fixed_point.cpp:208
dealii::AlignedVector< dealii::VectorizedArray< number > > solution_old
Solution vector from the previous iteration or time step (used in matrix-free mode).
Definition reinitialization_elliptic_operator_fixed_point.hpp:211
number discontinuity_penalty
Discontinuity penalization parameter for DG.
Definition reinitialization_elliptic_operator_fixed_point.hpp:219
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition reinitialization_elliptic_operator_fixed_point.hpp:45
void create_rhs(VectorType &rhs, const VectorType &old_level_set) const final
Create the right-hand side vector using a matrix-free evaluation. Top-level function.
Definition reinitialization_elliptic_operator_fixed_point.cpp:136
void reinit() final
Reinitialize internal data structures, typically after mesh changes.
Definition reinitialization_elliptic_operator_fixed_point.cpp:38
const ScratchData< dim, dim, number > & scratch_data
Reference to scratch data containing mesh, geometry, and FE evaluation utilities.
Definition reinitialization_elliptic_operator_fixed_point.hpp:190
Operator handling matrix-free computations.
Definition operator_base.hpp:191
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
dealii::FEFaceEvaluation< dim, -1, 0, n_components, number, VectorizedArrayType > FEFaceIntegrator
Definition fe_integrator.hpp:22
dealii::FEEvaluation< dim, -1, 0, n_components, number, VectorizedArrayType > FECellIntegrator
Definition fe_integrator.hpp:14
Definition dealii_tensor.hpp:10
Definition reinitialization_data.hpp:133