8#include <compile_time_options.h>
20#include <deal.II/base/parameter_acceptor.h>
21#include <deal.II/base/timer.h>
33 template <
typename Description,
int dim,
typename Number =
double>
34 class TimeLoop final :
public dealii::ParameterAcceptor
87 const std::string &name,
98 bool final_time =
false);
102 const std::string &secondary,
103 std::ostream &stream);
107 unsigned int output_cycle,
108 bool write_to_logfile =
false,
109 bool final_time =
false);
118 std::string base_name_;
121 std::vector<Number> t_refinements_;
123 Number output_granularity_;
125 bool enable_checkpointing_;
126 bool enable_output_full_;
127 bool enable_output_levelsets_;
128 bool enable_compute_error_;
129 bool enable_compute_quantities_;
131 unsigned int output_checkpoint_multiplier_;
132 unsigned int output_full_multiplier_;
133 unsigned int output_levelsets_multiplier_;
134 unsigned int output_quantities_multiplier_;
136 std::vector<std::string> error_quantities_;
137 bool error_normalize_;
140 bool resume_at_time_zero_;
142 Number terminal_update_interval_;
143 bool terminal_show_rank_throughput_;
151 const MPI_Comm &mpi_communicator_;
153 std::map<std::string, dealii::Timer> computing_timer_;
167 const unsigned int mpi_rank_;
168 const unsigned int n_mpi_processes_;
170 std::ofstream logfile_;
Vectors::ScalarVector< Number > ScalarVector
typename Description::template HyperbolicSystemView< dim, Number > View
typename Description::HyperbolicSystem HyperbolicSystem
void print_timers(std::ostream &stream)
static constexpr auto problem_dimension
typename Description::ParabolicSystem ParabolicSystem
void print_memory_statistics(std::ostream &stream)
void print_mpi_partition(std::ostream &stream)
void print_parameters(std::ostream &stream)
TimeLoop(const MPI_Comm &mpi_comm)
static constexpr auto n_precomputed_values
typename View::StateVector StateVector
void compute_error(const StateVector &state_vector, Number t)
void print_head(const std::string &header, const std::string &secondary, std::ostream &stream)
void print_throughput(unsigned int cycle, Number t, std::ostream &stream, bool final_time=false)
typename Description::template ParabolicSolver< dim, Number > ParabolicSolver
void print_cycle_statistics(unsigned int cycle, Number t, unsigned int output_cycle, bool write_to_logfile=false, bool final_time=false)
void output(StateVector &state_vector, const std::string &name, Number t, unsigned int cycle)
void print_info(const std::string &header)
typename View::ScalarNumber ScalarNumber
dealii::LinearAlgebra::distributed::Vector< Number > ScalarVector
std::tuple< MultiComponentVector< Number, problem_dim >, MultiComponentVector< Number, prec_dim >, BlockVector< Number > > StateVector
Euler::ParabolicSystem ParabolicSystem
Euler::HyperbolicSystem HyperbolicSystem