include/meltpooldg/level_set/advection_DG_operation.hpp Source File

Developer Documentation: include/meltpooldg/level_set/advection_DG_operation.hpp Source File
Developer Documentation
advection_DG_operation.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/lac/generic_linear_algebra.h>
4
17
18
20{
21 template <int dim, typename number>
23 {
24 private:
25 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
26 using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>;
27 using SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix;
28
29 public:
31 const ScratchData<dim, dim, number> &scratch_data_in,
32 const AdvectionDiffusionData<number> &advec_diff_data_in,
34 const unsigned int advec_diff_dof_idx_in,
35 const unsigned int advec_diff_quad_idx_in,
36 const std::shared_ptr<BoundaryConditionManager<dim, number>> &boundary_conditions_in);
37
45 void
46 set_initial_condition(const dealii::Function<dim> &initial_field_function) override;
47
51 void
52 set_initial_condition(const VectorType &solution_level_set_in);
53
54
55 void
57 const unsigned int velocity_dof_idx) final;
58
59 void
61 const std::shared_ptr<dealii::Function<dim, number>> &advection_velocity) final;
62
63 void
65 ScratchData<dim, dim, number> & /*mutable_scratch_data*/,
66 const PeriodicBoundaryConditions<dim> & /*pbc*/,
67 const std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>>
68 & /*dirichlet_bc*/) final
69 {
70 // nothing to do for DG
71 }
72
76 void
77 reinit() override;
78
79 void
80 init_time_advance() override;
81
85 void
86 solve(const bool do_finish_time_step = true) override;
87
88 const VectorType &
89 get_advected_field() const override;
90
92 get_advected_field() override;
93
94 const VectorType &
95 get_advected_field_old() const override;
96
98 get_advected_field_old() override;
99
100 VectorType &
101 get_user_rhs() override;
102
103 const VectorType &
104 get_user_rhs() const override;
105
106 void
107 attach_vectors(std::vector<VectorType *> &vectors) override;
108
109 void
110 attach_output_vectors(GenericDataOut<dim, number> &data_out) const override;
111
112 private:
114
116 /*
117 * Based on the following indices the correct DoFHandler or quadrature rule from
118 * ScratchData<dim,dim,number> object is selected. This is important when
119 * ScratchData<dim,dim,number> holds multiple DoFHandlers, quadrature rules, etc.
120 */
121 const unsigned int advec_diff_dof_idx = 0;
122 const unsigned int advec_diff_quad_idx = 0;
123
124 std::shared_ptr<BoundaryConditionManager<dim, number>> boundary_conditions;
125
126 std::shared_ptr<dealii::Function<dim>> advection_velocity_function = nullptr;
127 const dealii::LinearAlgebra::distributed::Vector<number> *advection_velocity = nullptr;
128 unsigned int velocity_dof_idx = dealii::numbers::invalid_unsigned_int;
129
131
134
135 std::shared_ptr<AdvectionDGOperator<dim, number>> advection_DG_operator;
136 std::shared_ptr<TimeIntegration::TimeIntegratorBase<number>> time_integrator;
137
138 void
140 };
141} // namespace MeltPoolDG::LevelSet
Definition boundary_conditions.hpp:17
A generic utility for managing simulation output data in the MeltPoolDG context.
Definition generic_data_out.hpp:32
Definition advection_DG_operation.hpp:23
void reinit() override
Definition advection_DG_operation.cpp:148
void setup_constraints(ScratchData< dim, dim, number > &, const PeriodicBoundaryConditions< dim > &, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &) final
Definition advection_DG_operation.hpp:64
void attach_vectors(std::vector< VectorType * > &vectors) override
Definition advection_DG_operation.cpp:292
VectorType user_rhs
Definition advection_DG_operation.hpp:133
void init_time_advance() override
Definition advection_DG_operation.cpp:166
void set_advection_velocity(const VectorType &advection_velocity, const unsigned int velocity_dof_idx) final
Definition advection_DG_operation.cpp:131
void solve(const bool do_finish_time_step=true) override
Definition advection_DG_operation.cpp:180
dealii::LinearAlgebra::distributed::BlockVector< number > BlockVectorType
Definition advection_DG_operation.hpp:26
void create_operator()
Definition advection_DG_operation.cpp:43
void set_initial_condition(const dealii::Function< dim > &initial_field_function) override
Definition advection_DG_operation.cpp:66
const VectorType & get_advected_field_old() const override
Definition advection_DG_operation.cpp:264
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition advection_DG_operation.hpp:25
const TimeIntegration::TimeIterator< number > & time_iterator
Definition advection_DG_operation.hpp:115
std::shared_ptr< dealii::Function< dim > > advection_velocity_function
Definition advection_DG_operation.hpp:126
const dealii::LinearAlgebra::distributed::Vector< number > * advection_velocity
Definition advection_DG_operation.hpp:127
std::shared_ptr< TimeIntegration::TimeIntegratorBase< number > > time_integrator
Definition advection_DG_operation.hpp:136
std::shared_ptr< BoundaryConditionManager< dim, number > > boundary_conditions
Definition advection_DG_operation.hpp:124
const unsigned int advec_diff_quad_idx
Definition advection_DG_operation.hpp:122
std::shared_ptr< AdvectionDGOperator< dim, number > > advection_DG_operator
Definition advection_DG_operation.hpp:135
TimeIntegration::SolutionHistory< VectorType > solution_history
Definition advection_DG_operation.hpp:130
VectorType & get_user_rhs() override
Definition advection_DG_operation.cpp:278
VectorType rhs
Definition advection_DG_operation.hpp:132
void set_advection_velocity_function(const std::shared_ptr< dealii::Function< dim, number > > &advection_velocity) final
Definition advection_DG_operation.cpp:140
void attach_output_vectors(GenericDataOut< dim, number > &data_out) const override
Definition advection_DG_operation.cpp:300
const VectorType & get_advected_field() const override
Definition advection_DG_operation.cpp:250
dealii::TrilinosWrappers::SparseMatrix SparseMatrixType
Definition advection_DG_operation.hpp:27
const unsigned int advec_diff_dof_idx
Definition advection_DG_operation.hpp:121
const ScratchData< dim, dim, number > & scratch_data
Definition advection_DG_operation.hpp:113
unsigned int velocity_dof_idx
Definition advection_DG_operation.hpp:128
Definition advection_diffusion_operation_base.hpp:13
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 periodic_boundary_conditions.hpp:11