mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-19 10:35:42 +00:00
Update clip and external faces code to new cell shapes
The names of the cell shapes and header files changed superficially. The check in missed the clip and external faces. Update that code. There are also some less superficial changes that allow you to manage cell shapes with tags. It might be worthwhile to update this code to use that new infrastructure.
This commit is contained in:
parent
688eafe5f8
commit
89c72c9975
@ -253,11 +253,13 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
template<typename ScalarsVecType>
|
||||
template<typename ScalarsVecType, typename CellShapeTag>
|
||||
VTKM_EXEC_EXPORT
|
||||
void operator()(const ScalarsVecType &scalars,
|
||||
vtkm::Id shape, vtkm::Id count,
|
||||
vtkm::Id& clipTableIdx, ClipStats& stats) const
|
||||
CellShapeTag shape,
|
||||
vtkm::Id count,
|
||||
vtkm::Id& clipTableIdx,
|
||||
ClipStats& stats) const
|
||||
{
|
||||
const vtkm::Id mask[] = { 1, 2, 4, 8, 16, 32, 64, 128 };
|
||||
|
||||
@ -268,7 +270,7 @@ public:
|
||||
mask[i] : 0;
|
||||
}
|
||||
|
||||
vtkm::Id idx = this->ClipTables.GetCaseIndex(shape, caseId);
|
||||
vtkm::Id idx = this->ClipTables.GetCaseIndex(shape.Id, caseId);
|
||||
clipTableIdx = idx;
|
||||
|
||||
vtkm::Id numberOfCells = this->ClipTables.ValueAt(idx++);
|
||||
@ -315,10 +317,13 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
template<typename ScalarsVecType, typename IndicesVecType, typename Storage>
|
||||
template<typename CellShapeTag,
|
||||
typename ScalarsVecType,
|
||||
typename IndicesVecType,
|
||||
typename Storage>
|
||||
VTKM_EXEC_EXPORT
|
||||
void operator()(
|
||||
vtkm::Id shape,
|
||||
CellShapeTag shape,
|
||||
const ScalarsVecType &scalars,
|
||||
const IndicesVecType &indices,
|
||||
vtkm::Id clipTableIdx,
|
||||
@ -358,7 +363,7 @@ public:
|
||||
else // edge, new point to be generated by cutting the egde
|
||||
{
|
||||
vtkm::Vec<vtkm::IdComponent, 2> edge =
|
||||
this->ClipTables.GetEdge(shape, entry);
|
||||
this->ClipTables.GetEdge(shape.Id, entry);
|
||||
|
||||
EdgeInterpolation ei;
|
||||
ei.Vertex1 = indices[edge[0]];
|
||||
|
@ -20,8 +20,8 @@
|
||||
#ifndef vtk_m_worklet_ExternalFaces_h
|
||||
#define vtk_m_worklet_ExternalFaces_h
|
||||
|
||||
#include <vtkm/CellShape.h>
|
||||
#include <vtkm/Math.h>
|
||||
#include <vtkm/CellType.h>
|
||||
|
||||
#include <vtkm/cont/ArrayHandle.h>
|
||||
#include <vtkm/cont/ArrayHandleConstant.h>
|
||||
@ -155,10 +155,10 @@ struct ExternalFaces
|
||||
VTKM_EXEC_EXPORT
|
||||
T operator()(const T &cellType) const
|
||||
{
|
||||
if (cellType == vtkm::VTKM_TETRA) return 4;
|
||||
else if (cellType == vtkm::VTKM_PYRAMID) return 5;
|
||||
else if (cellType == vtkm::VTKM_WEDGE) return 5;
|
||||
else if (cellType == vtkm::VTKM_HEXAHEDRON) return 6;
|
||||
if (cellType == vtkm::CELL_SHAPE_TETRA) return 4;
|
||||
else if (cellType == vtkm::CELL_SHAPE_PYRAMID) return 5;
|
||||
else if (cellType == vtkm::CELL_SHAPE_WEDGE) return 5;
|
||||
else if (cellType == vtkm::CELL_SHAPE_HEXAHEDRON) return 6;
|
||||
else return -1;
|
||||
}
|
||||
};
|
||||
@ -176,16 +176,19 @@ struct ExternalFaces
|
||||
typedef _2 InputDomain;
|
||||
|
||||
VTKM_CONT_EXPORT
|
||||
GetFace() { };
|
||||
GetFace() { }
|
||||
|
||||
template<typename T, typename FaceValueVecType, typename CellNodeVecType>
|
||||
template<typename T,
|
||||
typename FaceValueVecType,
|
||||
typename CellShapeTag,
|
||||
typename CellNodeVecType>
|
||||
VTKM_EXEC_EXPORT
|
||||
void operator()(const T &cellFaceId,
|
||||
FaceValueVecType &faceVertices,
|
||||
const vtkm::Id &cellType,
|
||||
CellShapeTag shape,
|
||||
const CellNodeVecType &cellNodeIds) const
|
||||
{
|
||||
if (cellType == vtkm::VTKM_TETRA)
|
||||
if (shape.Id == vtkm::CELL_SHAPE_TETRA)
|
||||
{
|
||||
vtkm::IdComponent faceIdTable[12] = {0,1,2,0,1,3,0,2,3,1,2,3};
|
||||
|
||||
@ -400,7 +403,7 @@ public:
|
||||
output_conn.Allocate(3 * output_numExtFaces);
|
||||
for(int face = 0; face < output_numExtFaces; face++)
|
||||
{
|
||||
output_shapes.GetPortalControl().Set(face, vtkm::VTKM_TRIANGLE);
|
||||
output_shapes.GetPortalControl().Set(face, vtkm::CELL_SHAPE_TRIANGLE);
|
||||
output_numIndices.GetPortalControl().Set(face, static_cast<vtkm::Id>(3));
|
||||
output_conn.GetPortalControl().Set(3*face, extFacePortal.Get(face)[0]);
|
||||
output_conn.GetPortalControl().Set(3*face + 1, extFacePortal.Get(face)[1]);
|
||||
|
@ -20,7 +20,7 @@
|
||||
#ifndef vtk_m_ClipTables_h
|
||||
#define vtk_m_ClipTables_h
|
||||
|
||||
#include <vtkm/CellType.h>
|
||||
#include <vtkm/CellShape.h>
|
||||
#include <vtkm/Types.h>
|
||||
|
||||
#include <vtkm/cont/ArrayHandle.h>
|
||||
@ -34,15 +34,15 @@ namespace internal {
|
||||
// values < 100 represent edges where the corresponding vertex lies
|
||||
// values >= 100 reresent existing vertices of the input cell (vertex = value - 100)
|
||||
static vtkm::Id ClipTablesData[] = {
|
||||
// VTKM_VERTEX
|
||||
// vtkm::CELL_SHAPE_VERTEX
|
||||
0, -1, -1, -1, // 0
|
||||
1, 1, 1, 100, // 1
|
||||
// VTKM_LINE
|
||||
// vtkm::CELL_SHAPE_LINE
|
||||
0, -1, -1, -1, -1, // 0
|
||||
1, 3, 2, 100, 1, // 1
|
||||
1, 3, 2, 0, 101, // 2
|
||||
1, 3, 2, 100, 101, // 3
|
||||
// VTKM_TRIANGLE
|
||||
// vtkm::CELL_SHAPE_TRIANGLE
|
||||
0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0
|
||||
1, 5, 3, 0, 2, 100, 0, -1, -1, -1, -1, // 1
|
||||
1, 5, 3, 1, 0, 101, 0, -1, -1, -1, -1, // 2
|
||||
@ -51,24 +51,7 @@ static vtkm::Id ClipTablesData[] = {
|
||||
2, 5, 3, 0, 1, 102, 5, 3, 102, 100, 0, // 5
|
||||
2, 5, 3, 0, 101, 2, 5, 3, 2, 101, 102, // 6
|
||||
1, 5, 3, 100, 101, 102, 0, -1, -1, -1, -1, // 7
|
||||
// VTKM_PIXEL
|
||||
0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0
|
||||
1, 5, 3, 100, 0, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 1
|
||||
1, 5, 3, 101, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 2
|
||||
1, 8, 4, 100, 101, 1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 3
|
||||
1, 5, 3, 102, 3, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 4
|
||||
1, 8, 4, 100, 0, 2, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 5
|
||||
3, 5, 3, 101, 1, 0, 5, 3, 102, 3, 2, 8, 4, 0, 1, 2, 3, // 6
|
||||
3, 5, 3, 100, 101, 1, 5, 3, 100, 1, 2, 5, 3, 100, 2, 102, -1, // 7
|
||||
1, 5, 3, 103, 2, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 8
|
||||
3, 5, 3, 100, 0, 3, 5, 3, 103, 2, 1, 8, 4, 0, 1, 2, 3, // 9
|
||||
1, 8, 4, 101, 103, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 10
|
||||
3, 5, 3, 100, 101, 3, 5, 3, 101, 2, 3, 5, 3, 101, 103, 2, -1, // 11
|
||||
1, 8, 4, 103, 102, 3, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 12
|
||||
3, 5, 3, 100, 0, 102, 5, 3, 0, 1, 102, 5, 3, 1, 103, 102, -1, // 13
|
||||
3, 5, 3, 0, 101, 103, 5, 3, 0, 103, 3, 5, 3, 103, 102, 3, -1, // 14
|
||||
1, 8, 4, 100, 101, 103, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 15
|
||||
// VTKM_QUAD
|
||||
// vtkm::CELL_SHAPE_QUAD
|
||||
0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0
|
||||
1, 5, 3, 100, 0, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 1
|
||||
1, 5, 3, 101, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 2
|
||||
@ -85,7 +68,7 @@ static vtkm::Id ClipTablesData[] = {
|
||||
3, 5, 3, 100, 0, 103, 5, 3, 0, 1, 103, 5, 3, 1, 102, 103, -1, // 13
|
||||
3, 5, 3, 0, 101, 102, 5, 3, 0, 102, 3, 5, 3, 102, 103, 3, -1, // 14
|
||||
1, 9, 4, 100, 101, 102, 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 15
|
||||
// VTKM_TETRA
|
||||
// vtkm::CELL_SHAPE_TETRA
|
||||
0, -1, -1, -1, -1, -1, -1, -1, -1, // 0
|
||||
1, 10, 4, 0, 3, 2, 100, -1, -1, // 1
|
||||
1, 10, 4, 0, 1, 4, 101, -1, -1, // 2
|
||||
@ -113,7 +96,7 @@ static vtkm::IdComponent CellEdges[] = {
|
||||
0, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 1, 1, 3, 2, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 1, 1, 2, 3, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 1, 1, 2, 2, 0, 0, 3, 1, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@ -127,40 +110,40 @@ enum {
|
||||
EDGE_TABLES_SIZE = sizeof(CellEdges)/sizeof(vtkm::IdComponent)
|
||||
};
|
||||
|
||||
static vtkm::Id ShapeToTableWidthMap[VTKM_NUMBER_OF_CELL_TYPES] = {
|
||||
-1, // VTKM_EMPTY_CELL
|
||||
4, // VTKM_VERTEX
|
||||
-1, // VTKM_POLY_VERTEX
|
||||
5, // VTKM_LINE
|
||||
-1, // VTKM_POLY_LINE
|
||||
11, // VTKM_TRIANGLE
|
||||
-1, // VTKM_TRIANGLE_STRIP
|
||||
-1, // VTKM_POLYGON
|
||||
17, // VTKM_PIXEL
|
||||
17, // VTKM_QUAD
|
||||
9, // VTKM_TETRA
|
||||
-1, // VTKM_VOXEL
|
||||
-1, // VTKM_HEXAHEDRON
|
||||
-1, // VTKM_WEDGE
|
||||
-1 // VTKM_PYRAMID
|
||||
static vtkm::Id ShapeToTableWidthMap[vtkm::NUMBER_OF_CELL_SHAPES] = {
|
||||
-1, // vtkm::CELL_SHAPE_EMPTY_CELL
|
||||
4, // vtkm::CELL_SHAPE_VERTEX
|
||||
-1, // vtkm::CELL_SHAPE_POLY_VERTEX
|
||||
5, // vtkm::CELL_SHAPE_LINE
|
||||
-1, // vtkm::CELL_SHAPE_POLY_LINE
|
||||
11, // vtkm::CELL_SHAPE_TRIANGLE
|
||||
-1, // vtkm::CELL_SHAPE_TRIANGLE_STRIP
|
||||
-1, // vtkm::CELL_SHAPE_POLYGON
|
||||
-1, // vtkm::CELL_SHAPE_PIXEL
|
||||
17, // vtkm::CELL_SHAPE_QUAD
|
||||
9, // vtkm::CELL_SHAPE_TETRA
|
||||
-1, // vtkm::CELL_SHAPE_VOXEL
|
||||
-1, // vtkm::CELL_SHAPE_HEXAHEDRON
|
||||
-1, // vtkm::CELL_SHAPE_WEDGE
|
||||
-1 // vtkm::CELL_SHAPE_PYRAMID
|
||||
};
|
||||
|
||||
static vtkm::Id ShapeToTableIndexMap[VTKM_NUMBER_OF_CELL_TYPES] = {
|
||||
-1, // VTKM_EMPTY_CELL
|
||||
0, // VTKM_VERTEX
|
||||
-1, // VTKM_POLY_VERTEX
|
||||
8, // VTKM_LINE
|
||||
-1, // VTKM_POLY_LINE
|
||||
28, // VTKM_TRIANGLE
|
||||
-1, // VTKM_TRIANGLE_STRIP
|
||||
-1, // VTKM_POLYGON
|
||||
116, // VTKM_PIXEL
|
||||
388, // VTKM_QUAD
|
||||
660, // VTKM_TETRA
|
||||
-1, // VTKM_VOXEL
|
||||
-1, // VTKM_HEXAHEDRON
|
||||
-1, // VTKM_WEDGE
|
||||
-1 // VTKM_PYRAMID
|
||||
static vtkm::Id ShapeToTableIndexMap[vtkm::NUMBER_OF_CELL_SHAPES] = {
|
||||
-1, // vtkm::CELL_SHAPE_EMPTY_CELL
|
||||
0, // vtkm::CELL_SHAPE_VERTEX
|
||||
-1, // vtkm::CELL_SHAPE_POLY_VERTEX
|
||||
8, // vtkm::CELL_SHAPE_LINE
|
||||
-1, // vtkm::CELL_SHAPE_POLY_LINE
|
||||
28, // vtkm::CELL_SHAPE_TRIANGLE
|
||||
-1, // vtkm::CELL_SHAPE_TRIANGLE_STRIP
|
||||
-1, // vtkm::CELL_SHAPE_POLYGON
|
||||
-1, // vtkm::CELL_SHAPE_PIXEL
|
||||
116, // vtkm::CELL_SHAPE_QUAD
|
||||
388, // vtkm::CELL_SHAPE_TETRA
|
||||
-1, // vtkm::CELL_SHAPE_VOXEL
|
||||
-1, // vtkm::CELL_SHAPE_HEXAHEDRON
|
||||
-1, // vtkm::CELL_SHAPE_WEDGE
|
||||
-1 // vtkm::CELL_SHAPE_PYRAMID
|
||||
};
|
||||
|
||||
|
||||
@ -213,9 +196,9 @@ public:
|
||||
ClipTables()
|
||||
: ClipTablesArray(vtkm::cont::make_ArrayHandle(ClipTablesData, CLIP_TABLES_SIZE)),
|
||||
ShapeToTableWidthMapArray(vtkm::cont::make_ArrayHandle(
|
||||
ShapeToTableWidthMap, VTKM_NUMBER_OF_CELL_TYPES)),
|
||||
ShapeToTableWidthMap, vtkm::NUMBER_OF_CELL_SHAPES)),
|
||||
ShapeToTableIndexMapArray(vtkm::cont::make_ArrayHandle(
|
||||
ShapeToTableIndexMap, VTKM_NUMBER_OF_CELL_TYPES)),
|
||||
ShapeToTableIndexMap, vtkm::NUMBER_OF_CELL_SHAPES)),
|
||||
EdgeTablesArray(vtkm::cont::make_ArrayHandle(CellEdges, EDGE_TABLES_SIZE))
|
||||
{
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ vtkm::cont::DataSet MakeTestDatasetExplicit()
|
||||
Coord3D(0.0f, 1.0f, 0.0f),
|
||||
};
|
||||
static vtkm::Float32 values[] = { 1.0, 2.0, 1.0, 0.0 };
|
||||
static vtkm::Id shapes[] = { vtkm::VTKM_TRIANGLE, vtkm::VTKM_TRIANGLE };
|
||||
static vtkm::Id shapes[] = { vtkm::CELL_SHAPE_TRIANGLE, vtkm::CELL_SHAPE_TRIANGLE };
|
||||
static vtkm::Id numInds[] = { 3, 3 };
|
||||
static vtkm::Id connectivity[] = { 0, 1, 3, 3, 1, 2 };
|
||||
|
||||
|
@ -102,7 +102,7 @@ void TestExternalFaces()
|
||||
int index = 0;
|
||||
for(int j = 0; j < nCells; j++)
|
||||
{
|
||||
shapes.GetPortalControl().Set(j, static_cast<vtkm::Id>(vtkm::VTKM_TETRA));
|
||||
shapes.GetPortalControl().Set(j, static_cast<vtkm::Id>(vtkm::CELL_SHAPE_TETRA));
|
||||
numIndices.GetPortalControl().Set(j, 4);
|
||||
for(int k = 0; k < 4; k++)
|
||||
conn.GetPortalControl().Set(index++, static_cast<vtkm::Id>(cellVerts[j][k]));
|
||||
|
Loading…
Reference in New Issue
Block a user