VTK-m  2.1
Classes | Enumerations | Functions
vtkm::filter::mesh_info Namespace Reference

Classes

class  CellMeasures
 Compute the size measure of each cell in a dataset. More...
 
class  GhostCellClassify
 Determines which cells should be considered ghost cells in a structured data set. More...
 
class  MeshQuality
 Computes the quality of an unstructured cell-based mesh. More...
 
class  MeshQualityArea
 Compute the area of each cell. More...
 
class  MeshQualityAspectGamma
 For each cell, compute the normalized root-mean-square of the edge lengths. More...
 
class  MeshQualityAspectRatio
 Compute for each cell the ratio of its longest edge to its circumradius. More...
 
class  MeshQualityCondition
 Compute for each cell the condition number of the weighted Jacobian matrix. More...
 
class  MeshQualityDiagonalRatio
 Compute for each cell the ratio of the maximum diagonal to the minimum diagonal. More...
 
class  MeshQualityDimension
 Compute for each cell a metric specifically designed for Sandia's Pronto code. More...
 
class  MeshQualityJacobian
 Compute for each cell the minimum determinant of the Jacobian matrix, over corners and cell center. More...
 
class  MeshQualityMaxAngle
 Computes the maximum angle within each cell in degrees. More...
 
class  MeshQualityMaxDiagonal
 Computes the maximum diagonal length within each cell in degrees. More...
 
class  MeshQualityMinAngle
 Computes the minimum angle within each cell in degrees. More...
 
class  MeshQualityMinDiagonal
 Computes the minimal diagonal length within each cell in degrees. More...
 
class  MeshQualityOddy
 Compute for each cell the maximum deviation of a metric tensor from an identity matrix, over all corners and cell center. More...
 
class  MeshQualityRelativeSizeSquared
 Compute for each cell the ratio of area or volume to the mesh average. More...
 
class  MeshQualityScaledJacobian
 Compute for each cell a metric derived from the Jacobian matric with normalization involving edge length. More...
 
class  MeshQualityShape
 Compute a shape-based metric for each cell. More...
 
class  MeshQualityShapeAndSize
 Compute a metric for each cell based on the shape scaled by the cell size. More...
 
class  MeshQualityShear
 Compute the shear of each cell. More...
 
class  MeshQualitySkew
 Compute the skew of each cell. More...
 
class  MeshQualityStretch
 Compute the stretch of each cell. More...
 
class  MeshQualityTaper
 Compute the taper of each cell. More...
 
class  MeshQualityVolume
 Compute the volume each cell. More...
 
class  MeshQualityWarpage
 Compute the flatness of cells. More...
 

Enumerations

enum  IntegrationType {
  IntegrationType::None = 0x00, IntegrationType::ArcLength = 0x01, IntegrationType::Area = 0x02, IntegrationType::Volume = 0x04,
  IntegrationType::AllMeasures = ArcLength | Area | Volume
}
 Specifies over what types of mesh elements CellMeasures will operate. More...
 
enum  CellMetric {
  CellMetric::Area, CellMetric::AspectGamma, CellMetric::AspectRatio, CellMetric::Condition,
  CellMetric::DiagonalRatio, CellMetric::Dimension, CellMetric::Jacobian, CellMetric::MaxAngle,
  CellMetric::MaxDiagonal, CellMetric::MinAngle, CellMetric::MinDiagonal, CellMetric::Oddy,
  CellMetric::RelativeSizeSquared, CellMetric::ScaledJacobian, CellMetric::Shape, CellMetric::ShapeAndSize,
  CellMetric::Shear, CellMetric::Skew, CellMetric::Stretch, CellMetric::Taper,
  CellMetric::Volume, CellMetric::Warpage, CellMetric::None
}
 

Functions

IntegrationType operator& (IntegrationType left, IntegrationType right)
 
IntegrationType operator| (IntegrationType left, IntegrationType right)
 

Enumeration Type Documentation

◆ CellMetric

Enumerator
Area 

Compute the area of each cell.

This only produces values for triangles and quadrilaterals.

AspectGamma 

For each cell, compute the normalized root-mean-square of the edge lengths.

