include/meltpooldg/post_processing/generic_data_out.hpp Source File

Developer Documentation: include/meltpooldg/post_processing/generic_data_out.hpp Source File
Developer Documentation
generic_data_out.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/fe/mapping.h>
6
7#include <deal.II/lac/la_parallel_vector.h>
8
9#include <deal.II/numerics/data_component_interpretation.h>
10#include <deal.II/numerics/data_out.h>
11
12#include <map>
13#include <string>
14#include <tuple>
15#include <vector>
16
17namespace MeltPoolDG
18{
30 template <int dim, typename number>
32 {
33 public:
35 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
36
38 using ElementWiseVectorType = dealii::Vector<number>;
39
50 std::vector<
51 std::tuple<const dealii::DoFHandler<dim> * /*optional*/,
52 const VectorType *,
53 const ElementWiseVectorType * /*optional*/,
54 const std::vector<std::string>,
55 std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation>>>
57
66 std::vector<std::tuple<const dealii::DoFHandler<dim> * /*optional*/,
67 const VectorType *,
68 const dealii::DataPostprocessor<dim> *>>
70
77 GenericDataOut(const dealii::Mapping<dim> &mapping,
78 const number current_time,
79 const std::vector<std::string> &req_vars_in = {"all"});
80
93 void
95 const dealii::DoFHandler<dim> &dof_handler,
96 const VectorType &data,
97 const std::vector<std::string> &names,
98 const std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation>
99 &data_component_interpretation =
100 std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation>(),
101 const bool force_output = false);
102
111 void
112 add_data_vector(const dealii::DoFHandler<dim> &dof_handler,
113 const VectorType &data,
114 const std::string &name,
115 const bool force_output = false);
116
124 void
125 add_data_vector(const dealii::DoFHandler<dim> *dof_handler,
126 const VectorType *data,
127 const dealii::DataPostprocessor<dim> *data_postprocessor,
128 const bool force_output = false);
129
139 void
141 const std::string &name,
142 const bool force_output = false);
143
153 const VectorType &
154 get_vector(const std::string &name) const;
155
164 const dealii::DataPostprocessor<dim> &
165 get_data_postprocessor(const std::string &name) const;
166
175 const dealii::DoFHandler<dim> &
176 get_dof_handler(const std::string &name) const;
177
183 const dealii::Mapping<dim> &
184 get_mapping() const;
185
191 const number &
192 get_time() const;
193
203 bool
204 is_requested(const std::string &var) const;
205
215 std::vector<unsigned int>
216 get_indices_data_request(const std::vector<std::string> &req_var) const;
217
218 private:
220 std::map<std::string, unsigned int> entry_id;
221
223 const dealii::Mapping<dim> &mapping;
224
227
229 const std::vector<std::string> req_vars;
230
232 mutable std::map<std::string, bool> req_vars_info;
233
235 const bool req_all = false;
236 };
237} // namespace MeltPoolDG
A generic utility for managing simulation output data in the MeltPoolDG context.
Definition generic_data_out.hpp:32
const bool req_all
Flag indicating if all variables are requested.
Definition generic_data_out.hpp:235
void add_data_vector(const dealii::DoFHandler< dim > &dof_handler, const VectorType &data, const std::string &name, const bool force_output=false)
Add a distributed vector with a single scalar component.
const VectorType & get_vector(const std::string &name) const
Definition generic_data_out.cpp:105
void add_element_wise_data_vector(const ElementWiseVectorType &data, const std::string &name, const bool force_output=false)
Add an element-wise vector.
Definition generic_data_out.cpp:87
std::vector< std::tuple< const dealii::DoFHandler< dim > *, const VectorType *, const dealii::DataPostprocessor< dim > * > > data_postprocessor_entries
Definition generic_data_out.hpp:69
std::map< std::string, unsigned int > entry_id
Maps variable names to their entry index.
Definition generic_data_out.hpp:220
void add_data_vector(const dealii::DoFHandler< dim > &dof_handler, const VectorType &data, const std::vector< std::string > &names, const std::vector< dealii::DataComponentInterpretation::DataComponentInterpretation > &data_component_interpretation=std::vector< dealii::DataComponentInterpretation::DataComponentInterpretation >(), const bool force_output=false)
Add a distributed vector with multiple components and custom interpretations.
const dealii::DoFHandler< dim > & get_dof_handler(const std::string &name) const
Retrieve the DoFHandler associated with a named distributed vector.
Definition generic_data_out.cpp:158
const dealii::DataPostprocessor< dim > & get_data_postprocessor(const std::string &name) const
Definition generic_data_out.cpp:141
const dealii::Mapping< dim > & mapping
Mapping object reference.
Definition generic_data_out.hpp:223
dealii::LinearAlgebra::distributed::Vector< number > VectorType
The distributed vector type used for parallel computations. Used for DoF output vectors.
Definition generic_data_out.hpp:35
std::vector< unsigned int > get_indices_data_request(const std::vector< std::string > &req_var) const
Retrieve the entry indices of requested variables.
Definition generic_data_out.cpp:236
const std::vector< std::string > req_vars
List of requested variable names.
Definition generic_data_out.hpp:229
const dealii::Mapping< dim > & get_mapping() const
Access the stored Mapping used in the constructor.
Definition generic_data_out.cpp:195
bool is_requested(const std::string &var) const
Determine if a variable has been requested for output.
Definition generic_data_out.cpp:209
std::map< std::string, bool > req_vars_info
Caching mechanism to store whether a variable is requested.
Definition generic_data_out.hpp:232
const number & get_time() const
Get the time value associated with this output.
Definition generic_data_out.cpp:202
std::vector< std::tuple< const dealii::DoFHandler< dim > *, const VectorType *, const ElementWiseVectorType *, const std::vector< std::string >, std::vector< dealii::DataComponentInterpretation::DataComponentInterpretation > > > entries
Storage of registered data entries.
Definition generic_data_out.hpp:56
number current_time
Time associated with the current output.
Definition generic_data_out.hpp:226
dealii::Vector< number > ElementWiseVectorType
The element-wise (non-distributed) vector type. Used for element-wise output vectors.
Definition generic_data_out.hpp:38
Interface for a general preconditioner.
Definition boundary_condition_functions.hpp:17