21#include <Kokkos_Macros.hpp>
34 calculate_next_time(
const double current_time,
35 const double step_size,
36 const double end_time)
40 double next_time = current_time + step_size;
41 constexpr double relative_tolerance = 0.05;
42 const double time_tolerance = relative_tolerance * step_size;
43 if (next_time > end_time - time_tolerance)
52 const double end_time,
53 const double desired_start_step_size)
54 : start_time{start_time}
56 , current_time{start_time}
57 , next_time{calculate_next_time(start_time,
58 desired_start_step_size,
60 , previous_time{start_time}
61 , start_step_size{next_time - start_time}
79 ExcMessage(
"Only positive time step size is allowed."));
84 "Time step size is too large. The next time cannot exceed the end time."));
94 "Either dt==0 or you are at the "
95 "end of the simulation time."));
double get_next_step_size() const
void set_desired_next_step_size(const double time_step_size)
std::size_t memory_consumption() const
void set_next_step_size(const double time_step_size)
DiscreteTime(const double start_time, const double end_time, const double desired_start_step_size=0.)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcInternalError()
static ::ExceptionBase & ExcMessage(std::string arg1)
std::enable_if_t< std::is_fundamental_v< T >, std::size_t > memory_consumption(const T &t)