This only produces values for tetrahedra.

The root-mean-square edge length is normalized to the volume such that the value is 1 for an equilateral tetrahedron. The acceptable range for good quality meshes is considered to be [1, 3]. The normal range of values is [1, FLOAT_MAX].

AspectRatio 

Compute for each cell the ratio of its longest edge to its circumradius.

This only produces values for triangles, quadrilaterals, tetrahedra, and hexahedra.

An acceptable range of this mesh for a good quality polygon is [1, 1.3], and the acceptable range for a good quality polyhedron is [1, 3]. Normal values for any cell type have the range [1, FLOAT_MAX].

Condition 

Compute for each cell the condition number of the weighted Jacobian matrix.

This only produces values for triangles, quadrilaterals, and tetrahedra.

The acceptable range of values for a good quality cell is [1, 1.3] for triangles, [1, 4] for quadrilaterals, and [1, 3] for tetrahedra.

DiagonalRatio 

Compute for each cell the ratio of the maximum diagonal to the minimum diagonal.

This only produces values for quadrilaterals and hexahedra.

An acceptable range for a good quality cell is [0.65, 1]. The normal range is [0, 1], but a degenerate cell with no size will have the value of infinity.

Dimension 

Compute for each cell a metric specifically designed for Sandia's Pronto code.

This only produces values for hexahedra.

Jacobian 

Compute for each cell the minimum determinant of the Jacobian matrix, over corners and cell center.

This only produces values for quadrilaterals, tetrahedra, and hexahedra.

MaxAngle 

Computes the maximum angle within each cell in degrees.

This only produces values for triangles and quadrilaterals.

For a good quality triangle, this value should be in the range [60, 90]. Poorer quality triangles can have a value as high as 180. For a good quality quadrilateral, this value should be in the range [90, 135]. Poorer quality quadrilaterals can have a value as high as 360.

MaxDiagonal 

Computes the maximum diagonal length within each cell in degrees.

This only produces values for hexahedra.

MinAngle 

Computes the minimum angle within each cell in degrees.

This only produces values for triangles and quadrilaterals.

For a good quality triangle, this value should be in the range [30, 60]. Poorer quality triangles can have a value as low as 0. For a good quality quadrilateral, this value should be in the range [45, 90]. Poorer quality quadrilaterals can have a value as low as 0.

MinDiagonal 

Computes the minimal diagonal length within each cell in degrees.

This only produces values for hexahedra.

Oddy 

Compute for each cell the maximum deviation of a metric tensor from an identity matrix, over all corners and cell center.

This only produces values for quadrilaterals and hexahedra.

For a good quality quadrilateral or hexahedron, this value should be in the range [0, 0.5]. Poorer quality cells can have unboundedly larger values.

RelativeSizeSquared 

Compute for each cell the ratio of area or volume to the mesh average.

If S is the size of a cell and avgS is the average cell size in the mesh, then let R = S/avgS. R is "normalized" to be in the range [0, 1] by taking the minimum of R and 1/R. This value is then squared.

This only produces values for triangles, quadrilaterals, tetrahedra, and hexahedra.

For a good quality triangle, the relative sized squared should be in the range [0.25, 1]. For a good quality quadrilateral, it should be in the range [0.3, 1]. For a good quality tetrahedron, it should be in the range [0.3, 1]. For a good quality hexahedron, it should be in the range [0.5, 1]. Poorer quality cells can have a relative size squared as low as 0.

ScaledJacobian 

Compute for each cell a metric derived from the Jacobian matric with normalization involving edge length.

This only produces values for triangles, quadrilaterals, tetrahedra, and hexahedra.

For a triangle, an acceptable range for good quality is [0.5, 2*sqrt(3)/3]. The value for an equalateral triangle is 1. The normal range is [-2*sqrt(3)/3), 2*sqrt(3)/3], but malformed cells can have plus or minus the maximum float value.

For a quadrilateral, an acceptable range for good quality is [0.3, 1]. The unit square has a value of 1. The normal range as well as the full range is [-1, 1].

