Allocating arrays for worklet execution
In case where the number of steps taken by each particle is explicitly provided, code to initialize the arrays for steps and statuses for the particles was missing.
This commit is contained in:
parent
1f3f10c0b6
commit
44254f07bf
@ -98,7 +98,7 @@ public:
|
||||
ParticleAdvectionResult<FieldType> Run(
|
||||
const IntegratorType& it,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Vec<FieldType, 3>, PointStorage>& pts,
|
||||
vtkm::cont::ArrayHandle<vtkm::Id>& stepsTaken,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id>& stepsAlreadyTaken,
|
||||
const vtkm::Id& nSteps,
|
||||
const DeviceAdapter&)
|
||||
{
|
||||
@ -106,9 +106,18 @@ public:
|
||||
FieldType,
|
||||
DeviceAdapter>
|
||||
worklet;
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> status;
|
||||
worklet.Run(it, pts, nSteps, status, stepsTaken);
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> stepsTaken, status;
|
||||
vtkm::Id numSeeds = static_cast<vtkm::Id>(pts.GetNumberOfValues());
|
||||
//Allocate status and steps arrays.
|
||||
stepsTaken.Allocate(numSeeds);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<DeviceAdapter>::Copy(stepsAlreadyTaken, stepsTaken);
|
||||
|
||||
vtkm::cont::ArrayHandleConstant<vtkm::Id> statusOK(static_cast<vtkm::Id>(1), numSeeds);
|
||||
status.Allocate(numSeeds);
|
||||
vtkm::cont::DeviceAdapterAlgorithm<DeviceAdapter>::Copy(statusOK, status);
|
||||
|
||||
worklet.Run(it, pts, nSteps, status, stepsTaken);
|
||||
//Create output.
|
||||
ParticleAdvectionResult<FieldType> res(pts, status, stepsTaken);
|
||||
return res;
|
||||
|
Loading…
Reference in New Issue
Block a user