mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-19 18:45:43 +00:00
Merge topic 'ExternalFacesFilter-MappPointFields'
269691e7 Map point fields in ExternalFaces filter Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Robert Maynard <robert.maynard@kitware.com> Merge-request: !716
This commit is contained in:
commit
e28037876d
@ -63,13 +63,18 @@ template<typename T,
|
||||
typename DerivedPolicy,
|
||||
typename DeviceAdapter>
|
||||
inline VTKM_CONT
|
||||
bool ExternalFaces::DoMapField(vtkm::filter::ResultDataSet&,
|
||||
const vtkm::cont::ArrayHandle<T, StorageType>&,
|
||||
const vtkm::filter::FieldMetadata&,
|
||||
bool ExternalFaces::DoMapField(vtkm::filter::ResultDataSet &result,
|
||||
const vtkm::cont::ArrayHandle<T, StorageType> &input,
|
||||
const vtkm::filter::FieldMetadata &fieldMeta,
|
||||
const vtkm::filter::PolicyBase<DerivedPolicy>&,
|
||||
const DeviceAdapter&)
|
||||
{
|
||||
return false;
|
||||
if (fieldMeta.IsPointField())
|
||||
{
|
||||
result.GetDataSet().AddField(fieldMeta.AsField(input));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -26,68 +26,36 @@
|
||||
using vtkm::cont::testing::MakeTestDataSet;
|
||||
|
||||
namespace {
|
||||
|
||||
void TestExternalFacesExplicitGrid()
|
||||
{
|
||||
vtkm::cont::DataSet ds;
|
||||
|
||||
const int nVerts = 8; //A cube that is tetrahedralized
|
||||
typedef vtkm::Vec<vtkm::Float32,3> CoordType;
|
||||
CoordType coordinates[nVerts] = {
|
||||
CoordType(0, 0, 0),
|
||||
CoordType(1, 0, 0),
|
||||
CoordType(1, 1, 0),
|
||||
CoordType(0, 1, 0),
|
||||
CoordType(0, 0, 1),
|
||||
CoordType(1, 0, 1),
|
||||
CoordType(1, 1, 1),
|
||||
CoordType(0, 1, 1)
|
||||
};
|
||||
|
||||
ds.AddCoordinateSystem(
|
||||
vtkm::cont::CoordinateSystem("coordinates", coordinates, nVerts));
|
||||
|
||||
//Construct the VTK-m shapes and numIndices connectivity arrays
|
||||
const int nCells = 6; //The tetrahedrons of the cube
|
||||
vtkm::IdComponent cellVerts[nCells][4] = {
|
||||
{4,7,6,3}, {4,6,3,2}, {4,0,3,2},
|
||||
{4,6,5,2}, {4,5,0,2}, {1,0,5,2}
|
||||
};
|
||||
vtkm::cont::CellSetExplicit<> cellSet("cells");
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::UInt8> shapes;
|
||||
vtkm::cont::ArrayHandle<vtkm::IdComponent> numIndices;
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> conn;
|
||||
shapes.Allocate(static_cast<vtkm::Id>(nCells));
|
||||
numIndices.Allocate(static_cast<vtkm::Id>(nCells));
|
||||
conn.Allocate(static_cast<vtkm::Id>(4 * nCells));
|
||||
|
||||
int index = 0;
|
||||
for(int j = 0; j < nCells; j++)
|
||||
{
|
||||
shapes.GetPortalControl().Set(j, static_cast<vtkm::UInt8>(vtkm::CELL_SHAPE_TETRA));
|
||||
numIndices.GetPortalControl().Set(j, 4);
|
||||
for(int k = 0; k < 4; k++)
|
||||
conn.GetPortalControl().Set(index++, cellVerts[j][k]);
|
||||
}
|
||||
|
||||
cellSet.Fill(nVerts, shapes, numIndices, conn);
|
||||
|
||||
//Add the VTK-m cell set
|
||||
ds.AddCellSet(cellSet);
|
||||
vtkm::cont::DataSet ds = MakeTestDataSet().Make3DExplicitDataSet5();
|
||||
|
||||
//Run the External Faces filter
|
||||
vtkm::filter::ExternalFaces externalFaces;
|
||||
vtkm::filter::ResultDataSet result = externalFaces.Execute(ds);
|
||||
|
||||
//Validate the number of external faces (output) returned by the worklet
|
||||
VTKM_TEST_ASSERT(result.IsValid(), "Results should be valid");
|
||||
|
||||
vtkm::cont::CellSetExplicit<> &new_cellSet =
|
||||
result.GetDataSet().GetCellSet(0).Cast<vtkm::cont::CellSetExplicit<> >();
|
||||
// map fields
|
||||
for (vtkm::IdComponent i = 0; i < ds.GetNumberOfFields(); ++i)
|
||||
{
|
||||
externalFaces.MapFieldOntoOutput(result, ds.GetField(i));
|
||||
}
|
||||
|
||||
vtkm::cont::DataSet resultds = result.GetDataSet();
|
||||
|
||||
// verify cellset
|
||||
vtkm::cont::CellSetExplicit<> &new_cellSet =
|
||||
resultds.GetCellSet(0).Cast<vtkm::cont::CellSetExplicit<> >();
|
||||
const vtkm::Id numExtFaces_out = new_cellSet.GetNumberOfCells();
|
||||
const vtkm::Id numExtFaces_actual = 12;
|
||||
VTKM_TEST_ASSERT(numExtFaces_out == numExtFaces_actual, "Number of External Faces mismatch");
|
||||
VTKM_TEST_ASSERT(numExtFaces_out == numExtFaces_actual,
|
||||
"Number of External Faces mismatch");
|
||||
|
||||
// verify fields
|
||||
VTKM_TEST_ASSERT(resultds.HasField("pointvar"),
|
||||
"Point field not mapped succesfully");
|
||||
}
|
||||
|
||||
void TestExternalFacesFilter()
|
||||
|
Loading…
Reference in New Issue
Block a user