Commit Graph

77 Commits

Author SHA1 Message Date
Haocheng LIU
246a58309c Add a split sharp edge worklet and filter
It's a filter that Split sharp manifold edges where the feature angle
between the adjacent surfaces are larger than the threshold value.
When an edge is split, it would add a new point to the coordinates
and update the connectivity of an adjacent surface.
Ex. there are two adjacent triangles(0,1,2) and (2,1,3). Edge (1,2) needs
to be split. Two new points 4(duplication of point 1) an 5(duplication of point 2)
would be added and the later triangle's connectivity would be changed
to (5,4,3).
By default, all old point's fields would be copied to the new point.
Use with caution.
2018-10-09 15:33:47 -04:00
Allison Vacanti
bd337854ec Initial implementation of general logging.
Addresses #291.
2018-10-02 11:37:55 -04:00
Allison Vacanti
a754787e38 Add loguru to project. 2018-09-21 14:43:56 -04:00
Dave Pugmire
0ca97902ae Fix tab/white space warnings. 2018-09-06 12:04:37 -04:00
David Thompson
880d8a989e Add vtkm/Geometry.h and test it.
This commit adds several geometric constructs to vtk-m
in the `vtkm/Geometry.h` header. They may be used from
both the execution and control environments.

We also add methods to perform projection and Gram-Schmidt
orthonormalization to `vtkm/VectorAnalysis.h`.

See `docs/changelog/geometry.md` included in this commit
for more information.
2018-06-20 11:58:14 -04:00
Allison Vacanti
ec0791e941 Add a swap implementation that works on all backend.
Calling std::swap isn't legal from CUDA code, but the new vtkm::Swap
method is safe. It currently does a naive swap when compiling CUDA
code, and falls back to an ADL swap
2018-06-01 14:13:46 -04:00
Allison Vacanti
193447078f Add vtkm_taotuple to build system. 2018-05-16 11:45:11 -04:00
Robert Maynard
8808b41fbd Merge branch 'master' into vtk-m-cmake_refactor 2018-03-29 22:51:26 -04:00
Utkarsh Ayachit
70b647071c Make DIY a required dependency.
DIY now depends on MPI optionally. Hence we no longer need to depend on
DIY optionally based on whether MPI was enabled. Update cmake and c++
code to always use DIY-based components.

DIY is built with MPI support if VTKm_ENABLE_MPI is ON.
2018-02-26 11:25:56 -05:00
Robert Maynard
0660c67fef Merge branch 'master' into vtk-m-cmake_refactor 2018-01-16 15:42:28 -05:00
Robert Maynard
d07ab6bc4a Refactor benchmarking to be outside the vtkm folder structure
The benchmarking isn't installed as part of vtk-m and therefore shouldn't
be under vtkm/
2018-01-08 14:00:57 -05:00
Utkarsh Ayachit
92cf8bf6d4 cmake: update cmake rules to use vtkm/thirdparty/diy. 2018-01-03 14:37:23 -05:00
Robert Maynard
24e57556e6 Merge branch 'master' into vtk-m-cmake_refactor
Includes updating to cleanup benchmark code and handle the new MPI option
2017-12-28 14:23:21 -05:00
Sujin Philip
334262db16 Fix Field constructors
1. Add option to copy user supplied array in make_ArrayHandle.
2. Replace Field constructors that take user supplied arrays with make_Field.
3. Replace CoordinateSystem constructors that take user supplied arrays with
   make_CoordinateSystem.
