mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-16 17:22:55 +00:00
forcing connectivity to triangle-only (Id3) to get simple WorkletMapCell.
This commit is contained in:
parent
5a0a658d7d
commit
455ef255da
@ -13,7 +13,7 @@ public:
|
||||
ExplicitConnectivity() : Shapes(), Connectivity() {}
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Id, vtkm::cont::StorageTagBasic> Shapes;
|
||||
vtkm::cont::ArrayHandle<vtkm::Id, vtkm::cont::StorageTagBasic> Connectivity;
|
||||
vtkm::cont::ArrayHandle<vtkm::Id3, vtkm::cont::StorageTagBasic> Connectivity;
|
||||
};
|
||||
|
||||
class DataSet
|
||||
|
@ -27,17 +27,18 @@
|
||||
class CellType : public vtkm::worklet::WorkletMapCell
|
||||
{
|
||||
public:
|
||||
typedef void ControlSignature(FieldIn<IdType> inCells, FieldOut<Scalar> outCells);
|
||||
typedef _2 ExecutionSignature(_1); // FieldOut<Scalar> ExecutionSignature(FieldIn<Scalar>);
|
||||
typedef void ControlSignature(FieldIn<IdType> inCells, ConnectivityIn<Id3Type> nodeIds, FieldOut<Scalar> outCells);
|
||||
typedef _3 ExecutionSignature(_1, _2); // FieldOut<Scalar> ExecutionSignature(FieldIn<Scalar>);
|
||||
typedef _1 InputDomain;
|
||||
|
||||
VTKM_CONT_EXPORT
|
||||
CellType() { };
|
||||
|
||||
VTKM_EXEC_EXPORT
|
||||
vtkm::Float32 operator()(const vtkm::Id &cell) const
|
||||
vtkm::Float32 operator()(const vtkm::Id &cell, vtkm::Id3 &nodeIds) const
|
||||
{
|
||||
std::cout<<"CellType worklet: "<<cell<<std::endl;
|
||||
std::cout<<"CellType worklet: "<<nodeIds[0]<<","<<nodeIds[1]<<","<<nodeIds[2]<<","<<std::endl;
|
||||
return (vtkm::Float32)cell;
|
||||
}
|
||||
|
||||
@ -76,35 +77,29 @@ void TestDataSet()
|
||||
|
||||
//Add connectivity
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> tmp2;
|
||||
vtkm::cont::ArrayHandle<vtkm::Id3> tmp3;
|
||||
std::vector<vtkm::Id> shapes;
|
||||
shapes.push_back(1); //Triangle
|
||||
shapes.push_back(1); //Triangle
|
||||
shapes.push_back(39); //A Special 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);
|
||||
std::vector<vtkm::Id3> conn;
|
||||
conn.push_back(vtkm::Id3(0,1,2));
|
||||
conn.push_back(vtkm::Id3(1,2,3));
|
||||
|
||||
tmp2 = vtkm::cont::make_ArrayHandle(shapes);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmp2, ds.conn.Shapes);
|
||||
|
||||
tmp2 = vtkm::cont::make_ArrayHandle(conn);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmp2, ds.conn.Connectivity);
|
||||
tmp3 = vtkm::cont::make_ArrayHandle(conn);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmp3, 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::Float32 cellVals[2] = {-1.0, -1.0};
|
||||
tmp = vtkm::cont::make_ArrayHandle(cellVals, 2);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(tmp, ds.Fields[4]);
|
||||
|
||||
vtkm::worklet::DispatcherMapCell<CellType> dispatcher;
|
||||
dispatcher.Invoke(ds.conn.Shapes, ds.Fields[4]);
|
||||
dispatcher.Invoke(ds.conn.Shapes, ds.conn.Connectivity, ds.Fields[4]);
|
||||
|
||||
#if 0
|
||||
//Add some verts.
|
||||
|
@ -54,6 +54,18 @@ public:
|
||||
typedef vtkm::exec::arg::FetchTagArrayDirectIn FetchTag;
|
||||
};
|
||||
|
||||
/// \brief A control signature tag for input connectivity.
|
||||
///
|
||||
/// This tag takes a template argument that is a type list tag that limits
|
||||
/// the possible value types in the array.
|
||||
///
|
||||
template<typename TypeList = AllTypes>
|
||||
struct ConnectivityIn : vtkm::cont::arg::ControlSignatureTagBase {
|
||||
typedef vtkm::cont::arg::TypeCheckTagArray<TypeList> TypeCheckTag;
|
||||
typedef vtkm::cont::arg::TransportTagArrayIn TransportTag;
|
||||
typedef vtkm::exec::arg::FetchTagArrayDirectIn FetchTag;
|
||||
};
|
||||
|
||||
/// \brief A control signature tag for output fields.
|
||||
///
|
||||
/// This tag takes a template argument that is a type list tag that limits
|
||||
|
Loading…
Reference in New Issue
Block a user