deal.II version GIT relicensing-2165-gc91f007519 2024-11-20 01:40:00+00:00
|
#include <deal.II/base/data_out_base.h>
Classes | |
struct | Point3Comp |
Public Member Functions | |
DataOutFilter () | |
DataOutFilter (const DataOutBase::DataOutFilterFlags &flags) | |
template<int dim> | |
void | write_point (const unsigned int index, const Point< dim > &p) |
template<int dim> | |
void | write_cell (const unsigned int index, const unsigned int start, const std::array< unsigned int, dim > &offsets) |
void | write_cell_single (const unsigned int index, const unsigned int start, const unsigned int n_points, const ReferenceCell &reference_cell) |
void | write_data_set (const std::string &name, const unsigned int dimension, const unsigned int set_num, const Table< 2, double > &data_vectors) |
void | fill_node_data (std::vector< double > &node_data) const |
void | fill_cell_data (const unsigned int local_node_offset, std::vector< unsigned int > &cell_data) const |
std::string | get_data_set_name (const unsigned int set_num) const |
unsigned int | get_data_set_dim (const unsigned int set_num) const |
const double * | get_data_set (const unsigned int set_num) const |
unsigned int | n_nodes () const |
unsigned int | n_cells () const |
unsigned int | n_data_sets () const |
void | flush_points () |
void | flush_cells () |
Private Types | |
using | Map3DPoint = std::multimap< Point< 3 >, unsigned int, Point3Comp > |
Private Member Functions | |
void | internal_add_cell (const unsigned int cell_index, const unsigned int pt_index) |
Private Attributes | |
DataOutBase::DataOutFilterFlags | flags |
unsigned int | node_dim |
unsigned int | num_cells |
Map3DPoint | existing_points |
std::map< unsigned int, unsigned int > | filtered_points |
std::map< unsigned int, unsigned int > | filtered_cells |
std::vector< std::string > | data_set_names |
std::vector< unsigned int > | data_set_dims |
std::vector< std::vector< double > > | data_sets |
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 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 (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 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, i.e., chosen arbitrarily from any of the adjacent cells.
Definition at line 1380 of file data_out_base.h.
|
private |
Definition at line 1531 of file data_out_base.h.
DataOutBase::DataOutFilter::DataOutFilter | ( | ) |
Default constructor.
Definition at line 422 of file data_out_base.cc.
DataOutBase::DataOutFilter::DataOutFilter | ( | const DataOutBase::DataOutFilterFlags & | flags | ) |
Constructor with a given set of flags. See DataOutFilterFlags for possible flags.
Definition at line 430 of file data_out_base.cc.
void DataOutBase::DataOutFilter::write_point | ( | const unsigned int | index, |
const Point< dim > & | p | ||
) |
Write a point with the specified index into the filtered data set. If the point already exists and we are filtering redundant values, the provided index will internally refer to another recorded point.
Definition at line 440 of file data_out_base.cc.
void DataOutBase::DataOutFilter::write_cell | ( | const unsigned int | index, |
const unsigned int | start, | ||
const std::array< unsigned int, dim > & | offsets | ||
) |
Record a deal.II cell in the internal reordered format.
Definition at line 573 of file data_out_base.cc.
void DataOutBase::DataOutFilter::write_cell_single | ( | const unsigned int | index, |
const unsigned int | start, | ||
const unsigned int | n_points, | ||
const ReferenceCell & | reference_cell | ||
) |
Record a single deal.II cell without subdivisions (e.g. simplex) in the internal reordered format.
Definition at line 636 of file data_out_base.cc.
void DataOutBase::DataOutFilter::write_data_set | ( | const std::string & | name, |
const unsigned int | dimension, | ||
const unsigned int | set_num, | ||
const Table< 2, double > & | data_vectors | ||
) |
Filter and record a data set. If there are multiple values at a given vertex and redundant values are being removed, one is arbitrarily chosen as the recorded value. In the future this can be expanded to average/min/max multiple values at a given vertex.
Definition at line 657 of file data_out_base.cc.
void DataOutBase::DataOutFilter::fill_node_data | ( | std::vector< double > & | node_data | ) | const |
Resize and fill a vector with all the filtered node vertex points, for output to a file.
Definition at line 482 of file data_out_base.cc.
void DataOutBase::DataOutFilter::fill_cell_data | ( | const unsigned int | local_node_offset, |
std::vector< unsigned int > & | cell_data | ||
) | const |
Resize and fill a vector with all the filtered cell vertex indices, for output to a file.
Definition at line 497 of file data_out_base.cc.
std::string DataOutBase::DataOutFilter::get_data_set_name | ( | const unsigned int | set_num | ) | const |
Get the name of the data set indicated by the set number.
Definition at line 512 of file data_out_base.cc.
Get the dimensionality of the data set indicated by the set number.
Definition at line 520 of file data_out_base.cc.
const double * DataOutBase::DataOutFilter::get_data_set | ( | const unsigned int | set_num | ) | const |
Get the raw double valued data of the data set indicated by the set number.
Definition at line 528 of file data_out_base.cc.
unsigned int DataOutBase::DataOutFilter::n_nodes | ( | ) | const |
Return the number of nodes in this DataOutFilter. This may be smaller than the original number of nodes if filtering is enabled.
Definition at line 536 of file data_out_base.cc.
unsigned int DataOutBase::DataOutFilter::n_cells | ( | ) | const |
Return the number of filtered cells in this DataOutFilter. Cells are not filtered so this will be the original number of cells.
Definition at line 544 of file data_out_base.cc.
unsigned int DataOutBase::DataOutFilter::n_data_sets | ( | ) | const |
Return the number of filtered data sets in this DataOutFilter. Data sets are not filtered so this will be the original number of data sets.
Definition at line 552 of file data_out_base.cc.
void DataOutBase::DataOutFilter::flush_points | ( | ) |
Empty functions to do base class inheritance.
Definition at line 560 of file data_out_base.cc.
void DataOutBase::DataOutFilter::flush_cells | ( | ) |
Empty functions to do base class inheritance.
Definition at line 566 of file data_out_base.cc.
|
private |
Record a cell vertex index based on the internal reordering.
Definition at line 469 of file data_out_base.cc.
|
private |
Flags used to specify filtering behavior.
Definition at line 1536 of file data_out_base.h.
|
private |
The number of space dimensions in which the vertices represented by the current object live. This corresponds to the usual dim
argument, but since this class is not templated on the dimension, we need to store it here.
Definition at line 1544 of file data_out_base.h.
|
private |
The number of cells stored in filtered_cells.
Definition at line 1550 of file data_out_base.h.
|
private |
Map of points to an internal index.
Definition at line 1555 of file data_out_base.h.
Map of actual point index to internal point index.
Definition at line 1560 of file data_out_base.h.
Map of cells to the filtered points.
Definition at line 1565 of file data_out_base.h.
|
private |
Data set names.
Definition at line 1570 of file data_out_base.h.
|
private |
Data set dimensions.
Definition at line 1575 of file data_out_base.h.
|
private |
Data set data.
Definition at line 1580 of file data_out_base.h.