mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-20 02:55:47 +00:00
particle advection enhancements
-Adding support to specify steps already taken by each particle to begin particle advection.
This commit is contained in:
parent
385d4045e9
commit
c5e2ee97fe
@ -77,6 +77,37 @@ public:
|
||||
worklet;
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Id, FieldStorage> stepsTaken, status;
|
||||
vtkm::Id numSeeds = static_cast<vtkm::Id>(pts.GetNumberOfValues());
|
||||
//Allocate status and steps arrays.
|
||||
vtkm::cont::ArrayHandleConstant<vtkm::Id> init(0, numSeeds);
|
||||
stepsTaken.Allocate(numSeeds);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<DeviceAdapter>::Copy(init, stepsTaken);
|
||||
worklet.Run(it, pts, fieldArray, nSteps, status, stepsTaken);
|
||||
|
||||
//Create output.
|
||||
ParticleAdvectionResult<FieldType> res(pts, status, stepsTaken);
|
||||
return res;
|
||||
}
|
||||
|
||||
template <typename IntegratorType,
|
||||
typename FieldType,
|
||||
typename PointStorage,
|
||||
typename FieldStorage,
|
||||
typename DeviceAdapter>
|
||||
ParticleAdvectionResult<FieldType> Run(
|
||||
const IntegratorType& it,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Vec<FieldType, 3>, PointStorage>& pts,
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec<FieldType, 3>, FieldStorage> fieldArray,
|
||||
vtkm::cont::ArrayHandle<vtkm::Id, FieldStorage>& stepsTaken,
|
||||
const vtkm::Id& nSteps,
|
||||
const DeviceAdapter&)
|
||||
{
|
||||
vtkm::worklet::particleadvection::ParticleAdvectionWorklet<IntegratorType,
|
||||
FieldType,
|
||||
DeviceAdapter>
|
||||
worklet;
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Id, FieldStorage> status;
|
||||
worklet.Run(it, pts, fieldArray, nSteps, status, stepsTaken);
|
||||
|
||||
//Create output.
|
||||
|
@ -124,15 +124,14 @@ private:
|
||||
typedef typename vtkm::cont::DeviceAdapterAlgorithm<DeviceAdapterTag> DeviceAlgorithm;
|
||||
|
||||
vtkm::Id numSeeds = static_cast<vtkm::Id>(seedArray.GetNumberOfValues());
|
||||
|
||||
//Allocate status and steps arrays.
|
||||
vtkm::cont::ArrayHandleConstant<vtkm::Id> ok(ParticleStatus::STATUS_OK, numSeeds);
|
||||
statusArray.Allocate(numSeeds);
|
||||
DeviceAlgorithm::Copy(ok, statusArray);
|
||||
|
||||
vtkm::cont::ArrayHandleConstant<vtkm::Id> zero(0, numSeeds);
|
||||
/*vtkm::cont::ArrayHandleConstant<vtkm::Id> zero(0, numSeeds);
|
||||
stepsTaken.Allocate(numSeeds);
|
||||
DeviceAlgorithm::Copy(zero, stepsTaken);
|
||||
DeviceAlgorithm::Copy(zero, stepsTaken);*/
|
||||
|
||||
//Create and invoke the particle advection.
|
||||
vtkm::cont::ArrayHandleIndex idxArray(numSeeds);
|
||||
|
Loading…
Reference in New Issue
Block a user