Viskores  1.0
ThreadIndicesTopologyMap.h
Go to the documentation of this file.
1 //============================================================================
2 // The contents of this file are covered by the Viskores license. See
3 // LICENSE.txt for details.
4 //
5 // By contributing to this file, all contributors agree to the Developer
6 // Certificate of Origin Version 1.1 (DCO 1.1) as stated in DCO.txt.
7 //============================================================================
8 
9 //============================================================================
10 // Copyright (c) Kitware, Inc.
11 // All rights reserved.
12 // See LICENSE.txt for details.
13 //
14 // This software is distributed WITHOUT ANY WARRANTY; without even
15 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16 // PURPOSE. See the above copyright notice for more information.
17 //============================================================================
18 #ifndef viskores_exec_arg_ThreadIndicesTopologyMap_h
19 #define viskores_exec_arg_ThreadIndicesTopologyMap_h
20 
22 
25 
26 namespace viskores
27 {
28 namespace exec
29 {
30 namespace arg
31 {
32 
33 namespace detail
34 {
35 
38 static inline VISKORES_EXEC viskores::Id3 InflateTo3D(viskores::Id3 index)
39 {
40  return index;
41 }
42 
45 static inline VISKORES_EXEC viskores::Id3 InflateTo3D(viskores::Id2 index)
46 {
47  return viskores::Id3(index[0], index[1], 0);
48 }
49 
52 static inline VISKORES_EXEC viskores::Id3 InflateTo3D(viskores::Vec<viskores::Id, 1> index)
53 {
54  return viskores::Id3(index[0], 0, 0);
55 }
56 
59 static inline VISKORES_EXEC viskores::Id3 InflateTo3D(viskores::Id index)
60 {
61  return viskores::Id3(index, 0, 0);
62 }
63 
66 static inline VISKORES_EXEC viskores::Id3 Deflate(const viskores::Id3& index, viskores::Id3)
67 {
68  return index;
69 }
70 
73 static inline VISKORES_EXEC viskores::Id2 Deflate(const viskores::Id3& index, viskores::Id2)
74 {
75  return viskores::Id2(index[0], index[1]);
76 }
77 
78 } // namespace detail
79 
83 {
84 };
85 
89 {
90 };
91 
102 template <typename ConnectivityType, typename ScatterAndMaskMode>
104 {
106 
107 public:
108  using IndicesIncidentType = typename ConnectivityType::IndicesType;
109  using CellShapeTag = typename ConnectivityType::CellShapeTag;
110  using Connectivity = ConnectivityType;
111 
114  viskores::Id inputIndex,
115  viskores::IdComponent visitIndex,
116  viskores::Id outputIndex,
117  const ConnectivityType& connectivity)
118  : Superclass(threadIndex, inputIndex, visitIndex, outputIndex)
119  // The connectivity is stored in the invocation parameter at the given
120  // input domain index. If this class is being used correctly, the type
121  // of the domain will match the connectivity type used here. If there is
122  // a compile error here about a type mismatch, chances are a worklet has
123  // set its input domain incorrectly.
124  , IndicesIncident(connectivity.GetIndices(inputIndex))
125  , CellShape(connectivity.GetCellShape(inputIndex))
126  {
127  }
128 
137  const IndicesIncidentType& GetIndicesIncident() const { return this->IndicesIncident; }
138 
150 
159  CellShapeTag GetCellShape() const { return this->CellShape; }
160 
161 private:
164 };
165 
167 template <typename VisitTopology, typename IncidentTopology, viskores::IdComponent Dimension>
169  viskores::exec::ConnectivityStructured<VisitTopology, IncidentTopology, Dimension>,
171 {
172  using ConnectivityType =
174 
175 public:
179  using Connectivity =
181 
183  viskores::Id inputIndex,
184  viskores::IdComponent visitIndex,
185  viskores::Id outputIndex,
186  const ConnectivityType& connectivity)
187  {
188  this->ThreadIndex = threadIndex;
189  this->InputIndex = inputIndex;
190  this->VisitIndex = visitIndex;
191  this->OutputIndex = outputIndex;
192  this->LogicalIndex = connectivity.FlatToLogicalVisitIndex(this->InputIndex);
193  this->IndicesIncident = connectivity.GetIndices(this->LogicalIndex);
194  this->CellShape = connectivity.GetCellShape(this->InputIndex);
195  }
196 
198  viskores::Id threadIndex1D,
199  const ConnectivityType& connectivity)
200  {
201  // This constructor handles multidimensional indices on one-to-one input-to-output
202  auto logicalIndex = detail::Deflate(threadIndex3D, LogicalIndexType());
203  this->ThreadIndex = threadIndex1D;
204  this->LogicalIndex = logicalIndex;
205  this->IndicesIncident = connectivity.GetIndices(logicalIndex);
206  this->CellShape = connectivity.GetCellShape(threadIndex1D);
207  }
208 
210  viskores::Id threadIndex1D,
211  viskores::Id inIndex,
212  viskores::IdComponent visitIndex,
213  viskores::Id outIndex,
214  const ConnectivityType& connectivity)
215  {
216  // This constructor handles multidimensional indices on many-to-many input-to-output
217  auto logicalIndex = detail::Deflate(threadIndex3D, LogicalIndexType());
218  this->ThreadIndex = threadIndex1D;
219  this->InputIndex = inIndex;
220  this->VisitIndex = visitIndex;
221  this->OutputIndex = outIndex;
222  this->LogicalIndex = logicalIndex;
223  this->IndicesIncident = connectivity.GetIndices(logicalIndex);
224  this->CellShape = connectivity.GetCellShape(threadIndex1D);
225  }
226 
227 
235  viskores::Id GetThreadIndex() const { return this->ThreadIndex; }
236 
243  LogicalIndexType GetIndexLogical() const { return this->LogicalIndex; }
244 
252  viskores::Id GetInputIndex() const { return this->InputIndex; }
253 
260  viskores::Id3 GetInputIndex3D() const { return detail::InflateTo3D(this->GetIndexLogical()); }
261 
269  viskores::Id GetOutputIndex() const { return this->OutputIndex; }
270 
278 
287  const IndicesIncidentType& GetIndicesIncident() const { return this->IndicesIncident; }
288 
300 
309  CellShapeTag GetCellShape() const { return this->CellShape; }
310 
311 private:
319 };
320 
328 template <typename VisitTopology, typename IncidentTopology, viskores::IdComponent Dimension>
330  viskores::exec::ConnectivityStructured<VisitTopology, IncidentTopology, Dimension>,
332 {
333  using ConnectivityType =
335 
336 public:
341 
343  viskores::Id inputIndex,
345  viskores::Id viskoresNotUsed(outputIndex),
346  const ConnectivityType& connectivity)
347  {
348  this->ThreadIndex = threadIndex;
349  this->LogicalIndex = connectivity.FlatToLogicalVisitIndex(inputIndex);
350  this->IndicesIncident = connectivity.GetIndices(this->LogicalIndex);
351  this->CellShape = connectivity.GetCellShape(inputIndex);
352  }
353 
354 
355 
356 
358  viskores::Id threadIndex1D,
359  const ConnectivityType& connectivity)
360  {
361  // This constructor handles multidimensional indices on one-to-one input-to-output
362  auto logicalIndex = detail::Deflate(threadIndex3D, LogicalIndexType());
363  this->ThreadIndex = threadIndex1D;
364  this->LogicalIndex = logicalIndex;
365  this->IndicesIncident = connectivity.GetIndices(logicalIndex);
366  this->CellShape = connectivity.GetCellShape(threadIndex1D);
367  }
368 
370  viskores::Id threadIndex1D,
371  viskores::Id viskoresNotUsed(inIndex),
373  viskores::Id viskoresNotUsed(outIndex),
374  const ConnectivityType& connectivity)
375  {
376  // This constructor handles multidimensional indices on many-to-many input-to-output
377  auto logicalIndex = detail::Deflate(threadIndex3D, LogicalIndexType());
378  this->ThreadIndex = threadIndex1D;
379  this->LogicalIndex = logicalIndex;
380  this->IndicesIncident = connectivity.GetIndices(logicalIndex);
381  this->CellShape = connectivity.GetCellShape(threadIndex1D);
382  }
383 
391  viskores::Id GetThreadIndex() const { return this->ThreadIndex; }
392 
399  LogicalIndexType GetIndexLogical() const { return this->LogicalIndex; }
400 
408  viskores::Id GetInputIndex() const { return this->ThreadIndex; }
409 
416  viskores::Id3 GetInputIndex3D() const { return detail::InflateTo3D(this->GetIndexLogical()); }
417 
425  viskores::Id GetOutputIndex() const { return this->ThreadIndex; }
426 
433  viskores::IdComponent GetVisitIndex() const { return 0; }
434 
443  const IndicesIncidentType& GetIndicesIncident() const { return this->IndicesIncident; }
444 
456 
465  CellShapeTag GetCellShape() const { return this->CellShape; }
466 
467 private:
472 };
473 
474 
476 template <typename PermutationPortal, viskores::IdComponent Dimension>
479  PermutationPortal,
480  viskores::exec::ConnectivityStructured<viskores::TopologyElementTagCell,
481  viskores::TopologyElementTagPoint,
482  Dimension>>,
484 {
486  PermutationPortal,
489  Dimension>>;
492  Dimension>;
493 
494 public:
499  PermutationPortal,
502  Dimension>>;
503 
505  viskores::Id inputIndex,
506  viskores::IdComponent visitIndex,
507  viskores::Id outputIndex,
508  const PermutedConnectivityType& permutation)
509  {
510  this->ThreadIndex = threadIndex;
511  this->InputIndex = inputIndex;
512  this->VisitIndex = visitIndex;
513  this->OutputIndex = outputIndex;
514 
515  const viskores::Id permutedIndex = permutation.Portal.Get(this->InputIndex);
516  this->LogicalIndex = permutation.Connectivity.FlatToLogicalVisitIndex(permutedIndex);
517  this->IndicesIncident = permutation.Connectivity.GetIndices(this->LogicalIndex);
518  this->CellShape = permutation.Connectivity.GetCellShape(permutedIndex);
519  }
520 
528  viskores::Id GetThreadIndex() const { return this->ThreadIndex; }
529 
536  LogicalIndexType GetIndexLogical() const { return this->LogicalIndex; }
537 
545  viskores::Id GetInputIndex() const { return this->InputIndex; }
546 
553  viskores::Id3 GetInputIndex3D() const { return detail::InflateTo3D(this->GetIndexLogical()); }
554 
562  viskores::Id GetOutputIndex() const { return this->OutputIndex; }
563 
571 
580  const IndicesIncidentType& GetIndicesIncident() const { return this->IndicesIncident; }
581 
593 
602  CellShapeTag GetCellShape() const { return this->CellShape; }
603 
604 private:
612 };
613 }
614 }
615 } // namespace viskores::exec::arg
616 
617 #endif //viskores_exec_arg_ThreadIndicesTopologyMap_h
viskores::exec::arg::ThreadIndicesTopologyMap::IndicesIncidentType
typename ConnectivityType::IndicesType IndicesIncidentType
Definition: ThreadIndicesTopologyMap.h:108
viskores::exec::arg::ThreadIndicesTopologyMap::CellShapeTag
typename ConnectivityType::CellShapeTag CellShapeTag
Definition: ThreadIndicesTopologyMap.h:109
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::CellShape
CellShapeTag CellShape
Definition: ThreadIndicesTopologyMap.h:316
viskores::Id2
viskores::Vec< viskores::Id, 2 > Id2
Id2 corresponds to a 2-dimensional index.
Definition: Types.h:935
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::IndicesIncidentType
typename ConnectivityType::IndicesType IndicesIncidentType
Definition: ThreadIndicesTopologyMap.h:176
ConnectivityStructured.h
viskores::exec::ConnectivityStructured::GetCellShape
CellShapeTag GetCellShape(viskores::Id) const
Returns a tag for the cell shape associated with the element at the given index.
Definition: ConnectivityStructured.h:94
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetCellShape
CellShapeTag GetCellShape() const
The shape of the input cell.
Definition: ThreadIndicesTopologyMap.h:602
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetVisitIndex
viskores::IdComponent GetVisitIndex() const
The visit index.
Definition: ThreadIndicesTopologyMap.h:433
viskores::TopologyElementTagCell
A tag used to identify the cell elements in a topology.
Definition: TopologyElementTag.h:32
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::VisitIndex
viskores::IdComponent VisitIndex
Definition: ThreadIndicesTopologyMap.h:313
viskores::exec::arg::DefaultScatterAndMaskTag
Uses spaces optimizations when using MaskNone and ScatterIdentity.
Definition: ThreadIndicesTopologyMap.h:82
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetIndicesIncidentPointer
const IndicesIncidentType * GetIndicesIncidentPointer() const
The input indices of the incident elements in pointer form.
Definition: ThreadIndicesTopologyMap.h:455
ThreadIndicesBasic.h
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetInputIndex
viskores::Id GetInputIndex() const
The index into the input domain.
Definition: ThreadIndicesTopologyMap.h:408
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetInputIndex3D
viskores::Id3 GetInputIndex3D() const
The 3D index into the input domain.
Definition: ThreadIndicesTopologyMap.h:416
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(const viskores::Id3 &threadIndex3D, viskores::Id threadIndex1D, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:357
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::IndicesIncident
IndicesIncidentType IndicesIncident
Definition: ThreadIndicesTopologyMap.h:470
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetIndicesIncident
const IndicesIncidentType & GetIndicesIncident() const
The indices of the incident elements.
Definition: ThreadIndicesTopologyMap.h:443
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetThreadIndex
viskores::Id GetThreadIndex() const
The index of the thread or work invocation.
Definition: ThreadIndicesTopologyMap.h:235
viskoresNotUsed
#define viskoresNotUsed(parameter_name)
Simple macro to identify a parameter as unused.
Definition: ExportMacros.h:136
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::ThreadIndex
viskores::Id ThreadIndex
Definition: ThreadIndicesTopologyMap.h:312
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetInputIndex
viskores::Id GetInputIndex() const
The index into the input domain.
Definition: ThreadIndicesTopologyMap.h:545
ConnectivityPermuted.h
VISKORES_SUPPRESS_EXEC_WARNINGS
#define VISKORES_SUPPRESS_EXEC_WARNINGS
Definition: ExportMacros.h:61
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::LogicalIndex
LogicalIndexType LogicalIndex
Definition: ThreadIndicesTopologyMap.h:469
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetIndexLogical
LogicalIndexType GetIndexLogical() const
The logical index into the input domain.
Definition: ThreadIndicesTopologyMap.h:399
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::CellShapeTag
typename ConnectivityType::CellShapeTag CellShapeTag
Definition: ThreadIndicesTopologyMap.h:338
viskores::exec::arg::CellShape
The ExecutionSignature tag to use to get the cell shape.
Definition: exec/arg/CellShape.h:42
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::CellShapeTag
typename ConnectivityType::CellShapeTag CellShapeTag
Definition: ThreadIndicesTopologyMap.h:177
viskores::IdComponent
viskores::Int32 IdComponent
Base type to use to index small lists.
Definition: Types.h:202
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::LogicalIndexType
typename ConnectivityType::SchedulingRangeType LogicalIndexType
Definition: ThreadIndicesTopologyMap.h:339
viskores::exec::arg::ThreadIndicesTopologyMap::IndicesIncident
IndicesIncidentType IndicesIncident
Definition: ThreadIndicesTopologyMap.h:162
viskores::exec::arg::ThreadIndicesBasic::InputIndex
viskores::Id InputIndex
Definition: ThreadIndicesBasic.h:106
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetOutputIndex
viskores::Id GetOutputIndex() const
The index into the output domain.
Definition: ThreadIndicesTopologyMap.h:425
viskores::exec::ConnectivityStructured::IndicesType
typename Helper::IndicesType IndicesType
Type of variable that lists of incident indices will be put into.
Definition: ConnectivityStructured.h:105
viskores::exec::arg::ThreadIndicesTopologyMap
Container for thread indices in a topology map.
Definition: ThreadIndicesTopologyMap.h:103
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::LogicalIndexType
typename ConnectivityType::SchedulingRangeType LogicalIndexType
Definition: ThreadIndicesTopologyMap.h:497
viskores::exec::arg::ThreadIndicesBasic
Basic container for thread indices in a worklet invocation.
Definition: ThreadIndicesBasic.h:43
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::LogicalIndex
LogicalIndexType LogicalIndex
Definition: ThreadIndicesTopologyMap.h:609
viskores::TopologyElementTagPoint
A tag used to identify the point elements in a topology.
Definition: TopologyElementTag.h:42
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::InputIndex
viskores::Id InputIndex
Definition: ThreadIndicesTopologyMap.h:317
viskores::exec::ConnectivityPermutedVisitCellsWithPoints
Definition: ConnectivityPermuted.h:33
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetOutputIndex
viskores::Id GetOutputIndex() const
The index into the output domain.
Definition: ThreadIndicesTopologyMap.h:269
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetIndexLogical
LogicalIndexType GetIndexLogical() const
The logical index into the input domain.
Definition: ThreadIndicesTopologyMap.h:536
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(viskores::Id threadIndex, viskores::Id inputIndex, viskores::IdComponent, viskores::Id, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:342
viskores::exec::arg::ThreadIndicesBasic::ThreadIndex
viskores::Id ThreadIndex
Definition: ThreadIndicesBasic.h:105
viskores::exec::arg::VisitIndex
The ExecutionSignature tag to use to get the visit index.
Definition: VisitIndex.h:54
viskores::exec::ConnectivityStructured::CellShapeTag
typename Helper::CellShapeTag CellShapeTag
The tag representing the cell shape of the visited elements.
Definition: ConnectivityStructured.h:86
viskores::Id
viskores::Int64 Id
Base type to use to index arrays.
Definition: Types.h:235
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetThreadIndex
viskores::Id GetThreadIndex() const
The index of the thread or work invocation.
Definition: ThreadIndicesTopologyMap.h:528
viskores
Groups connected points that have the same field value.
Definition: Atomic.h:27
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::ThreadIndex
viskores::Id ThreadIndex
Definition: ThreadIndicesTopologyMap.h:468
viskores::exec::arg::OutputIndex
The ExecutionSignature tag to use to get the output index.
Definition: OutputIndex.h:52
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetIndicesIncident
const IndicesIncidentType & GetIndicesIncident() const
The indices of the incident elements.
Definition: ThreadIndicesTopologyMap.h:580
viskores::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:110
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetIndicesIncident
const IndicesIncidentType & GetIndicesIncident() const
The indices of the incident elements.
Definition: ThreadIndicesTopologyMap.h:287
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetVisitIndex
viskores::IdComponent GetVisitIndex() const
The visit index.
Definition: ThreadIndicesTopologyMap.h:570
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::IndicesIncidentType
typename ConnectivityType::IndicesType IndicesIncidentType
Definition: ThreadIndicesTopologyMap.h:337
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::OutputIndex
viskores::Id OutputIndex
Definition: ThreadIndicesTopologyMap.h:608
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(viskores::Id threadIndex, viskores::Id inputIndex, viskores::IdComponent visitIndex, viskores::Id outputIndex, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:182
viskores::exec::ConnectivityStructured::SchedulingRangeType
typename InternalsType::SchedulingRangeType SchedulingRangeType
Definition: ConnectivityStructured.h:49
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetIndexLogical
LogicalIndexType GetIndexLogical() const
The logical index into the input domain.
Definition: ThreadIndicesTopologyMap.h:243
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::IndicesIncidentType
typename ConnectivityType::IndicesType IndicesIncidentType
Definition: ThreadIndicesTopologyMap.h:495
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(const viskores::Id3 &threadIndex3D, viskores::Id threadIndex1D, viskores::Id, viskores::IdComponent, viskores::Id, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:369
viskores::exec::ConnectivityPermutedVisitCellsWithPoints::Portal
PermutationPortal Portal
Definition: ConnectivityPermuted.h:82
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetInputIndex3D
viskores::Id3 GetInputIndex3D() const
The 3D index into the input domain.
Definition: ThreadIndicesTopologyMap.h:553
viskores::exec::arg::ThreadIndicesTopologyMap::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(viskores::Id threadIndex, viskores::Id inputIndex, viskores::IdComponent visitIndex, viskores::Id outputIndex, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:113
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::LogicalIndex
LogicalIndexType LogicalIndex
Definition: ThreadIndicesTopologyMap.h:314
viskores::Id3
viskores::Vec< viskores::Id, 3 > Id3
Id3 corresponds to a 3-dimensional index for 3d arrays.
Definition: Types.h:1053
viskores::exec::arg::ThreadIndicesBasic::VisitIndex
viskores::IdComponent VisitIndex
Definition: ThreadIndicesBasic.h:108
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::CellShapeTag
typename ConnectivityType::CellShapeTag CellShapeTag
Definition: ThreadIndicesTopologyMap.h:496
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::IndicesIncident
IndicesIncidentType IndicesIncident
Definition: ThreadIndicesTopologyMap.h:610
viskores::exec::arg::ThreadIndicesBasic::OutputIndex
viskores::Id OutputIndex
Definition: ThreadIndicesBasic.h:107
viskores::exec::arg::ThreadIndicesTopologyMap::Connectivity
ConnectivityType Connectivity
Definition: ThreadIndicesTopologyMap.h:110
viskores::exec::arg::ThreadIndicesTopologyMap::CellShape
CellShapeTag CellShape
Definition: ThreadIndicesTopologyMap.h:163
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetInputIndex3D
viskores::Id3 GetInputIndex3D() const
The 3D index into the input domain.
Definition: ThreadIndicesTopologyMap.h:260
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetIndicesIncidentPointer
const IndicesIncidentType * GetIndicesIncidentPointer() const
The input indices of the incident elements in pointer form.
Definition: ThreadIndicesTopologyMap.h:299
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::LogicalIndexType
typename ConnectivityType::SchedulingRangeType LogicalIndexType
Definition: ThreadIndicesTopologyMap.h:178
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::OutputIndex
viskores::Id OutputIndex
Definition: ThreadIndicesTopologyMap.h:318
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(viskores::Id threadIndex, viskores::Id inputIndex, viskores::IdComponent visitIndex, viskores::Id outputIndex, const PermutedConnectivityType &permutation)
Definition: ThreadIndicesTopologyMap.h:504
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(const viskores::Id3 &threadIndex3D, viskores::Id threadIndex1D, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:197
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::InputIndex
viskores::Id InputIndex
Definition: ThreadIndicesTopologyMap.h:606
viskores::exec::arg::ThreadIndicesTopologyMap::GetIndicesIncidentPointer
const IndicesIncidentType * GetIndicesIncidentPointer() const
The input indices of the incident elements in pointer form.
Definition: ThreadIndicesTopologyMap.h:149
viskores::exec::arg::ThreadIndicesTopologyMap::GetCellShape
CellShapeTag GetCellShape() const
The shape of the input cell.
Definition: ThreadIndicesTopologyMap.h:159
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetInputIndex
viskores::Id GetInputIndex() const
The index into the input domain.
Definition: ThreadIndicesTopologyMap.h:252
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::IndicesIncident
IndicesIncidentType IndicesIncident
Definition: ThreadIndicesTopologyMap.h:315
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetOutputIndex
viskores::Id GetOutputIndex() const
The index into the output domain.
Definition: ThreadIndicesTopologyMap.h:562
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetCellShape
CellShapeTag GetCellShape() const
The shape of the input cell.
Definition: ThreadIndicesTopologyMap.h:309
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetCellShape
CellShapeTag GetCellShape() const
The shape of the input cell.
Definition: ThreadIndicesTopologyMap.h:465
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::CellShape
CellShapeTag CellShape
Definition: ThreadIndicesTopologyMap.h:471
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::VisitIndex
viskores::IdComponent VisitIndex
Definition: ThreadIndicesTopologyMap.h:607
viskores::exec::arg::CustomScatterOrMaskTag
Used for when not using MaskNone and ScatterIdentity.
Definition: ThreadIndicesTopologyMap.h:88
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::GetVisitIndex
viskores::IdComponent GetVisitIndex() const
The visit index.
Definition: ThreadIndicesTopologyMap.h:277
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::GetIndicesIncidentPointer
const IndicesIncidentType * GetIndicesIncidentPointer() const
The input indices of the incident elements in pointer form.
Definition: ThreadIndicesTopologyMap.h:592
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::CellShape
CellShapeTag CellShape
Definition: ThreadIndicesTopologyMap.h:611
viskores::exec::ConnectivityStructured::FlatToLogicalVisitIndex
SchedulingRangeType FlatToLogicalVisitIndex(viskores::Id flatVisitIndex) const
Convenience method that converts a flat, 1D index to the visited elements to a viskores::Vec containi...
Definition: ConnectivityStructured.h:117
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, DefaultScatterAndMaskTag >::GetThreadIndex
viskores::Id GetThreadIndex() const
The index of the thread or work invocation.
Definition: ThreadIndicesTopologyMap.h:391
viskores::Vec< viskores::Id, 3 >
viskores::exec::ConnectivityStructured
A class holding information about topology connections.
Definition: ConnectivityStructured.h:38
VISKORES_EXEC
#define VISKORES_EXEC
Definition: ExportMacros.h:59
viskores::exec::ConnectivityPermutedVisitCellsWithPoints::Connectivity
OriginalConnectivity Connectivity
Definition: ConnectivityPermuted.h:83
viskores::exec::arg::ThreadIndicesTopologyMap::GetIndicesIncident
const IndicesIncidentType & GetIndicesIncident() const
The indices of the incident elements.
Definition: ThreadIndicesTopologyMap.h:137
viskores::exec::arg::InputIndex
The ExecutionSignature tag to use to get the input index.
Definition: InputIndex.h:51
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityStructured< VisitTopology, IncidentTopology, Dimension >, CustomScatterOrMaskTag >::ThreadIndicesTopologyMap
ThreadIndicesTopologyMap(const viskores::Id3 &threadIndex3D, viskores::Id threadIndex1D, viskores::Id inIndex, viskores::IdComponent visitIndex, viskores::Id outIndex, const ConnectivityType &connectivity)
Definition: ThreadIndicesTopologyMap.h:209
viskores::exec::arg::ThreadIndicesTopologyMap< viskores::exec::ConnectivityPermutedVisitCellsWithPoints< PermutationPortal, viskores::exec::ConnectivityStructured< viskores::TopologyElementTagCell, viskores::TopologyElementTagPoint, Dimension > >, CustomScatterOrMaskTag >::ThreadIndex
viskores::Id ThreadIndex
Definition: ThreadIndicesTopologyMap.h:605