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

Calculates and subdivides a mesh based on the material interface reconstruction algorithm. More...

#include <MIRFilter.h>

Inheritance diagram for vtkm::filter::contour::MIRFilter:
vtkm::filter::Filter

Public Member Functions

void SetPositionCellSetName (std::string name)
 Sets the name of the offset/position cellset field in the dataset passed to the filter. More...
 
void SetLengthCellSetName (std::string name)
 Sets the name of the length cellset field in the dataset passed to the filter. More...
 
void SetIDWholeSetName (std::string name)
 Sets the name of the ID whole-array set field in the dataset passed to the filter. More...
 
void SetVFWholeSetName (std::string name)
 Sets the name of the VF whole-array set field in the dataset passed to the filter. More...
 
void SetMaxPercentError (vtkm::Float64 ma)
 
void SetMaxIterations (vtkm::IdComponent ma)
 
void SetErrorScaling (vtkm::Float64 sc)
 
void SetScalingDecay (vtkm::Float64 sc)
 
std::string GetOutputFieldName ()
 Gets the output cell-set field name for the filter. More...
 
void SetOutputFieldName (std::string name)
 Sets the output cell-set field name for the filter. 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 &input) override
 
bool DoMapField (vtkm::cont::DataSet &result, const vtkm::cont::Field &field, const vtkm::cont::ArrayHandle< vtkm::Id > &filterCellInterp, const vtkm::cont::ArrayHandle< vtkm::Vec< vtkm::Float64, 8 >> &MIRWeights, const vtkm::cont::ArrayHandle< vtkm::Vec< vtkm::Id, 8 >> MIRIDs)
 

Private Attributes

std::string pos_name
 
std::string len_name
 
std::string id_name
 
std::string vf_name
 
std::string OutputFieldName = std::string("cellMat")
 
vtkm::Float64 max_error = vtkm::Float64(1.0)
 
vtkm::Float64 scaling_decay = vtkm::Float64(1.0)
 
vtkm::IdComponent max_iter = vtkm::IdComponent(0)
 
vtkm::Float64 error_scaling = vtkm::Float64(0.0)
 

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

Calculates and subdivides a mesh based on the material interface reconstruction algorithm.

Subdivides a mesh given volume fraction information for each cell. It does this by applying a mixture of the painters algorithm and isosurfacing algorithm. This filter will return a dataset where cells are subdivided into new cells of a certain "Material", and fields passed will do 1 of 3 things: 1) They will not pass if they are an array associated with the whole mesh, 2) They will simply be passed to new cells if the array is associated with the cell set 3) They will be interpolated to new point locations if the array is associated with the point set

This algorithm requires passing a cell set of volume fraction information, not a point cell set. The exact fields are required: 1) A length cell set that specifies the number of materials associated to the cell. 2) A position cell set (or offset cell set) that specifies where the material IDs and VFs occur in the ID and VF arrays. 3) An ID array (whole array set) that stores the material ID information 4) An VF array (whole array set) that stores the fractional volume information for the respective material ID. Note that the cell VF information should add up to 1.0 across all materials for the cell, however this isn't checked in the code and might lead to undesirable results when iterating.

Note that this algorithm does not guarantee that the newly constructed cells will match the provided volume fractions, nor does it guarantee that there will exist a subcell of every material ID from the original cell. This usually occurs when the resolution of the mesh is too low (isolated materials in a single cell).

If wanted, this algorithm can iterate, adjusting cell VFs based on distance from the target values and the previous calculated iteration. This is done by setting the max iterations >0. In addition, the max percent error will allow for the filter to return early if the total error % of the entire dataset is less than the specified amount (defaults to 1.0, returns after first iteration). Finally, the error scaling and scaling decay allows for setting how much the cell VFs should react to the delta between target and calculated cell VFs. the error scaling will decay by the decay variable every iteration (multiplicitively).

Member Function Documentation

◆ DoExecute()

vtkm::cont::DataSet vtkm::filter::contour::MIRFilter::DoExecute ( const vtkm::cont::DataSet input)
overrideprivatevirtual

Implements vtkm::filter::Filter.

◆ DoMapField()

bool vtkm::filter::contour::MIRFilter::DoMapField ( vtkm::cont::DataSet result,
const vtkm::cont::Field field,
const vtkm::cont::ArrayHandle< vtkm::Id > &  filterCellInterp,
const vtkm::cont::ArrayHandle< vtkm::Vec< vtkm::Float64, 8 >> &  MIRWeights,
const vtkm::cont::ArrayHandle< vtkm::Vec< vtkm::Id, 8 >>  MIRIDs 
)
private

◆ GetOutputFieldName()

std::string vtkm::filter::contour::MIRFilter::GetOutputFieldName ( )
inline

Gets the output cell-set field name for the filter.

◆ SetErrorScaling()

void vtkm::filter::contour::MIRFilter::SetErrorScaling ( vtkm::Float64  sc)
inline

◆ SetIDWholeSetName()

void vtkm::filter::contour::MIRFilter::SetIDWholeSetName ( std::string  name)
inline

Sets the name of the ID whole-array set field in the dataset passed to the filter.

◆ SetLengthCellSetName()

void vtkm::filter::contour::MIRFilter::SetLengthCellSetName ( std::string  name)
inline

Sets the name of the length cellset field in the dataset passed to the filter.

◆ SetMaxIterations()

void vtkm::filter::contour::MIRFilter::SetMaxIterations ( vtkm::IdComponent  ma)
inline

◆ SetMaxPercentError()

void vtkm::filter::contour::MIRFilter::SetMaxPercentError ( vtkm::Float64  ma)
inline

◆ SetOutputFieldName()

void vtkm::filter::contour::MIRFilter::SetOutputFieldName ( std::string  name)
inline

Sets the output cell-set field name for the filter.

◆ SetPositionCellSetName()

void vtkm::filter::contour::MIRFilter::SetPositionCellSetName ( std::string  name)
inline

Sets the name of the offset/position cellset field in the dataset passed to the filter.

◆ SetScalingDecay()

void vtkm::filter::contour::MIRFilter::SetScalingDecay ( vtkm::Float64  sc)
inline

◆ SetVFWholeSetName()

void vtkm::filter::contour::MIRFilter::SetVFWholeSetName ( std::string  name)
inline

Sets the name of the VF whole-array set field in the dataset passed to the filter.

Member Data Documentation

◆ error_scaling

vtkm::Float64 vtkm::filter::contour::MIRFilter::error_scaling = vtkm::Float64(0.0)
private

◆ id_name

std::string vtkm::filter::contour::MIRFilter::id_name
private

◆ len_name

std::string vtkm::filter::contour::MIRFilter::len_name
private

◆ max_error

vtkm::Float64 vtkm::filter::contour::MIRFilter::max_error = vtkm::Float64(1.0)
private

◆ max_iter

vtkm::IdComponent vtkm::filter::contour::MIRFilter::max_iter = vtkm::IdComponent(0)
private

◆ OutputFieldName

std::string vtkm::filter::contour::MIRFilter::OutputFieldName = std::string("cellMat")
private

◆ pos_name

std::string vtkm::filter::contour::MIRFilter::pos_name
private

◆ scaling_decay

vtkm::Float64 vtkm::filter::contour::MIRFilter::scaling_decay = vtkm::Float64(1.0)
private

◆ vf_name

std::string vtkm::filter::contour::MIRFilter::vf_name
private

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