Commit Graph

72 Commits

Author SHA1 Message Date
Dave Pugmire
35627b287e Add support for ghost cells in particle advection. 2020-10-19 16:46:48 -04:00
Nick
024ab1cff8 Put each ODE integrator in it's own file. 2020-08-18 15:32:39 -04:00
Sujin Philip
452f61e290 Add Kokkos backend 2020-08-12 13:55:24 -04:00
dpugmire
31c97bed89 Generalize fields for particle advection 2020-07-20 21:15:46 -04:00
Abhishek Yenpure
23126bbec5 Integrator status fix for consistant behavior
- Return OK and spatial bits set when particle is out of bounds
- Changes done after discussion w/ Dave
2020-05-23 21:37:25 -07:00
dpugmire
d2e9b3d306 Fix for small euler step for particle advection. 2020-04-23 16:14:28 -04:00
dpugmire
8054dfdafb Fixes for streamlines. 2019-12-05 15:46:41 -05:00
dpugmire
115f0a6ee3 Changes to particle advection worklets. 2019-12-04 11:52:08 -05:00
Dave Pugmire
46c4c0e443 First light for streamlines.. 2019-10-10 09:46:29 -04:00
Dave Pugmire
6e9ab1ce5d Unit tests for AOS particle advection. 2019-10-01 13:33:12 -04:00
Dave Pugmire
28a73494b1 Added a version that directly uses ArrayHandle<vtkm::Particle> 2019-09-18 14:08:26 -04:00
Dave Pugmire
0c70950596 particle advection storage using array of structs. 2019-09-17 16:24:44 -04:00
Dave Pugmire
5af465efdb Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into particleAdvectionFloatType 2019-09-11 07:32:31 -04:00
Allison Vacanti
ea0bbfeefc Increase CUDA stack size for ParticleAdvection worklets.
Sometimes the CUDA runtime would not allocate sufficient stack
space for the particle advection code to run. This issue was exposed by
!1737 -- for some reason, once those changes to unrelated filters/worklets
are added to VTK, CUDA allocates less stack and the following tests would
fail:

UnitTestLagrangianFilterCUDA
UnitTestLagrangianStructuresFilterCUDA
UnitTestStreamlineFilterCUDA
UnitTestStreamSurfaceFilterCUDA

These were fixed by increasing the stack size in the particle advection
worklet Run(...) methods.

An RAII helper has been added that will restore the previous stack size
in case an exception is thrown, and the KDTree code has been updated
to use this helper when it adjusts the CUDA stack allocation.
2019-09-09 16:06:23 -04:00
Dave Pugmire
dff3845725 Use vtkm::FloatDefault for particle advection code. 2019-09-05 16:57:37 -04:00
Abhishek Yenpure
e3e71c54a3 Merging Dave's particle status rename changes 2019-08-05 10:58:52 -06:00
Abhishek Yenpure
7906145345 Merge branch 'particleStatusRename' of gitlab.kitware.com:dpugmire/vtk-m into particle_status_merge 2019-08-03 15:27:48 -06:00
Dave Pugmire
bdf98ff987 Change status types to avoid collision in Windows. 2019-07-31 16:28:22 -06:00
ayenpure
d636dea4e3 Resolving error introduced in merge 2019-07-31 16:02:30 -06:00
Dave Pugmire
e26e3ef621 Better naming for particle and integrator status 2019-07-31 15:46:04 -06:00
ayenpure
2f2230d1f4 Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into 2DLocators 2019-07-31 15:05:53 -06:00
ayenpure
09883039a8 Fixing particle advection small step issues 2019-07-31 13:21:08 -06:00
Dave Pugmire
19e41efb30 Add new particle status for 'took any steps' 2019-07-31 10:54:39 -06:00
ayenpure
2909565675 Adding updates 2019-07-18 10:25:47 -06:00
Abhishek Yenpure
1e4884ec15 Adding VisIt like boundary condition handling 2019-07-15 09:10:22 -07:00
Abhishek Yenpure
c2fa0467c1 Adding support for evaluating 2D meshes.
- Adding support for evaluating 2D meshes using Rectilinear Grids
- Adding support for particle advection for 2D meshes
2019-07-11 10:45:30 -07:00
Dave Pugmire
489995782f Support for polylines. 2019-05-17 13:35:35 -04:00
nadavi
fbcea82e78 conslidate the license statement 2019-04-17 10:57:13 -06:00
Robert Maynard
f1056affa7 Move select functions to host only to remove host/device suppressions
We previously had to mark the make_FunctionInterface function as
host/device as it could be used in either place. The ramifications
of this is that each time we launched a worklet any input parameter
had to either suppress cuda exceptions, or had to rely on the
DispatcherBase to suppress the warnings.

