applications/mp-level-set/level_set_application.hpp Source File

Developer Documentation: applications/mp-level-set/level_set_application.hpp Source File
Developer Documentation
level_set_application.hpp
Go to the documentation of this file.
1#pragma once
2#include <deal.II/lac/generic_linear_algebra.h>
3
12
13#include "level_set_case.hpp"
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 const std::unique_ptr<CaseType> simulation_case;
26
27 dealii::DoFHandler<dim> dof_handler;
28 dealii::DoFHandler<dim> dof_handler_velocity;
29
30 dealii::AffineConstraints<number> constraints_dirichlet;
31 dealii::AffineConstraints<number> hanging_node_constraints;
32 dealii::AffineConstraints<number> hanging_node_constraints_velocity;
33 dealii::AffineConstraints<number> hanging_node_constraints_with_zero_dirichlet;
34 dealii::AffineConstraints<number> normal_dirichlet_x_constraints;
35 dealii::AffineConstraints<number> normal_dirichlet_y_constraints;
36 dealii::AffineConstraints<number> normal_dirichlet_z_constraints;
37
38 unsigned int ls_dof_idx;
39 unsigned int ls_quad_idx;
40 unsigned int ls_zero_bc_idx;
42 unsigned int vel_dof_idx;
44 unsigned int normal_no_bc_dof_idx = -1;
45 unsigned int normal_dirichlet_x_dof_idx = -1;
46 unsigned int normal_dirichlet_y_dof_idx = -1;
47 unsigned int normal_dirichlet_z_dof_idx = -1;
48 const unsigned int &reinit_dof_idx =
49 ls_hanging_nodes_dof_idx; //@todo: would it make sense to use ls_zero_bc_idx?
50 const unsigned int &reinit_hanging_nodes_dof_idx =
51 ls_hanging_nodes_dof_idx; //@todo: would it make sense to use ls_zero_bc_idx?
52
54
55 std::unique_ptr<LevelSetOperationBase<dim, number>> level_set_operation;
56 std::unique_ptr<Evaporation::EvaporationOperation<dim, number>> evaporation_operation;
57 std::shared_ptr<ScratchData<dim, dim, number>> scratch_data;
58 std::unique_ptr<TimeIntegration::TimeIterator<number>> time_iterator;
59 std::unique_ptr<Postprocessor<dim, number>> post_processor;
60 std::unique_ptr<Profiling::ProfilingMonitor<number>> profiling_monitor;
61 std::shared_ptr<dealii::Function<dim, number>> prescribed_velocity_function;
62
63 void
64 initialize();
65
66 void
67 setup_dof_system(const bool do_reinit = true);
68
69 void
70 compute_advection_velocity(dealii::Function<dim> &advec_func);
71
72 void
73 output_results(const unsigned int time_step, const number current_time);
74
75 void
77
78 public:
79 LevelSetApplication(std::unique_ptr<CaseType> simulation_case)
81 {}
82
83 void
84 run();
85 };
86} // namespace MeltPoolDG::LevelSet
Definition level_set_application.hpp:19
dealii::AffineConstraints< number > normal_dirichlet_z_constraints
Definition level_set_application.hpp:36
std::shared_ptr< dealii::Function< dim, number > > prescribed_velocity_function
Definition level_set_application.hpp:61
void output_results(const unsigned int time_step, const number current_time)
Definition level_set_application.cpp:344
unsigned int normal_dirichlet_y_dof_idx
Definition level_set_application.hpp:46
void setup_dof_system(const bool do_reinit=true)
Definition level_set_application.cpp:283
dealii::DoFHandler< dim > dof_handler
Definition level_set_application.hpp:27
std::unique_ptr< Evaporation::EvaporationOperation< dim, number > > evaporation_operation
Definition level_set_application.hpp:56
dealii::AffineConstraints< number > hanging_node_constraints_with_zero_dirichlet
Definition level_set_application.hpp:33
void compute_advection_velocity(dealii::Function< dim > &advec_func)
Definition level_set_application.cpp:328
unsigned int normal_dirichlet_z_dof_idx
Definition level_set_application.hpp:47
const unsigned int & curv_dof_idx
Definition level_set_application.hpp:43
std::unique_ptr< Postprocessor< dim, number > > post_processor
Definition level_set_application.hpp:59
unsigned int vel_dof_idx
Definition level_set_application.hpp:42
dealii::LinearAlgebra::distributed::BlockVector< number > BlockVectorType
Definition level_set_application.hpp:23
std::shared_ptr< ScratchData< dim, dim, number > > scratch_data
Definition level_set_application.hpp:57
void refine_mesh()
Definition level_set_application.cpp:381
const unsigned int & reinit_hanging_nodes_dof_idx
Definition level_set_application.hpp:50
std::unique_ptr< TimeIntegration::TimeIterator< number > > time_iterator
Definition level_set_application.hpp:58
dealii::DoFHandler< dim > dof_handler_velocity
Definition level_set_application.hpp:28
unsigned int ls_zero_bc_idx
Definition level_set_application.hpp:40
unsigned int ls_hanging_nodes_dof_idx
Definition level_set_application.hpp:41
void initialize()
Definition level_set_application.cpp:97
std::unique_ptr< Profiling::ProfilingMonitor< number > > profiling_monitor
Definition level_set_application.hpp:60
const unsigned int & reinit_dof_idx
Definition level_set_application.hpp:48
LevelSetApplication(std::unique_ptr< CaseType > simulation_case)
Definition level_set_application.hpp:79
const std::unique_ptr< CaseType > simulation_case
Definition level_set_application.hpp:25
LevelSetCase< dim, number > CaseType
Definition level_set_application.hpp:21
VectorType advection_velocity
Definition level_set_application.hpp:53
void run()
Definition level_set_application.cpp:36
std::unique_ptr< LevelSetOperationBase< dim, number > > level_set_operation
Definition level_set_application.hpp:55
dealii::AffineConstraints< number > normal_dirichlet_x_constraints
Definition level_set_application.hpp:34
unsigned int ls_quad_idx
Definition level_set_application.hpp:39
dealii::AffineConstraints< number > hanging_node_constraints
Definition level_set_application.hpp:31
dealii::AffineConstraints< number > normal_dirichlet_y_constraints
Definition level_set_application.hpp:35
unsigned int normal_dirichlet_x_dof_idx
Definition level_set_application.hpp:45
unsigned int ls_dof_idx
Definition level_set_application.hpp:38
dealii::AffineConstraints< number > hanging_node_constraints_velocity
Definition level_set_application.hpp:32
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition level_set_application.hpp:22
dealii::AffineConstraints< number > constraints_dirichlet
Definition level_set_application.hpp:30
unsigned int normal_no_bc_dof_idx
Definition level_set_application.hpp:44
Definition level_set_case.hpp:76
This operation solves the reinitialization problem for a CG- or DG-FEM-based discrete level-set field...
Definition advection_DG_operation.hpp:20