Calculates and subdivides a mesh based on the material interface reconstruction algorithm.
More...
|
VTKM_CONT void | SetPositionCellSetName (std::string name) |
| Sets the name of the offset/position cellset field in the dataset passed to the filter. More...
|
|
VTKM_CONT void | SetLengthCellSetName (std::string name) |
| Sets the name of the length cellset field in the dataset passed to the filter. More...
|
|
VTKM_CONT void | SetIDWholeSetName (std::string name) |
| Sets the name of the ID whole-array set field in the dataset passed to the filter. More...
|
|
VTKM_CONT void | SetVFWholeSetName (std::string name) |
| Sets the name of the VF whole-array set field in the dataset passed to the filter. More...
|
|
VTKM_CONT void | SetMaxPercentError (vtkm::Float64 ma) |
|
VTKM_CONT void | SetMaxIterations (vtkm::IdComponent ma) |
|
VTKM_CONT void | SetErrorScaling (vtkm::Float64 sc) |
|
VTKM_CONT void | SetScalingDecay (vtkm::Float64 sc) |
|
VTKM_CONT std::string | GetOutputFieldName () |
| Gets the output cell-set field name for the filter. More...
|
|
VTKM_CONT void | SetOutputFieldName (std::string name) |
| Sets the output cell-set field name for the filter. More...
|
|
| FilterField () |
|
VTKM_CONT void | SetOutputFieldName (const std::string &name) |
|
const VTKM_CONT std::string & | GetOutputFieldName () const |
|
VTKM_CONT void | SetActiveField (const std::string &name, vtkm::cont::Field::Association association=vtkm::cont::Field::Association::Any) |
|
void | SetActiveField (vtkm::IdComponent index, const std::string &name, vtkm::cont::Field::Association association=vtkm::cont::Field::Association::Any) |
|
const VTKM_CONT std::string & | GetActiveFieldName (vtkm::IdComponent index=0) const |
|
VTKM_CONT vtkm::cont::Field::Association | GetActiveFieldAssociation (vtkm::IdComponent index=0) const |
|
VTKM_CONT void | SetActiveCoordinateSystem (vtkm::Id coord_idx) |
|
VTKM_CONT void | SetActiveCoordinateSystem (vtkm::IdComponent index, vtkm::Id coord_idx) |
|
VTKM_CONT vtkm::Id | GetActiveCoordinateSystemIndex () const |
|
VTKM_CONT vtkm::Id | GetActiveCoordinateSystemIndex (vtkm::IdComponent index) const |
|
VTKM_CONT void | SetUseCoordinateSystemAsField (bool val) |
|
VTKM_CONT void | SetUseCoordinateSystemAsField (vtkm::IdComponent index, bool val) |
|
VTKM_CONT bool | GetUseCoordinateSystemAsField (vtkm::IdComponent index=0) const |
|
virtual VTKM_CONT | ~Filter () |
|
virtual VTKM_CONT bool | CanThread () const |
|
VTKM_CONT void | SetThreadsPerCPU (vtkm::Id numThreads) |
|
VTKM_CONT void | SetThreadsPerGPU (vtkm::Id numThreads) |
|
VTKM_CONT vtkm::Id | GetThreadsPerCPU () const |
|
VTKM_CONT vtkm::Id | GetThreadsPerGPU () const |
|
VTKM_CONT bool | GetRunMultiThreadedFilter () const |
|
VTKM_CONT 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 void | SetFieldsToPass (const vtkm::filter::FieldSelection &fieldsToPass) |
| Specify which fields get passed from input to output. More...
|
|
VTKM_CONT void | SetFieldsToPass (vtkm::filter::FieldSelection &&fieldsToPass) |
| Specify which fields get passed from input to output. More...
|
|
VTKM_CONT void | SetFieldsToPass (const vtkm::filter::FieldSelection &fieldsToPass, vtkm::filter::FieldSelection::Mode mode) |
| Specify which fields get passed from input to output. More...
|
|
VTKM_CONT 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...
|
|
VTKM_CONT 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...
|
|
VTKM_CONT 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...
|
|
VTKM_CONT void | SetFieldsToPass (const std::string &fieldname, vtkm::filter::FieldSelection::Mode mode) |
| Specify which fields get passed from input to output. More...
|
|
const VTKM_CONT vtkm::filter::FieldSelection & | GetFieldsToPass () const |
| Specify which fields get passed from input to output. More...
|
|
VTKM_CONT vtkm::filter::FieldSelection & | GetFieldsToPass () |
| Specify which fields get passed from input to output. More...
|
|
VTKM_CONT void | SetPassCoordinateSystems (bool flag) |
| Specify whether to always pass coordinate systems. More...
|
|
VTKM_CONT bool | GetPassCoordinateSystems () const |
| Specify whether to always pass coordinate systems. More...
|
|
VTKM_CONT vtkm::cont::DataSet | Execute (const vtkm::cont::DataSet &input) |
|
VTKM_CONT vtkm::cont::PartitionedDataSet | Execute (const vtkm::cont::PartitionedDataSet &input) |
|
|
const VTKM_CONT vtkm::cont::Field & | GetFieldFromDataSet (const vtkm::cont::DataSet &input) const |
|
const VTKM_CONT vtkm::cont::Field & | GetFieldFromDataSet (vtkm::IdComponent index, const vtkm::cont::DataSet &input) const |
|
template<typename Functor , typename... Args> |
VTKM_CONT void | CastAndCallScalarField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const |
|
template<typename Functor , typename... Args> |
VTKM_CONT void | CastAndCallScalarField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const |
|
template<vtkm::IdComponent VecSize, typename Functor , typename... Args> |
VTKM_CONT void | CastAndCallVecField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const |
|
template<vtkm::IdComponent VecSize, typename Functor , typename... Args> |
VTKM_CONT void | CastAndCallVecField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const |
|
VTKM_CONT 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 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 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 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 vtkm::cont::DataSet | CreateResult (const vtkm::cont::DataSet &inDataSet) const |
| Create the output data set for DoExecute . More...
|
|
VTKM_CONT 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 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 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...
|
|
virtual VTKM_CONT vtkm::cont::PartitionedDataSet | DoExecutePartitions (const vtkm::cont::PartitionedDataSet &inData) |
|
template<typename FieldMapper > |
VTKM_CONT 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 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...
|
|
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).