VTK-m  2.1
Public Member Functions | Private Member Functions | Private Attributes | List of all members
vtkm::filter::clean_grid::CleanGrid Class Reference

Clean a mesh to an unstructured grid. More...

#include <CleanGrid.h>

Inheritance diagram for vtkm::filter::clean_grid::CleanGrid:
vtkm::filter::Filter

Public Member Functions

bool GetCompactPointFields () const
 When the CompactPointFields flag is true, the filter will identify and remove any points that are not used by the topology. More...
 
void SetCompactPointFields (bool flag)
 When the CompactPointFields flag is true, the filter will identify and remove any points that are not used by the topology. More...
 
bool GetMergePoints () const
 When the MergePoints flag is true, the filter will identify any coincident points and merge them together. More...
 
void SetMergePoints (bool flag)
 When the MergePoints flag is true, the filter will identify any coincident points and merge them together. More...
 
vtkm::Float64 GetTolerance () const
 Defines the tolerance used when determining whether two points are considered coincident. More...
 
void SetTolerance (vtkm::Float64 tolerance)
 Defines the tolerance used when determining whether two points are considered coincident. More...
 
bool GetToleranceIsAbsolute () const
 When ToleranceIsAbsolute is false (the default) then the tolerance is scaled by the diagonal of the bounds of the dataset. More...
 
void SetToleranceIsAbsolute (bool flag)
 When ToleranceIsAbsolute is false (the default) then the tolerance is scaled by the diagonal of the bounds of the dataset. More...
 
bool GetRemoveDegenerateCells () const
 When RemoveDegenerateCells is true (the default), then CleanGrid will look for repeated points in cells and, if the repeated points cause the cell to drop dimensionality, the cell is removed. More...
 
void SetRemoveDegenerateCells (bool flag)
 When RemoveDegenerateCells is true (the default), then CleanGrid will look for repeated points in cells and, if the repeated points cause the cell to drop dimensionality, the cell is removed. More...
 
bool GetFastMerge () const
 When FastMerge is true (the default), some corners are cut when computing coincident points. More...
 
void SetFastMerge (bool flag)
 When FastMerge is true (the default), some corners are cut when computing coincident points. More...
 
- Public Member Functions inherited from vtkm::filter::Filter
 Filter ()
 
virtual ~Filter ()
 
vtkm::cont::DataSet Execute (const vtkm::cont::DataSet &input)
 Executes the filter on the input and produces a result dataset. More...
 
vtkm::cont::PartitionedDataSet Execute (const vtkm::cont::PartitionedDataSet &input)
 Executes the filter on the input PartitionedDataSet and produces a result PartitionedDataSet. More...
 
void SetFieldsToPass (const vtkm::filter::FieldSelection &fieldsToPass)
 Specify which fields get passed from input to output. More...
 
void SetFieldsToPass (vtkm::filter::FieldSelection &&fieldsToPass)
 Specify which fields get passed from input to output. More...
 
void SetFieldsToPass (const vtkm::filter::FieldSelection &fieldsToPass, vtkm::filter::FieldSelection::Mode mode)
 
void SetFieldsToPass (std::initializer_list< std::string > fields, vtkm::filter::FieldSelection::Mode mode=vtkm::filter::FieldSelection::Mode::Select)
 Specify which fields get passed from input to output. More...
 
void SetFieldsToPass (std::initializer_list< std::pair< std::string, vtkm::cont::Field::Association >> fields, vtkm::filter::FieldSelection::Mode mode=vtkm::filter::FieldSelection::Mode::Select)
 Specify which fields get passed from input to output. More...
 
void SetFieldsToPass (const std::string &fieldname, vtkm::cont::Field::Association association, vtkm::filter::FieldSelection::Mode mode=vtkm::filter::FieldSelection::Mode::Select)
 Specify which fields get passed from input to output. More...
 
void SetFieldsToPass (const std::string &fieldname, vtkm::filter::FieldSelection::Mode mode)
 Specify which fields get passed from input to output. More...
 
const vtkm::filter::FieldSelectionGetFieldsToPass () const
 Specify which fields get passed from input to output. More...
 
vtkm::filter::FieldSelectionGetFieldsToPass ()
 Specify which fields get passed from input to output. More...
 
void SetPassCoordinateSystems (bool flag)
 Specify whether to always pass coordinate systems. More...
 
bool GetPassCoordinateSystems () const
 Specify whether to always pass coordinate systems. More...
 
