VTK-m  1.8
CellSetExplicit.h
Go to the documentation of this file.
1 //============================================================================
2 // Copyright (c) Kitware, Inc.
3 // All rights reserved.
4 // See LICENSE.txt for details.
5 //
6 // This software is distributed WITHOUT ANY WARRANTY; without even
7 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
8 // PURPOSE. See the above copyright notice for more information.
9 //============================================================================
10 #ifndef vtk_m_cont_CellSetExplicit_h
11 #define vtk_m_cont_CellSetExplicit_h
12 
13 #include <vtkm/CellShape.h>
14 #include <vtkm/Deprecated.h>
21 #include <vtkm/cont/CellSet.h>
25 
26 #include <vtkm/cont/vtkm_cont_export.h>
27 
28 namespace vtkm
29 {
30 namespace cont
31 {
32 
33 namespace detail
34 {
35 
36 template <typename CellSetType, typename VisitTopology, typename IncidentTopology>
37 struct CellSetExplicitConnectivityChooser
38 {
39  using ConnectivityType = vtkm::cont::internal::ConnectivityExplicitInternals<>;
40 };
41 
42 // The connectivity generally used for the visit-points-with-cells connectivity.
43 // This type of connectivity does not have variable shape types, and since it is
44 // never really provided externally we can use the defaults for the other arrays.
45 using DefaultVisitPointsWithCellsConnectivityExplicit =
46  vtkm::cont::internal::ConnectivityExplicitInternals<
48 
49 VTKM_CONT_EXPORT void BuildReverseConnectivity(
50  const vtkm::cont::UnknownArrayHandle& connections,
51  const vtkm::cont::UnknownArrayHandle& offsets,
52  vtkm::Id numberOfPoints,
53  vtkm::cont::detail::DefaultVisitPointsWithCellsConnectivityExplicit& visitPointsWithCells,
55 
56 } // namespace detail
57 
58 #ifndef VTKM_DEFAULT_SHAPES_STORAGE_TAG
59 #define VTKM_DEFAULT_SHAPES_STORAGE_TAG VTKM_DEFAULT_STORAGE_TAG
60 #endif
61 
62 #ifndef VTKM_DEFAULT_CONNECTIVITY_STORAGE_TAG
63 #define VTKM_DEFAULT_CONNECTIVITY_STORAGE_TAG VTKM_DEFAULT_STORAGE_TAG
64 #endif
65 
66 #ifndef VTKM_DEFAULT_OFFSETS_STORAGE_TAG
67 #define VTKM_DEFAULT_OFFSETS_STORAGE_TAG VTKM_DEFAULT_STORAGE_TAG
68 #endif
69 
70 template <typename ShapesStorageTag = VTKM_DEFAULT_SHAPES_STORAGE_TAG,
71  typename ConnectivityStorageTag = VTKM_DEFAULT_CONNECTIVITY_STORAGE_TAG,
72  typename OffsetsStorageTag = VTKM_DEFAULT_OFFSETS_STORAGE_TAG>
73 class VTKM_ALWAYS_EXPORT CellSetExplicit : public CellSet
74 {
76 
77  template <typename VisitTopology, typename IncidentTopology>
79  {
80  private:
81  using Chooser = typename detail::
82  CellSetExplicitConnectivityChooser<Thisclass, VisitTopology, IncidentTopology>;
83 
84  public:
85  using ConnectivityType = typename Chooser::ConnectivityType;
86  using ShapesArrayType = typename ConnectivityType::ShapesArrayType;
87  using ConnectivityArrayType = typename ConnectivityType::ConnectivityArrayType;
88  using OffsetsArrayType = typename ConnectivityType::OffsetsArrayType;
89 
91 
92  using ExecConnectivityType =
93  vtkm::exec::ConnectivityExplicit<typename ShapesArrayType::ReadPortalType,
94  typename ConnectivityArrayType::ReadPortalType,
95  typename OffsetsArrayType::ReadPortalType>;
96  };
97 
98  using ConnTypes =
100  using RConnTypes =
102 
105 
106 public:
108 
109  using ShapesArrayType = typename CellPointIdsType::ShapesArrayType;
110  using ConnectivityArrayType = typename CellPointIdsType::ConnectivityArrayType;
111  using OffsetsArrayType = typename CellPointIdsType::OffsetsArrayType;
113 
115  VTKM_CONT CellSetExplicit(const Thisclass& src);
116  VTKM_CONT CellSetExplicit(Thisclass&& src) noexcept;
117 
118  VTKM_CONT Thisclass& operator=(const Thisclass& src);
119  VTKM_CONT Thisclass& operator=(Thisclass&& src) noexcept;
120 
121  VTKM_CONT virtual ~CellSetExplicit() override;
122 
123  VTKM_CONT vtkm::Id GetNumberOfCells() const override;
124  VTKM_CONT vtkm::Id GetNumberOfPoints() const override;
125  VTKM_CONT vtkm::Id GetNumberOfFaces() const override;
126  VTKM_CONT vtkm::Id GetNumberOfEdges() const override;
127  VTKM_CONT void PrintSummary(std::ostream& out) const override;
128 
129  VTKM_CONT void ReleaseResourcesExecution() override;
130 
131  VTKM_CONT std::shared_ptr<CellSet> NewInstance() const override;
132  VTKM_CONT void DeepCopy(const CellSet* src) override;
133 
134  VTKM_CONT vtkm::Id GetSchedulingRange(vtkm::TopologyElementTagCell) const;
135  VTKM_CONT vtkm::Id GetSchedulingRange(vtkm::TopologyElementTagPoint) const;
136 
137  VTKM_CONT vtkm::IdComponent GetNumberOfPointsInCell(vtkm::Id cellid) const override;
138  VTKM_CONT void GetCellPointIds(vtkm::Id id, vtkm::Id* ptids) const override;
139 
141  ShapesReadPortal() const;
142 
143  VTKM_CONT vtkm::UInt8 GetCellShape(vtkm::Id cellid) const override;
144 
145  template <vtkm::IdComponent NumIndices>
146  VTKM_CONT void GetIndices(vtkm::Id index, vtkm::Vec<vtkm::Id, NumIndices>& ids) const;
147 
148  VTKM_CONT void GetIndices(vtkm::Id index, vtkm::cont::ArrayHandle<vtkm::Id>& ids) const;
149 
151  VTKM_CONT void PrepareToAddCells(vtkm::Id numCells, vtkm::Id connectivityMaxLen);
152 
153  template <typename IdVecType>
154  VTKM_CONT void AddCell(vtkm::UInt8 cellType, vtkm::IdComponent numVertices, const IdVecType& ids);
155 
156  VTKM_CONT void CompleteAddingCells(vtkm::Id numPoints);
157 
161  VTKM_CONT
162  void Fill(vtkm::Id numPoints,
166 
167  template <typename Device, typename VisitTopology, typename IncidentTopology>
169  1.6,
170  "Replace ExecutionTypes<D, V, I>::ExecObjectType with ExecConnectivityType<V, I>.")
171  ExecutionTypes
172  {
173  private:
175  VTKM_IS_TOPOLOGY_ELEMENT_TAG(VisitTopology);
176  VTKM_IS_TOPOLOGY_ELEMENT_TAG(IncidentTopology);
177 
179 
180  using ShapesAT = typename Chooser::ShapesArrayType;
181  using ConnAT = typename Chooser::ConnectivityArrayType;
182  using OffsetsAT = typename Chooser::OffsetsArrayType;
183 
184  public:
185  using ShapesPortalType = typename ShapesAT::ReadPortalType;
186  using ConnectivityPortalType = typename ConnAT::ReadPortalType;
187  using OffsetsPortalType = typename OffsetsAT::ReadPortalType;
188 
189  using ExecObjectType =
191  };
192 
193  template <typename VisitTopology, typename IncidentTopology>
194  using ExecConnectivityType =
196 
197  template <typename VisitTopology, typename IncidentTopology>
200  VisitTopology,
201  IncidentTopology,
202  vtkm::cont::Token&) const;
203 
204  template <typename VisitTopology, typename IncidentTopology>
205  VTKM_DEPRECATED(1.6, "Provide a vtkm::cont::Token object when calling PrepareForInput.")
206  VTKM_CONT ExecConnectivityType<VisitTopology, IncidentTopology> PrepareForInput(
207  vtkm::cont::DeviceAdapterId device,
208  VisitTopology visitTopology,
209  IncidentTopology incidentTopology) const
210  {
211  vtkm::cont::Token token;
212  return this->PrepareForInput(device, visitTopology, incidentTopology, token);
213  }
214 
215  template <typename VisitTopology, typename IncidentTopology>
216  VTKM_CONT const typename ConnectivityChooser<VisitTopology, IncidentTopology>::ShapesArrayType&
217  GetShapesArray(VisitTopology, IncidentTopology) const;
218 
219  template <typename VisitTopology, typename IncidentTopology>
220  VTKM_CONT const typename ConnectivityChooser<VisitTopology,
221  IncidentTopology>::ConnectivityArrayType&
222  GetConnectivityArray(VisitTopology, IncidentTopology) const;
223 
224  template <typename VisitTopology, typename IncidentTopology>
225  VTKM_CONT const typename ConnectivityChooser<VisitTopology, IncidentTopology>::OffsetsArrayType&
226  GetOffsetsArray(VisitTopology, IncidentTopology) const;
227 
228  template <typename VisitTopology, typename IncidentTopology>
229  VTKM_CONT typename ConnectivityChooser<VisitTopology, IncidentTopology>::NumIndicesArrayType
230  GetNumIndicesArray(VisitTopology, IncidentTopology) const;
231 
232  template <typename VisitTopology, typename IncidentTopology>
233  VTKM_CONT bool HasConnectivity(VisitTopology visit, IncidentTopology incident) const
234  {
235  return this->HasConnectivityImpl(visit, incident);
236  }
237 
238  // Can be used to reset a connectivity table, mostly useful for benchmarking.
239  template <typename VisitTopology, typename IncidentTopology>
240  VTKM_CONT void ResetConnectivity(VisitTopology visit, IncidentTopology incident)
241  {
242  this->ResetConnectivityImpl(visit, incident);
243  }
244 
245 protected:
249  {
250  VTKM_ASSERT(this->Data->CellPointIds.ElementsValid);
251  // no-op
252  }
253 
257  {
258  detail::BuildReverseConnectivity(this->Data->CellPointIds.Connectivity,
259  this->Data->CellPointIds.Offsets,
260  this->Data->NumberOfPoints,
261  this->Data->PointCellIds,
262  device);
263  }
264 
267  {
268  return this->Data->CellPointIds.ElementsValid;
269  }
270 
273  {
274  return this->Data->PointCellIds.ElementsValid;
275  }
276 
278  {
279  // Reset entire cell set
280  this->Data->CellPointIds = CellPointIdsType{};
281  this->Data->PointCellIds = PointCellIdsType{};
282  this->Data->ConnectivityAdded = -1;
283  this->Data->NumberOfCellsAdded = -1;
284  this->Data->NumberOfPoints = 0;
285  }
286 
288  {
289  this->Data->PointCellIds = PointCellIdsType{};
290  }
291 
292  // Store internals in a shared pointer so shallow copies stay consistent.
293  // See #2268.
294  struct Internals
295  {
298 
299  // These are used in the AddCell and related methods to incrementally add
300  // cells. They need to be protected as subclasses of CellSetExplicit
301  // need to set these values when implementing Fill()
305 
306  VTKM_CONT
308  : ConnectivityAdded(-1)
309  , NumberOfCellsAdded(-1)
310  , NumberOfPoints(0)
311  {
312  }
313  };
314 
315  std::shared_ptr<Internals> Data;
316 
317 private:
318  VTKM_CONT
321  {
322  return this->Data->CellPointIds;
323  }
324 
325  VTKM_CONT
328  {
329  return this->Data->CellPointIds;
330  }
331 
332  VTKM_CONT
335  {
336  return this->Data->PointCellIds;
337  }
338 
339  VTKM_CONT
342  {
343  return this->Data->PointCellIds;
344  }
345 };
346 
347 namespace detail
348 {
349 
350 template <typename Storage1, typename Storage2, typename Storage3>
351 struct CellSetExplicitConnectivityChooser<vtkm::cont::CellSetExplicit<Storage1, Storage2, Storage3>,
354 {
355  using ConnectivityType =
356  vtkm::cont::internal::ConnectivityExplicitInternals<Storage1, Storage2, Storage3>;
357 };
358 
359 template <typename CellSetType>
360 struct CellSetExplicitConnectivityChooser<CellSetType,
361  vtkm::TopologyElementTagPoint,
363 {
364  //only specify the shape type as it will be constant as everything
365  //is a vertex. otherwise use the defaults.
366  using ConnectivityType = vtkm::cont::detail::DefaultVisitPointsWithCellsConnectivityExplicit;
367 };
368 
369 } // namespace detail
370 
373 #ifndef vtk_m_cont_CellSetExplicit_cxx
374 extern template class VTKM_CONT_TEMPLATE_EXPORT CellSetExplicit<>; // default
375 extern template class VTKM_CONT_TEMPLATE_EXPORT CellSetExplicit<
378  typename vtkm::cont::ArrayHandleCounting<vtkm::Id>::StorageTag>; // CellSetSingleType base
379 #endif
380 }
382 } // namespace vtkm::cont
383 
384 //=============================================================================
385 // Specializations of serialization related classes
387 namespace vtkm
388 {
389 namespace cont
390 {
391 
392 template <typename SST, typename CST, typename OST>
393 struct SerializableTypeString<vtkm::cont::CellSetExplicit<SST, CST, OST>>
394 {
395  static VTKM_CONT const std::string& Get()
396  {
397  static std::string name = "CS_Explicit<" +
398  SerializableTypeString<vtkm::cont::ArrayHandle<vtkm::UInt8, SST>>::Get() + "_ST," +
399  SerializableTypeString<vtkm::cont::ArrayHandle<vtkm::Id, CST>>::Get() + "_ST," +
400  SerializableTypeString<vtkm::cont::ArrayHandle<vtkm::Id, OST>>::Get() + "_ST>";
401 
402  return name;
403  }
404 };
405 }
406 } // vtkm::cont
407 
408 namespace mangled_diy_namespace
409 {
410 
411 template <typename SST, typename CST, typename OST>
412 struct Serialization<vtkm::cont::CellSetExplicit<SST, CST, OST>>
413 {
414 private:
416 
417 public:
418  static VTKM_CONT void save(BinaryBuffer& bb, const Type& cs)
419  {
420  vtkmdiy::save(bb, cs.GetNumberOfPoints());
421  vtkmdiy::save(
422  bb, cs.GetShapesArray(vtkm::TopologyElementTagCell{}, vtkm::TopologyElementTagPoint{}));
423  vtkmdiy::save(
424  bb, cs.GetConnectivityArray(vtkm::TopologyElementTagCell{}, vtkm::TopologyElementTagPoint{}));
425  vtkmdiy::save(
426  bb, cs.GetOffsetsArray(vtkm::TopologyElementTagCell{}, vtkm::TopologyElementTagPoint{}));
427  }
428 
429  static VTKM_CONT void load(BinaryBuffer& bb, Type& cs)
430  {
431  vtkm::Id numberOfPoints = 0;
432  vtkmdiy::load(bb, numberOfPoints);
434  vtkmdiy::load(bb, shapes);
436  vtkmdiy::load(bb, connectivity);
438  vtkmdiy::load(bb, offsets);
439 
440  cs = Type{};
441  cs.Fill(numberOfPoints, shapes, connectivity, offsets);
442  }
443 };
444 
445 } // diy
447 
448 #ifndef vtk_m_cont_CellSetExplicit_hxx
449 #include <vtkm/cont/CellSetExplicit.hxx>
450 #endif //vtk_m_cont_CellSetExplicit_hxx
451 
452 #endif //vtk_m_cont_CellSetExplicit_h
vtkm::TopologyElementTagPoint
A tag used to identify the point elements in a topology.
Definition: TopologyElementTag.h:34
VTKM_DEFAULT_OFFSETS_STORAGE_TAG
#define VTKM_DEFAULT_OFFSETS_STORAGE_TAG
Definition: CellSetExplicit.h:67
vtkm::cont::CellSetExplicit::GetConnectivity
const VTKM_CONT PointCellIdsType & GetConnectivity(vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell)
Definition: CellSetExplicit.h:340
vtkm::cont::CellSetExplicit::Internals::NumberOfPoints
vtkm::Id NumberOfPoints
Definition: CellSetExplicit.h:304
vtkm::cont::ArrayHandle< vtkm::Id >
vtkm::cont::VTKM_DEPRECATED
struct VTKM_DEPRECATED(1.6, "Use vtkm::ColorSpace.") ColorSpace
Definition: cont/ColorTable.h:36
vtkm::cont::CellSetExplicit::ConnectivityChooser
Definition: CellSetExplicit.h:78
vtkm::cont::CellSetExplicit::ShapesArrayType
typename CellPointIdsType::ShapesArrayType ShapesArrayType
Definition: CellSetExplicit.h:109
vtkm::cont::CellSetExplicit::GetConnectivity
const VTKM_CONT PointCellIdsType & GetConnectivity(vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
Definition: CellSetExplicit.h:333
vtkm
VTKM_NO_DEPRECATED_VIRTUAL.
Definition: Algorithms.h:18
ArrayHandleCast.h
VTKM_ASSERT
#define VTKM_ASSERT(condition)
Definition: Assert.h:43
vtkm::cont::CellSetExplicit::HasConnectivityImpl
VTKM_CONT bool HasConnectivityImpl(vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint) const
Definition: CellSetExplicit.h:265
vtkm::Get
VTKM_SUPPRESS_EXEC_WARNINGS VTKM_EXEC_CONT auto Get(const vtkm::Tuple< Ts... > &tuple) -> decltype(tuple.template Get< Index >())
Retrieve the object from a vtkm::Tuple at the given index.
Definition: Tuple.h:83
vtkm::IdComponent
vtkm::Int32 IdComponent
Represents a component ID (index of component in a vector).
Definition: Types.h:168
vtkm::cont::CellSetExplicit::Internals::CellPointIds
CellPointIdsType CellPointIds
Definition: CellSetExplicit.h:296
vtkm::cont::CellSetExplicit::SchedulingRangeType
vtkm::Id SchedulingRangeType
Definition: CellSetExplicit.h:107
vtkm::cont::CellSetExplicit::GetConnectivity
const VTKM_CONT CellPointIdsType & GetConnectivity(vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint)
Definition: CellSetExplicit.h:326
vtkm::cont::UnknownArrayHandle
An ArrayHandle of an unknown value type and storage.
Definition: UnknownArrayHandle.h:397
vtkm::cont::CellSetExplicit::ConnectivityArrayType
typename CellPointIdsType::ConnectivityArrayType ConnectivityArrayType
Definition: CellSetExplicit.h:110
vtkm::cont::CellSetExplicit::BuildConnectivity
VTKM_CONT void BuildConnectivity(vtkm::cont::DeviceAdapterId device, vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
Definition: CellSetExplicit.h:254
vtkm::cont::CellSetExplicit::ConnectivityChooser::ConnectivityType
typename Chooser::ConnectivityType ConnectivityType
Definition: CellSetExplicit.h:85
vtkm::cont::CellSetExplicit::CellPointIdsType
typename ConnTypes::ConnectivityType CellPointIdsType
Definition: CellSetExplicit.h:103
vtkm::cont::CellSetExplicit::Internals::Internals
VTKM_CONT Internals()
Definition: CellSetExplicit.h:307
ArrayHandleConstant.h
VTKM_IS_TOPOLOGY_ELEMENT_TAG
#define VTKM_IS_TOPOLOGY_ELEMENT_TAG(type)
Definition: TopologyElementTag.h:92
CellShape.h
vtkm::cont::ArrayHandle::ReadPortalType
typename StorageType::ReadPortalType ReadPortalType
Definition: ArrayHandle.h:298
vtkm::cont::CellSetExplicit::BuildConnectivity
VTKM_CONT void BuildConnectivity(vtkm::cont::DeviceAdapterId, vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint) const
Definition: CellSetExplicit.h:246
mangled_diy_namespace
Definition: Particle.h:251
vtkm::Id
vtkm::Int32 Id
Represents an ID (index into arrays).
Definition: Types.h:191
vtkm::cont::CellSetExplicit::ConnectivityChooser::ShapesArrayType
typename ConnectivityType::ShapesArrayType ShapesArrayType
Definition: CellSetExplicit.h:86
vtkm::exec::arg::load
VTKM_SUPPRESS_EXEC_WARNINGS VTKM_EXEC T load(const U &u, vtkm::Id v)
Definition: FetchTagArrayDirectIn.h:36
vtkm::cont::StorageTagConstant
Definition: ArrayHandleConstant.h:20
vtkm::cont::CellSetExplicit::ResetConnectivityImpl
VTKM_CONT void ResetConnectivityImpl(vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell)
Definition: CellSetExplicit.h:287
ConnectivityExplicit.h
vtkm::cont::Token
A token to hold the scope of an ArrayHandle or other object.
Definition: Token.h:35
vtkm::cont::CellSetExplicit::ExecConnectivityType
typename ConnectivityChooser< VisitTopology, IncidentTopology >::ExecConnectivityType ExecConnectivityType
Definition: CellSetExplicit.h:195
vtkm::cont::CellSetExplicit::HasConnectivity
VTKM_CONT bool HasConnectivity(VisitTopology visit, IncidentTopology incident) const
Definition: CellSetExplicit.h:233
vtkm::cont::StorageTagCounting
Definition: ArrayHandleCounting.h:23
vtkm::cont::CellSetExplicit::ConnectivityChooser::ConnectivityArrayType
typename ConnectivityType::ConnectivityArrayType ConnectivityArrayType
Definition: CellSetExplicit.h:87
UnknownArrayHandle.h
vtkm::cont::CellSetExplicit::NumIndicesArrayType
typename ConnTypes::NumIndicesArrayType NumIndicesArrayType
Definition: CellSetExplicit.h:112
vtkm::cont::CellSetExplicit::Internals::NumberOfCellsAdded
vtkm::Id NumberOfCellsAdded
Definition: CellSetExplicit.h:303
vtkm::cont::CellSetExplicit::OffsetsArrayType
typename CellPointIdsType::OffsetsArrayType OffsetsArrayType
Definition: CellSetExplicit.h:111
vtkm::cont::CellSetExplicit::ResetConnectivity
VTKM_CONT void ResetConnectivity(VisitTopology visit, IncidentTopology incident)
Definition: CellSetExplicit.h:240
VTKM_CONT
#define VTKM_CONT
Definition: ExportMacros.h:57
vtkm::exec::ConnectivityExplicit
Definition: ConnectivityExplicit.h:24
CellSet.h
vtkm::cont::CellSet
Definition: CellSet.h:24
vtkm::cont::CellSetExplicit::Data
std::shared_ptr< Internals > Data
Definition: CellSetExplicit.h:315
VTKM_DEFAULT_CONNECTIVITY_STORAGE_TAG
#define VTKM_DEFAULT_CONNECTIVITY_STORAGE_TAG
Definition: CellSetExplicit.h:63
vtkm::UInt8
uint8_t UInt8
Definition: Types.h:157
vtkm::cont::CellSetExplicit::ResetConnectivityImpl
VTKM_CONT void ResetConnectivityImpl(vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint)
Definition: CellSetExplicit.h:277
ArrayGetValues.h
vtkm::cont::DeviceAdapterId
Definition: DeviceAdapterTag.h:52
vtkm::Vec
A short fixed-length array.
Definition: Types.h:767
vtkm::cont::CellSetExplicit::Internals::PointCellIds
PointCellIdsType PointCellIds
Definition: CellSetExplicit.h:297
vtkm::cont::CellSetExplicit::Internals::ConnectivityAdded
vtkm::Id ConnectivityAdded
Definition: CellSetExplicit.h:302
ConnectivityExplicitInternals.h
vtkm::cont::CellSetExplicit::ConnectivityChooser::OffsetsArrayType
typename ConnectivityType::OffsetsArrayType OffsetsArrayType
Definition: CellSetExplicit.h:88
Deprecated.h
vtkm::cont::CellSetExplicit
Definition: CastAndCall.h:36
VTKM_DEFAULT_SHAPES_STORAGE_TAG
#define VTKM_DEFAULT_SHAPES_STORAGE_TAG
Definition: CellSetExplicit.h:59
vtkm::cont::CellSetExplicit::PointCellIdsType
typename RConnTypes::ConnectivityType PointCellIdsType
Definition: CellSetExplicit.h:104
vtkm::cont::ArrayHandleOffsetsToNumComponents
An ArrayHandle that converts an array of offsets to an array of Vec sizes.
Definition: ArrayHandleOffsetsToNumComponents.h:127
ArrayHandleCounting.h
vtkm::cont::ArrayHandle< T, vtkm::cont::StorageTagConstant >::StorageTag
vtkm::cont::StorageTagConstant StorageTag
Definition: ArrayHandle.h:295
vtkm::TopologyElementTagCell
A tag used to identify the cell elements in a topology.
Definition: TopologyElementTag.h:24
vtkm::cont::CellSetExplicit::Internals
Definition: CellSetExplicit.h:294
VTKM_ALWAYS_EXPORT
#define VTKM_ALWAYS_EXPORT
Definition: ExportMacros.h:92
vtkm::cont::CellSetExplicit::ConnectivityChooser::Chooser
typename detail::CellSetExplicitConnectivityChooser< Thisclass, VisitTopology, IncidentTopology > Chooser
Definition: CellSetExplicit.h:82
vtkm::cont::CellSetExplicit::HasConnectivityImpl
VTKM_CONT bool HasConnectivityImpl(vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell) const
Definition: CellSetExplicit.h:271
vtkm::cont::CellSetExplicit::GetConnectivity
const VTKM_CONT CellPointIdsType & GetConnectivity(vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint) const
Definition: CellSetExplicit.h:319
ArrayHandleOffsetsToNumComponents.h
TopologyElementTag.h
VTKM_IS_DEVICE_ADAPTER_TAG
#define VTKM_IS_DEVICE_ADAPTER_TAG(tag)
Checks that the argument is a proper device adapter tag.
Definition: DeviceAdapterTag.h:164