Calculates and subdivides a mesh based on the material interface reconstruction algorithm.
More...
|
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...
|
|
| 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::FieldSelection & | GetFieldsToPass () const |
| Specify which fields get passed from input to output. More...
|
|
vtkm::filter::FieldSelection & | GetFieldsToPass () |
| 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...
|
|
|
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::Field & | GetFieldFromDataSet (const vtkm::cont::DataSet &input) const |
| Retrieve an input field from a vtkm::cont::DataSet object. More...
|
|
const vtkm::cont::Field & | GetFieldFromDataSet (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...
|
|
vtkm::cont::Invoker | Invoke |
|
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).