VTK-m  2.2
Namespaces | Classes | Functions
vtkm::exec Namespace Reference

VTK-m Execution Environment. More...

Namespaces

 arg
 
 cuda
 CUDA implementation for Execution Environment.
 
 kokkos
 
 openmp
 CUDA implementation for Execution Environment.
 
 serial
 CUDA implementation for Execution Environment.
 
 tbb
 TBB implementation for Execution Environment.
 
 twolevelgrid
 

Classes

class  AtomicArrayExecutionObject
 An object passed to a worklet when accessing an atomic array. More...
 
struct  BoundaryState
 Provides a neighborhood's placement with respect to the mesh's boundary. More...
 
class  CellLocatorBoundingIntervalHierarchy
 
struct  CellLocatorBoundingIntervalHierarchyNode
 
class  CellLocatorMultiplexer
 
class  CellLocatorPartitioned
 
class  CellLocatorRectilinearGrid
 
class  CellLocatorTwoLevel
 
class  CellLocatorUniformBins
 
class  CellLocatorUniformGrid
 
class  ColorTable
 
class  ConnectivityExplicit
 A class holding information about topology connections. More...
 
class  ConnectivityExtrude
 
class  ConnectivityPermutedVisitCellsWithPoints
 
class  ConnectivityPermutedVisitPointsWithCells
 
class  ConnectivityStructured
 A class holding information about topology connections. More...
 
struct  FieldNeighborhood
 Retrieves field values from a neighborhood. More...
 
struct  FieldNeighborhood< vtkm::internal::ArrayPortalUniformPointCoordinates >
 Specialization of Neighborhood for ArrayPortalUniformPointCoordinates We can use fast paths inside ArrayPortalUniformPointCoordinates to allow for very fast computation of the coordinates reachable by the neighborhood.
 
class  FunctorBase
 Base class for all user worklets invoked in the execution environment from a call to vtkm::cont::DeviceAdapterAlgorithm::Schedule. More...
 
struct  IndicesExtrude
 
class  PointLocatorSparseGrid
 
class  ReverseConnectivityExtrude
 
struct  ReverseIndicesExtrude
 
class  TaskBase
 Base class for all classes that are used to marshal data from the invocation parameters to the user worklets when invoked in the execution environment. More...
 

Functions

template<typename FieldVecType , typename WorldCoordType , typename ParametricCoordType , typename CellShapeTag >
vtkm::ErrorCode CellDerivative (const FieldVecType &field, const WorldCoordType &wCoords, const vtkm::Vec< ParametricCoordType, 3 > &pcoords, CellShapeTag shape, vtkm::Vec< typename FieldVecType::ComponentType, 3 > &result)
 
template<typename FieldVecType , typename WorldCoordType , typename ParametricCoordType >
vtkm::ErrorCode CellDerivative (const FieldVecType &, const WorldCoordType &, const vtkm::Vec< ParametricCoordType, 3 > &, vtkm::CellShapeTagEmpty, vtkm::Vec< typename FieldVecType::ComponentType, 3 > &result)
 
template<typename FieldVecType , typename WorldCoordType , typename ParametricCoordType >
vtkm::ErrorCode CellDerivative (const FieldVecType &field, const WorldCoordType &wCoords, const vtkm::Vec< ParametricCoordType, 3 > &pcoords, vtkm::CellShapeTagPolyLine, vtkm::Vec< typename FieldVecType::ComponentType, 3 > &result)
 
template<typename FieldVecType , typename WorldCoordType , typename ParametricCoordType >
vtkm::ErrorCode CellDerivative (const FieldVecType &field, const WorldCoordType &wCoords, const vtkm::Vec< ParametricCoordType, 3 > &pcoords, vtkm::CellShapeTagPolygon, vtkm::Vec< typename FieldVecType::ComponentType, 3 > &result)
 
template<typename FieldVecType , typename ParametricCoordType >
vtkm::ErrorCode CellDerivative (const FieldVecType &field, const vtkm::VecAxisAlignedPointCoordinates< 2 > &wCoords, const vtkm::Vec< ParametricCoordType, 3 > &pcoords, vtkm::CellShapeTagQuad, vtkm::Vec< typename FieldVecType::ComponentType, 3 > &result)
 
template<typename FieldVecType , typename ParametricCoordType >
vtkm::ErrorCode CellDerivative (const FieldVecType &field, const vtkm::VecAxisAlignedPointCoordinates< 3 > &wCoords, const vtkm::Vec< ParametricCoordType, 3 > &pcoords, vtkm::CellShapeTagHexahedron, vtkm::Vec< typename FieldVecType::ComponentType, 3 > &result)
 
