6#include <deal.II/base/data_out_base.h>
7#include <deal.II/base/utilities.h>
13#include <prismspf/core/variable_attributes.h>
15#include <prismspf/user_inputs/parameter_base.h>
19#include <prismspf/config.h>
25#include <unordered_map>
72 dealii::DataOutBase::CompressionLevel::default_compression;
122 declare(dealii::ParameterHandler ¶meter_handler)
const override
124 parameter_handler.enter_subsection(
"field output");
126 parameter_handler.declare_entry(
"folder",
128 dealii::Patterns::Anything(),
129 "The folder where output files are stored.");
130 parameter_handler.declare_entry(
"file name",
132 dealii::Patterns::Anything(),
133 "The base name for the output file, before the time "
134 "step and processor info are added.");
135 parameter_handler.declare_entry(
"file type",
137 dealii::Patterns::Selection(
"vtu|vtk|pvtu"),
138 "The output file type (either vtu, pvtu, or vtk).");
139 parameter_handler.declare_entry(
142 dealii::Patterns::Integer(0,
INT_MAX),
143 "The number of subdivisions to apply to the mesh when building output patches. If "
144 "0, the degree is used.");
145 parameter_handler.declare_entry(
"compression level",
147 dealii::Patterns::Selection(
148 "default|best speed|best size|none"),
149 "The compression level of the output (either "
150 "default, best speed, best size, or none).");
152 parameter_handler.declare_entry(
155 dealii::Patterns::Selection(
"EQUAL_SPACING|LOG_SPACING|N_PER_DECADE|LIST"),
156 "The spacing type for outputting the solution fields (either EQUAL_SPACING, "
157 "LOG_SPACING, N_PER_DECADE, or LIST).");
158 parameter_handler.declare_entry(
161 dealii::Patterns::List(dealii::Patterns::Integer(0,
INT_MAX), 0,
INT_MAX,
","),
162 "The list of time steps to output. Used for the LIST type only and must be comma "
164 parameter_handler.declare_entry(
"number",
166 dealii::Patterns::Integer(0,
INT_MAX),
167 "The number of outputs (or number of outputs "
168 "per decade for the N_PER_DECADE type).");
170 parameter_handler.declare_entry(
173 dealii::Patterns::List(dealii::Patterns::Anything(), 0,
INT_MAX,
","),
174 "The list of fields to output. Must be comma delimited. Additionally, for the "
175 "output of change and old fields, they must follow the same delimiters in "
176 "VariableAttributes. In other words, something like `set fields = n1, old_1(n1), "
179 parameter_handler.leave_subsection();
186 read(dealii::ParameterHandler ¶meter_handler)
override
188 const std::unordered_map<std::string, FieldOutputParameters::OutputType>
194 const std::unordered_map<std::string, dealii::DataOutBase::CompressionLevel>
196 {
"default", dealii::DataOutBase::CompressionLevel::default_compression},
197 {
"best speed", dealii::DataOutBase::CompressionLevel::best_speed },
198 {
"best size", dealii::DataOutBase::CompressionLevel::best_compression },
199 {
"none", dealii::DataOutBase::CompressionLevel::no_compression }
202 parameter_handler.enter_subsection(
"field output");
212 condition = parameter_handler.get(
"condition");
214 dealii::Utilities::split_string_list(parameter_handler.get(
"list")));
215 n_outputs = parameter_handler.get_integer(
"number");
216 field_list = dealii::Utilities::split_string_list(parameter_handler.get(
"fields"));
218 parameter_handler.leave_subsection();
236 validate(
const std::vector<VariableAttributes> &field_attributes)
const override
255 <<
"================================================\n"
256 <<
" Field Output Parameter Class\n"
257 <<
"================================================\n"
315 dealii::ExcMessage(
"For n per decaded spaced outputs, the number of "
316 "increments must be greater than 1."));
322 static_cast<unsigned int>(std::ceil(std::log10(
iteration)));
static dealii::ConditionalOStream & pout_summary()
Log output stream for writing a summary.log file.
Definition conditional_ostreams.cc:34
A class that determines how often and what fields are output.
Definition io_parameters.h:116
void validate(const std::vector< VariableAttributes > &field_attributes) const override
Validate parameters.
Definition io_parameters.h:236
unsigned int n_outputs
Definition io_parameters.h:343
std::vector< std::string > field_list
Definition io_parameters.h:345
void read(dealii::ParameterHandler ¶meter_handler) override
Read parameters.
Definition io_parameters.h:186
void postprocess(unsigned int n_increments)
Postprocess parameters.
Definition io_parameters.h:225
void print_parameter_summary() const override
Print parameters to summary.log.
Definition io_parameters.h:252
void fill_out_output_list(unsigned int n_increments)
Definition io_parameters.h:263
std::string condition
Definition io_parameters.h:339
void declare(dealii::ParameterHandler ¶meter_handler) const override
Declare parameters.
Definition io_parameters.h:122
std::vector< int > user_output_list
Definition io_parameters.h:341
FieldOutputParameters package() const
Package parameters.
Definition io_parameters.h:243
FieldOutputParameters parameters
Definition io_parameters.h:337
@ Value
Use value of the variable as a criterion for refinement.
Definition grid_refiner_criterion.h:31
Definition conditional_ostreams.cc:20
Simple struct for field output.
Definition io_parameters.h:33
OutputType
VTK output types.
Definition io_parameters.h:38
@ VTU
Definition io_parameters.h:39
@ PVTU
Definition io_parameters.h:41
@ VTK
Definition io_parameters.h:40
dealii::DataOutBase::CompressionLevel compression_level
Compression level for output.
Definition io_parameters.h:71
unsigned int patch_subdivisions
Number of subdivisions to apply when building patches.
Definition io_parameters.h:62
OutputType file_type
File type for field output.
Definition io_parameters.h:52
std::string folder
Folder for field output.
Definition io_parameters.h:79
std::set< std::pair< Types::Index, DependencyType > > output_fields
A list of fields that are output.
Definition io_parameters.h:109
std::string file_name
Base filename for field output.
Definition io_parameters.h:87
std::set< unsigned int > output_list
A list of output steps.
Definition io_parameters.h:95
PRISMS_PF_BEGIN_NAMESPACE Type string_to_type(const std::string &string, const std::unordered_map< std::string, Type > &table)
Helper function that converts a string to some type, given a mapping.
Definition utilities.h:29