include/meltpooldg/compressible_flow/cutdg_operator.hpp Source File

Developer Documentation: include/meltpooldg/compressible_flow/cutdg_operator.hpp Source File
Developer Documentation
cutdg_operator.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/fe/fe_system.h>
4
10
12{
21 template <int dim, typename number, bool is_viscous = true>
23 {
24 public:
25 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
28
31
34 number,
37
40
59 const MappingInfoType &mapping_info_surface_in,
60 const MappingInfoVectorType &mapping_info_cells_in,
61 const MappingInfoVectorType &mapping_info_faces_in);
62
68 void
69 set_inflow_field_unfitted_boundary(std::shared_ptr<dealii::Function<dim>> &inflow_function);
70
76 void
77 set_unfitted_object_velocity(std::shared_ptr<dealii::Function<dim>> &velocity_function);
78
94 template <CellEvaluatorType<dim, dim + 2, number, dealii::VectorizedArray<number>> Integrator>
95 void
97 Integrator &phi,
99 const dealii::Tensor<1, dim, dealii::VectorizedArray<number>> *constant_body_force,
100 const unsigned int q) const;
101
111 void
113 dealii::FEPointEvaluation<dim + 2, dim, dim, dealii::VectorizedArray<number>> &phi,
114 const dealii::VectorizedArray<number> &interior_penalty_parameter,
116 const unsigned int q) const;
117
134 template <FaceEvaluatorType<dim, dim + 2, number, dealii::VectorizedArray<number>> Integrator>
135 void
136 do_face_integral_rhs(Integrator &phi_m,
137 Integrator &phi_p,
138 const dealii::VectorizedArray<number> &interior_penalty_parameter,
140 const unsigned int q) const;
141
157 template <FaceEvaluatorType<dim, dim + 2, number, dealii::VectorizedArray<number>> Integrator>
158 void
159 do_boundary_face_integral_rhs(Integrator &phi,
160 const dealii::VectorizedArray<number> &interior_penalty_parameter,
162 const auto boundary_id,
163 const unsigned int q) const;
164
173 void
174 local_apply_cell_rhs(const dealii::MatrixFree<dim, number> &matrix_free,
175 VectorType &dst,
176 const VectorType &src,
177 const std::pair<unsigned int, unsigned int> &cell_range) const;
178
187 void
188 local_apply_face_rhs(const dealii::MatrixFree<dim, number> &matrix_free,
189 VectorType &dst,
190 const VectorType &src,
191 const std::pair<unsigned int, unsigned int> &face_range) const;
192
201 void
202 local_apply_boundary_face_rhs(const dealii::MatrixFree<dim, number> &matrix_free,
203 VectorType &dst,
204 const VectorType &src,
205 const std::pair<unsigned int, unsigned int> &face_range) const;
206
215 void
216 local_apply_cell_lhs(const dealii::MatrixFree<dim, number> &matrix_free,
217 VectorType &dst,
218 const VectorType &src,
219 const std::pair<unsigned int, unsigned int> &cell_range) const;
220
229 void
230 local_apply_face_lhs(const dealii::MatrixFree<dim, number> &matrix_free,
231 VectorType &dst,
232 const VectorType &src,
233 const std::pair<unsigned int, unsigned int> &face_range) const;
234
244 void
245 local_apply_boundary_face_lhs(const dealii::MatrixFree<dim, number> &matrix_free,
246 VectorType &dst,
247 const VectorType &src,
248 const std::pair<unsigned int, unsigned int> &face_range) const;
249
258 void
259 create_rhs(const number &time,
260 const number &time_step,
261 VectorType &dst,
262 const VectorType &src) const;
263
270 void
271 vmult(VectorType &dst, const VectorType &src) const;
272
273 private:
276
279
282
285
287 dealii::FESystem<dim> fe_point_temp;
288
290 const unsigned int n_dofs_per_cell;
291
293 mutable number current_time_step = 0.;
294
296 mutable number current_inv_time_step = 0.;
297
299 std::shared_ptr<dealii::Function<dim>> unfitted_object_velocity;
300
302 std::shared_ptr<dealii::Function<dim>> unfitted_inflow;
303
315 void
317 const dealii::Point<dim, dealii::VectorizedArray<number>> &q_point,
318 const ConservedVariables &w_m,
320 const ConservedVariablesGradient &grad_w_m,
321 ConservedVariablesGradient &grad_w_p) const;
322 };
323} // namespace MeltPoolDG::CompressibleFlow
Operator for the matrix-free evaluation of a compressible single-phase flow cutDG formulation.
Definition cutdg_operator.hpp:23
void do_boundary_face_integral_rhs(Integrator &phi, const dealii::VectorizedArray< number > &interior_penalty_parameter, const OperationScratchData< dim, number > &flow_scratch_data, const auto boundary_id, const unsigned int q) const
Evaluate and submit the right-hand side boundary face integral contributions at a given quadrature po...
Definition cutdg_operator.cpp:254
void local_apply_face_lhs(const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
Local applier for the face integrals in the left-hand side matrix-vector product evaluation.
Definition cutdg_operator.cpp:762
ConservedVariablesType< dim, number > ConservedVariables
Definition cutdg_operator.hpp:29
void local_apply_face_rhs(const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
Local applier for the face integrals in the right-hand side evaluation.
Definition cutdg_operator.cpp:438
dealii::FESystem< dim > fe_point_temp
FESystem object, required by FEPointEvaluation.
Definition cutdg_operator.hpp:287
void local_apply_boundary_face_lhs(const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
Local applier for the boundary face integrals in the left-hand side matrix-vector product evaluation.
Definition cutdg_operator.cpp:849
void local_apply_boundary_face_rhs(const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_range) const
Local applier for the boundary face integral in the right-hand side evaluation.
Definition cutdg_operator.cpp:595
CutUtil::MappingInfoVectorType< dim, number > MappingInfoVectorType
Definition cutdg_operator.hpp:27
const unsigned int n_dofs_per_cell
Number of DoFs per cell.
Definition cutdg_operator.hpp:290
void do_surface_integral_rhs(dealii::FEPointEvaluation< dim+2, dim, dim, dealii::VectorizedArray< number > > &phi, const dealii::VectorizedArray< number > &interior_penalty_parameter, const OperationScratchData< dim, number > &flow_scratch_data, const unsigned int q) const
Evaluate and submit the right-hand side cut surface integral contributions at a given quadrature poin...
Definition cutdg_operator.cpp:156
const MappingInfoType & mapping_info_surface
Mapping information for integration over immersed boundaries.
Definition cutdg_operator.hpp:278
const MappingInfoVectorType & mapping_info_cells
Mapping information for integration over cut cells.
Definition cutdg_operator.hpp:281
const MappingInfoVectorType & mapping_info_faces
Mapping information for integration over cut faces.
Definition cutdg_operator.hpp:284
number current_inv_time_step
Current inverse time step size.
Definition cutdg_operator.hpp:296
number current_time_step
Current time step size.
Definition cutdg_operator.hpp:293
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition cutdg_operator.hpp:25
std::shared_ptr< dealii::Function< dim > > unfitted_object_velocity
Function, which describes the velocity of the unfitted object.
Definition cutdg_operator.hpp:299
void set_inflow_field_unfitted_boundary(std::shared_ptr< dealii::Function< dim > > &inflow_function)
Set the inflow field function in the case of an unfitted inflow boundary.
Definition cutdg_operator.cpp:94
void get_adjacent_face_values_at_unfitted_boundary(const dealii::Point< dim, dealii::VectorizedArray< number > > &q_point, const ConservedVariables &w_m, ConservedVariables &w_p, const ConservedVariablesGradient &grad_w_m, ConservedVariablesGradient &grad_w_p) const
This function sets the corresponding values on the fictional outer face if the face is located at an ...
Definition cutdg_operator.cpp:860
std::shared_ptr< dealii::Function< dim > > unfitted_inflow
Inflow function for unfitted inflow boundary.
Definition cutdg_operator.hpp:302
OperationScratchData< dim, number > & flow_scratch_data
Scratch data for compressible flows.
Definition cutdg_operator.hpp:275
ConservedVariablesGradientType< dim, number > ConservedVariablesGradient
Definition cutdg_operator.hpp:30
void vmult(VectorType &dst, const VectorType &src) const
Function for the matrix-free matrix-vector product evaluation.
Definition cutdg_operator.cpp:34
void do_face_integral_rhs(Integrator &phi_m, Integrator &phi_p, const dealii::VectorizedArray< number > &interior_penalty_parameter, const OperationScratchData< dim, number > &flow_scratch_data, const unsigned int q) const
Evaluate and submit the right-and side face integral contributions at a given quadrature point.
Definition cutdg_operator.cpp:207
void local_apply_cell_rhs(const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
Local applier for the cell integrals in the right-hand side evaluation.
Definition cutdg_operator.cpp:318
CutUtil::MappingInfoType< dim, number > MappingInfoType
Definition cutdg_operator.hpp:26
void create_rhs(const number &time, const number &time_step, VectorType &dst, const VectorType &src) const
Function for the matrix-free right-hand side vector evaluation.
Definition cutdg_operator.cpp:58
void set_unfitted_object_velocity(std::shared_ptr< dealii::Function< dim > > &velocity_function)
Set the velocity function in the case of an unfitted (rigid) moving object.
Definition cutdg_operator.cpp:102
void do_cell_integral_rhs(Integrator &phi, const OperationScratchData< dim, number > &flow_scratch_data, const dealii::Tensor< 1, dim, dealii::VectorizedArray< number > > *constant_body_force, const unsigned int q) const
Evaluate and submit the right-hand side cell integral contributions at a given quadrature point.
Definition cutdg_operator.cpp:111
void local_apply_cell_lhs(const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &cell_range) const
Local applier for the cell integrals in the left-hand side matrix-vector product evaluation.
Definition cutdg_operator.cpp:697
This file contains various functions that can be used to set and evaluate boundary conditions for the...
Definition boundary_condition_functions.hpp:17
dealii::Tensor< 1, n_conserved_variables< dim, n_species >, dealii::Tensor< 1, dim, VectorizedArrayType > > ConservedVariablesGradientType
Definition data_types.hpp:44
dealii::Tensor< 1, n_conserved_variables< dim, n_species >, VectorizedArrayType > ConservedVariablesType
Definition data_types.hpp:35
std::vector< std::shared_ptr< MappingInfoType< dim, number > > > MappingInfoVectorType
Definition util.hpp:56
dealii::NonMatching::MappingInfo< dim, dim, dealii::VectorizedArray< number > > MappingInfoType
Definition util.hpp:53
Scratch data structure for compressible single-phase flow solvers.
Definition operation_scratch_data.hpp:33
Definition dg_generic_convection_diffusion_worker.hpp:232
Definition dg_generic_convection_diffusion_worker.hpp:67