template<typename FieldVecType , typename WorldCoordType , typename ParametricCoordType >
vtkm::ErrorCode CellDerivative (const FieldVecType &pointFieldValues, const WorldCoordType &worldCoordinateValues, const vtkm::Vec< ParametricCoordType, 3 > &parametricCoords, vtkm::CellShapeTagGeneric shape, vtkm::Vec< typename FieldVecType::ComponentType, 3 > &result)
 Take the derivative (get the gradient) of a point field in a cell. More...
 
template<typename FieldVecType , typename ParametricCoordType , typename CellShapeTag >
vtkm::ErrorCode CellInterpolate (const FieldVecType &pointFieldValues, const vtkm::Vec< ParametricCoordType, 3 > &pcoords, CellShapeTag tag, typename FieldVecType::ComponentType &result)
 
template<typename FieldVecType , typename ParametricCoordType >
vtkm::ErrorCode CellInterpolate (const FieldVecType &, const vtkm::Vec< ParametricCoordType, 3 > &, vtkm::CellShapeTagEmpty, typename FieldVecType::ComponentType &result)
 
template<typename FieldVecType , typename ParametricCoordType >
vtkm::ErrorCode CellInterpolate (const FieldVecType &field, const vtkm::Vec< ParametricCoordType, 3 > &pcoords, vtkm::CellShapeTagPolyLine, typename FieldVecType::ComponentType &result)
 
template<typename FieldVecType , typename ParametricCoordType >
vtkm::ErrorCode CellInterpolate (const FieldVecType &field, const vtkm::Vec< ParametricCoordType, 3 > &pcoords, vtkm::CellShapeTagPolygon, typename FieldVecType::ComponentType &result)
 
template<typename ParametricCoordType >
vtkm::ErrorCode CellInterpolate (const vtkm::VecAxisAlignedPointCoordinates< 2 > &field, const vtkm::Vec< ParametricCoordType, 3 > &pcoords, vtkm::CellShapeTagQuad, vtkm::Vec3f &result)
 
template<typename ParametricCoordType >
vtkm::ErrorCode CellInterpolate (const vtkm::VecAxisAlignedPointCoordinates< 3 > &field, const vtkm::Vec< ParametricCoordType, 3 > &pcoords, vtkm::CellShapeTagHexahedron, vtkm::Vec3f &result)
 
template<typename FieldVecType , typename ParametricCoordType >
vtkm::ErrorCode CellInterpolate (const FieldVecType &pointFieldValues, const vtkm::Vec< ParametricCoordType, 3 > &parametricCoords, vtkm::CellShapeTagGeneric shape, typename FieldVecType::ComponentType &result)
 Interpolate a point field in a cell. More...
 
template<typename IndicesVecType , typename FieldPortalType , typename ParametricCoordType , typename CellShapeTag >
vtkm::ErrorCode CellInterpolate (const IndicesVecType &pointIndices, const FieldPortalType &pointFieldPortal, const vtkm::Vec< ParametricCoordType, 3 > &parametricCoords, CellShapeTag shape, typename FieldPortalType::ValueType &result)
 Interpolate a point field in a cell. More...
 
template<typename OutType , typename PointCoordVecType , typename CellShapeType >
OutType CellMeasure (const vtkm::IdComponent &numPts, const PointCoordVecType &pts, CellShapeType shape, vtkm::ErrorCode &)
 By default, cells have zero measure unless this template is specialized below. More...
 
template<typename OutType , typename PointCoordVecType >
OutType CellMeasure (const vtkm::IdComponent &numPts, const PointCoordVecType &pts, vtkm::CellShapeTagLine, vtkm::ErrorCode &ec)
 Compute the arc length of a poly-line cell. More...
 
template<typename OutType , typename PointCoordVecType >
OutType CellMeasure (const vtkm::IdComponent &numPts, const PointCoordVecType &pts, vtkm::CellShapeTagTriangle, vtkm::ErrorCode &ec)
 Compute the area of a triangular cell. More...
 
template<typename OutType , typename PointCoordVecType >
OutType CellMeasure (const vtkm::IdComponent &numPts, const PointCoordVecType &pts, vtkm::CellShapeTagQuad, vtkm::ErrorCode &ec)
 Compute the area of a quadrilateral cell. More...
 
template<typename OutType , typename PointCoordVecType >
OutType ComputeMeasure (const vtkm::IdComponent &, const PointCoordVecType &, vtkm::CellShapeTagPolygon, vtkm::ErrorCode &ec)
 
