mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-16 17:22:55 +00:00
Name tangle source fields appropriately
The `Tangle` source would create a point field generically named `nodevar`. This name was not indicitive of the data or its source. Thus, the output point field has been renamed `tangle`. The `Tangle` source was also creating a cell field (named `cellvar`). This field was really just a mirror of the cell indices (counting from 0 on up). This field has been removed from the input. If you want such a field, you can now use the `GenerateIds` filter to add it to any data set.
This commit is contained in:
parent
a68422d454
commit
ea1a55359f
@ -69,7 +69,7 @@ void BenchRayTracing(::benchmark::State& state)
|
||||
|
||||
rays.Buffers.at(0).InitConst(0.f);
|
||||
|
||||
vtkm::cont::Field field = dataset.GetField("nodevar");
|
||||
vtkm::cont::Field field = dataset.GetField("tangle");
|
||||
vtkm::Range range = field.GetRange().ReadPortal().Get(0);
|
||||
|
||||
tracer.SetField(field, range);
|
||||
|
@ -36,7 +36,7 @@ int main(int argc, char* argv[])
|
||||
|
||||
auto tangle = vtkm::source::Tangle(vtkm::Id3{ 50, 50, 50 });
|
||||
vtkm::cont::DataSet tangleData = tangle.Execute();
|
||||
std::string fieldName = "nodevar";
|
||||
std::string fieldName = "tangle";
|
||||
|
||||
// Set up a camera for rendering the input data
|
||||
vtkm::rendering::Camera camera;
|
||||
|
@ -106,15 +106,15 @@ void TestContourFilterTangle()
|
||||
vtkm::filter::Contour contour;
|
||||
contour.SetGenerateNormals(true);
|
||||
contour.SetIsoValue(0, 1);
|
||||
contour.SetActiveField("nodevar");
|
||||
contour.SetFieldsToPass("nodevar");
|
||||
contour.SetActiveField("tangle");
|
||||
contour.SetFieldsToPass("tangle");
|
||||
auto result = contour.Execute(dataSet);
|
||||
|
||||
result.PrintSummary(std::cout);
|
||||
|
||||
//Y axis Flying Edge algorithm has subtle differences at a couple of boundaries
|
||||
vtkm::rendering::testing::RenderAndRegressionTest<M, C, V3>(
|
||||
result, "nodevar", colorTable, "filter/contour-tangle.png", false);
|
||||
result, "tangle", colorTable, "filter/contour-tangle.png", false);
|
||||
}
|
||||
|
||||
void TestContourFilter()
|
||||
|
@ -31,7 +31,7 @@ public:
|
||||
filter.SetGenerateNormals(true);
|
||||
filter.SetMergeDuplicatePoints(true);
|
||||
filter.SetIsoValue(0, 0.1);
|
||||
filter.SetActiveField("nodevar");
|
||||
filter.SetActiveField("tangle");
|
||||
vtkm::cont::DataSet iso = filter.Execute(dataSet);
|
||||
|
||||
vtkm::filter::CellSetConnectivity connectivity;
|
||||
|
@ -15,6 +15,7 @@
|
||||
|
||||
#include <vtkm/filter/CleanGrid.h>
|
||||
#include <vtkm/filter/Contour.h>
|
||||
#include <vtkm/filter/GenerateIds.h>
|
||||
|
||||
#include <vtkm/io/VTKDataSetReader.h>
|
||||
#include <vtkm/source/Tangle.h>
|
||||
@ -31,13 +32,17 @@ public:
|
||||
|
||||
vtkm::Id3 dims(4, 4, 4);
|
||||
vtkm::source::Tangle tangle(dims);
|
||||
vtkm::cont::DataSet dataSet = tangle.Execute();
|
||||
vtkm::filter::GenerateIds genIds;
|
||||
genIds.SetUseFloat(true);
|
||||
genIds.SetGeneratePointIds(false);
|
||||
genIds.SetCellFieldName("cellvar");
|
||||
vtkm::cont::DataSet dataSet = genIds.Execute(tangle.Execute());
|
||||
|
||||
vtkm::filter::Contour mc;
|
||||
|
||||
mc.SetGenerateNormals(true);
|
||||
mc.SetIsoValue(0, 0.5);
|
||||
mc.SetActiveField("nodevar");
|
||||
mc.SetActiveField("tangle");
|
||||
mc.SetFieldsToPass(vtkm::filter::FieldSelection::MODE_NONE);
|
||||
|
||||
auto result = mc.Execute(dataSet);
|
||||
@ -50,10 +55,10 @@ public:
|
||||
}
|
||||
|
||||
// let's execute with mapping fields.
|
||||
mc.SetFieldsToPass({ "nodevar", "cellvar" });
|
||||
mc.SetFieldsToPass({ "tangle", "cellvar" });
|
||||
result = mc.Execute(dataSet);
|
||||
{
|
||||
const bool isMapped = result.HasField("nodevar");
|
||||
const bool isMapped = result.HasField("tangle");
|
||||
VTKM_TEST_ASSERT(isMapped, "mapping should pass");
|
||||
|
||||
VTKM_TEST_ASSERT(result.GetNumberOfFields() == 3,
|
||||
|
@ -26,9 +26,9 @@ void TestEntropy()
|
||||
|
||||
vtkm::filter::Entropy entropyFilter;
|
||||
|
||||
///// calculate entropy of "nodevar" field of the data set /////
|
||||
///// calculate entropy of "tangle" field of the data set /////
|
||||
entropyFilter.SetNumberOfBins(50); //set number of bins
|
||||
entropyFilter.SetActiveField("nodevar");
|
||||
entropyFilter.SetActiveField("tangle");
|
||||
vtkm::cont::DataSet resultEntropy = entropyFilter.Execute(dataSet);
|
||||
|
||||
///// get entropy from resultEntropy /////
|
||||
|
@ -105,13 +105,13 @@ void TestMultiBlockFilter()
|
||||
vtkm::filter::ClipWithField clip;
|
||||
clip.SetRunMultiThreadedFilter(doThreading);
|
||||
clip.SetClipValue(0.0);
|
||||
clip.SetActiveField("nodevar");
|
||||
clip.SetFieldsToPass("nodevar", vtkm::cont::Field::Association::POINTS);
|
||||
clip.SetActiveField("tangle");
|
||||
clip.SetFieldsToPass("tangle", vtkm::cont::Field::Association::POINTS);
|
||||
auto result = clip.Execute(pds);
|
||||
VTKM_TEST_ASSERT(result.GetNumberOfPartitions() == pds.GetNumberOfPartitions());
|
||||
results.push_back(result);
|
||||
}
|
||||
ValidateResults(results[0], results[1], "nodevar");
|
||||
ValidateResults(results[0], results[1], "tangle");
|
||||
|
||||
std::cout << "Contour" << std::endl;
|
||||
results.clear();
|
||||
@ -121,13 +121,13 @@ void TestMultiBlockFilter()
|
||||
mc.SetRunMultiThreadedFilter(doThreading);
|
||||
mc.SetGenerateNormals(true);
|
||||
mc.SetIsoValue(0, 0.5);
|
||||
mc.SetActiveField("nodevar");
|
||||
mc.SetFieldsToPass("nodevar", vtkm::cont::Field::Association::POINTS);
|
||||
mc.SetActiveField("tangle");
|
||||
mc.SetFieldsToPass("tangle", vtkm::cont::Field::Association::POINTS);
|
||||
auto result = mc.Execute(pds);
|
||||
VTKM_TEST_ASSERT(result.GetNumberOfPartitions() == pds.GetNumberOfPartitions());
|
||||
results.push_back(result);
|
||||
}
|
||||
ValidateResults(results[0], results[1], "nodevar");
|
||||
ValidateResults(results[0], results[1], "tangle");
|
||||
|
||||
std::cout << "CleanGrid" << std::endl;
|
||||
results.clear();
|
||||
@ -141,7 +141,7 @@ void TestMultiBlockFilter()
|
||||
VTKM_TEST_ASSERT(result.GetNumberOfPartitions() == pds.GetNumberOfPartitions());
|
||||
results.push_back(result);
|
||||
}
|
||||
ValidateResults(results[0], results[1], "nodevar");
|
||||
ValidateResults(results[0], results[1], "tangle");
|
||||
|
||||
std::cout << "Gradient" << std::endl;
|
||||
results.clear();
|
||||
@ -150,7 +150,7 @@ void TestMultiBlockFilter()
|
||||
vtkm::filter::Gradient grad;
|
||||
grad.SetRunMultiThreadedFilter(doThreading);
|
||||
grad.SetComputePointGradient(true);
|
||||
grad.SetActiveField("nodevar");
|
||||
grad.SetActiveField("tangle");
|
||||
grad.SetOutputFieldName("gradient");
|
||||
auto result = grad.Execute(pds);
|
||||
VTKM_TEST_ASSERT(result.GetNumberOfPartitions() == pds.GetNumberOfPartitions());
|
||||
|
@ -77,11 +77,6 @@ vtkm::cont::DataSet Tangle::Execute() const
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> pointFieldArray;
|
||||
this->Invoke(tangle::TangleField{ this->Dims, mins, maxs }, cellSet, pointFieldArray);
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::FloatDefault> cellFieldArray;
|
||||
vtkm::cont::ArrayCopy(
|
||||
vtkm::cont::make_ArrayHandleCounting<vtkm::Id>(0, 1, cellSet.GetNumberOfCells()),
|
||||
cellFieldArray);
|
||||
|
||||
const vtkm::Vec3f origin(0.0f, 0.0f, 0.0f);
|
||||
const vtkm::Vec3f spacing(1.0f / static_cast<vtkm::FloatDefault>(this->Dims[0]),
|
||||
1.0f / static_cast<vtkm::FloatDefault>(this->Dims[1]),
|
||||
@ -89,8 +84,7 @@ vtkm::cont::DataSet Tangle::Execute() const
|
||||
|
||||
vtkm::cont::ArrayHandleUniformPointCoordinates coordinates(pdims, origin, spacing);
|
||||
dataSet.AddCoordinateSystem(vtkm::cont::CoordinateSystem("coordinates", coordinates));
|
||||
dataSet.AddField(vtkm::cont::make_FieldPoint("nodevar", pointFieldArray));
|
||||
dataSet.AddField(vtkm::cont::make_FieldCell("cellvar", cellFieldArray));
|
||||
dataSet.AddField(vtkm::cont::make_FieldPoint("tangle", pointFieldArray));
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
|
@ -21,11 +21,15 @@ namespace source
|
||||
* @brief The Tangle source creates a uniform dataset.
|
||||
*
|
||||
* This class generates a predictable uniform grid dataset with an
|
||||
* interesting set of point and cell scalar arrays, which is useful
|
||||
* for testing and benchmarking.
|
||||
* interesting point field, which is useful for testing and
|
||||
* benchmarking.
|
||||
*
|
||||
* The Execute method creates a complete structured dataset that have a
|
||||
* point field named 'nodevar', and a cell field named 'cellvar'.
|
||||
* The Execute method creates a complete structured dataset of a
|
||||
* resolution specified in the constructor that is bounded by the
|
||||
* cube in the range [0,1] in each dimension. The dataset has a
|
||||
* point field named 'tangle' computed with the following formula
|
||||
*
|
||||
* x^4 - 5x^2 + y^4 - 5y^2 + z^4 - 5z^2
|
||||
*
|
||||
**/
|
||||
class VTKM_SOURCE_EXPORT Tangle final : public vtkm::source::Source
|
||||
|
@ -24,7 +24,7 @@ void TangleSourceTest()
|
||||
|
||||
double time = timer.GetElapsedTime();
|
||||
|
||||
std::cout << "Default wavelet took " << time << "s.\n";
|
||||
std::cout << "Default tangle took " << time << "s.\n";
|
||||
|
||||
{
|
||||
auto coords = ds.GetCoordinateSystem("coordinates");
|
||||
@ -37,29 +37,11 @@ void TangleSourceTest()
|
||||
VTKM_TEST_ASSERT(test_equal(cells.GetNumberOfCells(), 8000), "Incorrect number of cells.");
|
||||
}
|
||||
|
||||
// check the cell scalars
|
||||
{
|
||||
using ScalarHandleType = vtkm::cont::ArrayHandle<vtkm::FloatDefault>;
|
||||
|
||||
auto field = ds.GetCellField("cellvar");
|
||||
auto dynData = field.GetData();
|
||||
VTKM_TEST_ASSERT(dynData.IsType<ScalarHandleType>(), "Invalid scalar handle type.");
|
||||
ScalarHandleType handle = dynData.AsArrayHandle<ScalarHandleType>();
|
||||
auto data = handle.ReadPortal();
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(data.GetNumberOfValues(), 8000), "Incorrect number of elements.");
|
||||
|
||||
for (vtkm::Id i = 0; i < 8000; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(test_equal(data.Get(i), i), "Incorrect scalar value.");
|
||||
}
|
||||
}
|
||||
|
||||
// Spot check some node scalars
|
||||
{
|
||||
using ScalarHandleType = vtkm::cont::ArrayHandle<vtkm::Float32>;
|
||||
|
||||
auto field = ds.GetPointField("nodevar");
|
||||
auto field = ds.GetPointField("tangle");
|
||||
auto dynData = field.GetData();
|
||||
VTKM_TEST_ASSERT(dynData.IsType<ScalarHandleType>(), "Invalid scalar handle type.");
|
||||
ScalarHandleType handle = dynData.AsArrayHandle<ScalarHandleType>();
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
filter.SetGenerateNormals(true);
|
||||
filter.SetMergeDuplicatePoints(true);
|
||||
filter.SetIsoValue(0, 0.1);
|
||||
filter.SetActiveField("nodevar");
|
||||
filter.SetActiveField("tangle");
|
||||
vtkm::cont::DataSet outputData = filter.Execute(dataSet);
|
||||
|
||||
auto cellSet = outputData.GetCellSet().Cast<vtkm::cont::CellSetSingleType<>>();
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include <vtkm/cont/testing/Testing.h>
|
||||
|
||||
#include <vtkm/filter/ClipWithImplicitFunction.h>
|
||||
#include <vtkm/filter/GenerateIds.h>
|
||||
#include <vtkm/source/Tangle.h>
|
||||
#include <vtkm/worklet/Contour.h>
|
||||
|
||||
@ -185,12 +186,16 @@ void TestContourUniformGrid()
|
||||
|
||||
vtkm::Id3 dims(4, 4, 4);
|
||||
vtkm::source::Tangle tangle(dims);
|
||||
vtkm::cont::DataSet dataSet = tangle.Execute();
|
||||
vtkm::filter::GenerateIds genIds;
|
||||
genIds.SetUseFloat(true);
|
||||
genIds.SetGeneratePointIds(false);
|
||||
genIds.SetCellFieldName("cellvar");
|
||||
vtkm::cont::DataSet dataSet = genIds.Execute(tangle.Execute());
|
||||
|
||||
vtkm::cont::CellSetStructured<3> cellSet;
|
||||
dataSet.GetCellSet().CopyTo(cellSet);
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> pointFieldArray;
|
||||
dataSet.GetField("nodevar").GetData().AsArrayHandle(pointFieldArray);
|
||||
dataSet.GetField("tangle").GetData().AsArrayHandle(pointFieldArray);
|
||||
vtkm::cont::ArrayHandle<vtkm::FloatDefault> cellFieldArray;
|
||||
dataSet.GetField("cellvar").GetData().AsArrayHandle(cellFieldArray);
|
||||
|
||||
@ -360,7 +365,11 @@ void TestContourClipped()
|
||||
|
||||
vtkm::Id3 dims(4, 4, 4);
|
||||
vtkm::source::Tangle tangle(dims);
|
||||
vtkm::cont::DataSet dataSet = tangle.Execute();
|
||||
vtkm::filter::GenerateIds genIds;
|
||||
genIds.SetUseFloat(true);
|
||||
genIds.SetGeneratePointIds(false);
|
||||
genIds.SetCellFieldName("cellvar");
|
||||
vtkm::cont::DataSet dataSet = genIds.Execute(tangle.Execute());
|
||||
|
||||
vtkm::Plane plane(vtkm::make_Vec(0.51, 0.51, 0.51), vtkm::make_Vec(1, 1, 1));
|
||||
vtkm::filter::ClipWithImplicitFunction clip;
|
||||
@ -370,7 +379,7 @@ void TestContourClipped()
|
||||
vtkm::cont::CellSetExplicit<> cellSet;
|
||||
clipped.GetCellSet().CopyTo(cellSet);
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> pointFieldArray;
|
||||
clipped.GetField("nodevar").GetData().AsArrayHandle(pointFieldArray);
|
||||
clipped.GetField("tangle").GetData().AsArrayHandle(pointFieldArray);
|
||||
vtkm::cont::ArrayHandle<vtkm::FloatDefault> cellFieldArray;
|
||||
clipped.GetField("cellvar").GetData().AsArrayHandle(cellFieldArray);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user