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.
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.
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.
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.
Found via `codespell` and `grep`
more typos
includes source typo change and a typo that needs further review
follow-up typos
Follow-up typos
Revert a commit
- Missed a ',' to seperate template argument in GridEvaluator
- Adding initialization of params to Integrators for RK4
- Fixing ExecutionBaseObject changes for Particles
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.
cleaned up a logic error texture2d and cleaned how the constructor for execution object was being called. Also, went and cleaned up how the execution object was being created for particle to align it with the same method for creating the execution object.
abstracted out particles into an execution object and a factory that populates said execution object based on its state. removed the facotries dependance on a device adaptor.
In order to make the change from the current way execution obejcts are utilized to the new proposed executionObjectFactory process type checks now has to look for the new execution object factory class to check against.
Fixing template errors in integrators.
The code used to build locally, but fail on Kitware test machines.
Fixing templates as they were before any temporal advection changes.
- 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.
- 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
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).