include/meltpooldg/level_set/reinitialization_hyperbolic_DG_operation.hpp Source File

Developer Documentation: include/meltpooldg/level_set/reinitialization_hyperbolic_DG_operation.hpp Source File
Developer Documentation
reinitialization_hyperbolic_DG_operation.hpp
Go to the documentation of this file.
1#pragma once
2
10
11
12
14{
15
16 template <int dim, typename number>
18 : public ReinitializationOperationBase<dim, number>,
20 {
21 private:
22 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
23 using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>;
24
25 public:
27 const ScratchData<dim, dim, number> &scratch_data_in,
30 const unsigned int reinit_dof_idx_in,
31 const unsigned int reinit_quad_idx_in,
32 const unsigned int ls_dof_idx_in,
33 const NormalVectorData<number> &normal_vec_data,
34 const CurvatureData<number> &curvature_data);
41 const ScratchData<dim, dim, number> &scratch_data_in,
44 const unsigned int reinit_dof_idx_in,
45 const unsigned int reinit_quad_idx_in,
46 const unsigned int ls_dof_idx_in,
47 const std::shared_ptr<NormalVectorOperationBase<dim, number>> &normal_vector_operation_in,
48 const std::shared_ptr<CurvatureDGOperation<dim, number>> &curvature_operation_in,
49 const bool is_coupled_in);
50
54 void
55 reinit() override;
56
60 void
61 set_initial_condition(const VectorType &solution_level_set_in) override;
62
68 void
69 set_initial_condition(const dealii::Function<dim> &initial_field_function) override;
70
71 void
73
77 void
78 solve() override;
79
80 number
81 get_max_change_level_set() const final;
82
83 const BlockVectorType &
84 get_normal_vector() const;
85
86 const VectorType &
87 get_level_set() const override;
88
90 get_level_set() override;
91
94
95 void
97 std::vector<dealii::LinearAlgebra::distributed::Vector<number> *> &vectors) override;
98
99 void
100 attach_output_vectors(GenericDataOut<dim, number> &data_out) const override;
101
105 number
106 compute_CFL_based_timestep() const override;
107
108 void
110
111 VectorType *
113 {
114 return &reinit_DG_operator->get_sign_indicator_function();
115 }
116
117 private:
121 /*
122 * Based on the following indices the correct DoFHandler or quadrature rule from
123 * ScratchData<dim,dim,number> object is selected. This is important when
124 * ScratchData<dim,dim,number> holds multiple DoFHandlers, quadrature rules, etc.
125 */
126 mutable unsigned int reinit_dof_idx;
127 const unsigned int reinit_quad_idx;
128 const unsigned int ls_dof_idx;
129
131
132 std::shared_ptr<OlssonDGOperator<dim, number>> reinit_DG_operator;
133
134 std::shared_ptr<TimeIntegration::TimeIntegratorBase<number>> reinitialization_integration;
135
136
137 // maximum change of the level set due to the current reinitialization step
138 number max_change_level_set = std::numeric_limits<number>::max();
139
140 /*
141 * Computation of the normal vectors
142 */
143 std::shared_ptr<NormalVectorOperationBase<dim, number>> normal_vector_operation;
144
145 /*
146 * Computation of the curvature
147 */
148 std::shared_ptr<CurvatureDGOperation<dim, number>> curvature_operation;
149
150 const bool is_coupled = false;
151 };
152} // namespace MeltPoolDG::LevelSet
A generic utility for managing simulation output data in the MeltPoolDG context.
Definition generic_data_out.hpp:32
Definition curvature_DG_operation.hpp:22
Definition normal_vector_operation_base.hpp:8
Definition reinitialization_hyperbolic_DG_operation.hpp:20
void set_artificial_diffusitivity() override
Definition reinitialization_hyperbolic_DG_operation.cpp:341
const unsigned int reinit_quad_idx
Definition reinitialization_hyperbolic_DG_operation.hpp:127
void attach_output_vectors(GenericDataOut< dim, number > &data_out) const override
Definition reinitialization_hyperbolic_DG_operation.cpp:300
const bool is_coupled
Definition reinitialization_hyperbolic_DG_operation.hpp:150
const ReinitializationData< number > reinit_data
Definition reinitialization_hyperbolic_DG_operation.hpp:119
void solve() override
Definition reinitialization_hyperbolic_DG_operation.cpp:218
number get_max_change_level_set() const final
Definition reinitialization_hyperbolic_DG_operation.cpp:249
std::shared_ptr< OlssonDGOperator< dim, number > > reinit_DG_operator
Definition reinitialization_hyperbolic_DG_operation.hpp:132
unsigned int reinit_dof_idx
Definition reinitialization_hyperbolic_DG_operation.hpp:126
std::shared_ptr< NormalVectorOperationBase< dim, number > > normal_vector_operation
Definition reinitialization_hyperbolic_DG_operation.hpp:143
const ScratchData< dim, dim, number > & scratch_data
Definition reinitialization_hyperbolic_DG_operation.hpp:118
void attach_vectors(std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors) override
Definition reinitialization_hyperbolic_DG_operation.cpp:284
void init_time_advance()
Definition reinitialization_hyperbolic_DG_operation.cpp:210
VectorType * get_sign_indicator_function() override
Definition reinitialization_hyperbolic_DG_operation.hpp:112
const TimeIntegration::TimeIterator< number > & time_iterator
Definition reinitialization_hyperbolic_DG_operation.hpp:120
const unsigned int ls_dof_idx
Definition reinitialization_hyperbolic_DG_operation.hpp:128
std::shared_ptr< CurvatureDGOperation< dim, number > > curvature_operation
Definition reinitialization_hyperbolic_DG_operation.hpp:148
const VectorType & get_level_set() const override
Definition reinitialization_hyperbolic_DG_operation.cpp:256
TimeIntegration::SolutionHistory< VectorType > solution_history
Definition reinitialization_hyperbolic_DG_operation.hpp:130
void reinit() override
Definition reinitialization_hyperbolic_DG_operation.cpp:101
number compute_CFL_based_timestep() const override
Definition reinitialization_hyperbolic_DG_operation.cpp:319
void set_initial_condition(const VectorType &solution_level_set_in) override
Definition reinitialization_hyperbolic_DG_operation.cpp:183
number max_change_level_set
Definition reinitialization_hyperbolic_DG_operation.hpp:138
dealii::LinearAlgebra::distributed::BlockVector< number > BlockVectorType
Definition reinitialization_hyperbolic_DG_operation.hpp:23
const BlockVectorType & get_normal_vector() const
Definition reinitialization_hyperbolic_DG_operation.cpp:270
std::shared_ptr< TimeIntegration::TimeIntegratorBase< number > > reinitialization_integration
Definition reinitialization_hyperbolic_DG_operation.hpp:134
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition reinitialization_hyperbolic_DG_operation.hpp:22
Definition reinitialization_operation_base.hpp:84
Definition reinitialization_operation_base.hpp:10
Container for shared scratch data between operations/operators.
Definition scratch_data.hpp:61
Definition solution_history.hpp:21
Definition time_iterator.hpp:15
This operation solves the reinitialization problem for a CG- or DG-FEM-based discrete level-set field...
Definition advection_DG_operation.hpp:20
Definition dealii_tensor.hpp:10
Definition curvature_data.hpp:15
Definition normal_vector_data.hpp:15
Definition reinitialization_data.hpp:126