Commit Graph

70 Commits

Author SHA1 Message Date
Zhe Wang
01f21a59b8 Merge topic 'add_MergeDataSet_filter'
725407235 add merge data sets filter

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <morelandkd@ornl.gov>
Merge-request: !3148
2023-11-21 20:09:28 -05:00
Wang
7254072357 add merge data sets filter 2023-11-21 15:31:59 -05:00
Kenneth Moreland
5b8c282e9f Continue transfer of Users' Guide text
These changes complete the using part of the guide.
2023-11-21 10:33:45 -07:00
Jay
393db328a3 add multislice filter 2023-10-12 10:08:53 -04:00
Sujin Philip
757067a30f Merge topic 'fix-clip-centroid-points'
bda2d3d8e Clip: remap centroid interpolation points to used-only point

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Abhishek Yenpure <abhi.yenpure@kitware.com>
Merge-request: !3133
2023-09-07 10:15:41 -04:00
Sujin Philip
bda2d3d8e1 Clip: remap centroid interpolation points to used-only point
Previously, Clip was updated to remove unused points from the input.
This requires a re-mapping of point ids after compaction. This
re-mapping was missed for the points used for interpolation of centorid
points.
2023-09-04 10:51:47 -04:00
Kenneth Moreland
e5723a4219 Merge topic 'flying-edges-cell-fields'
8a9887023 Add regression test for flying edges interpolating cell fields
4f19ac608 Fix interpolation of cell fields with flying edges

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3129
2023-08-31 10:28:32 -04:00
Kenneth Moreland
8a98870231 Add regression test for flying edges interpolating cell fields 2023-08-30 13:12:55 -05:00
Kenneth Moreland
4f19ac6082 Fix interpolation of cell fields with flying edges
The flying edges algorithm (used when contouring uniform structured cell
sets) was not interpolating cell fields correctly. There was an indexing
issue where a shortcut in the stepping was not incrementing the cell index.
2023-08-30 09:25:55 -05:00
Zhe Wang
0c77fcddec Merge topic 'add_multiplane_for_clip'
21a58a294 add multi plane for clip

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3124
2023-08-23 16:06:39 -04:00
Jay
21a58a294c add multi plane for clip 2023-08-23 02:32:17 +00:00
Kenneth Moreland
8bb664de85 Support any cell type in MIR filter
Previously, the MIR filter ran a check the dimensionality of the cells in
its input data set to make sure they conformed to the algorithm. The only
real reason this was necessary is because the `MeshQuality` filter can only
check the size of either area or volume, and it has to know which one to
check. However, the `CellMeasures` filter can compute the sizes of all
types of cells simultaneously (as well as more cell types). By using this
filter, the MIR filter can skip the cell type checks and support more mesh
types.
2023-08-17 10:11:25 -04:00
Kenneth Moreland
db2dbbbccb Simplify MarchingCells execute method
The output arrays are always basic arrays containing `vtkm::Vec3f`, so
we don't need to template those arguments.
2023-06-27 09:07:44 -04:00
Kenneth Moreland
0ee495f310 Split the compilation of ContourMarchingCells into instantiations
Although the contour filter was recently divided into 2 filters, flying
edges and marching cubes, the marching cubes version still had many
conditions and was the file that took the longest to compile on Frontier.
To help speed up parallel compiles and prevent a single run of a
compiler from being overwhelmed, the compilation of all the marching
cubes conditions has been split up using instantiations.
2023-06-26 14:07:47 -04:00
Kenneth Moreland
44650c2e48 Fix unused variable in contour test 2023-05-12 12:00:17 -06:00
Louis Gombert
1538fc02fb Implement Flying Edges for all structured CellSets
In addition to  using uniform coordinates, the ContourFlyingEdges filter can now process any type of coordinate system, making the  filter use Flying Edges in more cases
2023-05-10 15:20:53 +02:00
Louis Gombert
dcdda3065a Split flying edges and marching cells into separate filters
In order to compile the contour filter more efficiently, we split the contour filter into two separate translation units, corresponding to the new filters ContourFlyingEdges and ContourMarchingCells. The API for Contour filter is left totally unchanged, and tries to use flying edges if the dataset is structured and uniform.
All three contour filters inherit from the `AbstractContour` class, providing utility methods used in the implementations.
2023-05-04 15:20:20 +02:00
Sujin Philip
1261e459d3 Clip: Remove unused points
The clip filter used to copy the input points and point fields as is,
regardless of if they were actually part of the output. With this change,
we track which input points are actually part of the output and copy
only those values.