void SetOutputFieldName (const std::string &name)
 Specifies the name of the output field generated. More...
 
const std::string & GetOutputFieldName () const
 Specifies the name of the output field generated. More...
 
void SetActiveField (const std::string &name, vtkm::cont::Field::Association association=vtkm::cont::Field::Association::Any)
 Specifies a field to operate on. More...
 
void SetActiveField (vtkm::IdComponent index, const std::string &name, vtkm::cont::Field::Association association=vtkm::cont::Field::Association::Any)
 Specifies a field to operate on. More...
 
const std::string & GetActiveFieldName (vtkm::IdComponent index=0) const
 Specifies a field to operate on. More...
 
vtkm::cont::Field::Association GetActiveFieldAssociation (vtkm::IdComponent index=0) const
 Specifies a field to operate on. More...
 
void SetActiveCoordinateSystem (vtkm::Id coord_idx)
 Specifies the coordinate system index to make active to use when processing the input vtkm::cont::DataSet. More...
 
void SetActiveCoordinateSystem (vtkm::IdComponent index, vtkm::Id coord_idx)
 Specifies the coordinate system index to make active to use when processing the input vtkm::cont::DataSet. More...
 
vtkm::Id GetActiveCoordinateSystemIndex (vtkm::IdComponent index=0) const
 Specifies the coordinate system index to make active to use when processing the input vtkm::cont::DataSet. More...
 
void SetUseCoordinateSystemAsField (bool val)
 Specifies whether to use point coordinates as the input field. More...
 
void SetUseCoordinateSystemAsField (vtkm::IdComponent index, bool val)
 Specifies whether to use point coordinates as the input field. More...
 
bool GetUseCoordinateSystemAsField (vtkm::IdComponent index=0) const
 Specifies whether to use point coordinates as the input field. More...
 
vtkm::IdComponent GetNumberOfActiveFields () const
 Return the number of active fields currently set. More...
 
virtual bool CanThread () const
 Returns whether the filter can execute on partitions in concurrent threads. More...
 
void SetThreadsPerCPU (vtkm::Id numThreads)
 
void SetThreadsPerGPU (vtkm::Id numThreads)
 
vtkm::Id GetThreadsPerCPU () const
 
vtkm::Id GetThreadsPerGPU () const
 
bool GetRunMultiThreadedFilter () const
 
void SetRunMultiThreadedFilter (bool val)
 
void SetInvoker (vtkm::cont::Invoker inv)
 Specify the vtkm::cont::Invoker to be used to execute worklets by this filter instance. More...
 

Private Member Functions

vtkm::cont::DataSet DoExecute (const vtkm::cont::DataSet &inData) override
 
vtkm::cont::DataSet GenerateOutput (const vtkm::cont::DataSet &inData, vtkm::cont::CellSetExplicit<> &outputCellSet, clean_grid::SharedStates &worklets)
 

Private Attributes

bool CompactPointFields = true
 
bool MergePoints = true
 
vtkm::Float64 Tolerance = 1.0e-6
 
bool ToleranceIsAbsolute = false
 
bool RemoveDegenerateCells = true
 
bool FastMerge = true
 

Additional Inherited Members

- Protected Member Functions inherited from vtkm::filter::Filter
vtkm::cont::DataSet CreateResult (const vtkm::cont::DataSet &inDataSet) const
 Create the output data set for DoExecute. More...
 
vtkm::cont::DataSet CreateResultField (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::Field &resultField) const
 Create the output data set for DoExecute More...
 
vtkm::cont::DataSet CreateResultField (const vtkm::cont::DataSet &inDataSet, const std::string &resultFieldName, vtkm::cont::Field::Association resultFieldAssociation, const vtkm::cont::UnknownArrayHandle &resultFieldArray) const
 Create the output data set for DoExecute More...
 
vtkm::cont::DataSet CreateResultFieldPoint (const vtkm::cont::DataSet &inDataSet, const std::string &resultFieldName, const vtkm::cont::UnknownArrayHandle &resultFieldArray) const
 Create the output data set for DoExecute More...
 
vtkm::cont::DataSet CreateResultFieldCell (const vtkm::cont::DataSet &inDataSet, const std::string &resultFieldName, const vtkm::cont::UnknownArrayHandle &resultFieldArray) const
 Create the output data set for DoExecute More...
 
vtkm::cont::PartitionedDataSet CreateResult (const vtkm::cont::PartitionedDataSet &input, const vtkm::cont::PartitionedDataSet &resultPartitions) const
 Create the output data set for DoExecute. More...
 