For a tetrahedron, an acceptable range for good quality is [0.5, sqrt(2)/2]. The value for a unit equalateral triangle is 1. The normal range of values is [-sqrt(2)/2, sqrt(2)/2], but malformed cells can have plus or minus the maximum float value.

For a hexahedron, an acceptable range for good quality is [0.5, 1]. The unit cube has a value of 1. The normal range is [ -1, 1 ], but malformed cells can have a maximum float value.

Shape 

Compute a shape-based metric for each cell.

This metric is based on the condition number of the Jacobian matrix.

This only produces values for triangles, quadrilaterals, tetrahedra, and hexahedra.

For good quality triangles, the acceptable range is [0.25, 1]. Good quality quadrilaterals, tetrahedra, hexahedra are in the range [0.3, 1]. Poorer quality cells can have values as low as 0.

ShapeAndSize 

Compute a metric for each cell based on the shape scaled by the cell size.

This filter multiplies the values of the shape metric by the relative size squared metric. See vtkm::filter::mesh_info::MeshQualityShape and vtkm::filter::mesh_info::MeshQualityRelativeSizeSquared for details on each of those metrics.

This only produces values for triangles, quadrilaterals, tetrahedra, and hexahedra.

For a good quality cell, this value will be in the range [0.2, 1]. Poorer quality cells can have values as low as 0.

Shear 

Compute the shear of each cell.

The shear of a cell is computed by taking the minimum of the Jacobian at each corner divided by the length of the corner's adjacent edges.

This only produces values for quadrilaterals and hexahedra. Good quality cells will have values in the range [0.3, 1]. Poorer quality cells can have values as low as 0.

Skew 

Compute the skew of each cell.

The skew is computed as the dot product between unit vectors in the principal directions. (For 3D objects, the skew is taken as the maximum of all planes.)

This only produces values for quadrilaterals and hexahedra.

Good quality cells will have a skew in the range [0, 0.5]. A unit square or cube will have a skew of 0. Poor quality cells can have a skew up to 1 although a malformed cell might have its skew be infinite.

Stretch 

Compute the stretch of each cell.

The stretch of a cell is computed as the ratio of the minimum edge length to the maximum diagonal, normalized for the unit cube. A good quality cell will have a stretch in the range [0.25, 1]. Poorer quality cells can have a stretch as low as 0 although a malformed cell might return a strech of infinity.

This only produces values for quadrilaterals and hexahedra.

Taper 

Compute the taper of each cell.

The taper of a quadrilateral is computed as the maximum ratio of the cross-derivative with its shortest associated principal axis.

This only produces values for quadrilaterals and hexahedra.

A good quality quadrilateral will have a taper in the range of [0, 0.7]. A good quality hexahedron will have a taper in the range of [0, 0.5]. The unit square or cube will have a taper of 0. Poorer quality cells will have larger values (with no upper limit).

Volume 

Compute the volume each cell.

This only produces values for tetrahedra, pyramids, wedges, and hexahedra.

Warpage 

Compute the flatness of cells.

This only produces values for quadrilaterals. It is defined as the cosine of the minimum dihedral angle formed by the planes intersecting in diagonals (to the fourth power).

This metric will be 1 for a perfectly flat quadrilateral and be lower as the quadrilateral deviates from the plane. A good quality quadrilateral will have a value in the range [0.3, 1]. Poorer quality cells having lower values down to -1, although malformed cells might have an infinite value.

Note that the value of this filter is consistent with the equivalent metric in VisIt, and it differs from the implementation in the Verdict library. The Verdict library returns 1 - value.

None 

◆ IntegrationType

Specifies over what types of mesh elements CellMeasures will operate.

The values of IntegrationType may be |-ed together to select multiple

Enumerator
None 
ArcLength 

Compute the length of 1D elements.

Area 

Compute the area of 2D elements.

Volume 

Compute the volume of 3D elements.

AllMeasures 

Compute the size of all types of elements.

Function Documentation

◆ operator&()

IntegrationType vtkm::filter::mesh_info::operator& ( IntegrationType  left,
IntegrationType  right 
)
inline

◆ operator|()

IntegrationType vtkm::filter::mesh_info::operator| ( IntegrationType  left,
IntegrationType  right 
)
inline