By making make_FunctionInterface only host callable ( as it is ),
we can remove all of our unneccesary suppression logic and better
expose real issues with code that is marked host/device but can't
be due to calling things such as std::abort
2019-04-03 12:48:33 -04:00
Kenneth Moreland
2e426ad547 Run the update-control-signature-tags.sh script 2019-01-11 12:23:10 -07:00
Kenneth Moreland
bddad9b386 Remove TryExecute from filters
Now that the dispatcher does its own TryExecute, filters do not need to
do that. This change requires all worklets called by filters to be able
to execute without knowing the device a priori.
2018-10-16 15:59:53 -06:00
Kenneth Moreland
d49c29cef9 Make particle advection integrators and evaluators ExecObject
By making these helper classes ExecObject, they no longer need to have a
device to be constructed. This is important for future plans to make the
filters not determine a device adapter now that dispatchers no longer
require a device adapter.
2018-10-16 09:53:18 -06:00
Kenneth Moreland
a2602183a4 Make integrators have a virtual superclass
This will make it easier to support integrators as an ExecObject.

One side effect is that the integrators and partical advection
are not templated by the type of the field.
Regardless of the type of the field, there is probably little reason to
compute particle advection with less than 64 bit floats to account for
accumulated errors. This will make it easier to use these classes.
2018-10-16 09:53:18 -06:00
Kenneth Moreland
d879188de0 Make DispatcherBase invoke using a TryExecute
Rather than force all dispatchers to be templated on a device adapter,
instead use a TryExecute internally within the invoke to select a device
adapter.

Because this removes the need to declare a device when invoking a
worklet, this commit also removes the need to declare a device in
several other areas of the code.
2018-08-29 19:18:54 -07:00
Allison Vacanti
93506d25e2 Change function signatures to use 'using' aliases.
Also cleaned up some lingering type typedefs.
2018-05-25 17:18:41 -04:00
ayenpure
24dd063810 Fixing merge mess for particle advection
Adding Utkarsh's changes from 86bd81de to Rectilinear grid as well
 - To make rectilinear grids work with any storage type

Adding Rob's changes from 7d6fe568 to the RK4Integrator
 - Previously the RK4Integrator could compute velocity with uninitialized inputs.

Adding Rob's changes from a6bf830f to ParticleAdvection
 - Previous ParticleAdvection would dispatch some of the worklets on the default device adapter
   and not the explicitly requested device adapter

Adding Ken's change from 0753131a
 - For supporting all the previous merge conflicts with the new ExecutionObjectBase change.
2018-05-15 11:35:29 -07:00
ayenpure
129e320d54 Replicating Rob's changes from the master
Replicating Rob's changes from the MR 'Worklets obey device adapter' #1179
for worklets to obey device adapter in particle advection.
2018-05-07 10:48:26 -07:00
ayenpure
3134fef54b Bug fixes out of Particle Advection unit test
- PushOutOfDomain would loop over without exiting indefinately utilizing all max steps.
  It's supposed to execute only once the particle goes out of spatio-temporal boundary.
- Removing the check for the steamlines polyline points to be same as the maxSteps from
  the unit test, as if the particle has already taken some steps, then the polyline
  points written out will always be lower than the total number of steps taken by the
  current node.
2018-04-21 20:32:42 -07:00
ayenpure
c53d6ec216 Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into pathsurfaces 2018-04-18 22:18:34 -07:00
ayenpure
faf8c8337a Adding Temporal Advection improvements
- Adding code to support taking short steps (minimize boundary errors)
- Adding time of advection to the particle from the Integrator
- API changes for TakeStep
	- TakeStep should only care about the maximum steps as it's a field on a Particle
	- The check for out of temporal and spatial bounds has been moved to the Worklet
- Changing some of the internal APIs for supporting these new features/fixes
- Changing inheritance in the Integrators class to be more obvious than something convoluted
2018-04-18 21:01:08 -07:00
ayenpure
2230496459 Code cleansing with temporal particle advection
Bug Fixes in the UniformGridEvaluator
Added Temporal Grid Evaluator for Uniform Grid
Updated Integrator to add temporal integration
Changing the TakeStep method in Particles to only deal with max steps
ideally, particles should be unaware of spatio-temporal constrains
Updating the ParticleAdvectionWorklet file to handle out of spatio-temporal
issues.

Missing: Code to take small steps (AT_SPATIAL_BOUNDARY and AT_TEMPORAL_BOUNDARY).
2018-04-14 16:58:58 -07:00
Robert Maynard
0d45c5cff2 Correct warnings found after disabling all warning when CUDA is enabled. 2018-04-04 11:00:12 -04:00
ayenpure
077988aeb4 Adding working temporal interpolation 2018-03-23 00:49:32 -07:00
ayenpure
8ae9c733e8 Adding temporal interpolation files 2018-03-22 18:15:39 -07:00
Robert Maynard
182f4707e7 vtkm prefers 'using' over typedef. 2018-02-23 10:47:20 -05: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
Abhishek Yenpure
7ce3d72dd1 Merge branch 'master' of https://gitlab.kitware.com/vtk/vtk-m into fix_advection_error 2017-09-14 14:50:27 -04:00
Abhishek Yenpure
1f3f10c0b6 Moving memory allocations/initializations to a single location 2017-09-14 11:16:29 -04:00
Dave Pugmire
400981815f Remove warnings. 2017-08-29 09:58:25 -04:00
Dave Pugmire
b2de8045cb Cleanup. Add some additional tests for streamlines. 2017-08-29 08:35:29 -04:00