2019-09-13 15:08:14 +00:00
|
|
|
//============================================================================
|
|
|
|
// Copyright (c) Kitware, Inc.
|
|
|
|
// All rights reserved.
|
|
|
|
// See LICENSE.txt for details.
|
|
|
|
//
|
|
|
|
// This software is distributed WITHOUT ANY WARRANTY; without even
|
|
|
|
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
|
|
// PURPOSE. See the above copyright notice for more information.
|
|
|
|
//============================================================================
|
|
|
|
|
|
|
|
#include <vtkm/source/Tangle.h>
|
|
|
|
|
|
|
|
#include <vtkm/cont/Timer.h>
|
|
|
|
#include <vtkm/cont/testing/Testing.h>
|
|
|
|
|
|
|
|
void TangleSourceTest()
|
|
|
|
{
|
|
|
|
vtkm::cont::Timer timer;
|
|
|
|
timer.Start();
|
|
|
|
|
|
|
|
vtkm::source::Tangle source(vtkm::Id3{ 20, 20, 20 });
|
|
|
|
vtkm::cont::DataSet ds = source.Execute();
|
|
|
|
|
|
|
|
|
|
|
|
double time = timer.GetElapsedTime();
|
|
|
|
|
2021-10-01 16:40:48 +00:00
|
|
|
std::cout << "Default tangle took " << time << "s.\n";
|
2019-09-13 15:08:14 +00:00
|
|
|
|
|
|
|
{
|
|
|
|
auto coords = ds.GetCoordinateSystem("coordinates");
|
|
|
|
auto data = coords.GetData();
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.GetNumberOfValues(), 9261), "Incorrect number of points.");
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto cells = ds.GetCellSet();
|
|
|
|
VTKM_TEST_ASSERT(test_equal(cells.GetNumberOfCells(), 8000), "Incorrect number of cells.");
|
|
|
|
}
|
|
|
|
|
|
|
|
// Spot check some node scalars
|
|
|
|
{
|
|
|
|
using ScalarHandleType = vtkm::cont::ArrayHandle<vtkm::Float32>;
|
|
|
|
|
2021-10-01 16:40:48 +00:00
|
|
|
auto field = ds.GetPointField("tangle");
|
2019-09-13 15:08:14 +00:00
|
|
|
auto dynData = field.GetData();
|
|
|
|
VTKM_TEST_ASSERT(dynData.IsType<ScalarHandleType>(), "Invalid scalar handle type.");
|
2021-01-25 17:36:56 +00:00
|
|
|
ScalarHandleType handle = dynData.AsArrayHandle<ScalarHandleType>();
|
2020-01-28 19:14:32 +00:00
|
|
|
auto data = handle.ReadPortal();
|
2019-09-13 15:08:14 +00:00
|
|
|
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.GetNumberOfValues(), 9261), "Incorrect number of scalars.");
|
|
|
|
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.Get(0), 24.46), "Incorrect scalar value.");
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.Get(16), 16.1195), "Incorrect scalar value.");
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.Get(21), 20.5988), "Incorrect scalar value.");
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.Get(256), 8.58544), "Incorrect scalar value.");
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.Get(1024), 1.56976), "Incorrect scalar value.");
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.Get(1987), 1.04074), "Incorrect scalar value.");
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.Get(2048), 0.95236), "Incorrect scalar value.");
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.Get(3110), 6.39556), "Incorrect scalar value.");
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.Get(4097), 2.62186), "Incorrect scalar value.");
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.Get(6599), 7.79722), "Incorrect scalar value.");
|
|
|
|
VTKM_TEST_ASSERT(test_equal(data.Get(7999), 7.94986), "Incorrect scalar value.");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
int UnitTestTangleSource(int argc, char* argv[])
|
|
|
|
{
|
|
|
|
return vtkm::cont::testing::Testing::Run(TangleSourceTest, argc, argv);
|
|
|
|
}
|