template<typename FieldMapper >
vtkm::cont::PartitionedDataSet CreateResult (const vtkm::cont::PartitionedDataSet &input, const vtkm::cont::PartitionedDataSet &resultPartitions, FieldMapper &&fieldMapper) const
 Create the output data set for DoExecute. More...
 
template<typename FieldMapper >
vtkm::cont::DataSet CreateResult (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::UnknownCellSet &resultCellSet, FieldMapper &&fieldMapper) const
 Create the output data set for DoExecute. More...
 
template<typename FieldMapper >
vtkm::cont::DataSet CreateResultCoordinateSystem (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::UnknownCellSet &resultCellSet, const vtkm::cont::CoordinateSystem &resultCoordSystem, FieldMapper &&fieldMapper) const
 Create the output data set for DoExecute. More...
 
template<typename FieldMapper >
vtkm::cont::DataSet CreateResultCoordinateSystem (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::UnknownCellSet &resultCellSet, const std::string &coordsName, const vtkm::cont::UnknownArrayHandle &coordsData, FieldMapper &&fieldMapper) const
 Create the output data set for DoExecute. More...
 
const vtkm::cont::FieldGetFieldFromDataSet (const vtkm::cont::DataSet &input) const
 Retrieve an input field from a vtkm::cont::DataSet object. More...
 
const vtkm::cont::FieldGetFieldFromDataSet (vtkm::IdComponent index, const vtkm::cont::DataSet &input) const
 Retrieve an input field from a vtkm::cont::DataSet object. More...
 
virtual vtkm::cont::PartitionedDataSet DoExecutePartitions (const vtkm::cont::PartitionedDataSet &inData)
 
template<typename Functor , typename... Args>
void CastAndCallScalarField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const
 Convenience method to get the array from a filter's input scalar field. More...
 
template<typename Functor , typename... Args>
void CastAndCallScalarField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const
 Convenience method to get the array from a filter's input scalar field. More...
 
template<vtkm::IdComponent VecSize, typename Functor , typename... Args>
void CastAndCallVecField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const
 Convenience method to get the array from a filter's input vector field. More...
 
template<vtkm::IdComponent VecSize, typename Functor , typename... Args>
void CastAndCallVecField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const
 Convenience method to get the array from a filter's input vector field. More...
 
template<typename Functor , typename... Args>
void CastAndCallVariableVecField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const
 This method is like CastAndCallVecField except that it can be used for a field of unknown vector size (or scalars). More...
 
template<typename Functor , typename... Args>
void CastAndCallVariableVecField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const
 This method is like CastAndCallVecField except that it can be used for a field of unknown vector size (or scalars). More...
 
- Protected Attributes inherited from vtkm::filter::Filter
vtkm::cont::Invoker Invoke
 

Detailed Description

Clean a mesh to an unstructured grid.

This filter converts the cells of its input to an explicit representation and potentially removes redundant or unused data. The newly constructed data set will have the same cells as the input and the topology will be stored in a vtkm::cont::CellSetExplicit<>. The filter will also optionally remove all unused points.

Note that the result of CleanGrid is not necessarily smaller than the input. For example, "cleaning" a data set with a vtkm::cont::CellSetStructured topology will actually result in a much larger data set.

CleanGrid can optionally merge close points. The closeness of points is determined by the coordinate system. If there are multiple coordinate systems, the desired coordinate system can be selected with the SetActiveCoordinateSystem() method.

Member Function Documentation

◆ DoExecute()

vtkm::cont::DataSet vtkm::filter::clean_grid::CleanGrid::DoExecute ( const vtkm::cont::DataSet inData)
overrideprivatevirtual

Implements vtkm::filter::Filter.

◆ GenerateOutput()

vtkm::cont::DataSet vtkm::filter::clean_grid::CleanGrid::GenerateOutput ( const vtkm::cont::DataSet inData,
vtkm::cont::CellSetExplicit<> &  outputCellSet,
clean_grid::SharedStates &  worklets 
)
private

◆ GetCompactPointFields()

bool vtkm::filter::clean_grid::CleanGrid::GetCompactPointFields ( ) const
inline

When the CompactPointFields flag is true, the filter will identify and remove any points that are not used by the topology.

This is on by default.

◆ GetFastMerge()

bool vtkm::filter::clean_grid::CleanGrid::GetFastMerge ( ) const
inline

