mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-20 02:55:47 +00:00
moving explicit data set creation to make test data set file.
This commit is contained in:
parent
4dd186eda6
commit
4e67adca8c
@ -35,12 +35,15 @@ public:
|
||||
|
||||
// 3D regular datasets.
|
||||
vtkm::cont::DataSet * Make3DRegularDataSet0();
|
||||
|
||||
// 3D explicit datasets.
|
||||
vtkm::cont::DataSet * Make3DExplicitDataSet0();
|
||||
};
|
||||
|
||||
|
||||
//Make a simple 2D, 2 cell regular dataset.
|
||||
|
||||
vtkm::cont::DataSet *
|
||||
inline vtkm::cont::DataSet *
|
||||
MakeTestDataSet::Make2DRegularDataSet0()
|
||||
{
|
||||
vtkm::cont::DataSet *ds = new vtkm::cont::DataSet;
|
||||
@ -69,7 +72,7 @@ MakeTestDataSet::Make2DRegularDataSet0()
|
||||
return ds;
|
||||
}
|
||||
|
||||
vtkm::cont::DataSet *
|
||||
inline vtkm::cont::DataSet *
|
||||
MakeTestDataSet::Make3DRegularDataSet0()
|
||||
{
|
||||
vtkm::cont::DataSet *ds = new vtkm::cont::DataSet;
|
||||
@ -111,6 +114,80 @@ MakeTestDataSet::Make3DRegularDataSet0()
|
||||
return ds;
|
||||
}
|
||||
|
||||
inline vtkm::cont::DataSet *
|
||||
MakeTestDataSet::Make3DExplicitDataSet0()
|
||||
{
|
||||
vtkm::cont::DataSet *ds = new vtkm::cont::DataSet;
|
||||
|
||||
ds->x_idx = 0;
|
||||
ds->y_idx = 1;
|
||||
ds->z_idx = 2;
|
||||
|
||||
const int nVerts = 5;
|
||||
vtkm::Float32 xVals[nVerts] = {0, 1, 1, 2, 2};
|
||||
vtkm::Float32 yVals[nVerts] = {0, 0, 1, 1, 2};
|
||||
vtkm::Float32 zVals[nVerts] = {0, 0, 0, 0, 0};
|
||||
vtkm::Float32 vars[nVerts] = {10.1, 20.1, 30.2, 40.2, 50.3};
|
||||
|
||||
|
||||
ds->AddFieldViaCopy(xVals, nVerts);
|
||||
ds->AddFieldViaCopy(yVals, nVerts);
|
||||
ds->AddFieldViaCopy(zVals, nVerts);
|
||||
|
||||
//Set node scalar
|
||||
ds->AddFieldViaCopy(vars, nVerts);
|
||||
|
||||
//Set cell scalar
|
||||
vtkm::Float32 cellvar[2] = {100.1, 100.2};
|
||||
ds->AddFieldViaCopy(cellvar, 2);
|
||||
|
||||
//Add connectivity
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> tmp2;
|
||||
std::vector<vtkm::Id> shapes;
|
||||
shapes.push_back(vtkm::VTKM_TRIANGLE);
|
||||
shapes.push_back(vtkm::VTKM_QUAD);
|
||||
|
||||
std::vector<vtkm::Id> numindices;
|
||||
numindices.push_back(3);
|
||||
numindices.push_back(4);
|
||||
|
||||
std::vector<vtkm::Id> conn;
|
||||
// First Cell: Triangle
|
||||
conn.push_back(0);
|
||||
conn.push_back(1);
|
||||
conn.push_back(2);
|
||||
// Second Cell: Quad
|
||||
conn.push_back(2);
|
||||
conn.push_back(1);
|
||||
conn.push_back(3);
|
||||
conn.push_back(4);
|
||||
|
||||
std::vector<vtkm::Id> map_cell_to_index;
|
||||
map_cell_to_index.push_back(0);
|
||||
map_cell_to_index.push_back(3);
|
||||
|
||||
vtkm::cont::CellSetExplicit *cs = new vtkm::cont::CellSetExplicit("cells",2);
|
||||
vtkm::cont::ExplicitConnectivity &ec = cs->nodesOfCellsConnectivity;
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> tmpShapes = vtkm::cont::make_ArrayHandle(shapes);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmpShapes, ec.Shapes);
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> tmpNumIndices = vtkm::cont::make_ArrayHandle(numindices);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmpNumIndices, ec.NumIndices);
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> tmpConnectivity = vtkm::cont::make_ArrayHandle(conn);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmpConnectivity, ec.Connectivity);
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> tmpMapCellToConnectivityIndex = vtkm::cont::make_ArrayHandle(map_cell_to_index);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmpMapCellToConnectivityIndex, ec.MapCellToConnectivityIndex);
|
||||
|
||||
//todo this need to be a reference/shared_ptr style class
|
||||
ds->AddCellSet(cs);
|
||||
|
||||
//Run a worklet to populate a cell centered field.
|
||||
//Here, we're filling it with test values.
|
||||
vtkm::Float32 outcellVals[2] = {-1.4, -1.7};
|
||||
ds->AddFieldViaCopy(outcellVals, 2);
|
||||
|
||||
return ds;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} // namespace vtkm::cont::testing
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include <vtkm/exec/arg/TopologyElementType.h>
|
||||
|
||||
#include <vtkm/cont/testing/Testing.h>
|
||||
#include <vtkm/cont/testing/MakeTestDataSet.h>
|
||||
|
||||
namespace test {
|
||||
|
||||
@ -72,88 +73,31 @@ void TestWorkletMapTopologyExplicit()
|
||||
std::cout << "Testing Topology Worklet ( Explicit ) on device adapter: "
|
||||
<< DeviceAdapterTraits::GetId() << std::endl;
|
||||
|
||||
vtkm::cont::DataSet ds;
|
||||
vtkm::cont::testing::MakeTestDataSet tds;
|
||||
vtkm::cont::DataSet *ds = tds.Make3DExplicitDataSet0();
|
||||
|
||||
ds.x_idx = 0;
|
||||
ds.y_idx = 1;
|
||||
ds.z_idx = 2;
|
||||
|
||||
const int nVerts = 5;
|
||||
vtkm::Float32 xVals[nVerts] = {0, 1, 1, 2, 2};
|
||||
vtkm::Float32 yVals[nVerts] = {0, 0, 1, 1, 2};
|
||||
vtkm::Float32 zVals[nVerts] = {0, 0, 0, 0, 0};
|
||||
vtkm::Float32 vars[nVerts] = {10.1, 20.1, 30.2, 40.2, 50.3};
|
||||
|
||||
|
||||
ds.AddFieldViaCopy(xVals, nVerts);
|
||||
ds.AddFieldViaCopy(yVals, nVerts);
|
||||
ds.AddFieldViaCopy(zVals, nVerts);
|
||||
|
||||
//Set node scalar
|
||||
ds.AddFieldViaCopy(vars, nVerts);
|
||||
|
||||
//Set cell scalar
|
||||
vtkm::Float32 cellvar[2] = {100.1, 100.2};
|
||||
ds.AddFieldViaCopy(cellvar, 2);
|
||||
|
||||
//Add connectivity
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> tmp2;
|
||||
std::vector<vtkm::Id> shapes;
|
||||
shapes.push_back(vtkm::VTKM_TRIANGLE);
|
||||
shapes.push_back(vtkm::VTKM_QUAD);
|
||||
|
||||
std::vector<vtkm::Id> numindices;
|
||||
numindices.push_back(3);
|
||||
numindices.push_back(4);
|
||||
|
||||
std::vector<vtkm::Id> conn;
|
||||
// First Cell: Triangle
|
||||
conn.push_back(0);
|
||||
conn.push_back(1);
|
||||
conn.push_back(2);
|
||||
// Second Cell: Quad
|
||||
conn.push_back(2);
|
||||
conn.push_back(1);
|
||||
conn.push_back(3);
|
||||
conn.push_back(4);
|
||||
|
||||
std::vector<vtkm::Id> map_cell_to_index;
|
||||
map_cell_to_index.push_back(0);
|
||||
map_cell_to_index.push_back(3);
|
||||
|
||||
vtkm::cont::ExplicitConnectivity ec;
|
||||
ec.Shapes = vtkm::cont::make_ArrayHandle(shapes);
|
||||
ec.NumIndices = vtkm::cont::make_ArrayHandle(numindices);
|
||||
ec.Connectivity = vtkm::cont::make_ArrayHandle(conn);
|
||||
ec.MapCellToConnectivityIndex = vtkm::cont::make_ArrayHandle(map_cell_to_index);
|
||||
|
||||
//todo this need to be a reference/shared_ptr style class
|
||||
vtkm::cont::CellSetExplicit *cs = new vtkm::cont::CellSetExplicit("cells",2);
|
||||
cs->nodesOfCellsConnectivity = ec;
|
||||
ds.AddCellSet(cs);
|
||||
|
||||
//Run a worklet to populate a cell centered field.
|
||||
//Here, we're filling it with test values.
|
||||
vtkm::Float32 outcellVals[2] = {-1.4, -1.7};
|
||||
ds.AddFieldViaCopy(outcellVals, 2);
|
||||
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(ds.GetNumberOfCellSets(), 1),
|
||||
VTKM_TEST_ASSERT(ds->GetNumberOfCellSets() == 1,
|
||||
"Incorrect number of cell sets");
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(ds.GetNumberOfFields(), 6),
|
||||
VTKM_TEST_ASSERT(ds->GetNumberOfFields() == 6,
|
||||
"Incorrect number of fields");
|
||||
|
||||
vtkm::cont::CellSet *cs = ds->GetCellSet(0);
|
||||
vtkm::cont::CellSetExplicit *cse =
|
||||
dynamic_cast<vtkm::cont::CellSetExplicit*>(cs);
|
||||
|
||||
VTKM_TEST_ASSERT(cse, "Expected an explicit cell set");
|
||||
|
||||
//Todo:
|
||||
//the scheduling should just be passed a CellSet, and not the
|
||||
//derived implementation. The vtkm::cont::CellSet should have
|
||||
//a method that return the nodesOfCellsConnectivity / structure
|
||||
//for that derived type. ( talk to robert for how dax did this )
|
||||
vtkm::worklet::DispatcherMapTopology< ::test::CellValue > dispatcher;
|
||||
dispatcher.Invoke(ds.GetField(4).GetData(),
|
||||
ds.GetField(3).GetData(),
|
||||
cs->GetNodeToCellConnectivity(),
|
||||
ds.GetField(5).GetData());
|
||||
dispatcher.Invoke(ds->GetField(4).GetData(),
|
||||
ds->GetField(3).GetData(),
|
||||
cse->GetNodeToCellConnectivity(),
|
||||
ds->GetField(5).GetData());
|
||||
|
||||
|
||||
//cleanup memory
|
||||
|
Loading…
Reference in New Issue
Block a user