20 #ifndef vtkmCellSetSingleType_h 21 #define vtkmCellSetSingleType_h 23 #ifndef VTK_WRAPPING_CXX 27 #include <vtkm/CellShape.h> 28 #include <vtkm/CellTraits.h> 29 #include <vtkm/TopologyElementTag.h> 30 #include <vtkm/cont/ArrayHandle.h> 31 #include <vtkm/cont/CellSet.h> 33 #include <vtkm/VecFromPortal.h> 35 #include <vtkm/cont/serial/DeviceAdapterSerial.h> 36 #include <vtkm/cont/cuda/DeviceAdapterCuda.h> 37 #include <vtkm/cont/tbb/DeviceAdapterTBB.h> 50 : CellSet((std::
string())),
53 CellTypeAsId(CellShapeTagEmpty::Id),
55 ReverseConnectivityBuilt(false),
62 template <
typename CellShapeTag>
67 CellTypeAsId(CellShapeTag::Id),
69 ReverseConnectivityBuilt(false),
78 this->CellSet::operator=(src);
79 this->NumberOfCells = src.NumberOfCells;
80 this->NumberOfPoints = src.NumberOfPoints;
81 this->CellTypeAsId = src.CellTypeAsId;
82 this->ReverseConnectivityBuilt = src.ReverseConnectivityBuilt;
83 this->Connectivity = src.Connectivity;
84 this->RConn = src.RConn;
85 this->RNumIndices = src.RNumIndices;
86 this->RIndexOffsets = src.RIndexOffsets;
92 return this->NumberOfCells;
97 return this->NumberOfPoints;
106 return this->GetNumberOfCells();
111 return this->GetNumberOfPoints();
116 vtkm::Id numberOfPoints,
117 const vtkm::cont::ArrayHandle<vtkm::Id, tovtkm::vtkCellArrayContainerTag>&
120 template <
typename DeviceAdapter,
typename FromTopology,
typename ToTopology>
123 template <
typename DeviceAdapter>
125 vtkm::TopologyElementTagCell>
130 template <
typename DeviceAdapter>
132 vtkm::TopologyElementTagPoint>
137 template <
typename Device>
139 PrepareForInput(Device, vtkm::TopologyElementTagPoint,
140 vtkm::TopologyElementTagCell)
const;
142 template <
typename Device>
144 PrepareForInput(Device, vtkm::TopologyElementTagCell,
145 vtkm::TopologyElementTagPoint)
const;
148 const vtkm::cont::ArrayHandle<vtkm::Id, tovtkm::vtkCellArrayContainerTag>&
150 vtkm::TopologyElementTagCell)
const 152 return this->Connectivity;
155 virtual void PrintSummary(std::ostream& out)
const;
158 template <
typename CellShapeTag>
159 void DetermineNumberOfPoints(CellShapeTag, vtkm::CellTraitsTagSizeFixed,
160 vtkm::IdComponent& numberOfPoints)
const 162 numberOfPoints = vtkm::CellTraits<CellShapeTag>::NUM_POINTS;
165 template <
typename CellShapeTag>
166 void DetermineNumberOfPoints(CellShapeTag, vtkm::CellTraitsTagSizeVariable,
167 vtkm::IdComponent& numberOfPoints)
const 172 vtkm::IdComponent DetermineNumberOfPoints()
const;
174 vtkm::Id NumberOfCells;
175 mutable vtkm::Id NumberOfPoints;
176 vtkm::Id CellTypeAsId;
177 vtkm::cont::ArrayHandle<vtkm::Id, ConnectivityStorageTag> Connectivity;
179 mutable bool ReverseConnectivityBuilt;
180 mutable vtkm::cont::ArrayHandle<vtkm::Id> RConn;
181 mutable vtkm::cont::ArrayHandle<vtkm::IdComponent> RNumIndices;
182 mutable vtkm::cont::ArrayHandle<vtkm::Id> RIndexOffsets;
186 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
189 vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell)
const;
191 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
194 vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint)
const;
196 #ifdef VTKM_ENABLE_TBB 197 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
200 vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell)
const;
202 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
205 vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint)
const;
208 #if defined(VTKM_ENABLE_CUDA) && defined(VTKM_CUDA) 209 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
212 vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell)
const;
214 extern template VTKACCELERATORSVTKM_TEMPLATE_EXPORT
217 vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint)
const;
224 #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)