When FastMerge is true (the default), some corners are cut when computing coincident points.

The point merge will go faster but the tolerance will not be strictly followed.

◆ GetMergePoints()

bool vtkm::filter::clean_grid::CleanGrid::GetMergePoints ( ) const
inline

When the MergePoints flag is true, the filter will identify any coincident points and merge them together.

The distance two points can be to considered coincident is set with the tolerance flags. This is on by default.

◆ GetRemoveDegenerateCells()

bool vtkm::filter::clean_grid::CleanGrid::GetRemoveDegenerateCells ( ) const
inline

When RemoveDegenerateCells is true (the default), then CleanGrid will look for repeated points in cells and, if the repeated points cause the cell to drop dimensionality, the cell is removed.

This is particularly useful when point merging is on as this operation can create degenerate cells.

◆ GetTolerance()

vtkm::Float64 vtkm::filter::clean_grid::CleanGrid::GetTolerance ( ) const
inline

Defines the tolerance used when determining whether two points are considered coincident.

Because floating point parameters have limited precision, point coordinates that are essentially the same might not be bit-wise exactly the same. Thus, the CleanGrid filter has the ability to find and merge points that are close but perhaps not exact. If the ToleranceIsAbsolute flag is false (the default), then this tolerance is scaled by the diagonal of the points.

◆ GetToleranceIsAbsolute()

bool vtkm::filter::clean_grid::CleanGrid::GetToleranceIsAbsolute ( ) const
inline

When ToleranceIsAbsolute is false (the default) then the tolerance is scaled by the diagonal of the bounds of the dataset.

If true, then the tolerance is taken as the actual distance to use.

◆ SetCompactPointFields()

void vtkm::filter::clean_grid::CleanGrid::SetCompactPointFields ( bool  flag)
inline

When the CompactPointFields flag is true, the filter will identify and remove any points that are not used by the topology.

This is on by default.

◆ SetFastMerge()

void vtkm::filter::clean_grid::CleanGrid::SetFastMerge ( bool  flag)
inline

When FastMerge is true (the default), some corners are cut when computing coincident points.

The point merge will go faster but the tolerance will not be strictly followed.

◆ SetMergePoints()

void vtkm::filter::clean_grid::CleanGrid::SetMergePoints ( bool  flag)
inline

When the MergePoints flag is true, the filter will identify any coincident points and merge them together.

The distance two points can be to considered coincident is set with the tolerance flags. This is on by default.

◆ SetRemoveDegenerateCells()

void vtkm::filter::clean_grid::CleanGrid::SetRemoveDegenerateCells ( bool  flag)
inline

When RemoveDegenerateCells is true (the default), then CleanGrid will look for repeated points in cells and, if the repeated points cause the cell to drop dimensionality, the cell is removed.

This is particularly useful when point merging is on as this operation can create degenerate cells.

◆ SetTolerance()

void vtkm::filter::clean_grid::CleanGrid::SetTolerance ( vtkm::Float64  tolerance)
inline

Defines the tolerance used when determining whether two points are considered coincident.

Because floating point parameters have limited precision, point coordinates that are essentially the same might not be bit-wise exactly the same. Thus, the CleanGrid filter has the ability to find and merge points that are close but perhaps not exact. If the ToleranceIsAbsolute flag is false (the default), then this tolerance is scaled by the diagonal of the points.

◆ SetToleranceIsAbsolute()

void vtkm::filter::clean_grid::CleanGrid::SetToleranceIsAbsolute ( bool  flag)
inline

When ToleranceIsAbsolute is false (the default) then the tolerance is scaled by the diagonal of the bounds of the dataset.

If true, then the tolerance is taken as the actual distance to use.

Member Data Documentation

◆ CompactPointFields

bool vtkm::filter::clean_grid::CleanGrid::CompactPointFields = true
private

◆ FastMerge

bool vtkm::filter::clean_grid::CleanGrid::FastMerge = true
private

◆ MergePoints

bool vtkm::filter::clean_grid::CleanGrid::MergePoints = true
private

◆ RemoveDegenerateCells

bool vtkm::filter::clean_grid::CleanGrid::RemoveDegenerateCells = true
private

◆ Tolerance

vtkm::Float64 vtkm::filter::clean_grid::CleanGrid::Tolerance = 1.0e-6
private

◆ ToleranceIsAbsolute

bool vtkm::filter::clean_grid::CleanGrid::ToleranceIsAbsolute = false
private

The documentation for this class was generated from the following file: