Go to the documentation of this file.
10 #ifndef vtk_m_worklet_WorkletMapTopology_h
11 #define vtk_m_worklet_WorkletMapTopology_h
44 template <
typename WorkletType>
45 class DispatcherMapTopology;
50 struct WorkletMapTopologyBase : vtkm::worklet::internal::WorkletBase
52 template <
typename Worklet>
70 template <
typename VisitTopology,
typename Inc
identTopology>
165 template <
typename OutToInArrayType,
166 typename VisitArrayType,
167 typename ThreadToOutArrayType,
168 typename InputDomainType>
172 const OutToInArrayType& outToIn,
173 const VisitArrayType& visit,
174 const ThreadToOutArrayType& threadToOut,
175 const InputDomainType& connectivity)
const
177 const vtkm::Id outIndex = threadToOut.Get(threadIndex);
180 threadIndex, outToIn.Get(outIndex), visit.Get(outIndex), outIndex, connectivity);
191 std::is_same<ScatterType, vtkm::worklet::ScatterIdentity>::value;
192 static constexpr
bool IsMaskNone = std::is_same<MaskType, vtkm::worklet::MaskNone>::value;
194 template <
bool Cond,
typename ReturnType>
200 template <
typename OutToInArrayType,
201 typename VisitArrayType,
202 typename ThreadToOutArrayType,
203 typename InputDomainType,
214 const ThreadToOutArrayType&
vtkmNotUsed(threadToOut),
215 const InputDomainType& connectivity)
const
219 threadIndex3D, threadIndex1D, connectivity);
224 template <
typename OutToInArrayType,
225 typename VisitArrayType,
226 typename ThreadToOutArrayType,
227 typename InputDomainType,
236 const OutToInArrayType& outToIn,
237 const VisitArrayType& visit,
238 const ThreadToOutArrayType& threadToOut,
239 const InputDomainType& connectivity)
const
241 const vtkm::Id outIndex = threadToOut.Get(threadIndex1D);
246 outToIn.Get(outIndex),
256 :
public WorkletMapTopology<vtkm::TopologyElementTagCell, vtkm::TopologyElementTagPoint>
275 :
public WorkletMapTopology<vtkm::TopologyElementTagPoint, vtkm::TopologyElementTagCell>
294 #endif //vtk_m_worklet_WorkletMapTopology_h
A control signature tag for output fields.
Definition: WorkletMapTopology.h:102
A tag used to identify the point elements in a topology.
Definition: TopologyElementTag.h:34
A control signature tag for input connectivity.
Definition: WorkletMapTopology.h:121
#define VTKM_EXEC
Definition: ExportMacros.h:51
Groups connected points that have the same field value.
Definition: Atomic.h:19
static constexpr bool IsScatterIdentity
In the remaining methods and constexpr we determine at compilation time which method definition will ...
Definition: WorkletMapTopology.h:190
A control signature tag for input fields from the incident topology.
Definition: WorkletMapTopology.h:90
FieldInIncident FieldInCell
Definition: WorkletMapTopology.h:278
IncidentElementCount PointCount
Definition: WorkletMapTopology.h:267
Fetch tag for getting array values determined by topology connections.
Definition: FetchTagArrayTopologyMapIn.h:40
Fetch tag for getting topology information.
Definition: FetchTagCellSetIn.h:29
Fetch tag for setting array values with direct indexing.
Definition: FetchTagArrayDirectOut.h:29
Transport tag for input arrays in topology maps.
Definition: TransportTagTopologyFieldIn.h:36
The Array type check passes for any object that behaves like an ArrayHandle class and can be passed t...
Definition: TypeCheckTagArrayOut.h:31
Transport tag for in-place arrays.
Definition: TransportTagArrayInOut.h:33
Transport tag for output arrays.
Definition: TransportTagArrayOut.h:32
IncidentElementIndices PointIndices
Definition: WorkletMapTopology.h:269
Transport tag for input arrays.
Definition: TransportTagCellSetIn.h:32
A control signature tag for input fields from the visited topology.
Definition: WorkletMapTopology.h:80
vtkm::Int32 Id
Represents an ID (index into arrays).
Definition: Types.h:191
An execution signature tag for getting the cell shape.
Definition: WorkletMapTopology.h:132
An execution signature tag to get the indices of from elements.
Definition: WorkletMapTopology.h:158
The Array type check passes for any object that behaves like an ArrayHandle class and can be passed t...
Definition: TypeCheckTagArrayInOut.h:31
The ExecutionSignature tag to get the number of incident elements.
Definition: IncidentElementCount.h:40
The Array type check passes for any object that behaves like an ArrayHandle class and can be passed t...
Definition: TypeCheckTagArrayIn.h:31
A control signature tag for input-output (in-place) fields from the visited topology.
Definition: WorkletMapTopology.h:112
An execution signature tag to get the number of incident elements.
Definition: WorkletMapTopology.h:145
IncidentElementCount CellCount
Definition: WorkletMapTopology.h:286
VTKM_SUPPRESS_EXEC_WARNINGS VTKM_EXEC vtkm::exec::arg::ThreadIndicesTopologyMap< InputDomainType, vtkm::exec::arg::CustomScatterOrMaskTag > GetThreadIndices(vtkm::Id threadIndex, const OutToInArrayType &outToIn, const VisitArrayType &visit, const ThreadToOutArrayType &threadToOut, const InputDomainType &connectivity) const
Topology map worklets use topology map indices.
Definition: WorkletMapTopology.h:171
Base class for worklets that map from Cells to Points.
Definition: WorkletMapTopology.h:274
Fetch tag for getting array values with direct indexing.
Definition: FetchTagArrayDirectIn.h:29
static constexpr bool IsMaskNone
Definition: WorkletMapTopology.h:192
Dispatcher for worklets that inherit from WorkletMapTopology.
Definition: DispatcherMapTopology.h:31
Base class for worklets that map from Points to Cells.
Definition: WorkletMapTopology.h:255
FieldInIncident FieldInPoint
Definition: WorkletMapTopology.h:259
The ExecutionSignature tag to get the indices of visited elements.
Definition: IncidentElementIndices.h:33
VTKM_SUPPRESS_EXEC_WARNINGS VTKM_EXEC EnableFnWhen< S &&M, vtkm::exec::arg::ThreadIndicesTopologyMap< InputDomainType, vtkm::exec::arg::DefaultScatterAndMaskTag > > GetThreadIndices(vtkm::Id threadIndex1D, const vtkm::Id3 &threadIndex3D, const OutToInArrayType &vtkmNotUsed(outToIn), const VisitArrayType &vtkmNotUsed(visit), const ThreadToOutArrayType &vtkmNotUsed(threadToOut), const InputDomainType &connectivity) const
Optimized for ScatterIdentity and MaskNone.
Definition: WorkletMapTopology.h:210
typename std::enable_if< Cond, ReturnType >::type EnableFnWhen
Definition: WorkletMapTopology.h:195
#define vtkmNotUsed(parameter_name)
Simple macro to identify a parameter as unused.
Definition: ExportMacros.h:128
IncidentElementIndices CellIndices
Definition: WorkletMapTopology.h:288
FieldInVisit FieldInPoint
Definition: WorkletMapTopology.h:280
The base class for all tags used in a ControlSignature.
Definition: ControlSignatureTagBase.h:36
Used for when not using MaskNone and ScatterIdentity.
Definition: ThreadIndicesTopologyMap.h:80
The ExecutionSignature tag to use to get the cell shape.
Definition: exec/arg/CellShape.h:34
FieldOut FieldOutPoint
Definition: WorkletMapTopology.h:282
A tag used to identify the cell elements in a topology.
Definition: TopologyElementTag.h:24
Fetch tag for in-place modifying array values with direct indexing.
Definition: FetchTagArrayDirectInOut.h:39
VTKM_SUPPRESS_EXEC_WARNINGS VTKM_EXEC EnableFnWhen<!(S &&M), vtkm::exec::arg::ThreadIndicesTopologyMap< InputDomainType, vtkm::exec::arg::CustomScatterOrMaskTag > > GetThreadIndices(vtkm::Id threadIndex1D, const vtkm::Id3 &threadIndex3D, const OutToInArrayType &outToIn, const VisitArrayType &visit, const ThreadToOutArrayType &threadToOut, const InputDomainType &connectivity) const
Default version.
Definition: WorkletMapTopology.h:234
FieldInOut FieldInOutPoint
Definition: WorkletMapTopology.h:284
#define VTKM_SUPPRESS_EXEC_WARNINGS
Definition: ExportMacros.h:53
Container for thread indices in a topology map.
Definition: ThreadIndicesTopologyMap.h:95
Uses spaces optimizations when using MaskNone and ScatterIdentity.
Definition: ThreadIndicesTopologyMap.h:74
Check for a CellSet-like object.
Definition: TypeCheckTagCellSet.h:26
FieldInVisit FieldInCell
Definition: WorkletMapTopology.h:261
FieldOut FieldOutCell
Definition: WorkletMapTopology.h:263
FieldInOut FieldInOutCell
Definition: WorkletMapTopology.h:265
Base class for worklets that map topology elements onto each other.
Definition: WorkletMapTopology.h:71