Update filter test to use all data types.

This commit is contained in:
Dave Pugmire 2020-11-02 17:07:22 -05:00
parent c0189982ac
commit 4d6776cd16

@ -12,53 +12,46 @@
#include <vtkm/cont/CellLocatorBoundingIntervalHierarchy.h>
#include <vtkm/cont/DataSetBuilderUniform.h>
#include <vtkm/cont/testing/Testing.h>
#include <vtkm/filter/Lagrangian.h>
#include <vtkm/worklet/testing/GenerateTestDataSets.h>
vtkm::cont::DataSet MakeTestUniformDataSet()
namespace
{
vtkm::Float64 xmin, xmax, ymin, ymax, zmin, zmax;
xmin = 0.0;
ymin = 0.0;
zmin = 0.0;
xmax = 10.0;
ymax = 10.0;
zmax = 10.0;
std::vector<vtkm::cont::DataSet> MakeDataSets()
{
vtkm::Float64 xmin = 0, xmax = 10;
vtkm::Float64 ymin = 0, ymax = 10;
vtkm::Float64 zmin = 0, zmax = 10;
const vtkm::Id3 DIMS(16, 16, 16);
vtkm::Bounds bounds(xmin, xmax, ymin, ymax, zmin, zmax);
const vtkm::Id3 dims(16, 16, 16);
auto dataSets = vtkm::worklet::testing::CreateAllDataSets(bounds, dims, false);
vtkm::cont::DataSetBuilderUniform dsb;
vtkm::Float64 xdiff = (xmax - xmin) / (static_cast<vtkm::Float64>(dims[0] - 1));
vtkm::Float64 ydiff = (ymax - ymin) / (static_cast<vtkm::Float64>(dims[1] - 1));
vtkm::Float64 zdiff = (zmax - zmin) / (static_cast<vtkm::Float64>(dims[2] - 1));
vtkm::Float64 xdiff = (xmax - xmin) / (static_cast<vtkm::Float64>(DIMS[0] - 1));
vtkm::Float64 ydiff = (ymax - ymin) / (static_cast<vtkm::Float64>(DIMS[1] - 1));
vtkm::Float64 zdiff = (zmax - zmin) / (static_cast<vtkm::Float64>(DIMS[2] - 1));
vtkm::Id numPoints = dims[0] * dims[1] * dims[2];
vtkm::Vec3f_64 ORIGIN(0, 0, 0);
vtkm::Vec3f_64 SPACING(xdiff, ydiff, zdiff);
vtkm::cont::DataSet dataset = dsb.Create(DIMS, ORIGIN, SPACING);
vtkm::Id numPoints = DIMS[0] * DIMS[1] * DIMS[2];
vtkm::cont::ArrayHandle<vtkm::Vec3f_64> velocityField;
velocityField.Allocate(numPoints);
auto velocityPortal = velocityField.WritePortal();
vtkm::Id count = 0;
for (vtkm::Id i = 0; i < DIMS[0]; i++)
for (auto& ds : dataSets)
{
for (vtkm::Id j = 0; j < DIMS[1]; j++)
{
for (vtkm::Id k = 0; k < DIMS[2]; k++)
{
velocityPortal.Set(count, vtkm::Vec3f_64(0.1, 0.1, 0.1));
count++;
}
}
vtkm::cont::ArrayHandle<vtkm::Vec3f_64> velocityField;
velocityField.Allocate(numPoints);
auto velocityPortal = velocityField.WritePortal();
vtkm::Id count = 0;
for (vtkm::Id i = 0; i < dims[0]; i++)
for (vtkm::Id j = 0; j < dims[1]; j++)
for (vtkm::Id k = 0; k < dims[2]; k++)
{
velocityPortal.Set(count, vtkm::Vec3f_64(0.1, 0.1, 0.1));
count++;
}
ds.AddPointField("velocity", velocityField);
}
dataset.AddPointField("velocity", velocityField);
return dataset;
return dataSets;
}
void TestLagrangianFilterMultiStepInterval()
@ -70,30 +63,36 @@ void TestLagrangianFilterMultiStepInterval()
lagrangianFilter2.SetResetParticles(true);
lagrangianFilter2.SetStepSize(0.1f);
lagrangianFilter2.SetWriteFrequency(write_interval);
for (vtkm::Id i = 1; i <= maxCycles; i++)
auto dataSets = MakeDataSets();
for (auto& input : dataSets)
{
vtkm::cont::DataSet input = MakeTestUniformDataSet();
lagrangianFilter2.SetActiveField("velocity");
vtkm::cont::DataSet extractedBasisFlows = lagrangianFilter2.Execute(input);
if (i % write_interval == 0)
for (vtkm::Id i = 1; i <= maxCycles; i++)
{
VTKM_TEST_ASSERT(extractedBasisFlows.GetNumberOfCoordinateSystems() == 1,
"Wrong number of coordinate systems in the output dataset.");
VTKM_TEST_ASSERT(extractedBasisFlows.GetNumberOfPoints() == 4096,
"Wrong number of basis flows extracted.");
VTKM_TEST_ASSERT(extractedBasisFlows.GetNumberOfFields() == 2, "Wrong number of fields.");
}
else
{
VTKM_TEST_ASSERT(extractedBasisFlows.GetNumberOfPoints() == 0,
"Output dataset should have no points.");
VTKM_TEST_ASSERT(extractedBasisFlows.GetNumberOfCoordinateSystems() == 0,
"Wrong number of coordinate systems in the output dataset.");
VTKM_TEST_ASSERT(extractedBasisFlows.GetNumberOfFields() == 0, "Wrong number of fields.");
lagrangianFilter2.SetActiveField("velocity");
vtkm::cont::DataSet extractedBasisFlows = lagrangianFilter2.Execute(input);
if (i % write_interval == 0)
{
VTKM_TEST_ASSERT(extractedBasisFlows.GetNumberOfCoordinateSystems() == 1,
"Wrong number of coordinate systems in the output dataset.");
VTKM_TEST_ASSERT(extractedBasisFlows.GetNumberOfPoints() == 4096,
"Wrong number of basis flows extracted.");
VTKM_TEST_ASSERT(extractedBasisFlows.GetNumberOfFields() == 2, "Wrong number of fields.");
}
else
{
VTKM_TEST_ASSERT(extractedBasisFlows.GetNumberOfPoints() == 0,
"Output dataset should have no points.");
VTKM_TEST_ASSERT(extractedBasisFlows.GetNumberOfCoordinateSystems() == 0,
"Wrong number of coordinate systems in the output dataset.");
VTKM_TEST_ASSERT(extractedBasisFlows.GetNumberOfFields() == 0, "Wrong number of fields.");
}
}
}
}
} //namespace
void TestLagrangian()
{
TestLagrangianFilterMultiStepInterval();