include/meltpooldg/particles/particle_monitor.hpp Source File

Developer Documentation: include/meltpooldg/particles/particle_monitor.hpp Source File
Developer Documentation
particle_monitor.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/mpi.h>
4
8
9#include <cstdint>
10#include <string>
11
12namespace MeltPoolDG
13{
23 template <int dim, typename number, typename ObstacleType>
25 {
26 public:
33
44 void
45 add_info(const Profiling::ProfilingVerbosity verbosity = Profiling::ProfilingVerbosity::none);
46
57 void
58 print(const ConditionalOStream &pcout, const std::string &title) const;
59
60 private:
66 {
72 explicit Statistics(std::string label);
73
79 void
80 add_info(const unsigned int value);
81
93 void
94 add_info_with_imbalance(const unsigned int value, MPI_Comm mpi_communicator);
95
99 number
100 average() const;
101
107 number
108 average_imbalance() const;
109
113 bool
114 has_imbalance() const;
115
125 get_statistics_across_mpi_ranks(MPI_Comm mpi_communicator) const;
126
128 const std::string label;
129
131 unsigned int min = 0;
133 unsigned int max = 0;
135 number sum = 0.;
137 uint64_t n_samples = 0;
138
140 number imbalance_sum = 0.;
143 };
144
149 {
159 void
161
162 Statistics n_global_particles{"# global particles"};
163 Statistics n_locally_owned{"# locally owned particles"};
164 Statistics n_ghost{"# ghost particles"};
165 };
166
172 {
179 void
181
182 Statistics n_particles_per_cell{"# particle centers per cell"};
183 };
184
187
188 unsigned int n_calls_basic = 0;
189 unsigned int n_calls_detailed = 0;
190
192 };
193} // namespace MeltPoolDG
Definition conditional_ostream.hpp:7
Definition obstacle_field.hpp:32
Definition particle_monitor.hpp:25
void add_info(const Profiling::ProfilingVerbosity verbosity=Profiling::ProfilingVerbosity::none)
Definition particle_monitor.cpp:133
void print(const ConditionalOStream &pcout, const std::string &title) const
Definition particle_monitor.cpp:150
ParticleStatisticsBasic particle_statistics_basic
Definition particle_monitor.hpp:185
unsigned int n_calls_basic
Definition particle_monitor.hpp:188
unsigned int n_calls_detailed
Definition particle_monitor.hpp:189
ParticleStatisticsDetailed particle_statistics_detailed
Definition particle_monitor.hpp:186
const ObstacleField< dim, number, ObstacleType > & obstacle_field
Definition particle_monitor.hpp:191
Interface for a general preconditioner.
Definition boundary_condition_functions.hpp:17
Definition particle_monitor.hpp:149
Statistics n_locally_owned
Definition particle_monitor.hpp:163
Statistics n_global_particles
Definition particle_monitor.hpp:162
Statistics n_ghost
Definition particle_monitor.hpp:164
void add_info(const ObstacleField< dim, number, ObstacleType > &obstacle_field)
Definition particle_monitor.cpp:107
Statistics n_particles_per_cell
Definition particle_monitor.hpp:182
void add_info(const ObstacleField< dim, number, ObstacleType > &obstacle_field)
Definition particle_monitor.cpp:119
Definition particle_monitor.hpp:66
uint64_t n_imbalance_samples
Number of samples recorded via add_info_with_imbalance().
Definition particle_monitor.hpp:142
bool has_imbalance() const
Definition particle_monitor.cpp:81
const std::string label
Name of the quantity.
Definition particle_monitor.hpp:128
unsigned int min
Minimum over all samples.
Definition particle_monitor.hpp:131
number average_imbalance() const
Definition particle_monitor.cpp:74
void add_info_with_imbalance(const unsigned int value, MPI_Comm mpi_communicator)
Definition particle_monitor.cpp:50
unsigned int max
Maximum over all samples.
Definition particle_monitor.hpp:133
number average() const
Definition particle_monitor.cpp:67
uint64_t n_samples
Number of recorded samples.
Definition particle_monitor.hpp:137
Statistics get_statistics_across_mpi_ranks(MPI_Comm mpi_communicator) const
Definition particle_monitor.cpp:88
number sum
Sum over all samples.
Definition particle_monitor.hpp:135
void add_info(const unsigned int value)
Definition particle_monitor.cpp:31
number imbalance_sum
Sum of the load imbalance over all samples recorded via add_info_with_imbalance().
Definition particle_monitor.hpp:140