adding topology types to explicit cell set connectivity array accessors.

This commit is contained in:
Jeremy Meredith 2015-09-02 12:26:37 -04:00
parent d1492cca24
commit 8544fb8ca4
4 changed files with 38 additions and 15 deletions

@ -280,7 +280,9 @@ public:
vtkm::TopologyElementTagPoint)
{
if (this->CellToPoint.ElementsValid)
{
return;
}
std::multimap<vtkm::Id,vtkm::Id> cells_of_nodes;
@ -348,22 +350,36 @@ public:
this->CellToPoint.PrintSummary(out);
}
template<typename FromTopology, typename ToTopology>
VTKM_CONT_EXPORT
const vtkm::cont::ArrayHandle<vtkm::Id, ShapeStorageTag> &
GetShapesArray() const { return this->PointToCell.Shapes; }
GetShapesArray(FromTopology,ToTopology) const
{
return this->GetConnectivity(FromTopology(), ToTopology()).Shapes;
}
template<typename FromTopology, typename ToTopology>
VTKM_CONT_EXPORT
const vtkm::cont::ArrayHandle<vtkm::Id, NumIndicesStorageTag> &
GetNumIndicesArray() const { return this->PointToCell.NumIndices; }
GetNumIndicesArray(FromTopology,ToTopology) const
{
return this->GetConnectivity(FromTopology(), ToTopology()).NumIndices;
}
template<typename FromTopology, typename ToTopology>
VTKM_CONT_EXPORT
const vtkm::cont::ArrayHandle<vtkm::Id, ConnectivityStorageTag> &
GetConnectivityArray() const { return this->PointToCell.Connectivity; }
GetConnectivityArray(FromTopology,ToTopology) const
{
return this->GetConnectivity(FromTopology(), ToTopology()).Connectivity;
}
template<typename FromTopology, typename ToTopology>
VTKM_CONT_EXPORT
const vtkm::cont::ArrayHandle<vtkm::Id> &
GetIndexOffsetArray() const {
return this->PointToCell.IndexOffsets;
GetIndexOffsetArray(FromTopology,ToTopology) const
{
return this->GetConnectivity(FromTopology(), ToTopology()).IndexOffsets;
}
private:

@ -144,7 +144,9 @@ void TestClippingExplicit()
vtkm::Float32 expectedScalars[] = { 1, 2, 1, 0, 0.5, 0.5, 0.5 };
VTKM_TEST_ASSERT(
TestArrayHandle(outputCellSet.GetConnectivityArray(), expectedConnectivity,
TestArrayHandle(outputCellSet.GetConnectivityArray(
vtkm::TopologyElementTagPoint(),vtkm::TopologyElementTagCell()),
expectedConnectivity,
connectivitySize),
"Got incorrect conectivity");
@ -189,7 +191,9 @@ void TestClippingStrucutred()
vtkm::Float32 expectedScalars[] = { 1, 1, 1, 1, 0, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5 };
VTKM_TEST_ASSERT(
TestArrayHandle(outputCellSet.GetConnectivityArray(), expectedConnectivity,
TestArrayHandle(outputCellSet.GetConnectivityArray(
vtkm::TopologyElementTagPoint(),vtkm::TopologyElementTagCell()),
expectedConnectivity,
connectivitySize),
"Got incorrect conectivity");

@ -32,9 +32,12 @@ vtkm::cont::DataSet RunExternalFaces(vtkm::cont::DataSet &ds)
vtkm::cont::CellSetExplicit<> &cellset =
ds.GetCellSet(0).CastTo<vtkm::cont::CellSetExplicit<> >();
vtkm::cont::ArrayHandle<vtkm::Id> shapes = cellset.GetShapesArray();
vtkm::cont::ArrayHandle<vtkm::Id> numIndices = cellset.GetNumIndicesArray();
vtkm::cont::ArrayHandle<vtkm::Id> conn = cellset.GetConnectivityArray();
vtkm::cont::ArrayHandle<vtkm::Id> shapes = cellset.GetShapesArray(
vtkm::TopologyElementTagPoint(),vtkm::TopologyElementTagCell());
vtkm::cont::ArrayHandle<vtkm::Id> numIndices = cellset.GetNumIndicesArray(
vtkm::TopologyElementTagPoint(),vtkm::TopologyElementTagCell());
vtkm::cont::ArrayHandle<vtkm::Id> conn = cellset.GetConnectivityArray(
vtkm::TopologyElementTagPoint(),vtkm::TopologyElementTagCell());
vtkm::cont::ArrayHandle<vtkm::Id> output_shapes;
vtkm::cont::ArrayHandle<vtkm::Id> output_numIndices;

@ -61,8 +61,8 @@ vtkm::cont::DataSet RunVertexClustering(vtkm::cont::DataSet &dataSet,
dataSet.GetCellSet(0).CastTo<vtkm::cont::CellSetExplicit<> >();
vtkm::cont::ArrayHandle<PointType> pointArray = dataSet.GetCoordinateSystem("coordinates").GetData().CastToArrayHandle<PointType, VTKM_DEFAULT_STORAGE_TAG>();
vtkm::cont::ArrayHandle<vtkm::Id> pointIdArray = cellSet.GetConnectivityArray();
vtkm::cont::ArrayHandle<vtkm::Id> indexOffsetArray = cellSet.GetIndexOffsetArray();
vtkm::cont::ArrayHandle<vtkm::Id> pointIdArray = cellSet.GetConnectivityArray(vtkm::TopologyElementTagPoint(),vtkm::TopologyElementTagCell());
vtkm::cont::ArrayHandle<vtkm::Id> indexOffsetArray = cellSet.GetIndexOffsetArray(vtkm::TopologyElementTagPoint(),vtkm::TopologyElementTagCell());
vtkm::cont::ArrayHandle<PointType> output_pointArray ;
vtkm::cont::ArrayHandle<vtkm::Id3> output_pointId3Array ;
@ -141,11 +141,11 @@ void TestVertexClustering()
vtkm::cont::CellSetExplicit<> &cellSet =
outDataSet.GetCellSet(0).CastTo<vtkm::cont::CellSetExplicit<> >();
VTKM_TEST_ASSERT(
cellSet.GetConnectivityArray().GetNumberOfValues() == output_pointIds,
cellSet.GetConnectivityArray(vtkm::TopologyElementTagPoint(),vtkm::TopologyElementTagCell()).GetNumberOfValues() == output_pointIds,
"Number of connectivity array elements mismatch");
for (vtkm::Id i=0; i<cellSet.GetConnectivityArray().GetNumberOfValues(); i++)
for (vtkm::Id i=0; i<cellSet.GetConnectivityArray(vtkm::TopologyElementTagPoint(),vtkm::TopologyElementTagCell()).GetNumberOfValues(); i++)
{
vtkm::Id id1 = cellSet.GetConnectivityArray().GetPortalConstControl().Get(i) ;
vtkm::Id id1 = cellSet.GetConnectivityArray(vtkm::TopologyElementTagPoint(),vtkm::TopologyElementTagCell()).GetPortalConstControl().Get(i) ;
vtkm::Id id2 = output_pointId[i] ;
std::cout << "pointid: " << id1 << " " << id2 << std::endl;
//VTKM_TEST_ASSERT( id1 == id2, "Connectivity Array mismatch" ) ;