};
/**
- * Flags controlling the DataOutFilter.
+ * Flags controlling the behavior of the DataOutFilter class.
*
* @ingroup output
*/
struct DataOutFilterFlags
{
/**
- * Filter duplicate vertices and associated values. This will drastically
+ * Whether or not to filter out duplicate vertices and associated values.
+ * Setting this value to `true` will drastically
* reduce the output data size but will result in an output file that
* does not faithfully represent the actual data if the data corresponds
* to discontinuous fields. In particular, along subdomain boundaries
/**
* DataOutFilter provides a way to remove redundant vertices and values
* generated by the deal.II output. By default, DataOutBase and the classes
- * that build on it output data at each corner of each cell. This means that
- * data is output multiple times for each vertex of the mesh. The purpose of
+ * that build on it output data at each vertex of each cell. This means that
+ * data is output multiple times for each vertex of the mesh, once for each
+ * cell adjacent to the vertex. The purpose of
* this scheme is to support output of discontinuous quantities, either
* because the finite element space is discontinuous or because the quantity
* that is output is computed from a solution field and is discontinuous
- * across faces.
+ * across faces (for example for quantities computed via DataPostprocessor;
+ * typical cases where output quantities are discontinuous are when a
+ * postprocessor computes a quantity using the *gradient* of the solution,
+ * which is generally discontinuous even if the element itself is
+ * continuous). Other cases where the output is discontinuous are if the
+ * data to be output is not a finite element field but, for example,
+ * results from a class such as MatrixOut.
*
* This class is an attempt to rein in the amount of data that is written.
* If the fields that are written to files are indeed discontinuous, the
* only way to faithfully represent them is indeed to write multiple values
- * for each vertex (this is typically done by writing multiple node
- * locations for the same vertex and defining data at these nodes). However,
+ * for each vertex (this is typically done by creating multiple logical nodes
+ * in the output file, all of which have the same physical location; data is
+ * then associated to nodes, allowing to have multiple values associated
+ * with the same location). However,
* for fine meshes, one may not necessarily be interested in an exact
* representation of output fields that will likely only have small
* discontinuities. Rather, it may be sufficient to just output one value
* per vertex, which may be chosen arbitrarily from among those that are
- * defined at this vertex from any of the adjacent cells.
+ * defined at this vertex, i.e., chosen arbitrarily from any of the
+ * adjacent cells.
*/
class DataOutFilter
{
DataOutFilter();
/**
- * Destructor with a given set of flags. See DataOutFilterFlags for
+ * Constructor with a given set of flags. See DataOutFilterFlags for
* possible flags.
*/
DataOutFilter(const DataOutBase::DataOutFilterFlags &flags);