Address: #112
2023-04-11 14:35:25 -04:00
Sujin Philip
758fedc661 Clip: Release resources early 2023-04-10 16:19:47 -04:00
Sujin Philip
863c8e3dc6 Clip: Use vtkm::cont::Invoker
Replace use of vtkm::worklet::Dispatcher* with vtkm::cont::Invoker.
2023-04-10 16:18:24 -04:00
Kenneth Moreland
3ab9e2ba75 Update clip with implicit function filter's field map
MR !2969 was meant to update the clip filters such that their field
mapping works on any field type and preserves the value type. Although
this was done for `ClipWithField`, it was not fully implemented for
`ClipWithImplicitFunction`. These changes update
`ClipWithImplicitFunction` to match its sibling.
2023-03-21 13:33:30 -06:00
Kenneth Moreland
29ecbbb005 Map fields of any type in MIRFilter
Use the ability to extract array components to handle any array in the
map field.
2023-02-03 08:34:08 -05:00
Kenneth Moreland
719d347fd9 Update contour filter's field map to work on any field type
Use the extract component functionality to get data from any type of
array. This prevents converting fields to `vtkm::DefaultFloat` and
supports any size `Vec` in the component.
2023-01-30 13:14:56 -07:00
Kenneth Moreland
1889447d82 Update clip filter's field map to work on any field type
The previous implementation of the map field in the clip filters
(`ClipWithField` and `ClipWithImplicitFunction`) checked for common field
types and interpolated those. If the field value type did not match, it
would either convert the field to floats (which is at odds with what VTK
does) or fail outright if the `Vec` length is not supported.

The map field function for clip has been changed to support all possible
types. It does this by using the extract component functionality to get
data from any type of array.
2023-01-24 11:14:51 -07:00
Kenneth Moreland
22e2e5ff32 Merge topic 'source-point-dims'
aa7b83bb2 Handle random seed generation better for PerlinNoise
84bc72312 Make source parameters more clear

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Li-Ta Lo <ollie@lanl.gov>
Merge-request: !2933
2022-12-04 09:27:21 -05:00
Kenneth Moreland
405643ddbb Rename NewFilter base classes to Filter
During the VTK-m 1.8 and 1.9 development, the filter infrastructure was
overhauled. Part of this created a completely new set of base classes. To
avoid confusion with the original filter base classes and ease transition,
the new filter base classes were named `NewFilter*`. Eventually after all
filters were transitioned, the old filter base classes were deprecated.

With the release of VTK-m 2.0, the old filter base classes are removed. The
"new" filter base classes are no longer new. Thus, they have been renamed
simply `Filter` (and `FilterField`).
2022-12-01 13:07:56 -07:00
Kenneth Moreland
84bc723121 Make source parameters more clear
Originally, most of the sources used constructor parameters to set the
various options of the source. Although convenient, it was difficult to
keep track of what each parameter meant. To make the code more clear,
source parameters are now set with accessor functions (e.g.
`SetPointDimensions`). Although this makes code more verbose, it helps
prevent mistakes and makes the changes more resilient to future changes.
2022-12-01 08:13:58 -07:00
Kenneth Moreland
3e1339f9a7 Remove deprecated features from VTK-m
With the major revision 2.0 of VTK-m, many items previously marked as
deprecated were removed. If updating to a new version of VTK-m, it is
recommended to first update to VTK-m 1.9, which will include the deprecated
features but provide warnings (with the right compiler) that will point to
the replacement code. Once the deprecations have been fixed, updating to
2.0 should be smoother.
2022-11-17 07:12:31 -06:00
Kenneth Moreland
2d30e6d45a Coordinate systems are stored as Fields
Previously, `DataSet` managed `CoordinateSystem`s separately from `Field`s.
However, a `CoordinateSystem` is really just a `Field` with some special
attributes. Thus, coordiante systems are now just listed along with the
rest of the fields, and the coordinate systems are simply strings that
point back to the appropriate field. (This was actually the original
concept for `DataSet`, but the coordinate systems were separated from
fields for some now obsolete reasons.)
2022-11-11 06:17:58 -07:00
Kenneth Moreland
2945813755 Removed ExecutionWholeArray class
`ExecutionWholeArray` is an archaic class in VTK-m that is a thin wrapper
around an array portal. In the early days of VTK-m, this class was used to
transfer whole arrays to the execution environment. However, now the
supported method is to use `WholeArray*` tags in the `ControlSignature` of
a worklet.

Nevertheless, the `WholeArray*` tags caused the array portal transferred to
the worklet to be wrapped inside of an `ExecutionWholeArray` class. This
is unnecessary and can cause confusion about the types of data being used.

Most code is unaffected by this change. Some code that had to work around
the issue of the portal wrapped in another class used the `GetPortal`
method which is no longer needed (for obvious reasons). One extra feature
that `ExecutionWholeArray` had was that it provided an subscript operator
(somewhat incorrectly). Thus, any use of '[..]' to index the array portal
have to be changed to use the `Get` method.
2022-10-27 15:07:41 -06:00
Kenneth Moreland
ad1e7b5bdb Add module mechanism
This mechanism sets up CMake variables that allow a user to select which
modules/libraries to create. Dependencies will be tracked down to ensure
that all of a module's dependencies are also enabled.

The modules are also arranged into groups.
Groups allow you to set the enable flag for a group of modules at once.
Thus, if you have several modules that are likely to be used together,
you can create a group for them.

