include/meltpooldg/level_set/curvature_DG_operation.hpp Source File

Developer Documentation: include/meltpooldg/level_set/curvature_DG_operation.hpp Source File
Developer Documentation
curvature_DG_operation.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
8#include <deal.II/matrix_free/matrix_free.h>
9
17
19{
20 template <int dim, typename number>
22 {
23 private:
24 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
25 using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>;
26 using SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix;
27
28 public:
30 const unsigned int curvature_dof_idx_in,
31 const unsigned int curvature_quad_idx_in,
32 const BlockVectorType &solution_normal_vector_in,
34
35 void
36 solve();
37
38 const dealii::LinearAlgebra::distributed::Vector<number> &
39 get_curvature() const;
40
41 dealii::LinearAlgebra::distributed::Vector<number> &
43
44 void
45 reinit();
46
47 void
48 attach_vectors(std::vector<dealii::LinearAlgebra::distributed::Vector<number> *> &vectors);
49
50 private:
54
56
57 /*
58 * Based on the following indices the correct DoFHandler or quadrature rule from
59 * ScratchData<dim,dim,number> object is selected. This is important when
60 * ScratchData<dim,dim,number> holds multiple DoFHandlers, quadrature rules, etc.
61 */
62 const unsigned int curvature_dof_idx;
63 const unsigned int curvature_quad_idx;
64
66
75 void
76 right_hand_side_domain(const dealii::MatrixFree<dim, number> &data,
77 VectorType &dst,
78 const BlockVectorType &src,
79 const std::pair<unsigned int, unsigned int> &cell_range) const;
80
91 template <uint direction>
92 void
94 [[maybe_unused]] const dealii::MatrixFree<dim, number> &data,
95 [[maybe_unused]] VectorType &dst,
96 [[maybe_unused]] const BlockVectorType &src,
97 [[maybe_unused]] const std::pair<unsigned int, unsigned int> &face_range) const
98 {}
99
110 template <uint direction>
111 void
113 [[maybe_unused]] const dealii::MatrixFree<dim, number> &data,
114 [[maybe_unused]] VectorType &dst,
115 [[maybe_unused]] const BlockVectorType &src,
116 [[maybe_unused]] const std::pair<unsigned int, unsigned int> &face_range) const
117 {}
118 };
119} // namespace MeltPoolDG::LevelSet
Definition curvature_DG_operation.hpp:22
const CurvatureData< number > curvature_data
Definition curvature_DG_operation.hpp:53
const HelmholtzDGOperator< dim, number > helmholtz_operator
Definition curvature_DG_operation.hpp:65
TimeIntegration::SolutionHistory< VectorType > solution_history
Definition curvature_DG_operation.hpp:55
const unsigned int curvature_dof_idx
Definition curvature_DG_operation.hpp:62
void right_hand_side_boundary_face(const dealii::MatrixFree< dim, number > &data, VectorType &dst, const BlockVectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
Definition curvature_DG_operation.hpp:112
dealii::TrilinosWrappers::SparseMatrix SparseMatrixType
Definition curvature_DG_operation.hpp:26
void reinit()
Definition curvature_DG_operation.cpp:33
const unsigned int curvature_quad_idx
Definition curvature_DG_operation.hpp:63
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition curvature_DG_operation.hpp:24
const ScratchData< dim, dim, number > & scratch_data
Definition curvature_DG_operation.hpp:51
void attach_vectors(std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors)
Definition curvature_DG_operation.cpp:150
void right_hand_side_inner_face(const dealii::MatrixFree< dim, number > &data, VectorType &dst, const BlockVectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
Definition curvature_DG_operation.hpp:93
void right_hand_side_domain(const dealii::MatrixFree< dim, number > &data, VectorType &dst, const BlockVectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
Definition curvature_DG_operation.cpp:72
const BlockVectorType & solution_normal_vector
Definition curvature_DG_operation.hpp:52
dealii::LinearAlgebra::distributed::BlockVector< number > BlockVectorType
Definition curvature_DG_operation.hpp:25
void solve()
Definition curvature_DG_operation.cpp:44
const dealii::LinearAlgebra::distributed::Vector< number > & get_curvature() const
Definition curvature_DG_operation.cpp:136
Definition helmholtz_DG_operator.hpp:30
Container for shared scratch data between operations/operators.
Definition scratch_data.hpp:61
Definition solution_history.hpp:21
This operation solves the reinitialization problem for a CG- or DG-FEM-based discrete level-set field...
Definition advection_DG_operation.hpp:20
Definition curvature_data.hpp:15