2017-12-21 12:48:15 -05:00
Matthew Letter
fac43bd812 Merge branch 'master' into cmake_refactor 2017-11-28 13:36:02 -07:00
Matthew Letter
fa333d3b48 adding check for enable benchmarks #3
forgot to add in the check for VTKm_ENABLE_BENCHMARKS when building benchmarks
2017-11-16 16:21:58 -07:00
Sujin Philip
8c242cef91 Switch from faux to true virtuals 2017-11-06 15:25:29 -05:00
Matthew Letter
79ef8f4b47 added benchmarking into cmake list 2017-10-31 17:01:45 -06:00
Robert Maynard
3ded554831 Extend the CMake rewrite to include vtkm_rendering 2017-10-27 15:29:58 -04:00
Robert Maynard
56c7362258 A thought on what CMake 3.9 would mean to VTK-m. 2017-10-27 15:29:51 -04:00
Allison Vacanti
75f88b4c46 Add versioning to VTKM installed include/share dirs. 2017-10-02 11:39:10 -04:00
Kenneth Moreland
c3a3184d51 Update copyright for Sandia
Sandia National Laboratories recently changed management from the
Sandia Corporation to the National Technology & Engineering Solutions
of Sandia, LLC (NTESS). The copyright statements need to be updated
accordingly.
2017-09-20 15:33:44 -06:00
Robert Maynard
5ec6d8fd13 Merge topic 'for-vtk'
2f2909f7 Add support for containing project to override default install locations
0dbf776b Use VTKm_BINARY_DIR relative path to find headers to install
a481671c Configure files to VTKm_BINARY_DIR-based paths
16720937 Avoid redefining CMake default variables

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !889
2017-08-31 11:52:05 -04:00
Shawn Waldon
0dbf776b76 Use VTKm_BINARY_DIR relative path to find headers to install 2017-08-28 11:38:31 -04:00
Shawn Waldon
a481671c5b Configure files to VTKm_BINARY_DIR-based paths 2017-08-28 11:38:31 -04:00
Kenneth Moreland
fc7b90aca6 Add hash function
Based on the FNV-1a algorithm. Creates 32-bit hashes.
2017-08-24 10:02:18 -06:00
David C. Lonie
fb2d36be1e Refactor VecRectilinearPointCoordinates.
See #163.
2017-07-07 13:49:35 -04:00
Sujin Philip
d618728356 Add vtkm::RangeId and vtkm::RangeId3 2017-05-30 16:32:52 -04:00
Sujin Philip
82d02e46ef Modify ImplicitFunctions to use Virtual Methods 2017-05-01 16:55:59 -04:00
Sujin Philip
b455636bcd Move BaseComponentOf to vtkm::BaseComponent 2017-03-07 14:46:55 -05:00
Kenneth Moreland
a671963834 Add Version.h header file
This allows source files to use the VTK-m version.

Note that Configure.h does not include the version. This is intentional.
First, I don't want the entirety of VTK-m to recompile every time the
version is updated (which is every time a commit happens in git).
Second, it is important that external project source files be able to
get the VTK-m version without actually loading any VTK-m code.
2017-01-26 10:33:42 -07:00
Kenneth Moreland
b3d0e1f99b Move VecFromPortal classes to vtkm package
These Vec-like objects can be generally usable in both the control and
execution environments.
2016-11-22 17:04:55 -07:00
Kenneth Moreland
039efd6b7e Fix some issues with OpenGL configuration
Change the OpenGL configuration to require GLEW as most of the OpenGL
code actually requires GLEW (or will as soon as the VBO branch gets
merged in).

Also removed some stray find_package commands and rearranged the
configuration to use the vtkm_configure_component_* commands instead.
2016-10-03 17:34:15 -06:00
Kenneth Moreland
c1de0e0746 Change VTKm_BUILD_RENDERING to VTKm_ENABLE_RENDERING
This makes the name more consistent with the names of the other VTK-m
CMake options.

Also changed the default to be ON. I do not see a big downside to
compiling the rendering library most of the time.
2016-09-21 14:38:00 -06:00
Kenneth Moreland
866c617cbf Fix config issues with headers and libraries
There were a couple of places where the configure scripts did not add
either includes to VTKm_INCLUDE_DIRS or libraries to VTKm_LIBRARIES.

The biggest offender was when the examples used find_package to load the
VTK-m configuration it needed. find_package cleared out the includes and
libraries, but it did not clear out the VTKm_<COMPONENT>_FOUND
variables. Normally, these variables would not be set before
find_package is called, but in this case the examples were called after
some partial configuration. I got around this issue by clearing out all
the *_FOUND variables in VTKmConfig.cmake.
2016-08-23 14:07:38 -06:00
Kenneth Moreland
cdeeda67bb Make a shared header of 3D transformations
Affine transformations of homogeneous coordinates using 4x4 matrices are
quite common in visualization. Create a new math header file in the base
vtkm namespace that has common functions for such coordinates.