This can be handy in converting user-friendly CMake options (such as
`VTKm_ENABLE_RENDERING`) to the modules that enable that by pointing to
the appropriate group.
2022-10-26 12:51:05 -06:00
Ben Boeckel
441d570da4 Merge topic 'fix-clip-typelist'
42cb62028 Clip should use `VTKM_DEFAULT_TYPE_LIST` in CastAndCall

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Vicente Bolea <vicente.bolea@kitware.com>
Acked-by: Kenneth Moreland <morelandkd@ornl.gov>
Merge-request: !2889
2022-10-13 14:08:56 -04:00
Sujin Philip
42cb620289 Clip should use VTKM_DEFAULT_TYPE_LIST in CastAndCall
This was causing an issue in VTK as the VTK specific typelist was not
being used. This resulted in a field's type being changed from `UInt8` to
`Float32` and caused a test to fail.
2022-10-13 12:14:45 -04:00
Kenneth Moreland
71a1bea1ae Merge topic 'contour-bug'
aaf49915e Fix Flying Edges z-boundary condition with non-square input

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Zhe Wang <godenwangzhe@gmail.com>
Merge-request: !2875
2022-09-29 13:37:12 -04:00
Kenneth Moreland
aaf49915e0 Fix Flying Edges z-boundary condition with non-square input
There was a bug with Flying Edges checking the boundary conditions in
the z-direction. It was comparing the z index to the size of the y
dimension, not the z dimension. This simple typo was probably missed
because most of the tests use square meshes. To catch the problem, you
need a mesh that has a different number of points in the y and z
directions and the contour has to go past the positive z boundary.

When this error was hit, the indices for the edges on that boundary were
not recorded, and later interpolation used garbage values for edge's
point ids.
2022-09-29 06:25:12 -06:00
Sujin Philip
fa574fdf46 Slice should support slicing along non-zero values
Earlier we were explicitly setting the slice-at value to zero. Now the
filter is more flexible.
2022-09-12 16:09:07 -04:00
Sujin Philip
e885cde0eb Add support for Offset in ClipWithImplicitFunction
This allows the user to specify a value of the implcit function to clip
at. The default is 0, which gives the same result as before.
2022-09-12 09:40:08 -04:00
Sujin Philip
e85f403fd4 Update paramter constness to follow vtk-m style in Clip.h
There were several cases where parameters of basic types were declared
const-by-value, instead of just by-value which is the convention
followed in vtk-m.

There were also some cases where compound types were being declared
const-by-value instead of const-by-reference.
2022-09-12 09:32:19 -04:00
Dave Pugmire
fbe78b45cf Change all usage of IsField* to Is*Field. 2022-08-29 14:42:02 -04:00
Dave Pugmire
f69e598225 Change of Field::Association names. 2022-08-29 06:40:42 -04:00
Kenneth Moreland
163d591795 Add DEVICE_SOURCES to vtkm_unit_tests
The `vtkm_unit_tests` function in the CMake build now allows you to specify
which files need to be compiled with a device compiler using the
`DEVICE_SOURCES` argument. Previously, the only way to specify that unit
tests needed to be compiled with a device compiler was to use the
`ALL_BACKENDS` argument, which would automatically compile everything with
the device compiler as well as test the code on all backends.
`ALL_BACKENDS` is still supported, but it no longer changes the sources to
be compiled with the device compiler.
2022-07-08 06:28:51 -06:00
Li-Ta Lo
9269a3a3d4 removed unused ProcessCellField 2022-06-30 09:27:09 -06:00
Kenneth Moreland
ac06c00c7d Use MeshQuality filter in MIRFilter
Previously, MIRFilter directly used MeshQuality's worklet to compute
areas/volumes. However, it is not a great idea to be touching the
internal worklets of other filters, which are going to change soon.
Besides, this should speed up compilation a little bit since the mesh
quality will only have to be compiled once.
2022-06-23 07:53:11 -06:00
Li-Ta Lo
7d83a7dc5c remove unreachable code 2022-05-19 17:44:46 -06:00
Li-Ta Lo
98e0f4c259 remove shared states from MIRFilter instances 2022-05-19 16:59:34 -06:00
Li-Ta Lo
1d64b1045c added deprecated MIRFilter.h 2022-05-19 10:44:42 -06:00
Li-Ta Lo
7e6e5f0b86 Update MIRFilter.cxx 2022-05-18 17:57:59 -04:00
Li-Ta Lo
ac078c8c0f call DoMapeField 2022-05-18 08:55:28 -06:00
Li-Ta Lo
0a0e30858e Migrate MIR filter 2022-05-16 09:26:08 -06:00
Kenneth Moreland
b544b8e09f Fix point merge for Marching Cubes with multiple isosurfaces
When the Marching Cubes algorithm merges points together for multiple
isosurfaces, it uses an ArrayHandleZip to combine the isosurface id and
the edge identification. This is to prevent merging points from
different isosurfaces. However, internally this has to do an array copy.

It was doing this copy with `ArrayCopy`. A recent change to that method
made the copy fail for `ArrayHandleZip`. The fix is to change to
`ArrayCopyDevice`.

The reason why this bug was introduced was because there was no test
case for this specific use. A regression test has been updated to test
for this case.
2022-03-21 11:44:36 -06:00