VTK-m  2.2
ThreadIndicesTopologyMap.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_exec_arg_ThreadIndicesTopologyMap_h
11 #define vtk_m_exec_arg_ThreadIndicesTopologyMap_h
12 
14 
17 
18 namespace vtkm
19 {
20 namespace exec
21 {
22 namespace arg
23 {
24 
25 namespace detail
26 {
27 
30 static inline VTKM_EXEC vtkm::Id3 InflateTo3D(vtkm::Id3 index)
31 {
32  return index;
33 }
34 
37 static inline VTKM_EXEC vtkm::Id3 InflateTo3D(vtkm::Id2 index)
38 {
39  return vtkm::Id3(index[0], index[1], 0);
40 }
41 
44 static inline VTKM_EXEC vtkm::Id3 InflateTo3D(vtkm::Vec<vtkm::Id, 1> index)
45 {
46  return vtkm::Id3(index[0], 0, 0);
47 }
48 
51 static inline VTKM_EXEC vtkm::Id3 InflateTo3D(vtkm::Id index)
52 {
53  return vtkm::Id3(index, 0, 0);
54 }
55 
58 static inline VTKM_EXEC vtkm::Id3 Deflate(const vtkm::Id3& index, vtkm::Id3)
59 {
60  return index;
61 }
62 
65 static inline VTKM_EXEC vtkm::Id2 Deflate(const vtkm::Id3& index, vtkm::Id2)
66 {
67  return vtkm::Id2(index[0], index[1]);
68 }
69 
70 } // namespace detail
71 
75 {
76 };
77 
81 {
82 };
83 
94 template <typename ConnectivityType, typename ScatterAndMaskMode>
96 {
98 
99 public:
100  using IndicesIncidentType = typename ConnectivityType::IndicesType;
101  using CellShapeTag = typename ConnectivityType::CellShapeTag;
102  using Connectivity = ConnectivityType;
103 
106  vtkm::Id inputIndex,
107  vtkm::IdComponent visitIndex,
108  vtkm::Id outputIndex,
109  const ConnectivityType& connectivity)
110  : Superclass(threadIndex, inputIndex, visitIndex, outputIndex)
111  // The connectivity is stored in the invocation parameter at the given
112  // input domain index. If this class is being used correctly, the type
113  // of the domain will match the connectivity type used here. If there is
114  // a compile error here about a type mismatch, chances are a worklet has
115  // set its input domain incorrectly.
116  , IndicesIncident(connectivity.GetIndices(inputIndex))
117  , CellShape(connectivity.GetCellShape(inputIndex))
118  {
119  }
120 
128  VTKM_EXEC
129  const IndicesIncidentType& GetIndicesIncident() const { return this->IndicesIncident; }
130 
140  VTKM_EXEC
142 
150  VTKM_EXEC
151  CellShapeTag GetCellShape() const { return this->CellShape; }
152 
153 private:
156 };
157 
159 template <typename VisitTopology, typename IncidentTopology, vtkm::IdComponent Dimension>
161  vtkm::exec::ConnectivityStructured<VisitTopology, IncidentTopology, Dimension>,
163 {
164  using ConnectivityType =
166 
167 public:
171  using Connectivity =
173 
175  vtkm::Id inputIndex,
176  vtkm::IdComponent visitIndex,
177  vtkm::Id outputIndex,
178  const ConnectivityType& connectivity)
179  {
180  this->ThreadIndex = threadIndex;
181  this->InputIndex = inputIndex;
182  this->VisitIndex = visitIndex;
183  this->OutputIndex = outputIndex;
184  this->LogicalIndex = connectivity.FlatToLogicalVisitIndex(this->InputIndex);
185  this->IndicesIncident = connectivity.GetIndices(this->LogicalIndex);
186  this->CellShape = connectivity.GetCellShape(this->InputIndex);
187  }
188 
190  vtkm::Id threadIndex1D,
191  const ConnectivityType& connectivity)
192  {
193  // This constructor handles multidimensional indices on one-to-one input-to-output
194  auto logicalIndex = detail::Deflate(threadIndex3D, LogicalIndexType());
195  this->ThreadIndex = threadIndex1D;
196  this->LogicalIndex = logicalIndex;
197  this->IndicesIncident = connectivity.GetIndices(logicalIndex);
198  this->CellShape = connectivity.GetCellShape(threadIndex1D);
199  }
200 
202  vtkm::Id threadIndex1D,
203  vtkm::Id inIndex,
204  vtkm::IdComponent visitIndex,
205  vtkm::Id outIndex,
206  const ConnectivityType& connectivity)
207  {
208  // This constructor handles multidimensional indices on many-to-many input-to-output
209  auto logicalIndex = detail::Deflate(threadIndex3D, LogicalIndexType());
210  this->ThreadIndex = threadIndex1D;
211  this->InputIndex = inIndex;
212  this->VisitIndex = visitIndex;
213  this->OutputIndex = outIndex;
214  this->LogicalIndex = logicalIndex;
215  this->IndicesIncident = connectivity.GetIndices(logicalIndex);
216  this->CellShape = connectivity.GetCellShape(threadIndex1D);
217  }
218 
219 
226  VTKM_EXEC
227  vtkm::Id GetThreadIndex() const { return this->ThreadIndex; }
228 
234  VTKM_EXEC
235  LogicalIndexType GetIndexLogical() const { return this->LogicalIndex; }
236 
243  VTKM_EXEC
244  vtkm::Id GetInputIndex() const { return this->InputIndex; }
245 
251  VTKM_EXEC
252  vtkm::Id3 GetInputIndex3D() const { return detail::InflateTo3D(this->GetIndexLogical()); }
253 
260  VTKM_EXEC
261  vtkm::Id GetOutputIndex() const { return this->OutputIndex; }
262 
268  VTKM_EXEC
269  vtkm::IdComponent GetVisitIndex() const { return this->VisitIndex; }
270 
278  VTKM_EXEC
279  const IndicesIncidentType& GetIndicesIncident() const { return this->IndicesIncident; }
280 
290  VTKM_EXEC
292 
300  VTKM_EXEC
301  CellShapeTag GetCellShape() const { return this->CellShape; }
302 
303 private:
311 };
312 
320 template <typename VisitTopology, typename IncidentTopology, vtkm::IdComponent Dimension>
322  vtkm::exec::ConnectivityStructured<VisitTopology, IncidentTopology, Dimension>,
324 {
325  using ConnectivityType =
327 
328 public:
333 
335  vtkm::Id inputIndex,
336  vtkm::IdComponent vtkmNotUsed(visitIndex),
337  vtkm::Id vtkmNotUsed(outputIndex),
338  const ConnectivityType& connectivity)
339  {
340  this->ThreadIndex = threadIndex;
341  this->LogicalIndex = connectivity.FlatToLogicalVisitIndex(inputIndex);
342  this->IndicesIncident = connectivity.GetIndices(this->LogicalIndex);
343  this->CellShape = connectivity.GetCellShape(inputIndex);
344  }
345 
346 
347 
348 
350  vtkm::Id threadIndex1D,
351  const ConnectivityType& connectivity)
352  {
353  // This constructor handles multidimensional indices on one-to-one input-to-output
354  auto logicalIndex = detail::Deflate(threadIndex3D, LogicalIndexType());
355  this->ThreadIndex = threadIndex1D;
356  this->LogicalIndex = logicalIndex;
357  this->IndicesIncident = connectivity.GetIndices(logicalIndex);
358  this->CellShape = connectivity.GetCellShape(threadIndex1D);
359  }
360 
362  vtkm::Id threadIndex1D,
363  vtkm::Id vtkmNotUsed(inIndex),
364  vtkm::IdComponent vtkmNotUsed(visitIndex),
365  vtkm::Id vtkmNotUsed(outIndex),
366  const ConnectivityType& connectivity)
367  {
368  // This constructor handles multidimensional indices on many-to-many input-to-output
369  auto logicalIndex = detail::Deflate(threadIndex3D, LogicalIndexType());
370  this->ThreadIndex = threadIndex1D;
371  this->LogicalIndex = logicalIndex;
372  this->IndicesIncident = connectivity.GetIndices(logicalIndex);
373  this->CellShape = connectivity.GetCellShape(threadIndex1D);
374  }
375 
382  VTKM_EXEC
383  vtkm::Id GetThreadIndex() const { return this->ThreadIndex; }
384 
390  VTKM_EXEC
391  LogicalIndexType GetIndexLogical() const { return this->LogicalIndex; }
392 
399  VTKM_EXEC
400  vtkm::Id GetInputIndex() const { return this->ThreadIndex; }
401 
407  VTKM_EXEC
408  vtkm::Id3 GetInputIndex3D() const { return detail::InflateTo3D(this->GetIndexLogical()); }
409 
416  VTKM_EXEC
417  vtkm::Id GetOutputIndex() const { return this->ThreadIndex; }
418 
424  VTKM_EXEC
425  vtkm::IdComponent GetVisitIndex() const { return 0; }
426 
434  VTKM_EXEC
435  const IndicesIncidentType& GetIndicesIncident() const { return this->IndicesIncident; }
436 
446  VTKM_EXEC
448 
456  VTKM_EXEC
457  CellShapeTag GetCellShape() const { return this->CellShape; }
458 
459 private:
464 };
465 
466 
468 template <typename PermutationPortal, vtkm::IdComponent Dimension>
470  PermutationPortal,
471  vtkm::exec::ConnectivityStructured<vtkm::TopologyElementTagCell,
472  vtkm::TopologyElementTagPoint,
473  Dimension>>,
475 {
477  PermutationPortal,
480  Dimension>>;
481  using ConnectivityType = vtkm::exec::
482  ConnectivityStructured<vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension>;
483 
484 public:
489  PermutationPortal,
492  Dimension>>;
493 
495  vtkm::Id inputIndex,
496  vtkm::IdComponent visitIndex,
497  vtkm::Id outputIndex,
498  const PermutedConnectivityType& permutation)
499  {
500  this->ThreadIndex = threadIndex;
501  this->InputIndex = inputIndex;
502  this->VisitIndex = visitIndex;
503  this->OutputIndex = outputIndex;
504 
505  const vtkm::Id permutedIndex = permutation.Portal.Get(this->InputIndex);
506  this->LogicalIndex = permutation.Connectivity.FlatToLogicalVisitIndex(permutedIndex);
507  this->IndicesIncident = permutation.Connectivity.GetIndices(this->LogicalIndex);
508  this->CellShape = permutation.Connectivity.GetCellShape(permutedIndex);
509  }
510 
517  VTKM_EXEC
518  vtkm::Id GetThreadIndex() const { return this->ThreadIndex; }
519 
525  VTKM_EXEC
526  LogicalIndexType GetIndexLogical() const { return this->LogicalIndex; }
527 
534  VTKM_EXEC
535  vtkm::Id GetInputIndex() const { return this->InputIndex; }
536 
542  VTKM_EXEC
543  vtkm::Id3 GetInputIndex3D() const { return detail::InflateTo3D(this->GetIndexLogical()); }
544 
551  VTKM_EXEC
552  vtkm::Id GetOutputIndex() const { return this->OutputIndex; }
553 
559  VTKM_EXEC
560  vtkm::IdComponent GetVisitIndex() const { return this->VisitIndex; }
561 
569  VTKM_EXEC
570  const IndicesIncidentType& GetIndicesIncident() const { return this->IndicesIncident; }
571 
581  VTKM_EXEC
583 
591  VTKM_EXEC
592  CellShapeTag GetCellShape() const { return this->CellShape; }
593 
594 private:
602 };
603 }
604 }
605 } // namespace vtkm::exec::arg
606 
607 #endif //vtk_m_exec_arg_ThreadIndicesTopologyMap_h
vtkm::TopologyElementTagPoint
A tag used to identify the point elements in a topology.
Definition: TopologyElementTag.h:34
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetVisitIndex
vtkm::IdComponent GetVisitIndex() const
The visit index.
Definition: ThreadIndicesTopologyMap.h:560
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(const vtkm::Id3 &threadIndex3D, vtkm::Id threadIndex1D, vtkm::Id inIndex, vtkm::IdComponent visitIndex, vtkm::Id outIndex, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:201
ConnectivityStructured.h
vtkm::exec::arg::ThreadIndicesTopologyMap::IndicesIncidentType
typename ConnectivityType::IndicesType IndicesIncidentType
Definition: ThreadIndicesTopologyMap.h:100
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::IndicesIncident
IndicesIncidentType IndicesIncident
Definition: ThreadIndicesTopologyMap.h:462
VTKM_EXEC
#define VTKM_EXEC
Definition: ExportMacros.h:51
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetInputIndex
vtkm::Id GetInputIndex() const
The index into the input domain.
Definition: ThreadIndicesTopologyMap.h:535
vtkm
Groups connected points that have the same field value.
Definition: Atomic.h:19
ThreadIndicesBasic.h
vtkm::exec::arg::ThreadIndicesBasic
Basic container for thread indices in a worklet invocation.
Definition: ThreadIndicesBasic.h:35
vtkm::exec::arg::ThreadIndicesBasic::ThreadIndex
vtkm::Id ThreadIndex
Definition: ThreadIndicesBasic.h:97
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetIndexLogical
LogicalIndexType GetIndexLogical() const
The logical index into the input domain.
Definition: ThreadIndicesTopologyMap.h:526
vtkm::IdComponent
vtkm::Int32 IdComponent
Base type to use to index small lists.
Definition: Types.h:194
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetCellShape
CellShapeTag GetCellShape() const
The shape of the input cell.
Definition: ThreadIndicesTopologyMap.h:301
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::CellShapeTag
typename ConnectivityType::CellShapeTag CellShapeTag
Definition: ThreadIndicesTopologyMap.h:330
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetIndicesIncident
const IndicesIncidentType & GetIndicesIncident() const
The indices of the incident elements.
Definition: ThreadIndicesTopologyMap.h:435
vtkm::exec::arg::ThreadIndicesTopologyMap::IndicesIncident
IndicesIncidentType IndicesIncident
Definition: ThreadIndicesTopologyMap.h:154
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::CellShapeTag
typename ConnectivityType::CellShapeTag CellShapeTag
Definition: ThreadIndicesTopologyMap.h:486
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(vtkm::Id threadIndex, vtkm::Id inputIndex, vtkm::IdComponent visitIndex, vtkm::Id outputIndex, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:174
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetVisitIndex
vtkm::IdComponent GetVisitIndex() const
The visit index.
Definition: ThreadIndicesTopologyMap.h:425
vtkm::exec::arg::ThreadIndicesTopologyMap::Connectivity
ConnectivityType Connectivity
Definition: ThreadIndicesTopologyMap.h:102
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetOutputIndex
vtkm::Id GetOutputIndex() const
The index into the output domain.
Definition: ThreadIndicesTopologyMap.h:417
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetThreadIndex
vtkm::Id GetThreadIndex() const
The index of the thread or work invocation.
Definition: ThreadIndicesTopologyMap.h:518
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetInputIndex3D
vtkm::Id3 GetInputIndex3D() const
The 3D index into the input domain.
Definition: ThreadIndicesTopologyMap.h:252
ConnectivityPermuted.h
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::InputIndex
vtkm::Id InputIndex
Definition: ThreadIndicesTopologyMap.h:596
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::LogicalIndexType
typename ConnectivityType::SchedulingRangeType LogicalIndexType
Definition: ThreadIndicesTopologyMap.h:170
vtkm::exec::arg::ThreadIndicesTopologyMap::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(vtkm::Id threadIndex, vtkm::Id inputIndex, vtkm::IdComponent visitIndex, vtkm::Id outputIndex, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:105
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetCellShape
CellShapeTag GetCellShape() const
The shape of the input cell.
Definition: ThreadIndicesTopologyMap.h:457
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::CellShapeTag
typename ConnectivityType::CellShapeTag CellShapeTag
Definition: ThreadIndicesTopologyMap.h:169
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::InputIndex
vtkm::Id InputIndex
Definition: ThreadIndicesTopologyMap.h:309
vtkm::exec::arg::OutputIndex
The ExecutionSignature tag to use to get the output index.
Definition: OutputIndex.h:44
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::VisitIndex
vtkm::IdComponent VisitIndex
Definition: ThreadIndicesTopologyMap.h:597
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::LogicalIndex
LogicalIndexType LogicalIndex
Definition: ThreadIndicesTopologyMap.h:306
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::ThreadIndex
vtkm::Id ThreadIndex
Definition: ThreadIndicesTopologyMap.h:595
vtkm::exec::arg::ThreadIndicesTopologyMap::GetIndicesIncidentPointer
const IndicesIncidentType * GetIndicesIncidentPointer() const
The input indices of the incident elements in pointer form.
Definition: ThreadIndicesTopologyMap.h:141
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::LogicalIndexType
typename ConnectivityType::SchedulingRangeType LogicalIndexType
Definition: ThreadIndicesTopologyMap.h:331
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetOutputIndex
vtkm::Id GetOutputIndex() const
The index into the output domain.
Definition: ThreadIndicesTopologyMap.h:261
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetIndicesIncident
const IndicesIncidentType & GetIndicesIncident() const
The indices of the incident elements.
Definition: ThreadIndicesTopologyMap.h:570
vtkm::exec::arg::ThreadIndicesBasic::VisitIndex
vtkm::IdComponent VisitIndex
Definition: ThreadIndicesBasic.h:100
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::LogicalIndex
LogicalIndexType LogicalIndex
Definition: ThreadIndicesTopologyMap.h:461
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetInputIndex
vtkm::Id GetInputIndex() const
The index into the input domain.
Definition: ThreadIndicesTopologyMap.h:400
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::LogicalIndexType
typename ConnectivityType::SchedulingRangeType LogicalIndexType
Definition: ThreadIndicesTopologyMap.h:487
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::IndicesIncidentType
typename ConnectivityType::IndicesType IndicesIncidentType
Definition: ThreadIndicesTopologyMap.h:485
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(const vtkm::Id3 &threadIndex3D, vtkm::Id threadIndex1D, vtkm::Id, vtkm::IdComponent, vtkm::Id, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:361
vtkm::exec::arg::ThreadIndicesTopologyMap::GetIndicesIncident
const IndicesIncidentType & GetIndicesIncident() const
The indices of the incident elements.
Definition: ThreadIndicesTopologyMap.h:129
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(const vtkm::Id3 &threadIndex3D, vtkm::Id threadIndex1D, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:189
vtkm::exec::ConnectivityStructured::SchedulingRangeType
typename InternalsType::SchedulingRangeType SchedulingRangeType
Definition: ConnectivityStructured.h:41
vtkm::exec::ConnectivityPermutedVisitCellsWithPoints::Connectivity
OriginalConnectivity Connectivity
Definition: ConnectivityPermuted.h:75
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::IndicesIncidentType
typename ConnectivityType::IndicesType IndicesIncidentType
Definition: ThreadIndicesTopologyMap.h:329
vtkm::exec::ConnectivityStructured::CellShapeTag
typename Helper::CellShapeTag CellShapeTag
The tag representing the cell shape of the visited elements.
Definition: ConnectivityStructured.h:78
vtkm::exec::ConnectivityStructured::GetCellShape
CellShapeTag GetCellShape(vtkm::Id) const
Returns a tag for the cell shape associated with the element at the given index.
Definition: ConnectivityStructured.h:86
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::VisitIndex
vtkm::IdComponent VisitIndex
Definition: ThreadIndicesTopologyMap.h:305
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::CellShape
CellShapeTag CellShape
Definition: ThreadIndicesTopologyMap.h:308
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetThreadIndex
vtkm::Id GetThreadIndex() const
The index of the thread or work invocation.
Definition: ThreadIndicesTopologyMap.h:227
vtkm::Id
vtkm::Int64 Id
Base type to use to index arrays.
Definition: Types.h:227
vtkm::exec::arg::ThreadIndicesTopologyMap::GetCellShape
CellShapeTag GetCellShape() const
The shape of the input cell.
Definition: ThreadIndicesTopologyMap.h:151
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetCellShape
CellShapeTag GetCellShape() const
The shape of the input cell.
Definition: ThreadIndicesTopologyMap.h:592
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(vtkm::Id threadIndex, vtkm::Id inputIndex, vtkm::IdComponent, vtkm::Id, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:334
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::CellShape
CellShapeTag CellShape
Definition: ThreadIndicesTopologyMap.h:601
vtkmNotUsed
#define vtkmNotUsed(parameter_name)
Simple macro to identify a parameter as unused.
Definition: ExportMacros.h:128
vtkm::Id3
vtkm::Vec< vtkm::Id, 3 > Id3
Id3 corresponds to a 3-dimensional index for 3d arrays.
Definition: Types.h:1041
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetInputIndex3D
vtkm::Id3 GetInputIndex3D() const
The 3D index into the input domain.
Definition: ThreadIndicesTopologyMap.h:543
vtkm::exec::arg::ThreadIndicesTopologyMap::CellShapeTag
typename ConnectivityType::CellShapeTag CellShapeTag
Definition: ThreadIndicesTopologyMap.h:101
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetIndicesIncidentPointer
const IndicesIncidentType * GetIndicesIncidentPointer() const
The input indices of the incident elements in pointer form.
Definition: ThreadIndicesTopologyMap.h:291
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::IndicesIncidentType
typename ConnectivityType::IndicesType IndicesIncidentType
Definition: ThreadIndicesTopologyMap.h:168
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(vtkm::Id threadIndex, vtkm::Id inputIndex, vtkm::IdComponent visitIndex, vtkm::Id outputIndex, const PermutedConnectivityType &permutation)
Definition: ThreadIndicesTopologyMap.h:494
vtkm::exec::ConnectivityStructured
A class holding information about topology connections.
Definition: ConnectivityStructured.h:30
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::ThreadIndex
vtkm::Id ThreadIndex
Definition: ThreadIndicesTopologyMap.h:304
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::IndicesIncident
IndicesIncidentType IndicesIncident
Definition: ThreadIndicesTopologyMap.h:307
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::LogicalIndex
LogicalIndexType LogicalIndex
Definition: ThreadIndicesTopologyMap.h:599
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetIndicesIncidentPointer
const IndicesIncidentType * GetIndicesIncidentPointer() const
The input indices of the incident elements in pointer form.
Definition: ThreadIndicesTopologyMap.h:582
vtkm::Vec< vtkm::Id, 3 >
vtkm::exec::arg::CustomScatterOrMaskTag
Used for when not using MaskNone and ScatterIdentity.
Definition: ThreadIndicesTopologyMap.h:80
vtkm::exec::arg::CellShape
The ExecutionSignature tag to use to get the cell shape.
Definition: exec/arg/CellShape.h:34
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetIndicesIncidentPointer
const IndicesIncidentType * GetIndicesIncidentPointer() const
The input indices of the incident elements in pointer form.
Definition: ThreadIndicesTopologyMap.h:447
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetVisitIndex
vtkm::IdComponent GetVisitIndex() const
The visit index.
Definition: ThreadIndicesTopologyMap.h:269
vtkm::exec::arg::ThreadIndicesBasic::OutputIndex
vtkm::Id OutputIndex
Definition: ThreadIndicesBasic.h:99
vtkm::exec::ConnectivityStructured::IndicesType
typename Helper::IndicesType IndicesType
Type of variable that lists of incident indices will be put into.
Definition: ConnectivityStructured.h:97
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::OutputIndex
vtkm::Id OutputIndex
Definition: ThreadIndicesTopologyMap.h:310
vtkm::exec::arg::ThreadIndicesBasic::InputIndex
vtkm::Id InputIndex
Definition: ThreadIndicesBasic.h:98
vtkm::exec::ConnectivityPermutedVisitCellsWithPoints::Portal
PermutationPortal Portal
Definition: ConnectivityPermuted.h:74
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::CellShape
CellShapeTag CellShape
Definition: ThreadIndicesTopologyMap.h:463
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetThreadIndex
vtkm::Id GetThreadIndex() const
The index of the thread or work invocation.
Definition: ThreadIndicesTopologyMap.h:383
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetOutputIndex
vtkm::Id GetOutputIndex() const
The index into the output domain.
Definition: ThreadIndicesTopologyMap.h:552
vtkm::TopologyElementTagCell
A tag used to identify the cell elements in a topology.
Definition: TopologyElementTag.h:24
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetIndicesIncident
const IndicesIncidentType & GetIndicesIncident() const
The indices of the incident elements.
Definition: ThreadIndicesTopologyMap.h:279
vtkm::exec::ConnectivityStructured::FlatToLogicalVisitIndex
SchedulingRangeType FlatToLogicalVisitIndex(vtkm::Id flatVisitIndex) const
Convenience method that converts a flat, 1D index to the visited elements to a vtkm::Vec containing t...
Definition: ConnectivityStructured.h:109
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::OutputIndex
vtkm::Id OutputIndex
Definition: ThreadIndicesTopologyMap.h:598
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetIndexLogical
LogicalIndexType GetIndexLogical() const
The logical index into the input domain.
Definition: ThreadIndicesTopologyMap.h:391
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(const vtkm::Id3 &threadIndex3D, vtkm::Id threadIndex1D, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:349
vtkm::exec::arg::VisitIndex
The ExecutionSignature tag to use to get the visit index.
Definition: VisitIndex.h:46
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::ThreadIndex
vtkm::Id ThreadIndex
Definition: ThreadIndicesTopologyMap.h:460
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, vtkm::exec::ConnectivityStructured< vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::IndicesIncident
IndicesIncidentType IndicesIncident
Definition: ThreadIndicesTopologyMap.h:600
vtkm::exec::arg::InputIndex
The ExecutionSignature tag to use to get the input index.
Definition: InputIndex.h:43
VTKM_SUPPRESS_EXEC_WARNINGS
#define VTKM_SUPPRESS_EXEC_WARNINGS
Definition: ExportMacros.h:53
vtkm::exec::arg::ThreadIndicesTopologyMap
Container for thread indices in a topology map.
Definition: ThreadIndicesTopologyMap.h:95
vtkm::exec::arg::ThreadIndicesTopologyMap::CellShape
CellShapeTag CellShape
Definition: ThreadIndicesTopologyMap.h:155
vtkm::exec::ConnectivityPermutedVisitCellsWithPoints
Definition: ConnectivityPermuted.h:25
vtkm::exec::arg::DefaultScatterAndMaskTag
Uses spaces optimizations when using MaskNone and ScatterIdentity.
Definition: ThreadIndicesTopologyMap.h:74
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetInputIndex3D
vtkm::Id3 GetInputIndex3D() const
The 3D index into the input domain.
Definition: ThreadIndicesTopologyMap.h:408
vtkm::exec::ConnectivityStructured::GetIndices
IndicesType GetIndices(const IndexType &index) const
Provides the indices of all elements incident to the visit element of the provided index.
Definition: ConnectivityStructured.h:102
vtkm::Id2
vtkm::Vec< vtkm::Id, 2 > Id2
Id2 corresponds to a 2-dimensional index.
Definition: Types.h:923
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetInputIndex
vtkm::Id GetInputIndex() const
The index into the input domain.
Definition: ThreadIndicesTopologyMap.h:244
vtkm::exec::arg::ThreadIndicesTopologyMap< vtkm::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetIndexLogical
LogicalIndexType GetIndexLogical() const
The logical index into the input domain.
Definition: ThreadIndicesTopologyMap.h:235