8#include <compile_time_options.h>
13#include <deal.II/base/parameter_acceptor.h>
14#include <deal.II/base/smartpointer.h>
15#include <deal.II/base/timer.h>
16#include <deal.II/lac/la_parallel_block_vector.h>
17#include <deal.II/lac/sparse_matrix.templates.h>
18#include <deal.II/lac/vector.h>
29 template <
typename Description,
int dim,
typename Number =
double>
30 class Quantities final :
public dealii::ParameterAcceptor
60 const std::string &subsection =
"/Quantities");
73 void prepare(
const std::string &name);
97 std::vector<std::tuple<std::string, std::string, std::string>>
100 std::vector<std::tuple<std::string, std::string, std::string>>
103 bool clear_temporal_statistics_on_writeout_;
113 dealii::SmartPointer<const OfflineData<dim, Number>> offline_data_;
114 dealii::SmartPointer<const HyperbolicSystem> hyperbolic_system_;
115 dealii::SmartPointer<const ParabolicSystem> parabolic_system_;
125 using boundary_point =
126 std::tuple<dealii::types::global_dof_index ,
127 dealii::Tensor<1, dim, Number> ,
130 dealii::types::boundary_id ,
131 dealii::Point<dim>> ;
136 std::map<std::string, std::vector<boundary_point>> boundary_maps_;
143 using boundary_value =
150 using boundary_statistic =
151 std::tuple<std::vector<boundary_value> ,
152 std::vector<boundary_value> ,
153 std::vector<boundary_value> ,
161 std::map<std::string, boundary_statistic> boundary_statistics_;
162 std::map<std::string, std::vector<std::tuple<Number, boundary_value>>>
163 boundary_time_series_;
169 using interior_point =
170 std::tuple<dealii::types::global_dof_index ,
172 dealii::Point<dim>> ;
177 std::map<std::string, std::vector<interior_point>> interior_maps_;
183 using interior_value =
190 using interior_statistic =
191 std::tuple<std::vector<interior_value> ,
192 std::vector<interior_value> ,
193 std::vector<interior_value> ,
201 std::map<std::string, interior_statistic> interior_statistics_;
202 std::map<std::string, std::vector<std::tuple<Number, interior_value>>>
203 interior_time_series_;
205 std::string base_name_;
207 std::optional<unsigned int> time_series_cycle_;
215 bool mesh_files_have_been_written_;
217 void write_mesh_files(
unsigned int cycle);
219 void clear_statistics();
223 template <
typename po
int_type,
typename value_type>
224 value_type internal_accumulate(
const StateVector &state_vector,
225 const std::vector<point_type> &interior_map,
226 std::vector<value_type> &new_val);
228 template <
typename value_type>
229 void internal_write_out(
const std::string &file_name,
230 const std::string &time_stamp,
231 const std::vector<value_type> &values,
234 template <
typename value_type>
235 void internal_write_out_time_series(
236 const std::string &file_name,
237 const std::vector<std::tuple<Number, value_type>> &values,
typename Description::HyperbolicSystem HyperbolicSystem
typename Description::ParabolicSystem ParabolicSystem
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
typename Description::template HyperbolicSystemView< dim, Number > View
Quantities(const MPIEnsemble &mpi_ensemble, const OfflineData< dim, Number > &offline_data, const HyperbolicSystem &hyperbolic_system, const ParabolicSystem ¶bolic_system, const std::string &subsection="/Quantities")
void prepare(const std::string &name)
std::tuple< MultiComponentVector< Number, problem_dim >, MultiComponentVector< Number, prec_dim >, BlockVector< Number > > StateVector
Euler::HyperbolicSystem HyperbolicSystem
ryujin::StubParabolicSystem ParabolicSystem