Go to the documentation of this file.
10 #ifndef vtk_m_worklet_ExternalFaces_h
11 #define vtk_m_worklet_ExternalFaces_h
57 FieldOut numFacesInCell,
78 bool cell_min_at_grid_boundary = cell_min <= grid_min;
79 bool cell_max_at_grid_boundary = cell_max >= grid_max;
81 if (cell_min_at_grid_boundary && !cell_max_at_grid_boundary)
85 else if (!cell_min_at_grid_boundary && cell_max_at_grid_boundary)
89 else if (cell_min_at_grid_boundary && cell_max_at_grid_boundary)
97 template <
typename CellShapeTag,
typename Po
intCoordVecType>
99 const PointCoordVecType& pointCoordinates)
const
129 WholeCellSetIn<> inputCell,
131 FieldOut facePointCount,
132 FieldOut faceConnectivity,
139 template <
typename CountArrayType>
171 bool cell_min_at_grid_boundary = cell_min <= grid_min;
172 bool cell_max_at_grid_boundary = cell_max >= grid_max;
174 FaceType Faces = FaceType::FACE_NONE;
176 if (cell_min_at_grid_boundary && !cell_max_at_grid_boundary)
178 Faces = FaceType::FACE_GRID_MIN;
180 else if (!cell_min_at_grid_boundary && cell_max_at_grid_boundary)
182 Faces = FaceType::FACE_GRID_MAX;
184 else if (cell_min_at_grid_boundary && cell_max_at_grid_boundary)
186 Faces = FaceType::FACE_GRID_MIN_AND_MAX;
189 if (Faces == FaceType::FACE_NONE)
192 if (Faces == FaceType::FACE_GRID_MIN)
194 if (visitIndex == count)
196 faceIndex = dimensionFaceOffset;
204 else if (Faces == FaceType::FACE_GRID_MAX)
206 if (visitIndex == count)
208 faceIndex = dimensionFaceOffset + 1;
216 else if (Faces == FaceType::FACE_GRID_MIN_AND_MAX)
218 if (visitIndex == count)
220 faceIndex = dimensionFaceOffset;
224 if (visitIndex == count)
226 faceIndex = dimensionFaceOffset + 1;
235 template <
typename Po
intCoordVecType>
238 const PointCoordVecType& pointCoordinates)
const
245 pointCoordinates[0][0],
246 pointCoordinates[1][0],
255 pointCoordinates[0][1],
256 pointCoordinates[3][1],
265 pointCoordinates[0][2],
266 pointCoordinates[4][2],
276 template <
typename CellShapeTag,
277 typename CellSetType,
278 typename PointCoordVecType,
279 typename ConnectivityType>
283 const CellSetType& cellSet,
286 ConnectivityType& faceConnectivity,
287 const PointCoordVecType& pointCoordinates)
const
294 vtkm::exec::CellFaceNumberOfPoints(faceIndex, shape, numFacePoints);
295 VTKM_ASSERT(numFacePoints == faceConnectivity.GetNumberOfComponents());
297 typename CellSetType::IndicesType inCellIndices = cellSet.GetIndices(inputIndex);
300 numFacePointsOut = 4;
302 for (
vtkm::IdComponent facePointIndex = 0; facePointIndex < numFacePoints; facePointIndex++)
306 vtkm::exec::CellFaceLocalIndex(facePointIndex, faceIndex, shape, localFaceIndex);
309 faceConnectivity[facePointIndex] = inCellIndices[localFaceIndex];
314 faceConnectivity[facePointIndex] = 0;
332 template <
typename CellShapeTag>
335 vtkm::exec::CellFaceNumberOfFaces(shape, numFaces);
345 FieldOut originCells,
346 FieldOut originFaces);
352 template <
typename CellShapeTag,
typename CellNodeVecType>
357 const CellNodeVecType& cellNodeIds,
362 vtkm::exec::CellFaceCanonicalId(visitIndex, shape, cellNodeIds, faceId);
365 cellIndex = inputIndex;
366 faceIndex = visitIndex;
378 WholeCellSetIn<> inputCells,
385 template <
typename CellSetType,
typename OriginCellsType,
typename OriginFacesType>
387 const OriginCellsType& originCells,
388 const OriginFacesType& originFaces)
const
391 VTKM_ASSERT(originFaces.GetNumberOfComponents() == numCellsOnHash);
398 myIndex < numCellsOnHash - 1;
402 vtkm::exec::CellFaceCanonicalId(originFaces[myIndex],
403 cellSet.GetCellShape(originCells[myIndex]),
404 cellSet.GetIndices(originCells[myIndex]),
406 for (
vtkm::IdComponent otherIndex = myIndex + 1; otherIndex < numCellsOnHash; otherIndex++)
409 vtkm::exec::CellFaceCanonicalId(originFaces[otherIndex],
410 cellSet.GetCellShape(originCells[otherIndex]),
411 cellSet.GetIndices(originCells[otherIndex]),
413 if (myFace == otherFace)
418 numExternalFaces -= 2;
424 return numExternalFaces;
434 template <
typename CellSetType,
typename OriginCellsType,
typename OriginFacesType>
436 const OriginCellsType& originCells,
437 const OriginFacesType& originFaces,
441 VTKM_ASSERT(originFaces.GetNumberOfComponents() == numCellsOnHash);
450 vtkm::exec::CellFaceCanonicalId(originFaces[myIndex],
451 cellSet.GetCellShape(originCells[myIndex]),
452 cellSet.GetIndices(originCells[myIndex]),
454 bool foundPair =
false;
455 for (
vtkm::IdComponent otherIndex = myIndex + 1; otherIndex < numCellsOnHash; otherIndex++)
458 vtkm::exec::CellFaceCanonicalId(originFaces[otherIndex],
459 cellSet.GetCellShape(originCells[otherIndex]),
460 cellSet.GetIndices(originCells[otherIndex]),
462 if (myFace == otherFace)
472 if (numFound == visitIndex)
495 WholeCellSetIn<> inputCells,
504 template <
typename CountArrayType>
511 template <
typename CellSetType,
typename OriginCellsType,
typename OriginFacesType>
513 const OriginCellsType& originCells,
514 const OriginFacesType& originFaces,
521 vtkm::exec::CellFaceNumberOfPoints(
522 originFaces[myIndex], cellSet.GetCellShape(originCells[myIndex]), numFacePoints);
531 WholeCellSetIn<> inputCells,
542 template <
typename CellSetType,
543 typename OriginCellsType,
544 typename OriginFacesType,
545 typename ConnectivityType>
547 const OriginCellsType& originCells,
548 const OriginFacesType& originFaces,
551 ConnectivityType& connectivityOut,
559 typename CellSetType::CellShapeTag shapeIn = cellSet.GetCellShape(originCells[myIndex]);
560 vtkm::exec::CellFaceShape(myFace, shapeIn, shapeOut);
561 cellIdMapOut = originCells[myIndex];
564 vtkm::exec::CellFaceNumberOfPoints(myFace, shapeIn, numFacePoints);
566 VTKM_ASSERT(numFacePoints == connectivityOut.GetNumberOfComponents());
568 typename CellSetType::IndicesType inCellIndices = cellSet.GetIndices(originCells[myIndex]);
570 for (
vtkm::IdComponent facePointIndex = 0; facePointIndex < numFacePoints; facePointIndex++)
574 vtkm::exec::CellFaceLocalIndex(facePointIndex, myFace, shapeIn, localFaceIndex);
577 connectivityOut[facePointIndex] = inCellIndices[localFaceIndex];
582 connectivityOut[facePointIndex] = 0;
595 template <
typename CellShapeTag>
599 vtkm::exec::CellFaceNumberOfFaces(shape, numFaces);
623 FieldOut pointIndices,
624 FieldOut cellIdMapOut);
627 template <
typename CellShape,
typename InPo
intIndexType,
typename OutPo
intIndexType>
629 const InPointIndexType& inPoints,
632 OutPointIndexType& outPoints,
635 cellIdMapOut = inputIndex;
636 outShape = inShape.Id;
639 VTKM_ASSERT(numPoints == outPoints.GetNumberOfComponents());
642 outPoints[pointIndex] = inPoints[pointIndex];
647 template <
typename T>
683 template <
typename ShapeStorage,
typename ConnectivityStorage,
typename OffsetsStorage>
695 using CartesianArrayHandle =
698 auto coordData = coord.
GetData();
699 if (coordData.CanConvert<CartesianArrayHandle>())
701 const auto vertices = coordData.AsArrayHandle<CartesianArrayHandle>();
702 const auto vertsSize = vertices.GetNumberOfValues();
716 unitLength[0] =
static_cast<vtkm::Float64>(PointDimensions[0] - 1);
717 unitLength[1] =
static_cast<vtkm::Float64>(PointDimensions[1] - 1);
718 unitLength[2] =
static_cast<vtkm::Float64>(PointDimensions[2] - 1);
719 MaxPoint = MinPoint + spacing * unitLength;
727 numExternalFacesDispatcher.Invoke(inCellSet, numExternalFaces, coordData);
735 this->
CellIdMap = scatterCellToExternalFace.GetOutputToInputMap();
739 vtkm::Id connectivitySize = 4 * numberOfExternalFaces;
745 faceConnectivity.
Allocate(connectivitySize);
749 scatterCellToExternalFace);
751 buildConnectivityStructuredDispatcher.Invoke(
756 vtkm::cont::make_ArrayHandleGroupVec<4>(faceConnectivity),
766 template <
typename InCellSetType,
767 typename ShapeStorage,
768 typename ConnectivityStorage,
769 typename OffsetsStorage>
771 const InCellSetType& inCellSet,
783 numFacesDispatcher.Invoke(inCellSet, facesPerCell);
788 PointCountArrayType polyDataPointCount;
789 ShapeArrayType polyDataShapes;
790 OffsetsArrayType polyDataOffsets;
791 ConnectivityArrayType polyDataConnectivity;
793 vtkm::Id polyDataConnectivitySize = 0;
799 isPolyDataCellDispatcher.Invoke(inCellSet, isPolyDataCell);
805 if (scatterPolyDataCells.
GetOutputRange(inCellSet.GetNumberOfCells()) != 0)
808 countPolyDataCellPointsDispatcher(scatterPolyDataCells);
810 countPolyDataCellPointsDispatcher.Invoke(inCellSet, polyDataPointCount);
813 polyDataPointCount, polyDataOffsets, polyDataConnectivitySize);
816 scatterPolyDataCells);
818 polyDataConnectivity.Allocate(polyDataConnectivitySize);
820 passPolyDataCellsDispatcher.Invoke(
828 if (scatterCellToFace.
GetOutputRange(inCellSet.GetNumberOfCells()) == 0)
830 if (!polyDataConnectivitySize)
841 inCellSet.GetNumberOfPoints(), polyDataShapes, polyDataConnectivity, polyDataOffsets);
852 faceHashDispatcher.Invoke(inCellSet, faceHashes, originCells, originFaces);
859 faceCountDispatcher.Invoke(faceKeys, inCellSet, originCells, originFaces, faceOutputCount);
863 PointCountArrayType facePointCount;
865 scatterCullInternalFaces);
867 pointsPerFaceDispatcher.Invoke(faceKeys, inCellSet, originCells, originFaces, facePointCount);
869 ShapeArrayType faceShapes;
871 OffsetsArrayType faceOffsets;
875 ConnectivityArrayType faceConnectivity;
878 faceConnectivity.Allocate(connectivitySize);
881 scatterCullInternalFaces);
886 auto faceOffsetsTrim =
889 buildConnectivityDispatcher.Invoke(
898 if (!polyDataConnectivitySize)
900 outCellSet.
Fill(inCellSet.GetNumberOfPoints(), faceShapes, faceConnectivity, faceOffsets);
907 faceShapes, polyDataShapes);
908 ShapeArrayType joinedShapesArray;
912 facePointCount, polyDataPointCount);
913 PointCountArrayType joinedPointCountArray;
917 connectivityArray(faceConnectivity, polyDataConnectivity);
918 ConnectivityArrayType joinedConnectivity;
927 OffsetsArrayType joinedOffsets;
934 cellIdMapArray(faceToCellIdMap, polyDataCellIdMap);
939 inCellSet.GetNumberOfPoints(), joinedShapesArray, joinedConnectivity, joinedOffsets);
954 #endif //vtk_m_worklet_ExternalFaces_h
VTKM_CONT void ArrayCopyDevice(const vtkm::cont::ArrayHandle< InValueType, InStorage > &source, vtkm::cont::ArrayHandle< OutValueType, OutStorage > &destination)
Does a deep copy from one array to another array.
Definition: ArrayCopyDevice.h:75
Definition: worklet/ExternalFaces.h:527
static VTKM_EXEC vtkm::IdComponent FindUniqueFace(const CellSetType &cellSet, const OriginCellsType &originCells, const OriginFacesType &originFaces, vtkm::IdComponent visitIndex)
Definition: worklet/ExternalFaces.h:435
_2(PointCount) ExecutionSignature
Definition: worklet/ExternalFaces.h:610
ErrorCode
Definition: ErrorCode.h:19
void(CellSetIn inputTopology, FieldOut shapes, FieldOut pointIndices, FieldOut cellIdMapOut) ControlSignature
Definition: worklet/ExternalFaces.h:624
void(CellShape, VisitIndex, InputIndex, _2, _3, _4, _5, _6) ExecutionSignature
Definition: worklet/ExternalFaces.h:134
Definition: worklet/ExternalFaces.h:604
VTKM_EXEC_CONT vtkm::HashType Hash(const InVecType &inVec)
Returns a 32-bit hash on a group of integer-type values.
Definition: Hash.h:106
_2(CellShape, _3) ExecutionSignature
Definition: worklet/ExternalFaces.h:59
void(CellShape, _2) ExecutionSignature
Definition: worklet/ExternalFaces.h:329
#define VTKM_EXEC
Definition: ExportMacros.h:51
Groups connected points that have the same field value.
Definition: Atomic.h:19
_1 InputDomain
Definition: worklet/ExternalFaces.h:611
void(CellSetIn cellset, FieldOut faceHashes, FieldOut originCells, FieldOut originFaces) ControlSignature
Definition: worklet/ExternalFaces.h:346
_1 InputDomain
Definition: worklet/ExternalFaces.h:593
VTKM_EXEC vtkm::IdComponent FindFaceIndexForVisit(vtkm::IdComponent visitIndex, const PointCoordVecType &pointCoordinates) const
Definition: worklet/ExternalFaces.h:236
Definition: ArrayHandleConcatenate.h:241
ArrayHandleView< ArrayHandleType > make_ArrayHandleView(const ArrayHandleType &array, vtkm::Id startIndex, vtkm::Id numValues)
Definition: ArrayHandleView.h:222
void(_2, _3, _4, VisitIndex, _5) ExecutionSignature
Definition: worklet/ExternalFaces.h:499
#define VTKM_ASSERT(condition)
Definition: Assert.h:43
VTKM_EXEC_CONT BiasFunctor(T bias=T(0))
Definition: worklet/ExternalFaces.h:651
#define VTKM_EXEC_CONT
Definition: ExportMacros.h:52
VTKM_CONT void Allocate(vtkm::Id numberOfValues, vtkm::CopyFlag preserve, vtkm::cont::Token &token) const
Allocates an array large enough to hold the given number of values.
Definition: ArrayHandle.h:465
VTKM_CONT void SetPassPolyData(bool flag)
Definition: worklet/ExternalFaces.h:670
vtkm::Vec3f_64 MaxPoint
Definition: worklet/ExternalFaces.h:120
Definition: worklet/ExternalFaces.h:648
IncidentElementCount PointCount
Definition: WorkletMapTopology.h:267
vtkm::Int32 IdComponent
Represents a component ID (index of component in a vector).
Definition: Types.h:168
A control signature tag for input values.
Definition: WorkletReduceByKey.h:70
VTKM_CONT void PrepareToAddCells(vtkm::Id numCells, vtkm::Id connectivityMaxLen)
First method to add cells – one at a time.
VTKM_CONT NumExternalFacesPerStructuredCell(const vtkm::Vec3f_64 &min_point, const vtkm::Vec3f_64 &max_point)
Definition: worklet/ExternalFaces.h:63
VTKM_EXEC vtkm::IdComponent operator()(CellShapeTag shape) const
Definition: worklet/ExternalFaces.h:596
@ FACE_GRID_MIN
Definition: worklet/ExternalFaces.h:155
Definition: worklet/ExternalFaces.h:616
ArrayHandleCartesianProduct is a specialization of ArrayHandle.
Definition: ArrayHandleCartesianProduct.h:326
VTKM_CONT void ArrayGetValues(const vtkm::cont::ArrayHandle< vtkm::Id, SIds > &ids, const vtkm::cont::ArrayHandle< T, SData > &data, vtkm::cont::ArrayHandle< T, SOut > &output)
Obtain a small set of values from an ArrayHandle with minimal device transfers.
Definition: ArrayGetValues.h:119
void ReleaseCellMapArrays()
Definition: worklet/ExternalFaces.h:675
void(_2, _3, _4, VisitIndex, _5, _6, _7) ExecutionSignature
Definition: worklet/ExternalFaces.h:537
_2(CellShape) ExecutionSignature
Definition: worklet/ExternalFaces.h:592
_1 InputDomain
Definition: worklet/ExternalFaces.h:330
void(CellSetIn inCellSet, FieldOut numFacesInCell) ControlSignature
Definition: worklet/ExternalFaces.h:328
A control signature tag for reduced output values.
Definition: WorkletReduceByKey.h:150
IncidentElementIndices PointIndices
Definition: WorkletMapTopology.h:269
vtkm::UInt32 HashType
Definition: Hash.h:20
_1 InputDomain
Definition: worklet/ExternalFaces.h:348
vtkm::Int32 Id
Represents an ID (index into arrays).
Definition: Types.h:191
void(CellSetIn inCellSet, FieldOut isPolyDataCell) ControlSignature
Definition: worklet/ExternalFaces.h:591
static VTKM_EXEC bool FoundFaceOnDimension(vtkm::Float64 grid_min, vtkm::Float64 grid_max, vtkm::Float64 cell_min, vtkm::Float64 cell_max, vtkm::IdComponent &faceIndex, vtkm::IdComponent &count, vtkm::IdComponent dimensionFaceOffset, vtkm::IdComponent visitIndex)
Definition: worklet/ExternalFaces.h:162
Definition: worklet/ExternalFaces.h:340
@ FACE_NONE
Definition: worklet/ExternalFaces.h:158
Definition: CoordinateSystem.h:25
vtkm::Vec3f_64 MaxPoint
Definition: worklet/ExternalFaces.h:321
Binary Predicate that takes two arguments argument x, and y and returns sum (addition) of the two val...
Definition: BinaryOperators.h:33
VTKM_EXEC void operator()(CellShapeTag shape, vtkm::IdComponent visitIndex, vtkm::Id inputIndex, const CellSetType &cellSet, vtkm::UInt8 &shapeOut, vtkm::IdComponent &numFacePointsOut, ConnectivityType &faceConnectivity, const PointCoordVecType &pointCoordinates) const
Definition: worklet/ExternalFaces.h:280
A scatter that maps input to some numbers of output.
Definition: ScatterCounting.h:44
VTKM_EXEC void operator()(vtkm::HashType &faceHash, vtkm::Id &cellIndex, vtkm::IdComponent &faceIndex, CellShapeTag shape, const CellNodeVecType &cellNodeIds, vtkm::Id inputIndex, vtkm::IdComponent visitIndex) const
Definition: worklet/ExternalFaces.h:353
vtkm::Id GetNumberOfPoints() const override
Definition: CellSetStructured.h:40
_1 InputDomain
Definition: worklet/ExternalFaces.h:383
VTKM_CONT bool GetPassPolyData() const
Definition: worklet/ExternalFaces.h:673
Definition: worklet/ExternalFaces.h:325
VTKM_EXEC vtkm::IdComponent operator()(CellShapeTag shape, const PointCoordVecType &pointCoordinates) const
Definition: worklet/ExternalFaces.h:98
vtkm::Vec3f_64 MinPoint
Definition: worklet/ExternalFaces.h:320
VTKM_CONT vtkm::cont::ArrayHandleTransform< HandleType, FunctorType > make_ArrayHandleTransform(HandleType handle, FunctorType functor)
make_ArrayHandleTransform is convenience function to generate an ArrayHandleTransform.
Definition: ArrayHandleTransform.h:474
Dispatcher for worklets that inherit from WorkletMapTopology.
Definition: DispatcherMapTopology.h:31
VTKM_CONT BuildConnectivityStructured(const vtkm::Vec3f_64 &min_point, const vtkm::Vec3f_64 &max_point)
Definition: worklet/ExternalFaces.h:147
Definition: WorkletReduceByKey.h:42
#define VTKM_IS_ARRAY_HANDLE(T)
Definition: ArrayHandle.h:132
VTKM_CONT vtkm::Id GetOutputRange(vtkm::Id inputRange) const
Definition: ScatterCounting.h:90
_1 InputDomain
Definition: worklet/ExternalFaces.h:60
Base class for worklets that map from Points to Cells.
Definition: WorkletMapTopology.h:255
void ArrayCopy(const SourceArrayType &source, DestArrayType &destination)
Does a deep copy from one array to another array.
Definition: ArrayCopy.h:142
@ FACE_GRID_MAX
Definition: worklet/ExternalFaces.h:156
VTKM_CONT vtkm::cont::ArrayHandleGroupVecVariable< ComponentsArrayHandleType, OffsetsArrayHandleType > make_ArrayHandleGroupVecVariable(const ComponentsArrayHandleType &componentsArray, const OffsetsArrayHandleType &offsetsArray)
make_ArrayHandleGroupVecVariable is convenience function to generate an ArrayHandleGroupVecVariable.
Definition: ArrayHandleGroupVecVariable.h:308
VTKM_EXEC vtkm::IdComponent operator()(const CellSetType &cellSet, const OriginCellsType &originCells, const OriginFacesType &originFaces) const
Definition: worklet/ExternalFaces.h:386
_1 InputDomain
Definition: worklet/ExternalFaces.h:500
void(CellSetIn inCellSet, WholeCellSetIn<> inputCell, FieldOut faceShapes, FieldOut facePointCount, FieldOut faceConnectivity, FieldInPoint pointCoordinates) ControlSignature
Definition: worklet/ExternalFaces.h:133
vtkm::worklet::ScatterCounting ScatterType
Definition: worklet/ExternalFaces.h:502
FieldInIncident FieldInPoint
Definition: WorkletMapTopology.h:259
#define VTKM_CONT
Definition: ExportMacros.h:57
A control signature tag for input keys.
Definition: WorkletReduceByKey.h:56
VTKM_CONT void Run(const vtkm::cont::CellSetStructured< 3 > &inCellSet, const vtkm::cont::CoordinateSystem &coord, vtkm::cont::CellSetExplicit< ShapeStorage, ConnectivityStorage, OffsetsStorage > &outCellSet)
ExternalFaces: Extract Faces on outside of geometry for regular grids.
Definition: worklet/ExternalFaces.h:684
@ CELL_SHAPE_HEXAHEDRON
Definition: CellShape.h:48
VTKM_CONT void Fill(vtkm::Id numPoints, const vtkm::cont::ArrayHandle< vtkm::UInt8, ShapesStorageTag > &cellTypes, const vtkm::cont::ArrayHandle< vtkm::Id, ConnectivityStorageTag > &connectivity, const vtkm::cont::ArrayHandle< vtkm::Id, OffsetsStorageTag > &offsets)
Second method to add cells – all at once.
VTKM_EXEC_CONT T operator()(T x) const
Definition: worklet/ExternalFaces.h:657
T Bias
Definition: worklet/ExternalFaces.h:659
uint8_t UInt8
Definition: Types.h:157
void(_2, _3, _4, CellShape, PointIndices, InputIndex, VisitIndex) ExecutionSignature
Definition: worklet/ExternalFaces.h:347
VTKM_CONT ArrayHandleConcatenate< ArrayHandleType1, ArrayHandleType2 > make_ArrayHandleConcatenate(const ArrayHandleType1 &array1, const ArrayHandleType2 &array2)
Definition: ArrayHandleConcatenate.h:266
static VTKM_EXEC vtkm::IdComponent CountExternalFacesOnDimension(vtkm::Float64 grid_min, vtkm::Float64 grid_max, vtkm::Float64 cell_min, vtkm::Float64 cell_max)
Definition: worklet/ExternalFaces.h:71
SchedulingRangeType GetPointDimensions() const
Definition: CellSetStructured.h:64
VTKM_EXEC void operator()(CellShapeTag shape, vtkm::IdComponent &numFaces) const
Definition: worklet/ExternalFaces.h:333
VTKM_CONT_EXPORT void ConvertNumComponentsToOffsets(const vtkm::cont::UnknownArrayHandle &numComponentsArray, vtkm::cont::ArrayHandle< vtkm::Id > &offsetsArray, vtkm::Id &componentsArraySize, vtkm::cont::DeviceAdapterId device=vtkm::cont::DeviceAdapterTagAny{})
Definition: worklet/ExternalFaces.h:374
vtkm::cont::ArrayHandle< vtkm::Id > CellIdMap
Definition: worklet/ExternalFaces.h:947
Dispatcher for worklets that inherit from WorkletReduceByKey.
Definition: DispatcherReduceByKey.h:27
Definition: worklet/ExternalFaces.h:53
FaceType
Definition: worklet/ExternalFaces.h:153
void(CellSetIn inCellSet, FieldOut numFacesInCell, FieldInPoint pointCoordinates) ControlSignature
Definition: worklet/ExternalFaces.h:58
static VTKM_CONT U Reduce(vtkm::cont::DeviceAdapterId devId, const vtkm::cont::ArrayHandle< T, CIn > &input, U initialValue)
Definition: Algorithm.h:656
VTKM_CONT ReadPortalType ReadPortal() const
Get an array portal that can be used in the control environment.
Definition: ArrayHandle.h:414
Definition: CastAndCall.h:36
VTKM_EXEC void operator()(const CellShape &inShape, const InPointIndexType &inPoints, vtkm::Id inputIndex, vtkm::UInt8 &outShape, OutPointIndexType &outPoints, vtkm::Id &cellIdMapOut) const
Definition: worklet/ExternalFaces.h:628
Manage keys for a WorkletReduceByKey.
Definition: Keys.h:131
_1 InputDomain
Definition: worklet/ExternalFaces.h:135
VTKM_CONT void Run(const InCellSetType &inCellSet, vtkm::cont::CellSetExplicit< ShapeStorage, ConnectivityStorage, OffsetsStorage > &outCellSet)
ExternalFaces: Extract Faces on outside of geometry.
Definition: worklet/ExternalFaces.h:770
_5(_2, _3, _4) ExecutionSignature
Definition: worklet/ExternalFaces.h:382
VTKM_CONT void CompleteAddingCells(vtkm::Id numPoints)
VTKM_EXEC void operator()(const CellSetType &cellSet, const OriginCellsType &originCells, const OriginFacesType &originFaces, vtkm::IdComponent visitIndex, vtkm::UInt8 &shapeOut, ConnectivityType &connectivityOut, vtkm::Id &cellIdMapOut) const
Definition: worklet/ExternalFaces.h:546
Definition: worklet/ExternalFaces.h:50
double Float64
Definition: Types.h:155
static VTKM_CONT ScatterType MakeScatter(const CountArrayType &countArray)
Definition: worklet/ExternalFaces.h:505
Definition: worklet/ExternalFaces.h:491
VTKM_EXEC vtkm::Id operator()(vtkm::Id count) const
Definition: worklet/ExternalFaces.h:613
vtkm::cont::ArrayHandle< vtkm::Id > GetCellIdMap() const
Definition: worklet/ExternalFaces.h:944
void(KeysIn keys, WholeCellSetIn<> inputCells, ValuesIn originCells, ValuesIn originFaces, ReducedValuesOut shapesOut, ReducedValuesOut connectivityOut, ReducedValuesOut cellIdMapOut) ControlSignature
Definition: worklet/ExternalFaces.h:536
vtkm::Vec3f_64 MinPoint
Definition: worklet/ExternalFaces.h:119
Definition: worklet/ExternalFaces.h:125
VTKM_CONT ExternalFaces()
Definition: worklet/ExternalFaces.h:664
bool PassPolyData
Definition: worklet/ExternalFaces.h:948
@ FACE_GRID_MIN_AND_MAX
Definition: worklet/ExternalFaces.h:157
The ExecutionSignature tag to use to get the visit index.
Definition: VisitIndex.h:43
void(KeysIn keys, WholeCellSetIn<> inputCells, ValuesIn originCells, ValuesIn originFaces, ReducedValuesOut numPointsInFace) ControlSignature
Definition: worklet/ExternalFaces.h:498
void(CellShape, PointIndices, InputIndex, _2, _3, _4) ExecutionSignature
Definition: worklet/ExternalFaces.h:625
static VTKM_CONT ScatterType MakeScatter(const CountArrayType &countArray)
Definition: worklet/ExternalFaces.h:140
Definition: worklet/ExternalFaces.h:588
VTKM_CONT void ReleaseResources() const
Releases all resources in both the control and execution environments.
Definition: ArrayHandle.h:559
void(KeysIn keys, WholeCellSetIn<> inputCells, ValuesIn originCells, ValuesIn originFaces, ReducedValuesOut numOutputCells) ControlSignature
Definition: worklet/ExternalFaces.h:381
void(CellSetIn inCellSet, FieldOut numPoints) ControlSignature
Definition: worklet/ExternalFaces.h:609
VTKM_CONT vtkm::cont::UncertainArrayHandle< vtkm::TypeListFieldVec3, VTKM_DEFAULT_STORAGE_LIST > GetData() const
_1 InputDomain
Definition: worklet/ExternalFaces.h:538
VTKM_EXEC void operator()(const CellSetType &cellSet, const OriginCellsType &originCells, const OriginFacesType &originFaces, vtkm::IdComponent visitIndex, vtkm::IdComponent &numFacePoints) const
Definition: worklet/ExternalFaces.h:512
@ CELL_SHAPE_QUAD
Definition: CellShape.h:45
vtkm::worklet::ScatterCounting ScatterType
Definition: worklet/ExternalFaces.h:137