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>
116 template <
typename DeviceAdapter>
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;
vtkmCellSetExplicitAOS(const std::string &name=std::string())
vtkm::exec::ConnectivityVTKAOS< DeviceAdapter > ExecObjectType
const vtkm::cont::ArrayHandle< vtkm::Id, tovtkm::vtkCellArrayContainerTag > & GetConnectivityArray(vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
const vtkm::cont::ArrayHandle< vtkm::UInt8, tovtkm::vtkAOSArrayContainerTag > & GetShapesArray(vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
vtkm::Id GetNumberOfCells() const
virtual vtkm::Id GetNumberOfFaces() const
vtkm::exec::ReverseConnectivityVTK< DeviceAdapter > ExecObjectType
vtkm::Id GetNumberOfPoints() const
vtkm::exec::ConnectivityVTKAOS< Device > PrepareForInput(Device, vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
vtkm::Id GetSchedulingRange(vtkm::TopologyElementTagCell) const
const vtkm::cont::ArrayHandle< vtkm::Id, tovtkm::vtkAOSArrayContainerTag > & GetIndexOffsetArray(vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
virtual vtkm::Id GetNumberOfEdges() const
vtkmCellSetExplicitAOS & operator=(const vtkmCellSetExplicitAOS &src)
vtkm::Id GetSchedulingRange(vtkm::TopologyElementTagPoint) const
virtual ~vtkmCellSetExplicitAOS()