From 8999567dd2e5e9be3d5e1c4c9703287bebb10611 Mon Sep 17 00:00:00 2001 From: Jeremy Meredith Date: Fri, 28 Aug 2015 16:48:24 -0400 Subject: [PATCH 1/2] fixing 2d structured connectivity calc for logical point indices. --- vtkm/cont/testing/UnitTestDataSetRegular.cxx | 4 ++-- vtkm/internal/ConnectivityStructuredInternals.h | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/vtkm/cont/testing/UnitTestDataSetRegular.cxx b/vtkm/cont/testing/UnitTestDataSetRegular.cxx index 9e3180e38..934488550 100644 --- a/vtkm/cont/testing/UnitTestDataSetRegular.cxx +++ b/vtkm/cont/testing/UnitTestDataSetRegular.cxx @@ -136,10 +136,10 @@ TwoDimRegularTest() vtkm::Id expectedCellIds[6][4] = {{0,-1,-1,-1}, {0,1,-1,-1}, + {1,-1,-1,-1}, {0,-1,-1,-1}, {0,1,-1,-1}, - {2,-1,-1,-1}, - {2,3,-1,-1}}; + {1,-1,-1,-1}}; for (vtkm::Id pointIndex = 0; pointIndex < 6; pointIndex++) { diff --git a/vtkm/internal/ConnectivityStructuredInternals.h b/vtkm/internal/ConnectivityStructuredInternals.h index 5c04e984f..d51d0ccaf 100644 --- a/vtkm/internal/ConnectivityStructuredInternals.h +++ b/vtkm/internal/ConnectivityStructuredInternals.h @@ -256,9 +256,9 @@ private: VTKM_EXEC_CONT_EXPORT void CalculateLogicalPointIndices(vtkm::Id index, vtkm::Id &i, vtkm::Id &j) const { - vtkm::Id2 cellDimensions = this->GetCellDimensions(); - i = index % cellDimensions[0]; - j = index / cellDimensions[0]; + vtkm::Id2 pointDimensions = this->GetPointDimensions(); + i = index % pointDimensions[0]; + j = index / pointDimensions[0]; } VTKM_EXEC_CONT_EXPORT vtkm::Id CalculateCellIndex(vtkm::Id i, vtkm::Id j) const From 4a6c9d540f5dcdb84ddf2aae8287f564afd48e10 Mon Sep 17 00:00:00 2001 From: Jeremy Meredith Date: Tue, 1 Sep 2015 12:33:26 -0400 Subject: [PATCH 2/2] add more fixes to structured indexing --- .../ConnectivityStructuredInternals.h | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/vtkm/internal/ConnectivityStructuredInternals.h b/vtkm/internal/ConnectivityStructuredInternals.h index d51d0ccaf..6f38dc094 100644 --- a/vtkm/internal/ConnectivityStructuredInternals.h +++ b/vtkm/internal/ConnectivityStructuredInternals.h @@ -190,7 +190,7 @@ public: vtkm::Vec GetPointsOfCell(vtkm::Id index) const { vtkm::Id i, j; - this->CalculateLogicalPointIndices(index, i, j); + this->CalculateLogicalCellIndices(index, i, j); vtkm::Vec pointIds; pointIds[0] = j*this->PointDimensions[0] + i; @@ -261,6 +261,13 @@ private: j = index / pointDimensions[0]; } VTKM_EXEC_CONT_EXPORT + void CalculateLogicalCellIndices(vtkm::Id index, vtkm::Id &i, vtkm::Id &j) const + { + vtkm::Id2 cellDimensions = this->GetCellDimensions(); + i = index % cellDimensions[0]; + j = index / cellDimensions[0]; + } + VTKM_EXEC_CONT_EXPORT vtkm::Id CalculateCellIndex(vtkm::Id i, vtkm::Id j) const { vtkm::Id2 cellDimensions = this->GetCellDimensions(); @@ -327,13 +334,8 @@ public: VTKM_EXEC_CONT_EXPORT vtkm::Vec GetPointsOfCell(vtkm::Id index) const { - vtkm::Id3 cellDimensions = this->GetCellDimensions(); - - vtkm::Id cellDims01 = cellDimensions[0] * cellDimensions[1]; - vtkm::Id k = index / cellDims01; - vtkm::Id indexij = index % cellDims01; - vtkm::Id j = indexij / cellDimensions[0]; - vtkm::Id i = indexij % cellDimensions[0]; + vtkm::Id i, j, k; + this->CalculateLogicalCellIndices(index, i, j, k); vtkm::Vec pointIds; pointIds[0] = (k * this->PointDimensions[1] + j) * this->PointDimensions[0] + i; @@ -415,6 +417,17 @@ private: private: + VTKM_EXEC_CONT_EXPORT + void CalculateLogicalCellIndices(vtkm::Id index, vtkm::Id &i, vtkm::Id &j, vtkm::Id &k) const + { + vtkm::Id3 cellDimensions = this->GetCellDimensions(); + vtkm::Id cellDims01 = cellDimensions[0] * cellDimensions[1]; + k = index / cellDims01; + vtkm::Id indexij = index % cellDims01; + j = indexij / cellDimensions[0]; + i = indexij % cellDimensions[0]; + } + VTKM_EXEC_CONT_EXPORT void CalculateLogicalPointIndices(vtkm::Id index, vtkm::Id &i, vtkm::Id &j, vtkm::Id &k) const {