Fix to examples to use vtkm::Particle

This commit is contained in:
dpugmire 2019-12-19 09:56:05 -05:00
parent b30827215c
commit c5f9b9b20f
2 changed files with 23 additions and 9 deletions

@ -57,20 +57,21 @@ int main(int argc, char** argv)
//create seeds randomly placed withing the bounding box of the data.
vtkm::Bounds bounds = ds.GetCoordinateSystem().GetBounds();
std::vector<vtkm::Vec3f> seeds;
std::vector<vtkm::Particle> seeds;
for (int i = 0; i < numSeeds; i++)
for (vtkm::Id i = 0; i < numSeeds; i++)
{
vtkm::Vec3f p;
vtkm::Particle p;
vtkm::FloatDefault rx = (vtkm::FloatDefault)rand() / (vtkm::FloatDefault)RAND_MAX;
vtkm::FloatDefault ry = (vtkm::FloatDefault)rand() / (vtkm::FloatDefault)RAND_MAX;
vtkm::FloatDefault rz = (vtkm::FloatDefault)rand() / (vtkm::FloatDefault)RAND_MAX;
p[0] = static_cast<vtkm::FloatDefault>(bounds.X.Min + rx * bounds.X.Length());
p[1] = static_cast<vtkm::FloatDefault>(bounds.Y.Min + ry * bounds.Y.Length());
p[2] = static_cast<vtkm::FloatDefault>(bounds.Z.Min + rz * bounds.Z.Length());
p.Pos[0] = static_cast<vtkm::FloatDefault>(bounds.X.Min + rx * bounds.X.Length());
p.Pos[1] = static_cast<vtkm::FloatDefault>(bounds.Y.Min + ry * bounds.Y.Length());
p.Pos[2] = static_cast<vtkm::FloatDefault>(bounds.Z.Min + rz * bounds.Z.Length());
p.ID = i;
seeds.push_back(p);
}
vtkm::cont::ArrayHandle<vtkm::Vec3f> seedArray = vtkm::cont::make_ArrayHandle(seeds);
auto seedArray = vtkm::cont::make_ArrayHandle(seeds);
//compute streamlines
vtkm::filter::Streamline streamline;

@ -70,8 +70,21 @@ int main(int argc, char** argv)
vtkm::cont::DataSet ds2 = reader2.ReadDataSet();
// Use the coordinate system as seeds for performing advection
vtkm::cont::ArrayHandle<vtkm::Vec3f> seeds;
vtkm::cont::ArrayCopy(ds1.GetCoordinateSystem().GetData(), seeds);
vtkm::cont::ArrayHandle<vtkm::Vec3f> pts;
vtkm::cont::ArrayCopy(ds1.GetCoordinateSystem().GetData(), pts);
vtkm::cont::ArrayHandle<vtkm::Particle> seeds;
vtkm::Id numPts = pts.GetNumberOfValues();
seeds.Allocate(numPts);
auto ptsPortal = pts.GetPortalConstControl();
auto seedPortal = seeds.GetPortalConstControl();
for (vtkm::Id i = 0; i < numPts; i++)
{
vtkm::Particle p;
p.Pos = ptsPortal.Get(i);
p.ID = i;
seedPortal.Set(i, p);
}
// Instantiate the filter by providing necessary parameters.
// Necessary parameters are :