22 #include "vtkFiltersCellGridModule.h"
34 VTK_ABI_NAMESPACE_BEGIN
40 class vtkTypeFloat32Array;
41 class vtkTypeInt32Array;
63 std::unordered_map<vtkStringToken,
64 std::unordered_map<vtkStringToken,
65 std::unordered_map<int,
66 std::unordered_map<vtkStringToken,
98 virtual ~
Source() =
default;
102 os <<
"vtkDGCell::Source(" << &source <<
")\n";
104 os <<
"Connectivity: " << source.Connectivity <<
'\n';
105 os <<
"NodalGhostMarks: " << source.NodalGhostMarks <<
'\n';
106 os <<
"Offset: " << source.Offset <<
'\n';
107 os <<
"Blanked: " << (source.Blanked ?
"T\n" :
"F\n");
108 os <<
"SourceShape: " << source.SourceShape <<
'\n';
109 os <<
"SideType: " << source.SideType <<
'\n';
110 os <<
"SelectionType: " << source.SelectionType <<
'\n';
133 bool Blanked{
false };
147 int SelectionType{ -1 };
161 const Source& GetCellSource(
int sideType = -1)
const;
162 Source& GetCellSource(
int sideType = -1);
170 vtkDataArray* GetCellSourceConnectivity(
int sideType = -1)
const;
171 vtkDataArray* GetCellSourceNodalGhostMarks(
int sideType = -1)
const;
172 vtkIdType GetCellSourceOffset(
int sideType = -1)
const;
173 bool GetCellSourceIsBlanked(
int sideType = -1)
const;
174 Shape GetCellSourceShape(
int sideType = -1)
const;
175 int GetCellSourceSideType(
int sideType = -1)
const;
176 int GetCellSourceSelectionType(
int sideType = -1)
const;
192 virtual double GetSignedParametricDistance(
const vtkVector3d&
rst)
const = 0;
197 return this->GetSignedParametricDistance(rst) <= std::abs(tolerance);
200 static int GetShapeCornerCount(
Shape shape);
201 static int GetShapeDimension(
Shape shape);
202 static vtkStringToken GetShapeName(
Shape shape);
207 static Shape GetShapeEnum(vtkStringToken shapeName);
226 virtual const std::array<double, 3>& GetCornerParameter(
int corner)
const = 0;
237 virtual vtkVector3d GetParametricCenterOfSide(
int sideId)
const;
242 virtual int GetNumberOfSideTypes()
const = 0;
266 virtual std::pair<int, int> GetSideRangeForType(
int sideType)
const = 0;
269 int* GetSideRangeForSideType(
int sideType)
VTK_SIZEHINT(2);
275 virtual std::pair<int, int> GetSideRangeForDimension(
int dimension)
const;
278 int* GetSideRangeForSideDimension(
int sideDimension)
VTK_SIZEHINT(2);
299 virtual int GetNumberOfSidesOfDimension(
int dimension)
const = 0;
307 virtual Shape GetSideShape(
int side)
const = 0;
313 virtual int GetSideTypeForShape(
Shape s)
const;
323 virtual const std::vector<vtkIdType>& GetSideConnectivity(
int side)
const = 0;
331 virtual const std::vector<vtkIdType>& GetSidesOfSide(
int side)
const = 0;
338 virtual vtkTypeFloat32Array* GetReferencePoints()
const = 0;
347 virtual vtkTypeInt32Array* GetSideConnectivity()
const = 0;
354 virtual vtkTypeInt32Array* GetSideOffsetsAndShapes()
const = 0;
357 void FillReferencePoints(vtkTypeFloat32Array* arr)
const;
360 void FillSideConnectivity(vtkTypeInt32Array* arr)
const;
382 void FillSideOffsetsAndShapes(vtkTypeInt32Array* arr)
const;
404 static OperatorMap& GetOperators();
419 void operator=(
const vtkDGCell&) =
delete;
422 VTK_ABI_NAMESPACE_END
virtual int GetDimension() const
Return the parametric dimension of this cell type (0, 1, 2, or 3).
std::unordered_map< vtkStringToken, std::unordered_map< vtkStringToken, std::unordered_map< vtkStringToken, std::unordered_map< int, std::unordered_map< vtkStringToken, vtkDGOperatorEntry >>>>> OperatorMap
A map holding operators that evaluate DG cells.
std::vector< Source > SideSpecs
The connectivity array(s) specifying sides.
std::vector< Source > & GetSideSpecs()
Provide access to the (cellId,sideId)-arrays used to define side-cells of this type.
vtkDataArray * Connectivity
An array holding cell connectivity or (cell-id, side-id) tuples.
std::unordered_map< vtkStringToken, std::unordered_set< vtkStringToken >> TagSet
A map of tag names (such as the cell's type-name) to values of the tag accepted or provided for that ...
void PrintValues(ostream &os)
Print the array values to an ostream object.
A volumetric shape whose quadrilateral base attaches to a vertex.
std::size_t GetNumberOfCellSources() const
Python-accessible method to identify number of cell sources.
A four-cornered volume bounded by 4 triangular shapes.
A volumetric, triangular prism.
Visualization data composed of cells of arbitrary type.
a simple class to control print indentation
A function defined over the physical domain of a vtkCellGrid.
Source CellSpec
The connectivity array specifying cells.
abstract superclass for arrays of numeric data
Base class for a discontinuous Galerkin cells of all shapes.
virtual int GetNumberOfCorners() const
Return the number of corner points for this cell type.
represent and manipulate attribute data in a dataset
Represent a string by its integer hash.
#define VTK_SIZEHINT(...)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Source & GetCellSpec()
Provide access to the connectivity array used to define cells of this type.
A three-cornered face bounded by 3 edges.
#define vtkInheritanceHierarchyOverrideMacro(thisClass)
Use these macros to add an "InheritanceHierarchy()" method to a VTK class.
A record for a basis in a function space that is specific to one cell shape.
A four-cornered face bounded by 4 edges.
An eight-cornered volume; a quadrilateral prism.
bool IsInside(const vtkVector3d &rst, double tolerance=1e-6) const
Return true if rst lies inside the reference cell (within tolerance).
bool GetShape(Ioss::Region *region, const Ioss::GroupingEntity *group_entity, vtkCellAttribute::CellTypeInfo &cellShapeInfo, int timestep, vtkDGCell *meta, vtkCellGrid *grid=nullptr, vtkIOSSUtilities::Cache *cache=nullptr)
Fetch the nodal coordinates for group_entity and create the cell_grid's shape attribute.
friend ostream & operator<<(ostream &os, const Source &source)
Records describing the source arrays for cells or cell-sides.
Shape
All possible shapes for DG cells.
static int GetShapeCornerCount(Shape shape)
A curve connecting two vertices.
static int GetShapeDimension(Shape shape)