applications/mp-advec-diff/advection_diffusion_application.hpp Source File

Developer Documentation: applications/mp-advec-diff/advection_diffusion_application.hpp Source File
Developer Documentation
advection_diffusion_application.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/dofs/dof_handler.h>
4
5#include <deal.II/lac/generic_linear_algebra.h>
6
12
14
16{
17 template <int dim, typename number>
19 {
20 private:
22 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
23 using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>;
24
25 public:
28 {}
29
30 void
31 run();
32
33 private:
34 std::unique_ptr<CaseType> simulation_case;
35
36 dealii::DoFHandler<dim> dof_handler;
37 dealii::AffineConstraints<number> advec_diff_full_constraints;
38 dealii::AffineConstraints<number> advec_diff_mesh_constraints;
39 dealii::AffineConstraints<number> advec_diff_full_constraints_hom_dirichlet;
40 dealii::DoFHandler<dim> dof_handler_velocity;
41 dealii::AffineConstraints<number> velocity_full_constraints;
42 std::shared_ptr<ScratchData<dim, dim, number>> scratch_data;
44 std::unique_ptr<TimeIntegration::TimeIterator<number>> time_iterator;
45 std::unique_ptr<AdvectionDiffusionOperationBase<dim, number>> advec_diff_operation;
46 std::unique_ptr<Profiling::ProfilingMonitor<number>> profiling_monitor;
47 std::shared_ptr<dealii::Function<dim, number>> advection_velocity_function = nullptr;
48
49 unsigned int advec_diff_dof_idx = dealii::numbers::invalid_unsigned_int;
50 unsigned int advec_diff_mesh_constraints_idx = dealii::numbers::invalid_unsigned_int;
51 unsigned int velocity_dof_idx = dealii::numbers::invalid_unsigned_int;
52
53#ifdef MPDG_ENABLE_ADAFLO
54 unsigned int advec_diff_full_constraints_hom_dirichlet_idx =
55 dealii::numbers::invalid_unsigned_int;
56#endif
57
58 unsigned int advec_diff_quad_idx = dealii::numbers::invalid_unsigned_int;
59
60 std::unique_ptr<Postprocessor<dim, number>> post_processor;
61
62 void
64
65 void
66 initialize();
67
68 void
69 compute_advection_velocity(dealii::Function<dim, number> &advec_func);
70
71 void
72 output_results(unsigned int time_step, number current_time);
73
74 void
76 };
77
78} // namespace MeltPoolDG::LevelSet
Definition advection_diffusion_application.hpp:19
dealii::DoFHandler< dim > dof_handler_velocity
Definition advection_diffusion_application.hpp:40
void output_results(unsigned int time_step, number current_time)
Definition advection_diffusion_application.cpp:269
std::shared_ptr< dealii::Function< dim, number > > advection_velocity_function
Definition advection_diffusion_application.hpp:47
unsigned int velocity_dof_idx
Definition advection_diffusion_application.hpp:51
void setup_dof_system()
Definition advection_diffusion_application.cpp:81
void compute_advection_velocity(dealii::Function< dim, number > &advec_func)
Definition advection_diffusion_application.cpp:252
dealii::LinearAlgebra::distributed::BlockVector< number > BlockVectorType
Definition advection_diffusion_application.hpp:23
std::shared_ptr< ScratchData< dim, dim, number > > scratch_data
Definition advection_diffusion_application.hpp:42
std::unique_ptr< TimeIntegration::TimeIterator< number > > time_iterator
Definition advection_diffusion_application.hpp:44
std::unique_ptr< Postprocessor< dim, number > > post_processor
Definition advection_diffusion_application.hpp:60
unsigned int advec_diff_mesh_constraints_idx
Definition advection_diffusion_application.hpp:50
dealii::AffineConstraints< number > velocity_full_constraints
Definition advection_diffusion_application.hpp:41
std::unique_ptr< Profiling::ProfilingMonitor< number > > profiling_monitor
Definition advection_diffusion_application.hpp:46
void refine_mesh()
Definition advection_diffusion_application.cpp:304
void run()
Definition advection_diffusion_application.cpp:26
dealii::DoFHandler< dim > dof_handler
Definition advection_diffusion_application.hpp:36
dealii::AffineConstraints< number > advec_diff_mesh_constraints
Definition advection_diffusion_application.hpp:38
std::unique_ptr< CaseType > simulation_case
Definition advection_diffusion_application.hpp:34
unsigned int advec_diff_dof_idx
Definition advection_diffusion_application.hpp:49
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition advection_diffusion_application.hpp:22
VectorType advection_velocity
Definition advection_diffusion_application.hpp:43
dealii::AffineConstraints< number > advec_diff_full_constraints_hom_dirichlet
Definition advection_diffusion_application.hpp:39
dealii::AffineConstraints< number > advec_diff_full_constraints
Definition advection_diffusion_application.hpp:37
void initialize()
Definition advection_diffusion_application.cpp:125
unsigned int advec_diff_quad_idx
Definition advection_diffusion_application.hpp:58
std::unique_ptr< AdvectionDiffusionOperationBase< dim, number > > advec_diff_operation
Definition advection_diffusion_application.hpp:45
AdvectionDiffusionApplication(std::unique_ptr< CaseType > simulation_case)
Definition advection_diffusion_application.hpp:26
Definition advection_diffusion_case.hpp:53
This operation solves the reinitialization problem for a CG- or DG-FEM-based discrete level-set field...
Definition advection_DG_operation.hpp:20