6#include <deal.II/base/parameter_handler.h>
15#include <prismspf/config.h>
54 template <
typename ListType>
71 for (
unsigned int checkpoint = 0; checkpoint <= num_increments;
72 checkpoint += num_increments / num_checkpoints)
88 for (
unsigned int checkpoint = 1; checkpoint <= num_checkpoints; checkpoint++)
91 std::round(std::pow(
double(num_increments),
92 double(checkpoint) /
double(num_checkpoints)))));
102 if (!num_checkpoints)
106 AssertThrow(num_increments > 1,
107 dealii::ExcMessage(
"For n per decaded spaced checkpoints, the number of "
108 "increments must be greater than 1."));
110 for (
unsigned int iteration = 2; iteration <= num_increments; iteration++)
112 const auto decade =
static_cast<unsigned int>(std::ceil(std::log10(iteration)));
113 const auto step_size =
114 static_cast<unsigned int>(std::pow(10, decade) / num_checkpoints);
115 if (iteration % step_size == 0)
134 [[nodiscard]]
unsigned int
171 <<
"================================================\n"
172 <<
" Checkpoint Parameters\n"
173 <<
"================================================\n"
174 <<
"Checkpoint file name: " <<
file_name <<
"\n"
188 dealii::ParameterHandler ¶meter_handler)
const
190 parameter_handler.enter_subsection(
"checkpoints");
192 parameter_handler.declare_entry(
193 "load from checkpoint",
195 dealii::Patterns::Bool(),
196 "Whether to load from a checkpoint created during a previous simulation.");
197 parameter_handler.declare_entry(
200 dealii::Patterns::Selection(
"EQUAL_SPACING|LOG_SPACING|N_PER_DECADE|LIST"),
201 "The spacing type for saving checkpoints (either EQUAL_SPACING, "
202 "LOG_SPACING, N_PER_DECADE, or LIST).");
203 parameter_handler.declare_entry(
206 dealii::Patterns::List(dealii::Patterns::Integer(0, INT_MAX), 0, INT_MAX,
","),
207 "The list of time steps to save checkpoints, used for the LIST type.");
208 parameter_handler.declare_entry(
211 dealii::Patterns::Integer(0, INT_MAX),
212 "The number of checkpoints (or number of checkpoints per decade for the "
213 "N_PER_DECADE type).");
215 parameter_handler.leave_subsection();
220 dealii::ParameterHandler ¶meter_handler,
223 parameter_handler.enter_subsection(
"checkpoints");
227 std::string condition = parameter_handler.get(
"condition");
228 unsigned int num_checkpoints =
229 static_cast<unsigned int>(parameter_handler.get_integer(
"number"));
230 unsigned int num_increments = temporal_discretization.
num_increments;
231 if (condition ==
"EQUAL_SPACING")
235 else if (condition ==
"LOG_SPACING")
239 else if (condition ==
"N_PER_DECADE")
244 dealii::Utilities::split_string_list(parameter_handler.get(
"list"))));
246 parameter_handler.leave_subsection();
249PRISMS_PF_END_NAMESPACE
static dealii::ConditionalOStream & pout_summary()
Log output stream for writing a summary.log file.
Definition conditional_ostreams.cc:35
Definition conditional_ostreams.cc:20
Struct that holds checkpoint parameters.
Definition checkpoint_parameters.h:27
std::set< unsigned int > checkpoint_list
Definition checkpoint_parameters.h:164
void declare_parameters(dealii::ParameterHandler ¶meter_handler) const
Declare the parameters to be read from an input file.
Definition checkpoint_parameters.h:187
bool print_timing_with_checkpoint
Definition checkpoint_parameters.h:161
void print_parameter_summary() const
Print parameters to summary.log.
Definition checkpoint_parameters.h:168
void clear_checkpoint_list()
Set the user checkpoint list.
Definition checkpoint_parameters.h:126
std::string file_name
Definition checkpoint_parameters.h:157
void add_log_spacing_checkpoints(unsigned int num_checkpoints, unsigned int num_increments)
Set the user checkpoint list.
Definition checkpoint_parameters.h:82
void validate()
Postprocess and validate parameters.
Definition checkpoint_parameters.h:41
void add_n_per_decade_checkpoints(unsigned int num_checkpoints, unsigned int num_increments)
Set the user checkpoint list.
Definition checkpoint_parameters.h:100
void assign_parameters(dealii::ParameterHandler ¶meter_handler, const TemporalDiscretization &temporal_discretization)
Assign the parameters read from an input file to this object.
Definition checkpoint_parameters.h:219
bool should_load_checkpoint
Definition checkpoint_parameters.h:154
void add_equal_spacing_checkpoints(unsigned int num_checkpoints, unsigned int num_increments)
Set the user checkpoint list.
Definition checkpoint_parameters.h:65
void add_checkpoint_list(const ListType &list)
Set the user checkpoint list.
Definition checkpoint_parameters.h:56
bool should_checkpoint(unsigned int increment) const
Return if the increment should be checkpointted.
Definition checkpoint_parameters.h:32
unsigned int get_num_checkpoints() const
Get the number of checkpoints that will be made.
Definition checkpoint_parameters.h:135
Struct that holds temporal discretization parameters.
Definition temporal_discretization.h:21
unsigned int num_increments
Definition temporal_discretization.h:68
const char * bool_to_string(bool boolean)
Convert bool to string.
Definition utilities.h:399