include/meltpooldg/level_set/helmholtz_DG_operator.hpp Source File

Developer Documentation: include/meltpooldg/level_set/helmholtz_DG_operator.hpp Source File
Developer Documentation
helmholtz_DG_operator.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/vectorization.h>
4
5#include <deal.II/lac/la_parallel_vector.h>
6#include <deal.II/lac/trilinos_sparse_matrix.h>
7#include <deal.II/lac/trilinos_sparsity_pattern.h>
8
9#include <deal.II/matrix_free/matrix_free.h>
10
16
17#include <memory>
18#include <utility>
19
20
22{
28 template <int dim, typename number>
30 {
31 private:
32 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
33 using SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix;
34 using SparsityPatternType = dealii::TrilinosWrappers::SparsityPattern;
35
36 public:
38 const unsigned int dof_idx_in,
39 const unsigned int quad_idx_in,
40 const number filter_parameter_in,
41 const number interior_penalty_parameter_in,
42 const PreconditionerType preconditioner_type_in);
48 void
49 vmult(dealii::LinearAlgebra::distributed::Vector<number> &dst,
50 const dealii::LinearAlgebra::distributed::Vector<number> &src) const;
51
52 void
53 reinit() const;
54
55 const SparseMatrixType &
57 {
58 return this->system_matrix;
59 }
60
63 {
64 return this->preconditioner;
65 }
66
67 private:
69
70 const unsigned int dof_idx;
71 const unsigned int quad_idx;
72
73 mutable dealii::AlignedVector<dealii::VectorizedArray<number>> damping;
74 mutable dealii::AlignedVector<dealii::VectorizedArray<number>> array_penalty_parameter;
75
76 const number filter_parameter;
78
80
82
83 const PreconditionerType preconditioner_type;
84
85
93 void
94 local_apply_domain(const dealii::MatrixFree<dim, number> &data,
95 VectorType &dst,
96 const VectorType &src,
97 const std::pair<unsigned int, unsigned int> &cell_range) const;
98
106 void
107 local_apply_inner_face(const dealii::MatrixFree<dim, number> &data,
108 VectorType &dst,
109 const VectorType &src,
110 const std::pair<unsigned int, unsigned int> &face_range) const;
111
119 void
120 local_apply_boundary_face(const dealii::MatrixFree<dim, number> &data,
121 VectorType &dst,
122 const VectorType &src,
123 const std::pair<unsigned int, unsigned int> &face_range) const;
124
133 void
135
140 void
142 FEFaceIntegrator<dim, 1, number> &face_integrator_plus) const;
143
147 void
149
153 void
154 build_matrix() const;
155 };
156} // namespace MeltPoolDG::LevelSet
Definition helmholtz_DG_operator.hpp:30
Preconditioner< dim, VectorType, number > preconditioner
Definition helmholtz_DG_operator.hpp:81
void local_apply_inner_face(const dealii::MatrixFree< dim, number > &data, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
Definition helmholtz_DG_operator.cpp:133
void do_cell_integral_local(FECellIntegrator< dim, 1, number > &cell_integrator) const
Definition helmholtz_DG_operator.cpp:234
dealii::TrilinosWrappers::SparseMatrix SparseMatrixType
Definition helmholtz_DG_operator.hpp:33
void build_matrix() const
Definition helmholtz_DG_operator.cpp:336
void reinit() const
Definition helmholtz_DG_operator.cpp:31
const Preconditioner< dim, VectorType, number > & get_preconditioner() const
Definition helmholtz_DG_operator.hpp:62
void do_face_integral_local(FEFaceIntegrator< dim, 1, number > &face_integrator_minus, FEFaceIntegrator< dim, 1, number > &face_integrator_plus) const
Definition helmholtz_DG_operator.cpp:257
const unsigned int dof_idx
Definition helmholtz_DG_operator.hpp:70
void local_apply_domain(const dealii::MatrixFree< dim, number > &data, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
Definition helmholtz_DG_operator.cpp:100
void local_apply_boundary_face(const dealii::MatrixFree< dim, number > &data, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
Definition helmholtz_DG_operator.cpp:188
const unsigned int quad_idx
Definition helmholtz_DG_operator.hpp:71
SparseMatrixType system_matrix
Definition helmholtz_DG_operator.hpp:79
dealii::AlignedVector< dealii::VectorizedArray< number > > damping
Definition helmholtz_DG_operator.hpp:73
const ScratchData< dim, dim, number > & scratch_data
Definition helmholtz_DG_operator.hpp:68
const number filter_parameter
Definition helmholtz_DG_operator.hpp:76
dealii::TrilinosWrappers::SparsityPattern SparsityPatternType
Definition helmholtz_DG_operator.hpp:34
const PreconditionerType preconditioner_type
Definition helmholtz_DG_operator.hpp:83
const number interior_penalty_parameter
Definition helmholtz_DG_operator.hpp:77
void do_bounary_integral_local(FEFaceIntegrator< dim, 1, number > &face_integrator_minus) const
Definition helmholtz_DG_operator.cpp:301
void vmult(dealii::LinearAlgebra::distributed::Vector< number > &dst, const dealii::LinearAlgebra::distributed::Vector< number > &src) const
Definition helmholtz_DG_operator.cpp:80
dealii::AlignedVector< dealii::VectorizedArray< number > > array_penalty_parameter
Definition helmholtz_DG_operator.hpp:74
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition helmholtz_DG_operator.hpp:32
const SparseMatrixType & get_system_matrix() const
Definition helmholtz_DG_operator.hpp:56
Definition preconditioner.hpp:42
Container for shared scratch data between operations/operators.
Definition scratch_data.hpp:61
This operation solves the reinitialization problem for a CG- or DG-FEM-based discrete level-set field...
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