20 #ifndef vtkmCellSetSingleType_h 21 #define vtkmCellSetSingleType_h 25 #include <vtkm/CellShape.h> 26 #include <vtkm/CellTraits.h> 27 #include <vtkm/TopologyElementTag.h> 28 #include <vtkm/cont/ArrayHandle.h> 29 #include <vtkm/cont/CellSet.h> 31 #include <vtkm/VecFromPortal.h> 33 #include <vtkm/cont/serial/DeviceAdapterSerial.h> 34 #include <vtkm/cont/cuda/DeviceAdapterCuda.h> 35 #include <vtkm/cont/tbb/DeviceAdapterTBB.h> 48 : CellSet((std::
string())),
51 CellTypeAsId(CellShapeTagEmpty::Id),
53 ReverseConnectivityBuilt(false),
60 template <
typename CellShapeTag>
65 CellTypeAsId(CellShapeTag::Id),
67 ReverseConnectivityBuilt(false),
76 this->CellSet::operator=(src);
77 this->NumberOfCells = src.NumberOfCells;
78 this->NumberOfPoints = src.NumberOfPoints;
79 this->CellTypeAsId = src.CellTypeAsId;
80 this->ReverseConnectivityBuilt = src.ReverseConnectivityBuilt;
81 this->Connectivity = src.Connectivity;
82 this->RConn = src.RConn;
83 this->RNumIndices = src.RNumIndices;
84 this->RIndexOffsets = src.RIndexOffsets;
90 return this->NumberOfCells;
95 return this->NumberOfPoints;
104 return this->GetNumberOfCells();
109 return this->GetNumberOfPoints();
114 vtkm::Id numberOfPoints,
115 const vtkm::cont::ArrayHandle<vtkm::Id, tovtkm::vtkCellArrayContainerTag>&
118 template <
typename DeviceAdapter,
typename FromTopology,
typename ToTopology>
121 template <
typename DeviceAdapter>
123 vtkm::TopologyElementTagCell>
128 template <
typename DeviceAdapter>
130 vtkm::TopologyElementTagPoint>
135 template <
typename Device>
137 PrepareForInput(Device, vtkm::TopologyElementTagPoint,
138 vtkm::TopologyElementTagCell)
const;
140 template <
typename Device>
142 PrepareForInput(Device, vtkm::TopologyElementTagCell,
143 vtkm::TopologyElementTagPoint)
const;
146 const vtkm::cont::ArrayHandle<vtkm::Id, tovtkm::vtkCellArrayContainerTag>&
148 vtkm::TopologyElementTagCell)
const 150 return this->Connectivity;
153 virtual void PrintSummary(std::ostream& out)
const;
156 template <
typename CellShapeTag>
157 void DetermineNumberOfPoints(CellShapeTag, vtkm::CellTraitsTagSizeFixed,
158 vtkm::IdComponent& numberOfPoints)
const 160 numberOfPoints = vtkm::CellTraits<CellShapeTag>::NUM_POINTS;
163 template <
typename CellShapeTag>
164 void DetermineNumberOfPoints(CellShapeTag, vtkm::CellTraitsTagSizeVariable,
165 vtkm::IdComponent& numberOfPoints)
const 170 vtkm::IdComponent DetermineNumberOfPoints()
const;
172 vtkm::Id NumberOfCells;
173 mutable vtkm::Id NumberOfPoints;
174 vtkm::Id CellTypeAsId;
175 vtkm::cont::ArrayHandle<vtkm::Id, ConnectivityStorageTag> Connectivity;
177 mutable bool ReverseConnectivityBuilt;
178 mutable vtkm::cont::ArrayHandle<vtkm::Id> RConn;
179 mutable vtkm::cont::ArrayHandle<vtkm::IdComponent> RNumIndices;
180 mutable vtkm::cont::ArrayHandle<vtkm::Id> RIndexOffsets;
184 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
187 vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell)
const;
189 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
192 vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint)
const;
194 #ifdef VTKM_ENABLE_TBB 195 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
198 vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell)
const;
200 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
203 vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint)
const;
206 #if defined(VTKM_ENABLE_CUDA) && defined(VTKM_CUDA) 207 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
210 vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell)
const;
212 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
215 vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint)
const;
220 #endif // vtkmlib_vtkmCellSetSingleType_h const vtkm::cont::ArrayHandle< vtkm::Id, tovtkm::vtkCellArrayContainerTag > & GetConnectivityArray(vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
vtkmCellSetSingleType(CellShapeTag, const std::string &name)
vtkm::Id GetNumberOfCells() const
vtkm::exec::ReverseConnectivityVTK< DeviceAdapter > ExecObjectType
vtkm::Id GetSchedulingRange(vtkm::TopologyElementTagCell) const
vtkm::Id GetNumberOfPoints() const
virtual vtkm::Id GetNumberOfFaces() const
vtkm::Id GetSchedulingRange(vtkm::TopologyElementTagPoint) const
virtual vtkm::Id GetNumberOfEdges() const
vtkm::exec::ConnectivityVTKSingleType< DeviceAdapter > ExecObjectType
vtkm::exec::ConnectivityVTKSingleType< Device > PrepareForInput(Device, vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
vtkmCellSetSingleType & operator=(const vtkmCellSetSingleType &src)