include/meltpooldg/level_set/reinitialization_olsson_DG_operator.hpp Source File

Developer Documentation: include/meltpooldg/level_set/reinitialization_olsson_DG_operator.hpp Source File
Developer Documentation
reinitialization_olsson_DG_operator.hpp
Go to the documentation of this file.
1#pragma once
2
8
24{
25
26 template <int dim, typename number>
28 {
29 public:
30 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
31 using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>;
32
34 const ReinitializationData<number> &reinit_data_in,
35 const unsigned int reinit_dof_idx_in,
36 const unsigned int reinit_quad_idx_in,
37 const VectorType &curvature_in,
38 const BlockVectorType &normal_vector_in);
39
40
45 void
46 prepare_operator(const VectorType &solution);
47
55 void
56 apply_operator(number const time,
57 VectorType &dst,
58 VectorType const &src,
59 const std::function<void(unsigned int, unsigned int)> &func) const;
60
68 void
69 apply_dirichlet_boundary_operator([[maybe_unused]] number const time,
70 [[maybe_unused]] VectorType &dst,
71 [[maybe_unused]] VectorType const &src) const {};
75 void
76 reinit();
77
86 void
88 number const time,
89 number const time_step,
90 [[maybe_unused]] TimeIntegration::SolutionHistory<VectorType> &solution_history) const;
91
96
101 void
102 set_field_functions([[maybe_unused]] number const time) const {};
103
104 number
105 get_max_diffusitivity() const;
106
107 VectorType &
109 {
110 return signum_smoothed;
111 }
112
113 VectorType &
118
119 void
121
122 private:
124
125 const unsigned int reinit_dof_idx;
126 const unsigned int reinit_quad_idx;
127
129
134
135 // auxiliary vectors for Godunov's scheme
142
148
149
153 std::shared_ptr<TimeIntegration::TimeIntegratorBase<number>> IMEX_integration;
154
155
160 void
161 compute_godunov_hamiltonian(const VectorType &solution) const;
162
167 void
168 compute_godunov_gradient(const VectorType &solution) const;
169
175 void
176 compute_smoothed_signum(const VectorType &solution, const number min_vertex_distance) const;
177
185 void
186 interface_movement_penalty(const dealii::MatrixFree<dim, number> &data,
187 VectorType &dst,
188 const VectorType &src,
189 const std::pair<unsigned int, unsigned int> &cell_range) const;
190
194 void
196 const dealii::MatrixFree<dim, number> &data,
197 VectorType &dst,
198 const VectorType &src,
199 const std::pair<unsigned int, unsigned int> &cell_range) const;
200 };
201} // namespace MeltPoolDG::LevelSet
Definition reinitialization_olsson_DG_operator.hpp:28
VectorType grad_z_r
Definition reinitialization_olsson_DG_operator.hpp:141
number get_max_diffusitivity() const
Definition reinitialization_olsson_DG_operator.cpp:366
const MeltPoolDG::ScratchData< dim, dim, number > & scratch_data
Definition reinitialization_olsson_DG_operator.hpp:123
VectorType God_grad
Definition reinitialization_olsson_DG_operator.hpp:132
VectorType grad_y_l
Definition reinitialization_olsson_DG_operator.hpp:138
ReinitializationDGDiffusionOperator< dim, number > RI_DG_diffusion_operator
Definition reinitialization_olsson_DG_operator.hpp:146
std::shared_ptr< TimeIntegration::TimeIntegratorBase< number > > IMEX_integration
Definition reinitialization_olsson_DG_operator.hpp:153
VectorType grad_z_l
Definition reinitialization_olsson_DG_operator.hpp:140
VectorType grad_y_r
Definition reinitialization_olsson_DG_operator.hpp:139
void prepare_operator(const VectorType &solution)
Definition reinitialization_olsson_DG_operator.cpp:45
VectorType grad_x_l
Definition reinitialization_olsson_DG_operator.hpp:136
void interface_movement_penalty(const dealii::MatrixFree< dim, number > &data, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
Definition reinitialization_olsson_DG_operator.cpp:196
VectorType grad_x_r
Definition reinitialization_olsson_DG_operator.hpp:137
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition reinitialization_olsson_DG_operator.hpp:30
void compute_godunov_gradient(const VectorType &solution) const
Definition reinitialization_olsson_DG_operator.cpp:235
void local_apply_domain_num_Hamiltonian(const dealii::MatrixFree< dim, number > &data, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
Definition reinitialization_olsson_DG_operator.cpp:168
void set_field_functions(number const time) const
Definition reinitialization_olsson_DG_operator.hpp:102
const unsigned int reinit_dof_idx
Definition reinitialization_olsson_DG_operator.hpp:125
void apply_operator(number const time, VectorType &dst, VectorType const &src, const std::function< void(unsigned int, unsigned int)> &func) const
Definition reinitialization_olsson_DG_operator.cpp:66
VectorType & get_signum_smoothed() const
Definition reinitialization_olsson_DG_operator.hpp:108
VectorType sign_indicator_function
Definition reinitialization_olsson_DG_operator.hpp:133
void set_artificial_diffusitivity()
Definition reinitialization_olsson_DG_operator.cpp:373
void apply_diffusion_implicit(number const time, number const time_step, TimeIntegration::SolutionHistory< VectorType > &solution_history) const
Definition reinitialization_olsson_DG_operator.cpp:56
dealii::LinearAlgebra::distributed::BlockVector< number > BlockVectorType
Definition reinitialization_olsson_DG_operator.hpp:31
VectorType & get_sign_indicator_function()
Definition reinitialization_olsson_DG_operator.hpp:114
const unsigned int reinit_quad_idx
Definition reinitialization_olsson_DG_operator.hpp:126
const ReinitializationData< number > & reinit_data
Definition reinitialization_olsson_DG_operator.hpp:128
void reinit()
Definition reinitialization_olsson_DG_operator.cpp:126
void compute_godunov_hamiltonian(const VectorType &solution) const
Definition reinitialization_olsson_DG_operator.cpp:152
VectorType signum_smoothed
Definition reinitialization_olsson_DG_operator.hpp:131
VectorType num_Hamiltonian
Definition reinitialization_olsson_DG_operator.hpp:130
void compute_smoothed_signum(const VectorType &solution, const number min_vertex_distance) const
Definition reinitialization_olsson_DG_operator.cpp:315
void apply_dirichlet_boundary_operator(number const time, VectorType &dst, VectorType const &src) const
Definition reinitialization_olsson_DG_operator.hpp:69
RIGradOperator< dim, number > RI_grad_operator
Definition reinitialization_olsson_DG_operator.hpp:147
bool update_field_functions
Definition reinitialization_olsson_DG_operator.hpp:95
Definition reinitialization_DG_grad_operator.hpp:17
Definition reinitialization_DG_diffusion_operator.hpp:18
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 reinitialization_data.hpp:126