include/meltpooldg/post_processing/postprocessor.hpp Source File

Developer Documentation: include/meltpooldg/post_processing/postprocessor.hpp Source File
Developer Documentation
postprocessor.hpp
Go to the documentation of this file.
1#pragma once
2#include <deal.II/base/exceptions.h>
3#include <deal.II/base/mpi.h>
4
5#include <deal.II/grid/tria.h>
6
7#include <deal.II/lac/generic_linear_algebra.h>
8#include <deal.II/lac/la_parallel_block_vector.h>
9#include <deal.II/lac/la_parallel_vector.h>
10
11#include <deal.II/numerics/data_component_interpretation.h>
12
13#include <deal.II/particles/particle.h>
14#include <deal.II/particles/particle_handler.h>
15
20
21#include <string>
22#include <utility>
23#include <vector>
24
25
26// @ todo: !!! clean-up and refactoring !!!
27
28namespace MeltPoolDG
29{
30 template <int dim, typename number>
32 {
33 public:
34 Postprocessor(const MPI_Comm mpi_communicator_in,
35 const OutputData<number> &output_data_in,
37 const dealii::Mapping<dim> &mapping_in,
38 const dealii::Triangulation<dim> &triangulation_in,
39 const ConditionalOStream &pcout_in);
40
44 void
45 process(const int n_time_step,
46 const GenericDataOut<dim, number> &generic_data_out,
47 const number time = -1.0,
48 const bool force_output = false,
49 const bool force_update_requested_output_variables = false);
50
54 void
55 process(const int n_time_step,
56 const std::function<void(GenericDataOut<dim, number> &)> &attach_output_vectors,
57 const number time = -1.0);
58
62 inline bool
63 is_output_timestep(const int n_time_step, const number time) const
64 {
65 if (n_time_step == 0)
66 return true;
67 if (time - time_at_last_output >= output_data.write_time_step_size)
68 return true;
69 return not(n_time_step % output_data.write_frequency);
70 }
71
72 template <class Archive>
73 void
74 serialize(Archive &ar, const unsigned int /*version*/)
75 {
78 }
79
80 void
82 dealii::Particles::ParticleHandler<dim> const *particle_handler,
83 const std::vector<std::string> &property_names,
84 const std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation>
85 &property_data_component_interpretation)
86 {
87 obstacle_output.particle_handler = particle_handler;
88 obstacle_output.property_names = property_names;
90 property_data_component_interpretation;
91 }
92
93 private:
94 const MPI_Comm mpi_communicator;
96 const dealii::Mapping<dim> &mapping;
97 const dealii::Triangulation<dim> &triangulation;
99 const bool do_simplex;
100 const number end_time;
102
104 {
105 const dealii::Particles::ParticleHandler<dim> *particle_handler = nullptr;
106 std::vector<std::string> property_names;
107 std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation>
110
111 // list of indices for the requested variables
112 std::vector<unsigned int> idx_req_vars;
113
115 std::vector<std::pair<number, std::string>> vector_times_and_names;
116
118 std::vector<std::pair<number, std::string>> particle_times_and_names;
119
127 void
128 clean_pvd(std::vector<std::pair<number, std::string>> &times_and_names);
129
130 void
131 write_paraview_files(const unsigned int n_time_step,
132 const number time,
133 const GenericDataOut<dim, number> &generic_data_out,
134 const bool force_output_all = false);
135
146 void
147 write_particle_paraview_files(const unsigned int n_time_step, const number time);
148
149 void
151 };
152} // namespace MeltPoolDG
Definition conditional_ostream.hpp:7
A generic utility for managing simulation output data in the MeltPoolDG context.
Definition generic_data_out.hpp:32
Definition postprocessor.hpp:32
void serialize(Archive &ar, const unsigned int)
Definition postprocessor.hpp:74
const dealii::Triangulation< dim > & triangulation
Definition postprocessor.hpp:97
std::vector< std::pair< number, std::string > > particle_times_and_names
Times and filenames of previously written particle output.
Definition postprocessor.hpp:118
std::vector< unsigned int > idx_req_vars
Definition postprocessor.hpp:112
struct MeltPoolDG::Postprocessor::ObstacleOutput obstacle_output
number time_at_last_output
Definition postprocessor.hpp:101
const bool do_simplex
Definition postprocessor.hpp:99
void process(const int n_time_step, const GenericDataOut< dim, number > &generic_data_out, const number time=-1.0, const bool force_output=false, const bool force_update_requested_output_variables=false)
Definition postprocessor.cpp:54
void write_paraview_files(const unsigned int n_time_step, const number time, const GenericDataOut< dim, number > &generic_data_out, const bool force_output_all=false)
Definition postprocessor.cpp:107
const ConditionalOStream pcout
Definition postprocessor.hpp:98
std::vector< std::pair< number, std::string > > vector_times_and_names
Times and filenames of previously written vector output.
Definition postprocessor.hpp:115
void register_obstacle_output(dealii::Particles::ParticleHandler< dim > const *particle_handler, const std::vector< std::string > &property_names, const std::vector< dealii::DataComponentInterpretation::DataComponentInterpretation > &property_data_component_interpretation)
Definition postprocessor.hpp:81
void clean_pvd(std::vector< std::pair< number, std::string > > &times_and_names)
Clean non-existing *.pvtu files from the *.pvd file. This is required if we perform a restart and wri...
Definition postprocessor.cpp:334
void write_particle_paraview_files(const unsigned int n_time_step, const number time)
Writes particles from the registered particle handler to ParaView files, including their positions an...
Definition postprocessor.cpp:274
void print_boundary_ids()
Definition postprocessor.cpp:351
const MPI_Comm mpi_communicator
Definition postprocessor.hpp:94
bool is_output_timestep(const int n_time_step, const number time) const
Definition postprocessor.hpp:63
const OutputData< number > & output_data
Definition postprocessor.hpp:95
const number end_time
Definition postprocessor.hpp:100
const dealii::Mapping< dim > & mapping
Definition postprocessor.hpp:96
Interface for a general preconditioner.
Definition boundary_condition_functions.hpp:17
Definition output_data.hpp:41
Definition postprocessor.hpp:104
std::vector< std::string > property_names
Definition postprocessor.hpp:106
const dealii::Particles::ParticleHandler< dim > * particle_handler
Definition postprocessor.hpp:105
std::vector< dealii::DataComponentInterpretation::DataComponentInterpretation > property_data_component_interpretation
Definition postprocessor.hpp:108
Definition time_stepping_data.hpp:11