include/meltpooldg/level_set/normal_vector_DG_operation.hpp Source File

Developer Documentation: include/meltpooldg/level_set/normal_vector_DG_operation.hpp Source File
Developer Documentation
normal_vector_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
18#include <memory>
19#include <utility>
20
22{
32 template <int dim, typename number>
34 {
35 private:
36 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
37 using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>;
38 using SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix;
39
40 public:
42 const unsigned int normal_dof_idx_in,
43 const unsigned int normal_quad_idx_in,
44 const VectorType &solution_level_set_in,
46
47 void
48 reinit() override;
49
50 void
51 solve() override;
52
53 const BlockVectorType &
54 get_solution_normal_vector() const override;
55
58
59 void
61 std::vector<dealii::LinearAlgebra::distributed::Vector<number> *> &vectors) override;
62
63 private:
67
69
70 /*
71 * Based on the following indices the correct DoFHandler or quadrature rule from
72 * ScratchData<dim,dim,number> object is selected. This is important when
73 * ScratchData<dim,dim,number> holds multiple DoFHandlers, quadrature rules, etc.
74 */
75 const unsigned int normal_dof_idx;
76 const unsigned int normal_quad_idx;
77
79
87 template <uint direction>
88 void
89 right_hand_side_domain(const dealii::MatrixFree<dim, number> &data,
90 VectorType &dst,
91 const VectorType &src,
92 const std::pair<unsigned int, unsigned int> &cell_range) const;
93 };
94} // namespace MeltPoolDG::LevelSet
Definition helmholtz_DG_operator.hpp:30
Definition normal_vector_DG_operation.hpp:34
TimeIntegration::SolutionHistory< BlockVectorType > solution_history
Definition normal_vector_DG_operation.hpp:68
void solve() override
Definition normal_vector_DG_operation.cpp:44
const unsigned int normal_dof_idx
Definition normal_vector_DG_operation.hpp:75
const ScratchData< dim, dim, number > & scratch_data
Definition normal_vector_DG_operation.hpp:64
void reinit() override
Definition normal_vector_DG_operation.cpp:32
dealii::LinearAlgebra::distributed::BlockVector< number > BlockVectorType
Definition normal_vector_DG_operation.hpp:37
const NormalVectorData< number > normal_vector_data
Definition normal_vector_DG_operation.hpp:66
dealii::TrilinosWrappers::SparseMatrix SparseMatrixType
Definition normal_vector_DG_operation.hpp:38
void attach_vectors(std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors) override
Definition normal_vector_DG_operation.cpp:151
void right_hand_side_domain(const dealii::MatrixFree< dim, number > &data, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
const unsigned int normal_quad_idx
Definition normal_vector_DG_operation.hpp:76
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition normal_vector_DG_operation.hpp:36
const VectorType & solution_level_set
Definition normal_vector_DG_operation.hpp:65
const HelmholtzDGOperator< dim, number > helmholtz_operator
Definition normal_vector_DG_operation.hpp:78
const BlockVectorType & get_solution_normal_vector() const override
Definition normal_vector_DG_operation.cpp:135
Definition normal_vector_operation_base.hpp:8
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 normal_vector_data.hpp:15