85a81d404d
Use target mangling routine to access namespaced targets when building the tutorial internally to VTK-m's build |
||
---|---|---|
.. | ||
data | ||
CMakeLists.txt | ||
contour_two_fields.cxx | ||
contour.cxx | ||
error_handling.cxx | ||
extract_edges.cxx | ||
io.cxx | ||
logging.cxx | ||
mag_grad.cxx | ||
point_to_cell.cxx | ||
README.md | ||
rendering.cxx | ||
two_filters.cxx |
VTK-m Tutorial
This page contains materials and instructions for the VTK-m tutorial. Slides are available, and the instructions for getting the example source code exercises are below.
Developers interested in VTK-m should also consult The VTK-m User's Guide, which contains a quick start guide along with detailed documentation of most of VTK-m's features.
Further information is available at https://m.vtk.org.
Downloading VTK-m
The tutorial materials are maintained as part of the VTK-m code repository to help keep the examples up to date. Thus, getting, compiling, and running the tutorial examples is all part of VTK-m itself.
There are two options for getting the VTK-m source code. You could either download a tarball for a release or you can clone the source code directly from the VTK-m git repository.
Downloading a VTK-m Release Tarball
Souce code archives for every VTK-m release are posted on the VTK-m releases page in multiple archive formats. Simply download an archive for the desired version of VTK-m and extract the contents from that archive.
Cloning the VTK-m Git Repository
Developers familiar with git might find it easier to simply clone the VTK-m
git repository. The latest VTK-m release is always on the release
branch
and can be cloned as so.
git clone --branch release https://gitlab.kitware.com/vtk/vtk-m.git
If you are feeling more daring, you can simply clone the main branch with the latest developments.
git clone https://gitlab.kitware.com/vtk/vtk-m.git
Building VTK-m and the Tutorial Examples
To build VTK-m, you will need at a minimum CMake and, of course, a C++ compiler. The VTK-m dependencies list has details on required and optional packages.
When configuring the build with CMake, turn on the VTKm_ENABLE_TUTORIALS
option. There are lots of other options available including the ability to
compile for many different types of devices. But if this is your first
experience with VTK-m, it might be best to start with a simple build.
Here is a list of minimal commands to download and build VTK-m.
git clone --branch release https://gitlab.kitware.com/vtk/vtk-m.git
mkdir vtk-m-build
cd vtk-m-build
cmake ../vtk-m -DVTKm_ENABLE_TUTORIALS=ON
make -j8
The first line above downloads VTK-m using git. You can choose to download
a release as described above. Note
that if you do so, the source code will be placed in a directory named
something like vtk-m-vX.X.X
rather than the vtk-m
directory you get by
default when cloning VTK-m.
Examples
The tutorial contains several examples that can be built and edited. Each example is described in detail in the slides. Here is a brief description of each one, listed from most basic to increasing complexity.
- io.cxx A bare minimum example of loading a
DataSet
object from a data file and then writing it out again. - contour.cxx A basic example of running a filter that extracts isosurfaces from a data set.
- contour_two_fields.cxx A simple extension of contour.cxx that selects two of the input fields to be passed to the output.
- two_filters.cxx Further extends the contour.cxx example by running a sequence of 2 filters. The first extracts the isosurfaces and the second clips the surface by a second fields.
- rendering.cxx Demonstrates how to render data in VTK-m.
- error_handling.cxx Demonstrates catching exceptions to react to errors in VTK-m execution.
- logging.cxx Uses VTK-m's logging mechanism to write additional information to the program output.
- mag_grad.cxx The implementation of a simple VTK-m filter which happens to take the magnitude of a vector.
- point_to_cell.cxx A slightly more complicated filter that averages the values of a point field for each cell.
- extract_edges.cxx A fully featured example of a nontrivial filter that extracts topological features from a mesh.