template<typename OutType , typename PointCoordVecType >
OutType CellMeasure (const vtkm::IdComponent &numPts, const PointCoordVecType &pts, vtkm::CellShapeTagTetra, vtkm::ErrorCode &ec)
 Compute the volume of a tetrahedron. More...
 
template<typename OutType , typename PointCoordVecType >
OutType CellMeasure (const vtkm::IdComponent &numPts, const PointCoordVecType &pts, vtkm::CellShapeTagHexahedron, vtkm::ErrorCode &ec)
 Compute the volume of a hexahedral cell (approximated via triple product of average edge along each parametric axis). More...
 
template<typename OutType , typename PointCoordVecType >
OutType CellMeasure (const vtkm::IdComponent &numPts, const PointCoordVecType &pts, vtkm::CellShapeTagWedge, vtkm::ErrorCode &ec)
 Compute the volume of a wedge cell (approximated as 3 tetrahedra). More...
 
template<typename OutType , typename PointCoordVecType >
OutType CellMeasure (const vtkm::IdComponent &numPts, const PointCoordVecType &pts, vtkm::CellShapeTagPyramid, vtkm::ErrorCode &ec)
 Compute the volume of a pyramid (approximated as 2 tetrahedra) More...
 

Detailed Description

VTK-m Execution Environment.

vtkm::exec defines the publicly accessible API for the VTK-m Execution Environment. Worklets typically use classes/apis defined within this namespace alone.

Function Documentation

◆ CellDerivative() [1/7]

template<typename FieldVecType , typename WorldCoordType , typename ParametricCoordType >
vtkm::ErrorCode vtkm::exec::CellDerivative ( const FieldVecType &  ,
const WorldCoordType &  ,
const vtkm::Vec< ParametricCoordType, 3 > &  ,
vtkm::CellShapeTagEmpty  ,
vtkm::Vec< typename FieldVecType::ComponentType, 3 > &  result 
)

◆ CellDerivative() [2/7]

template<typename FieldVecType , typename ParametricCoordType >
vtkm::ErrorCode vtkm::exec::CellDerivative ( const FieldVecType &  field,
const vtkm::VecAxisAlignedPointCoordinates< 2 > &  wCoords,
const vtkm::Vec< ParametricCoordType, 3 > &  pcoords,
vtkm::CellShapeTagQuad  ,
vtkm::Vec< typename FieldVecType::ComponentType, 3 > &  result 
)

◆ CellDerivative() [3/7]

template<typename FieldVecType , typename ParametricCoordType >
vtkm::ErrorCode vtkm::exec::CellDerivative ( const FieldVecType &  field,
const vtkm::VecAxisAlignedPointCoordinates< 3 > &  wCoords,
const vtkm::Vec< ParametricCoordType, 3 > &  pcoords,
vtkm::CellShapeTagHexahedron  ,
vtkm::Vec< typename FieldVecType::ComponentType, 3 > &  result 
)

◆ CellDerivative() [4/7]

template<typename FieldVecType , typename WorldCoordType , typename ParametricCoordType , typename CellShapeTag >
vtkm::ErrorCode vtkm::exec::CellDerivative ( const FieldVecType &  field,
const WorldCoordType &  wCoords,
const vtkm::Vec< ParametricCoordType, 3 > &  pcoords,
CellShapeTag  shape,
vtkm::Vec< typename FieldVecType::ComponentType, 3 > &  result 
)

◆ CellDerivative() [5/7]

template<typename FieldVecType , typename WorldCoordType , typename ParametricCoordType >
vtkm::ErrorCode vtkm::exec::CellDerivative ( const FieldVecType &  field,
const WorldCoordType &  wCoords,
const vtkm::Vec< ParametricCoordType, 3 > &  pcoords,
vtkm::CellShapeTagPolygon  ,
vtkm::Vec< typename FieldVecType::ComponentType, 3 > &  result 
)

◆ CellDerivative() [6/7]

template<typename FieldVecType , typename WorldCoordType , typename ParametricCoordType >
vtkm::ErrorCode vtkm::exec::CellDerivative ( const FieldVecType &  field,
const WorldCoordType &  wCoords,
const vtkm::Vec< ParametricCoordType, 3 > &  pcoords,
vtkm::CellShapeTagPolyLine  ,
vtkm::Vec< typename FieldVecType::ComponentType, 3 > &  result 
)

◆ CellDerivative() [7/7]

