Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Minor updates to DataOutFilter. #13583

Merged
merged 1 commit into from
Apr 5, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
29 changes: 20 additions & 9 deletions include/deal.II/base/data_out_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -1283,14 +1283,15 @@ namespace DataOutBase
};

/**
* 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
Expand Down Expand Up @@ -1338,23 +1339,33 @@ namespace DataOutBase
/**
* 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
{
Expand All @@ -1365,7 +1376,7 @@ namespace DataOutBase
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);
Expand Down