Merge branch 'shape-clip-merge' into 'master'
Update clip and external faces with shape changes See merge request !151
This commit is contained in:
commit
3eff4022c4
@ -51,6 +51,11 @@ public:
|
||||
<< error.GetMessage() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
catch (std::exception error)
|
||||
{
|
||||
std::cout << "***** STL exception throw." << std::endl
|
||||
<< error.what() << std::endl;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
std::cout << "***** Unidentified exception thrown." << std::endl;
|
||||
|
@ -31,6 +31,7 @@ VTKM_THIRDPARTY_PRE_INCLUDE
|
||||
#include <boost/static_assert.hpp>
|
||||
VTKM_THIRDPARTY_POST_INCLUDE
|
||||
|
||||
#include <exception>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
@ -253,6 +254,11 @@ public:
|
||||
<< error.GetMessage() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
catch (std::exception error)
|
||||
{
|
||||
std::cout << "***** STL exception throw." << std::endl
|
||||
<< error.what() << std::endl;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
std::cout << "***** Unidentified exception thrown." << std::endl;
|
||||
|
@ -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