20 #ifndef vtkmCellSetExplicit_h
21 #define vtkmCellSetExplicit_h
25 #include <vtkm/CellShape.h>
26 #include <vtkm/TopologyElementTag.h>
27 #include <vtkm/cont/ArrayHandle.h>
28 #include <vtkm/cont/CellSet.h>
30 #include <vtkm/cont/serial/DeviceAdapterSerial.h>
31 #include <vtkm/cont/cuda/DeviceAdapterCuda.h>
32 #include <vtkm/cont/tbb/DeviceAdapterTBB.h>
43 : CellSet(
name), Shapes(), Connectivity(), IndexOffsets(),
44 ReverseConnectivityBuilt(false),RConn(), RNumIndices(), RIndexOffsets(),
55 this->CellSet::operator=(src);
56 this->Shapes = src.Shapes;
57 this->Connectivity = src.Connectivity;
58 this->IndexOffsets = src.IndexOffsets;
59 this->ReverseConnectivityBuilt = src.ReverseConnectivityBuilt;
60 this->RConn = src.RConn;
61 this->RNumIndices = src.RNumIndices;
62 this->RIndexOffsets = src.RIndexOffsets;
63 this->NumberOfPoints = src.NumberOfPoints;
69 return this->Shapes.GetNumberOfValues();
74 return this->NumberOfPoints;
84 return this->GetNumberOfCells();
89 return this->GetNumberOfPoints();
92 vtkm::IdComponent GetNumberOfPointsInCell(vtkm::Id
index)
const;
94 vtkm::Id GetCellShape(vtkm::Id
index)
const;
99 vtkm::Id numberOfPoints,
100 const vtkm::cont::ArrayHandle<vtkm::UInt8,
102 const vtkm::cont::ArrayHandle<vtkm::Id, tovtkm::vtkCellArrayContainerTag>&
104 const vtkm::cont::ArrayHandle<vtkm::Id, tovtkm::vtkAOSArrayContainerTag>&
107 template <
typename DeviceAdapter,
typename FromTopology,
typename ToTopology>
110 template <
typename DeviceAdapter>
111 struct ExecutionTypes<DeviceAdapter, vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell>
116 template <
typename DeviceAdapter>
117 struct ExecutionTypes<DeviceAdapter, vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint>
122 template <
typename Device>
124 PrepareForInput(Device, vtkm::TopologyElementTagPoint,
125 vtkm::TopologyElementTagCell)
const;
127 template <
typename Device>
129 PrepareForInput(Device, vtkm::TopologyElementTagCell,
130 vtkm::TopologyElementTagPoint)
const;
132 const vtkm::cont::ArrayHandle<vtkm::UInt8, tovtkm::vtkAOSArrayContainerTag>&
134 vtkm::TopologyElementTagCell)
const
139 const vtkm::cont::ArrayHandle<vtkm::Id, tovtkm::vtkCellArrayContainerTag>&
141 vtkm::TopologyElementTagCell)
const
143 return this->Connectivity;
146 const vtkm::cont::ArrayHandle<vtkm::Id, tovtkm::vtkAOSArrayContainerTag>&
148 vtkm::TopologyElementTagCell)
const
150 return this->IndexOffsets;
153 virtual void PrintSummary(std::ostream& out)
const;
156 vtkm::cont::ArrayHandle<vtkm::UInt8, tovtkm::vtkAOSArrayContainerTag> Shapes;
157 vtkm::cont::ArrayHandle<vtkm::Id, tovtkm::vtkCellArrayContainerTag>
159 vtkm::cont::ArrayHandle<vtkm::Id, tovtkm::vtkAOSArrayContainerTag>
166 mutable bool ReverseConnectivityBuilt;
167 mutable vtkm::cont::ArrayHandle<vtkm::Id> RConn;
168 mutable vtkm::cont::ArrayHandle<vtkm::IdComponent> RNumIndices;
169 mutable vtkm::cont::ArrayHandle<vtkm::Id> RIndexOffsets;
170 mutable vtkm::Id NumberOfPoints;
175 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
178 vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell)
const;
180 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
183 vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint)
const;
185 #ifdef VTKM_ENABLE_TBB
186 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
189 vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell)
const;
191 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
194 vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint)
const;
197 #if defined(VTKM_ENABLE_CUDA) && defined(VTKM_CUDA)
198 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
201 vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell)
const;
203 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
206 vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint)
const;
const vtkm::cont::ArrayHandle< vtkm::Id, tovtkm::vtkCellArrayContainerTag > & GetConnectivityArray(vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
vtkm::exec::ConnectivityVTKAOS< DeviceAdapter > ExecObjectType
virtual vtkm::Id GetNumberOfEdges() const
const vtkm::cont::ArrayHandle< vtkm::UInt8, tovtkm::vtkAOSArrayContainerTag > & GetShapesArray(vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
const vtkm::cont::ArrayHandle< vtkm::Id, tovtkm::vtkAOSArrayContainerTag > & GetIndexOffsetArray(vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
vtkm::exec::ReverseConnectivityVTK< DeviceAdapter > ExecObjectType
vtkm::exec::ConnectivityVTKAOS< Device > PrepareForInput(Device, vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
vtkm::Id GetSchedulingRange(vtkm::TopologyElementTagCell) const
vtkmCellSetExplicitAOS & operator=(const vtkmCellSetExplicitAOS &src)
virtual vtkm::Id GetNumberOfFaces() const
virtual ~vtkmCellSetExplicitAOS()
vtkm::Id GetSchedulingRange(vtkm::TopologyElementTagPoint) const
vtkm::Id GetNumberOfCells() const
vtkm::Id GetNumberOfPoints() const