Much of this implementation was taken from the rendering matrix helpers.
2016-06-09 13:34:29 -06:00
Kenneth Moreland
d75857d0bc Add Bounds struct
This is a simple struct that defines min and max values over X, Y, and Z
to define an axis-aligned bounding box.
2016-05-29 18:49:36 -06:00
Kenneth Moreland
b358fcb19f Add Range struct
This is a simple struct that has a min and max scalar value to represent
a range of scalar values. It also comes with several helper methods.
2016-05-29 18:49:36 -06:00
Kenneth Moreland
2ddad8bcc5 Add POSIX assert wrapper
Add in the vtkm namespace an assert macro (technically VTKM_ASSERT) that
basically replicates the functionality of the POSIX assert macro. This
form of assert is set to replace the separate control/exection asserts.

It has been decided that an assert that throws an exception instead of
terminating the program is not all that great of a feature and it causes
some limitations on how it is used. The next commit will remove the
other forms of VTK-m assert.
2016-04-20 14:19:22 -06:00
Kenneth Moreland
c503e0ce8a Move NewtonsMethod to the vtkm package
All the other math functions are in the vtkm package. This one was in
vtkm::exec because it uses a callback method. This can be problematic on
CUDA the the declaration of NewtonsMethod does not match the callback
method. However, we now have a VTKM_SUPPRESS_EXEC_WARNINGS macro that
allows a VTKM_EXEC_CONT_EXPORT function (like NewtonsMethod) to call
either a VTKM_EXEC_EXPORT or VTKM_CONT_EXPORT without a warning.
2016-04-14 14:36:02 -06:00
Robert Maynard
1ec3bc0e7a Rename the opengl folder / namespace to interop.
To clarify what functionality the classes inside provide.
2016-04-13 15:52:15 -04:00
Dave Pugmire
294b73e00e Make the rendering part of the build optional.
Add the mesa libs to the link line.
2016-03-28 08:51:36 -04:00
mclarsen
03a95c44b1 adding rendering from other branch 2016-03-28 08:50:04 -04:00
Kenneth Moreland
316ccc04a9 Remove the Extent class and related functions.
We have decided that we do not need the concept of an Extent in our data
model. Instead, we simply use dimensions, which can be represented in a
vtkm::Id3.
2016-03-22 15:41:42 -06:00
Robert Maynard
bcee827097 First draft of vtkm::filter design. 2016-03-14 08:39:17 -04:00
Jeremy Meredith
a78e735b3c adding VTK file exporter and test cases. 2015-10-22 17:18:33 -04:00
Sujin Philip
5ea70b6ddd Add implicit functions 2015-10-08 09:32:14 -04:00
Kenneth Moreland
b15940c1e3 Declare new VTKM_STATIC_ASSERT
This is to be used in place of BOOST_STATIC_ASSERT so that we can
control its implementation.

The implementation is designed to fix the issue where the latest XCode
clang compiler gives a warning about a unused typedefs when the boost
static assert is used within a function. (This warning also happens when
using the C++11 static_assert keyword.) You can suppress this warning
with _Pragma commands, but _Pragma commands inside a block is not
supported in GCC. The implementation of VTKM_STATIC_ASSERT handles all
current cases.
2015-09-17 14:40:39 -06:00
Kenneth Moreland
429f9c0cb7 Add VecRectilinearPointCoordinates class
This class implicitly stores the point coordinates for a rectilinear
cell (such as a voxel) with just the location of the lower left point
and the spacing in each dimension. In addition to saving space, this
class should allow cell-specific functions to specialize for faster
processing.
2015-09-02 13:50:31 -07:00
Kenneth Moreland
f5f5523c25 Add CellTraits class
Currently it is pretty empty. It might make sense to roll this into the
CellShapeTag, but we may add more information later.
2015-08-27 16:31:05 -06:00