template<typename FieldVecType , typename WorldCoordType , typename ParametricCoordType >
vtkm::ErrorCode vtkm::exec::CellDerivative ( const FieldVecType &  pointFieldValues,
const WorldCoordType &  worldCoordinateValues,
const vtkm::Vec< ParametricCoordType, 3 > &  parametricCoords,
vtkm::CellShapeTagGeneric  shape,
vtkm::Vec< typename FieldVecType::ComponentType, 3 > &  result 
)

Take the derivative (get the gradient) of a point field in a cell.

Given the point field values for each node and the parametric coordinates of a point within the cell, finds the derivative with respect to each coordinate (i.e. the gradient) at that point. The derivative is not always constant in some "linear" cells.

Parameters
[in]pointFieldValuesA list of field values for each point in the cell. This usually comes from a FieldInPoint argument in a vtkm::worklet::WorkletVisitCellsWithPoints.
[in]worldCoordinateValuesA list of world coordinates for each point in the cell. This usually comes from a FieldInPoint argument in a vtkm::worklet::WorkletVisitCellsWithPoints where the coordinate system is passed into that argument.
[in]parametricCoordsThe parametric coordinates where you want to find the derivative.
[in]shapeA tag of type CellShapeTag* to identify the shape of the cell. This method is overloaded for different shape types.
[out]resultValue to store the derivative/gradient. Because the derivative is taken partially in the x, y, and z directions, the result is a vtkm::Vec of size 3 with the component type the same as the field. If the field is itself a vector, you get a Vec of Vecs.

◆ CellInterpolate() [1/8]

template<typename FieldVecType , typename ParametricCoordType >
vtkm::ErrorCode vtkm::exec::CellInterpolate ( const FieldVecType &  ,
const vtkm::Vec< ParametricCoordType, 3 > &  ,
vtkm::CellShapeTagEmpty  ,
typename FieldVecType::ComponentType &  result 
)

◆ CellInterpolate() [2/8]

template<typename FieldVecType , typename ParametricCoordType >
vtkm::ErrorCode vtkm::exec::CellInterpolate ( const FieldVecType &  field,
const vtkm::Vec< ParametricCoordType, 3 > &  pcoords,
vtkm::CellShapeTagPolygon  ,
typename FieldVecType::ComponentType &  result 
)

◆ CellInterpolate() [3/8]

template<typename FieldVecType , typename ParametricCoordType >
vtkm::ErrorCode vtkm::exec::CellInterpolate ( const FieldVecType &  field,
const vtkm::Vec< ParametricCoordType, 3 > &  pcoords,
vtkm::CellShapeTagPolyLine  ,
typename FieldVecType::ComponentType &  result 
)

◆ CellInterpolate() [4/8]

template<typename FieldVecType , typename ParametricCoordType >
vtkm::ErrorCode vtkm::exec::CellInterpolate ( const FieldVecType &  pointFieldValues,
const vtkm::Vec< ParametricCoordType, 3 > &  parametricCoords,
vtkm::CellShapeTagGeneric  shape,
typename FieldVecType::ComponentType &  result 
)

Interpolate a point field in a cell.

Given the point field values for each node and the parametric coordinates of a location within the cell, interpolates the field to that location.

Parameters
[in]pointFieldValuesA list of field values for each point in the cell. This usually comes from a FieldInPoint argument in a vtkm::worklet::WorkletVisitCellsWithPoints.
[in]parametricCoordsThe parametric coordinates where you want to get the interpolated field value for.
[in]shapeA tag of type CellShapeTag* to identify the shape of the cell. This method is overloaded for different shape types.
[out]resultValue to store the interpolated field.

◆ CellInterpolate() [5/8]

template<typename FieldVecType , typename ParametricCoordType , typename CellShapeTag >
vtkm::ErrorCode vtkm::exec::CellInterpolate ( const FieldVecType &  pointFieldValues,
const vtkm::Vec< ParametricCoordType, 3 > &  pcoords,
CellShapeTag  tag,
typename FieldVecType::ComponentType &  result 
)

◆ CellInterpolate() [6/8]

template<typename IndicesVecType , typename FieldPortalType , typename ParametricCoordType , typename CellShapeTag >
vtkm::ErrorCode vtkm::exec::CellInterpolate ( const IndicesVecType &  pointIndices,
const FieldPortalType &  pointFieldPortal,
const vtkm::Vec< ParametricCoordType, 3 > &  parametricCoords,
CellShapeTag  shape,
typename FieldPortalType::ValueType &  result 
)

Interpolate a point field in a cell.

Given the indices of the points for each node in a Vec, a portal to the point field values, and the parametric coordinates of a location within the cell, interpolates to that location.

