6#include <deal.II/base/data_out_base.h>
7#include <deal.II/base/parameter_handler.h>
8#include <deal.II/base/patterns.h>
9#include <deal.II/base/utilities.h>
11#include <boost/serialization/vector.hpp>
22#include <prismspf/config.h>
29#include <unordered_map>
35 unsigned int n_increments,
36 std::set<unsigned int> &output_list)
39 if (n_increments == 0)
41 output_list.insert(0);
49 unsigned int period = std::max(1U, n_increments / n_outputs);
50 for (
unsigned int output = 0; output <= n_increments; output += period)
52 output_list.insert(output);
58 unsigned int n_increments,
59 std::set<unsigned int> &output_list)
62 if (n_increments == 0)
64 output_list.insert(0);
72 for (
unsigned int output = 1; output <= n_outputs; output++)
74 output_list.insert((
unsigned int) (std::round(
75 std::pow(
double(n_increments),
double(output) /
double(n_outputs)))));
81 unsigned int n_increments,
82 std::set<unsigned int> &output_list)
85 if (n_increments == 0)
87 output_list.insert(0);
95 output_list.insert(0);
96 output_list.insert(1);
97 for (
unsigned int iteration = 2; iteration <= n_increments; iteration++)
99 const auto decade = (
unsigned int) (std::ceil(std::log10(iteration)));
100 const auto step_size = (
unsigned int) (std::pow(10, decade) / n_outputs);
101 if (iteration % step_size == 0)
103 output_list.insert(iteration);
108template <
typename T1,
typename T2>
109requires std::convertible_to<T1, T2>
113 for (
const auto &val : list)
115 output_list.insert(T2(val));
128 declare(dealii::ParameterHandler ¶meter_handler,
137 assign(dealii::ParameterHandler ¶meter_handler,
144 assign(dealii::ParameterHandler ¶meter_handler,
145 unsigned int n_increments,
152 validate(
const std::vector<FieldAttributes> &field_attributes,
153 const std::vector<SolveBlock> &solve_blocks)
const override;
200 dealii::DataOutBase::CompressionLevel::default_compression;
249 declare(dealii::ParameterHandler ¶meter_handler,
258 assign(dealii::ParameterHandler ¶meter_handler,
265 assign(dealii::ParameterHandler ¶meter_handler,
266 unsigned int n_increments,
273 validate(
const std::vector<FieldAttributes> &field_attributes,
274 const std::vector<SolveBlock> &solve_blocks)
const override;
360 declare(dealii::ParameterHandler ¶meter_handler,
367 assign(dealii::ParameterHandler ¶meter_handler,
374 validate(
const std::vector<FieldAttributes> &field_attributes,
375 const std::vector<SolveBlock> &solve_blocks)
const override;
386PRISMS_PF_END_NAMESPACE
void add_list_outputs(const std::vector< T1 > &list, std::set< T2 > &output_list)
Definition io_parameters.h:111
void add_log_spacing_outputs(unsigned int n_outputs, unsigned int n_increments, std::set< unsigned int > &output_list)
Definition io_parameters.h:57
PRISMS_PF_BEGIN_NAMESPACE void add_equal_spacing_outputs(unsigned int n_outputs, unsigned int n_increments, std::set< unsigned int > &output_list)
Definition io_parameters.h:34
void add_n_per_decade_outputs(unsigned int n_outputs, unsigned int n_increments, std::set< unsigned int > &output_list)
Definition io_parameters.h:80
static constexpr unsigned int default_subsections
Max number of subsections.
Definition types.h:33
Definition conditional_ostreams.cc:20
Simple struct for field output.
Definition io_parameters.h:123
bool should_output(unsigned int increment) const
Whether a given increment should be outputted.
Definition io_parameters.cc:151
void assign(dealii::ParameterHandler ¶meter_handler, unsigned int n_subsections=Numbers::default_subsections) override
Assign the parameters from file.
Definition io_parameters.cc:79
dealii::DataOutBase::CompressionLevel compression_level
Compression level for output.
Definition io_parameters.h:199
unsigned int patch_subdivisions
Number of subdivisions to apply when building patches.
Definition io_parameters.h:190
std::set< std::string > output_fields
A list of fields that are output.
Definition io_parameters.h:237
void validate(const std::vector< FieldAttributes > &field_attributes, const std::vector< SolveBlock > &solve_blocks) const override
Validate.
Definition io_parameters.cc:144
OutputType file_type
File type for field output.
Definition io_parameters.h:180
std::string folder
Folder for field output.
Definition io_parameters.h:207
std::string file_name
Base filename for field output.
Definition io_parameters.h:215
OutputType
VTK output types.
Definition io_parameters.h:159
@ VTU
Definition io_parameters.h:160
@ XDMF
Definition io_parameters.h:163
@ PVTU
Definition io_parameters.h:162
@ VTK
Definition io_parameters.h:161
static void declare(dealii::ParameterHandler ¶meter_handler, unsigned int n_subsections=Numbers::default_subsections)
Declare the parameters to be read from file.
Definition io_parameters.cc:13
std::set< unsigned int > output_list
A list of output steps.
Definition io_parameters.h:223
Initial condition file.
Definition io_parameters.h:320
std::vector< std::string > simulation_variable_names
Definition io_parameters.h:343
DataFormatType format
Definition io_parameters.h:337
std::vector< std::string > file_variable_names
Definition io_parameters.h:340
std::string file_name
Definition io_parameters.h:334
std::array< unsigned int, 3 > n_data_points
Definition io_parameters.h:346
DataFormatType
Data formats for input initial conditions.
Definition io_parameters.h:325
@ VTKXMLImageData
Definition io_parameters.h:330
@ VTKPXMLUnstructuredGrid
Definition io_parameters.h:329
@ FlatBinary
Definition io_parameters.h:326
@ VTKXMLUnstructuredGrid
Definition io_parameters.h:328
@ VTKUnstructuredGrid
Definition io_parameters.h:327
Simple struct for restart output.
Definition io_parameters.h:244
void assign(dealii::ParameterHandler ¶meter_handler, unsigned int n_subsections=Numbers::default_subsections) override
Assign the parameters from file.
Definition io_parameters.cc:201
std::string file_name
Base filename for checkpoint output.
Definition io_parameters.h:305
bool should_output(unsigned int increment) const
Whether a given increment should be outputted.
Definition io_parameters.cc:252
std::set< unsigned int > output_list
A list of output steps.
Definition io_parameters.h:313
bool load_from_checkpoint
Whether to load from a checkpoint.
Definition io_parameters.h:290
void validate(const std::vector< FieldAttributes > &field_attributes, const std::vector< SolveBlock > &solve_blocks) const override
Validate.
Definition io_parameters.cc:245
static void declare(dealii::ParameterHandler ¶meter_handler, unsigned int n_subsections=Numbers::default_subsections)
Declare the parameters to be read from file.
Definition io_parameters.cc:157
std::string folder
Folder for checkpoint output.
Definition io_parameters.h:297