mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-16 17:22:55 +00:00
Add a simple worklet that creates a cell-type variable.
This commit is contained in:
parent
d6ccc97304
commit
e3970b09f1
@ -21,6 +21,28 @@
|
||||
#include <vtkm/cont/testing/Testing.h>
|
||||
#include <vtkm/cont/DataSet.h>
|
||||
#include <vtkm/cont/DeviceAdapterAlgorithm.h>
|
||||
#include <vtkm/worklet/WorkletMapField.h>
|
||||
#include <vtkm/worklet/DispatcherMapField.h>
|
||||
|
||||
class CellType : public vtkm::worklet::WorkletMapField
|
||||
{
|
||||
public:
|
||||
typedef void ControlSignature(FieldIn<IdType> inCells, FieldOut<Scalar> outCells);
|
||||
typedef _2 ExecutionSignature(_1); // FieldOut<Scalar> ExecutionSignature(FieldIn<Scalar>);
|
||||
typedef _1 InputDomain;
|
||||
|
||||
VTKM_CONT_EXPORT
|
||||
CellType() { };
|
||||
|
||||
VTKM_EXEC_EXPORT
|
||||
vtkm::Float32 operator()(const vtkm::Id &cell) const
|
||||
{
|
||||
std::cout<<"CellType worklet: "<<cell<<std::endl;
|
||||
return (vtkm::Float32)cell;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
void TestDataSet()
|
||||
{
|
||||
@ -29,13 +51,13 @@ void TestDataSet()
|
||||
ds.x_idx = 0;
|
||||
ds.y_idx = 1;
|
||||
ds.z_idx = 2;
|
||||
ds.Fields.resize(4);
|
||||
ds.Fields.resize(5);
|
||||
|
||||
const int nVerts = 3;
|
||||
vtkm::Float32 xVals[nVerts] = {0, 1, 1};
|
||||
vtkm::Float32 yVals[nVerts] = {0, 0, 1};
|
||||
vtkm::Float32 zVals[nVerts] = {0, 0, 0};
|
||||
vtkm::Float32 vars[nVerts] = {10, 20, 30};
|
||||
const int nVerts = 4;
|
||||
vtkm::Float32 xVals[nVerts] = {0, 1, 1, 0};
|
||||
vtkm::Float32 yVals[nVerts] = {0, 0, 1, 1};
|
||||
vtkm::Float32 zVals[nVerts] = {0, 0, 0, 0};
|
||||
vtkm::Float32 vars[nVerts] = {10, 20, 30, 40};
|
||||
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> tmp;
|
||||
@ -47,7 +69,7 @@ void TestDataSet()
|
||||
tmp = vtkm::cont::make_ArrayHandle(zVals, nVerts);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmp, ds.Fields[ds.z_idx]);
|
||||
|
||||
//Set scalar
|
||||
//Set node scalar
|
||||
tmp = vtkm::cont::make_ArrayHandle(vars, nVerts);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmp, ds.Fields[3]);
|
||||
|
||||
@ -56,11 +78,18 @@ void TestDataSet()
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> tmp2;
|
||||
std::vector<vtkm::Id> shapes;
|
||||
shapes.push_back(1); //Triangle
|
||||
shapes.push_back(1); //Triangle
|
||||
|
||||
std::vector<vtkm::Id> conn;
|
||||
//Triangle 1
|
||||
conn.push_back(0);
|
||||
conn.push_back(1);
|
||||
conn.push_back(2);
|
||||
|
||||
//Triangle 2
|
||||
conn.push_back(1);
|
||||
conn.push_back(2);
|
||||
conn.push_back(3);
|
||||
|
||||
tmp2 = vtkm::cont::make_ArrayHandle(shapes);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmp2, ds.conn.Shapes);
|
||||
@ -68,6 +97,15 @@ void TestDataSet()
|
||||
tmp2 = vtkm::cont::make_ArrayHandle(conn);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmp2, ds.conn.Connectivity);
|
||||
|
||||
|
||||
//Run a worklet to populate a cell centered field.
|
||||
vtkm::Float32 cellVals[1] = {-1.0};
|
||||
tmp = vtkm::cont::make_ArrayHandle(cellVals, 1);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmp, ds.Fields[4]);
|
||||
|
||||
vtkm::worklet::DispatcherMapField<CellType> dispatcher;
|
||||
dispatcher.Invoke(ds.conn.Shapes, ds.Fields[4]);
|
||||
|
||||
#if 0
|
||||
//Add some verts.
|
||||
ds.Fields[ds.x_idx].PrepareForOutput(nVerts, VTKM_DEFAULT_DEVICE_ADAPTER_TAG());
|
||||
|
Loading…
Reference in New Issue
Block a user