Parameters
[in]pointIndicesA list of point indices for each point in the cell. This usually comes from a GetIndices() call on the structure object provided by a WholeCellSetIn argument to a worklet.
[in]pointFieldPortalAn array portal containing all the values in a point field array. This usually comes from a WholeArrayIn worklet argument.
[in]parametricCoordsThe parametric coordinates where you want to get the interpolaged field value for.
[in]shapeA tag of type CellShapeTag* to identify the shape of the cell.
[out]resultValue to store the interpolated field.

◆ CellInterpolate() [7/8]

template<typename ParametricCoordType >
vtkm::ErrorCode vtkm::exec::CellInterpolate ( const vtkm::VecAxisAlignedPointCoordinates< 2 > &  field,
const vtkm::Vec< ParametricCoordType, 3 > &  pcoords,
vtkm::CellShapeTagQuad  ,
vtkm::Vec3f result 
)

◆ CellInterpolate() [8/8]

template<typename ParametricCoordType >
vtkm::ErrorCode vtkm::exec::CellInterpolate ( const vtkm::VecAxisAlignedPointCoordinates< 3 > &  field,
const vtkm::Vec< ParametricCoordType, 3 > &  pcoords,
vtkm::CellShapeTagHexahedron  ,
vtkm::Vec3f result 
)

◆ CellMeasure() [1/8]

template<typename OutType , typename PointCoordVecType , typename CellShapeType >
OutType vtkm::exec::CellMeasure ( const vtkm::IdComponent numPts,
const PointCoordVecType &  pts,
CellShapeType  shape,
vtkm::ErrorCode  
)

By default, cells have zero measure unless this template is specialized below.

◆ CellMeasure() [2/8]

template<typename OutType , typename PointCoordVecType >
OutType vtkm::exec::CellMeasure ( const vtkm::IdComponent numPts,
const PointCoordVecType &  pts,
vtkm::CellShapeTagHexahedron  ,
vtkm::ErrorCode ec 
)

Compute the volume of a hexahedral cell (approximated via triple product of average edge along each parametric axis).

◆ CellMeasure() [3/8]

template<typename OutType , typename PointCoordVecType >
OutType vtkm::exec::CellMeasure ( const vtkm::IdComponent numPts,
const PointCoordVecType &  pts,
vtkm::CellShapeTagLine  ,
vtkm::ErrorCode ec 
)

Compute the arc length of a poly-line cell.

◆ CellMeasure() [4/8]

template<typename OutType , typename PointCoordVecType >
OutType vtkm::exec::CellMeasure ( const vtkm::IdComponent numPts,
const PointCoordVecType &  pts,
vtkm::CellShapeTagPyramid  ,
vtkm::ErrorCode ec 
)

Compute the volume of a pyramid (approximated as 2 tetrahedra)

◆ CellMeasure() [5/8]

template<typename OutType , typename PointCoordVecType >
OutType vtkm::exec::CellMeasure ( const vtkm::IdComponent numPts,
const PointCoordVecType &  pts,
vtkm::CellShapeTagQuad  ,
vtkm::ErrorCode ec 
)

Compute the area of a quadrilateral cell.

◆ CellMeasure() [6/8]

template<typename OutType , typename PointCoordVecType >
OutType vtkm::exec::CellMeasure ( const vtkm::IdComponent numPts,
const PointCoordVecType &  pts,
vtkm::CellShapeTagTetra  ,
vtkm::ErrorCode ec 
)

Compute the volume of a tetrahedron.

◆ CellMeasure() [7/8]

template<typename OutType , typename PointCoordVecType >
OutType vtkm::exec::CellMeasure ( const vtkm::IdComponent numPts,
const PointCoordVecType &  pts,
vtkm::CellShapeTagTriangle  ,
vtkm::ErrorCode ec 
)

Compute the area of a triangular cell.

◆ CellMeasure() [8/8]

template<typename OutType , typename PointCoordVecType >
OutType vtkm::exec::CellMeasure ( const vtkm::IdComponent numPts,
const PointCoordVecType &  pts,
vtkm::CellShapeTagWedge  ,
vtkm::ErrorCode ec 
)

Compute the volume of a wedge cell (approximated as 3 tetrahedra).

◆ ComputeMeasure()

template<typename OutType , typename PointCoordVecType >
OutType vtkm::exec::ComputeMeasure ( const vtkm::IdComponent ,
const PointCoordVecType &  ,
vtkm::CellShapeTagPolygon  ,
vtkm::ErrorCode ec 
)