applications/mp-radiative-transport/radiative_transport_application.hpp Source File

Developer Documentation: applications/mp-radiative-transport/radiative_transport_application.hpp Source File
Developer Documentation
radiative_transport_application.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/function.h>
4#include <deal.II/base/parameter_handler.h>
5#include <deal.II/base/tensor.h>
6
7#include <deal.II/dofs/dof_handler.h>
8
9#include <deal.II/lac/affine_constraints.h>
10#include <deal.II/lac/la_parallel_vector.h>
11
17
18#include <memory>
19#include <utility>
20#include <vector>
21
23
24
26{
27 template <int dim, typename number>
29 {
30 private:
32 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
33
34 std::unique_ptr<CaseType> simulation_case;
35
38
39 dealii::DoFHandler<dim> dof_handler;
40 dealii::DoFHandler<dim> dof_handler_heaviside; // TODO remove and use above
41
42 dealii::AffineConstraints<number> constraints_dirichlet;
43 dealii::AffineConstraints<number> hanging_node_constraints;
44 dealii::AffineConstraints<number> hanging_node_constraints_heaviside;
45
46 unsigned int rte_dof_idx;
48 unsigned int rte_quad_idx;
49 unsigned int hs_dof_idx;
50
51 std::shared_ptr<ScratchData<dim, dim, number>> scratch_data;
52 std::shared_ptr<TimeIntegration::TimeIterator<number>> time_iterator;
53
54 std::shared_ptr<RadiativeTransportOperation<dim, number>> rad_trans_operation;
55
56 std::shared_ptr<Postprocessor<dim, number>> post_processor;
57 std::unique_ptr<Profiling::ProfilingMonitor<number>> profiling_monitor;
58
59 dealii::Tensor<1, dim, number> laser_direction;
60
61 public:
64 {}
65
66 void
67 run();
68
69 private:
70 /*
71 * This function initializes the relevant scratch data for the computation of the radiative
72 * transfer problem
73 */
74 void
75 initialize();
76
77 void
78 setup_dof_system(const bool do_reinit = true);
79
80 void
81 compute_heaviside(dealii::Function<dim> &heaviside_func);
82
83 void
84 output_results(const unsigned int time_step, const number current_time);
85
86 void
88 };
89} // namespace MeltPoolDG::RadiativeTransport
Definition radiative_transport_application.hpp:29
VectorType heat_source
Definition radiative_transport_application.hpp:37
dealii::DoFHandler< dim > dof_handler_heaviside
Definition radiative_transport_application.hpp:40
RadiativeTransportApplication(std::unique_ptr< CaseType > simulation_case)
Definition radiative_transport_application.hpp:62
unsigned int rte_dof_idx
Definition radiative_transport_application.hpp:46
std::shared_ptr< RadiativeTransportOperation< dim, number > > rad_trans_operation
Definition radiative_transport_application.hpp:54
dealii::AffineConstraints< number > hanging_node_constraints_heaviside
Definition radiative_transport_application.hpp:44
RadiativeTransportCase< dim, number > CaseType
Definition radiative_transport_application.hpp:31
dealii::AffineConstraints< number > hanging_node_constraints
Definition radiative_transport_application.hpp:43
unsigned int rte_hanging_nodes_dof_idx
Definition radiative_transport_application.hpp:47
void output_results(const unsigned int time_step, const number current_time)
Definition radiative_transport_application.cpp:178
void setup_dof_system(const bool do_reinit=true)
Definition radiative_transport_application.cpp:138
std::unique_ptr< CaseType > simulation_case
Definition radiative_transport_application.hpp:34
unsigned int rte_quad_idx
Definition radiative_transport_application.hpp:48
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition radiative_transport_application.hpp:32
VectorType heaviside
Definition radiative_transport_application.hpp:36
dealii::DoFHandler< dim > dof_handler
Definition radiative_transport_application.hpp:39
void run()
Definition radiative_transport_application.cpp:31
std::shared_ptr< TimeIntegration::TimeIterator< number > > time_iterator
Definition radiative_transport_application.hpp:52
unsigned int hs_dof_idx
Definition radiative_transport_application.hpp:49
void refine_mesh()
Definition radiative_transport_application.cpp:208
std::shared_ptr< ScratchData< dim, dim, number > > scratch_data
Definition radiative_transport_application.hpp:51
dealii::AffineConstraints< number > constraints_dirichlet
Definition radiative_transport_application.hpp:42
std::unique_ptr< Profiling::ProfilingMonitor< number > > profiling_monitor
Definition radiative_transport_application.hpp:57
dealii::Tensor< 1, dim, number > laser_direction
Definition radiative_transport_application.hpp:59
void compute_heaviside(dealii::Function< dim > &heaviside_func)
Definition radiative_transport_application.cpp:164
void initialize()
Definition radiative_transport_application.cpp:65
std::shared_ptr< Postprocessor< dim, number > > post_processor
Definition radiative_transport_application.hpp:56
Definition radiative_transport_case.hpp:62
Definition pseudo_rte_data.hpp:9