8#include <compile_time_options.h>
12#include <deal.II/base/parameter_acceptor.h>
13#include <deal.II/base/timer.h>
14#include <deal.II/lac/la_parallel_block_vector.h>
15#include <deal.II/lac/sparse_matrix.templates.h>
16#include <deal.II/lac/vector.h>
25 template <
typename Description,
int dim,
typename Number =
double>
26 class Quantities final :
public dealii::ParameterAcceptor
54 const std::string &subsection =
"/Quantities");
67 void prepare(
const std::string &name,
unsigned int cycle);
91 std::vector<std::tuple<std::string, std::string, std::string>>
94 std::vector<std::tuple<std::string, std::string, std::string>>
97 bool clear_temporal_statistics_on_writeout_;
105 const MPI_Comm &mpi_communicator_;
107 dealii::SmartPointer<const HyperbolicSystem> hyperbolic_system_;
108 dealii::SmartPointer<const OfflineData<dim, Number>> offline_data_;
118 using boundary_point =
119 std::tuple<dealii::types::global_dof_index ,
120 dealii::Tensor<1, dim, Number> ,
123 dealii::types::boundary_id ,
124 dealii::Point<dim>> ;
129 std::map<std::string, std::vector<boundary_point>> boundary_maps_;
136 using boundary_value =
143 using boundary_statistic =
144 std::tuple<std::vector<boundary_value> ,
145 std::vector<boundary_value> ,
146 std::vector<boundary_value> ,
154 std::map<std::string, boundary_statistic> boundary_statistics_;
155 std::map<std::string, std::vector<std::tuple<Number, boundary_value>>>
156 boundary_time_series_;
162 using interior_point =
163 std::tuple<dealii::types::global_dof_index ,
165 dealii::Point<dim>> ;
170 std::map<std::string, std::vector<interior_point>> interior_maps_;
176 using interior_value =
183 using interior_statistic =
184 std::tuple<std::vector<interior_value> ,
185 std::vector<interior_value> ,
186 std::vector<interior_value> ,
194 std::map<std::string, interior_statistic> interior_statistics_;
195 std::map<std::string, std::vector<std::tuple<Number, interior_value>>>
196 interior_time_series_;
198 std::string base_name_;
199 unsigned int time_series_cycle_;
208 void clear_statistics();
212 template <
typename po
int_type,
typename value_type>
213 value_type internal_accumulate(
const StateVector &state_vector,
214 const std::vector<point_type> &interior_map,
215 std::vector<value_type> &new_val);
217 template <
typename value_type>
218 void internal_write_out(std::ostream &output,
219 const std::vector<value_type> &values,
222 template <
typename value_type>
223 void internal_write_out_time_series(
224 std::ostream &output,
225 const std::vector<std::tuple<Number, value_type>> &values,
typename Description::HyperbolicSystem HyperbolicSystem
void write_out(const StateVector &state_vector, const Number t, unsigned int cycle)
typename View::StateVector StateVector
void accumulate(const StateVector &state_vector, const Number t)
typename View::state_type state_type
Quantities(const MPI_Comm &mpi_communicator, const HyperbolicSystem &hyperbolic_system, const OfflineData< dim, Number > &offline_data, const std::string &subsection="/Quantities")
typename Description::template HyperbolicSystemView< dim, Number > View
void prepare(const std::string &name, unsigned int cycle)
std::tuple< MultiComponentVector< Number, problem_dim >, MultiComponentVector< Number, prec_dim >, BlockVector< Number > > StateVector
Euler::HyperbolicSystem HyperbolicSystem