mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-10-05 01:49:02 +00:00
Remove unlicensed data
Some of the test data sets are derived from data sets that are commonly distributed to test visualization algorithms and are featured in numerous papers. However, I am unable to track down the original source let alone identify what license, if any, they were released under. To avoid any complications with data ownership, remove these data sets and replace them with in house data sets that we explicitly own.
This commit is contained in:
parent
cfd6d3fbe5
commit
5aba6e1bea
3
data/data/curvilinear/kitchen.vtk
Normal file
3
data/data/curvilinear/kitchen.vtk
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:29d6de0eb33dfb792405d3903b1ede382cac417c29bb5d7e17e60be384db42cc
|
||||
size 1940269
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ef3dfd79f0c8d18780d0749014d71c0226134041283d33de0bcd994e343dd421
|
||||
size 2001070
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2bb3d36ea5ecef5e7ef1057d0dddebbc590424915083091ead3dac2928000524
|
||||
size 2904465
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bffad7dae3dd6ef018ad7a9e109464ced0f3b9bc15cf1fb5d555f6d0d00b621f
|
||||
size 3001624
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2cbdf56fd5445ddc5b6bc05507b8825fb8d74fe1ccce894bde03e5ff2ecf5fb6
|
||||
size 525141
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b947d66dbae99a1ebb392b200a9ea0d380cfccb7fcb3a3739615d0dde558d2f1
|
||||
size 238166
|
3
data/data/uniform/rotate-vectors.vtk
Normal file
3
data/data/uniform/rotate-vectors.vtk
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:13241631e0d65d17d7bad2be44b52c0352797135fb585647f5c821e439ff9817
|
||||
size 862894
|
@ -16,11 +16,11 @@
|
||||
#include <vtkm/io/VTKDataSetWriter.h>
|
||||
|
||||
// Example computing streamlines.
|
||||
// An example vector field is available in the vtk-m data directory: magField.vtk
|
||||
// An example vector field is available in the vtk-m data directory: rotate-vectors.vtk
|
||||
// Example usage:
|
||||
// this will advect 200 particles 50 steps using a step size of 0.01
|
||||
// this will advect 200 particles 50 steps using a step size of 0.05
|
||||
//
|
||||
// Particle_Advection <path-to-data-dir>/magField.vtk vec 200 50 0.01 output.vtk
|
||||
// Particle_Advection <path-to-data-dir>/rotate-vectors.vtk rotate 200 50 0.05 output.vtk
|
||||
//
|
||||
|
||||
int main(int argc, char** argv)
|
||||
@ -28,10 +28,10 @@ int main(int argc, char** argv)
|
||||
auto opts = vtkm::cont::InitializeOptions::DefaultAnyDevice;
|
||||
auto config = vtkm::cont::Initialize(argc, argv, opts);
|
||||
|
||||
if (argc < 8)
|
||||
if (argc < 7)
|
||||
{
|
||||
std::cerr << "Usage: " << argv[0]
|
||||
<< "dataFile varName numSeeds numSteps stepSize outputFile [options]" << std::endl;
|
||||
<< " dataFile varName numSeeds numSteps stepSize outputFile [options]" << std::endl;
|
||||
std::cerr << "where options are: " << std::endl << config.Usage << std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
@ -76,11 +76,11 @@ void LoadData(std::string& fname, std::vector<vtkm::cont::DataSet>& dataSets, in
|
||||
}
|
||||
|
||||
// Example computing streamlines.
|
||||
// An example vector field is available in the vtk-m data directory: magField.vtk
|
||||
// An example vector field is available in the vtk-m data directory: rotate-vectors.vtk
|
||||
// Example usage:
|
||||
// this will advect 200 particles 50 steps using a step size of 0.01
|
||||
// this will advect 200 particles 50 steps using a step size of 0.05
|
||||
//
|
||||
// Particle_Advection <path-to-data-dir>/magField.vtk vec 200 50 0.01 output.vtk
|
||||
// Particle_Advection <path-to-data-dir>/rotate-vectors.vtk vec 200 50 0.05 output.vtk
|
||||
//
|
||||
|
||||
int main(int argc, char** argv)
|
||||
|
@ -513,24 +513,25 @@ void ValidateEndPoints(const CellSetType& cellSet,
|
||||
}
|
||||
}
|
||||
|
||||
void TestStreamlineFile(const std::string& fname,
|
||||
void TestStreamlineFile(const std::string& fileName,
|
||||
const std::string& fieldName,
|
||||
const std::vector<vtkm::Vec3f>& pts,
|
||||
vtkm::FloatDefault stepSize,
|
||||
vtkm::Id maxSteps,
|
||||
const std::vector<vtkm::Vec3f>& endPts,
|
||||
bool useSL)
|
||||
{
|
||||
vtkm::io::VTKDataSetReader reader(fname);
|
||||
vtkm::io::VTKDataSetReader reader(fileName);
|
||||
vtkm::cont::DataSet ds;
|
||||
try
|
||||
{
|
||||
ds = reader.ReadDataSet();
|
||||
VTKM_TEST_ASSERT(ds.HasField("vec"));
|
||||
VTKM_TEST_ASSERT(ds.HasField(fieldName));
|
||||
}
|
||||
catch (vtkm::io::ErrorIO& e)
|
||||
{
|
||||
std::string message("Error reading: ");
|
||||
message += fname;
|
||||
message += fileName;
|
||||
message += ", ";
|
||||
message += e.GetMessage();
|
||||
|
||||
@ -550,7 +551,7 @@ void TestStreamlineFile(const std::string& fname,
|
||||
streamline.SetStepSize(stepSize);
|
||||
streamline.SetNumberOfSteps(maxSteps);
|
||||
streamline.SetSeeds(seedArray);
|
||||
streamline.SetActiveField("vec");
|
||||
streamline.SetActiveField(fieldName);
|
||||
output = streamline.Execute(ds);
|
||||
}
|
||||
else
|
||||
@ -559,7 +560,7 @@ void TestStreamlineFile(const std::string& fname,
|
||||
particleAdvection.SetStepSize(stepSize);
|
||||
particleAdvection.SetNumberOfSteps(maxSteps);
|
||||
particleAdvection.SetSeeds(seedArray);
|
||||
particleAdvection.SetActiveField("vec");
|
||||
particleAdvection.SetActiveField(fieldName);
|
||||
output = particleAdvection.Execute(ds);
|
||||
}
|
||||
|
||||
@ -604,48 +605,59 @@ void TestStreamlineFilters()
|
||||
for (auto useSL : flags)
|
||||
TestAMRStreamline(useSL);
|
||||
|
||||
//Fusion test.
|
||||
std::vector<vtkm::Vec3f> fusionPts, fusionEndPts;
|
||||
fusionPts.push_back(vtkm::Vec3f(0.8f, 0.6f, 0.6f));
|
||||
fusionPts.push_back(vtkm::Vec3f(0.8f, 0.8f, 0.6f));
|
||||
fusionPts.push_back(vtkm::Vec3f(0.8f, 0.8f, 0.3f));
|
||||
{
|
||||
//Rotate test.
|
||||
std::vector<vtkm::Vec3f> startPoints, endPoints;
|
||||
startPoints.push_back(vtkm::Vec3f(0.4f, 0.3f, -0.2f));
|
||||
startPoints.push_back(vtkm::Vec3f(-0.4f, 0.0f, -0.84f));
|
||||
startPoints.push_back(vtkm::Vec3f(0.0f, 0.0f, 0.41f));
|
||||
//End point values were generated in VisIt.
|
||||
fusionEndPts.push_back(vtkm::Vec3f(0.5335789918f, 0.87112802267f, 0.6723330020f));
|
||||
fusionEndPts.push_back(vtkm::Vec3f(0.5601879954f, 0.91389900446f, 0.43989110522f));
|
||||
fusionEndPts.push_back(vtkm::Vec3f(0.7004770041f, 0.63193398714f, 0.64524400234f));
|
||||
vtkm::FloatDefault fusionStep = 0.005f;
|
||||
std::string fusionFile = vtkm::cont::testing::Testing::DataPath("rectilinear/fusion.vtk");
|
||||
endPoints.push_back(vtkm::Vec3f(-0.341196f, 0.474331f, 0.142614f));
|
||||
endPoints.push_back(vtkm::Vec3f(-0.342764f, -0.713572f, -0.746209f));
|
||||
endPoints.push_back(vtkm::Vec3f(-0.617492f, -0.0167f, 0.104733f));
|
||||
vtkm::FloatDefault stepSize = 0.1f;
|
||||
std::string file = vtkm::cont::testing::Testing::DataPath("uniform/rotate-vectors.vtk");
|
||||
|
||||
for (auto useSL : flags)
|
||||
TestStreamlineFile(fusionFile, fusionPts, fusionStep, 1000, fusionEndPts, useSL);
|
||||
{
|
||||
TestStreamlineFile(file, "rotate", startPoints, stepSize, 1000, endPoints, useSL);
|
||||
}
|
||||
}
|
||||
|
||||
//Fishtank test.
|
||||
std::vector<vtkm::Vec3f> fishPts, fishEndPts;
|
||||
fishPts.push_back(vtkm::Vec3f(0.75f, 0.5f, 0.01f));
|
||||
fishPts.push_back(vtkm::Vec3f(0.4f, 0.2f, 0.7f));
|
||||
fishPts.push_back(vtkm::Vec3f(0.5f, 0.3f, 0.8f));
|
||||
{
|
||||
//Kitchen test.
|
||||
std::vector<vtkm::Vec3f> startPoints, endPoints;
|
||||
startPoints.push_back(vtkm::Vec3f(6.0f, 1.0f, 2.0f));
|
||||
startPoints.push_back(vtkm::Vec3f(1.3f, 2.4f, 1.3f));
|
||||
startPoints.push_back(vtkm::Vec3f(1.0f, 3.0f, 2.0f));
|
||||
//End point values were generated in VisIt.
|
||||
fishEndPts.push_back(vtkm::Vec3f(0.7734669447f, 0.4870159328f, 0.8979591727f));
|
||||
fishEndPts.push_back(vtkm::Vec3f(0.7257543206f, 0.1277695596f, 0.7468645573f));
|
||||
fishEndPts.push_back(vtkm::Vec3f(0.8347796798f, 0.1276152730f, 0.4985143244f));
|
||||
vtkm::FloatDefault fishStep = 0.001f;
|
||||
std::string fishFile = vtkm::cont::testing::Testing::DataPath("rectilinear/fishtank.vtk");
|
||||
endPoints.push_back(vtkm::Vec3f(4.42419f, 0.956935f, 1.89111f));
|
||||
endPoints.push_back(vtkm::Vec3f(0.217019f, 3.65243f, 2.49638f));
|
||||
endPoints.push_back(vtkm::Vec3f(0.753178f, 0.410568f, 1.11006f));
|
||||
vtkm::FloatDefault stepSize = 0.2f;
|
||||
std::string file = vtkm::cont::testing::Testing::DataPath("curvilinear/kitchen.vtk");
|
||||
|
||||
for (auto useSL : flags)
|
||||
TestStreamlineFile(fishFile, fishPts, fishStep, 100, fishEndPts, useSL);
|
||||
{
|
||||
TestStreamlineFile(file, "velocity", startPoints, stepSize, 2000, endPoints, useSL);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
//ARMWind corner case of particle near boundary.
|
||||
std::string amrWindFile =
|
||||
vtkm::cont::testing::Testing::DataPath("rectilinear/amr_wind_flowfield.vtk");
|
||||
vtkm::FloatDefault amrWindStep = 0.001f;
|
||||
std::vector<vtkm::Vec3f> amrWindPts, amrWindEndPts;
|
||||
std::string file = vtkm::cont::testing::Testing::DataPath("rectilinear/amr_wind_flowfield.vtk");
|
||||
vtkm::FloatDefault stepSize = 0.001f;
|
||||
std::vector<vtkm::Vec3f> startPoints, endPoints;
|
||||
|
||||
amrWindPts.push_back(
|
||||
startPoints.push_back(
|
||||
vtkm::Vec3f(0.053217993470017745f, 0.034506499099396459f, 0.057097713925011492f));
|
||||
amrWindEndPts.push_back(vtkm::Vec3f(0.05712112784f, 0.03450008854f, 0.02076501213f));
|
||||
endPoints.push_back(vtkm::Vec3f(0.05712112784f, 0.03450008854f, 0.02076501213f));
|
||||
|
||||
for (auto useSL : flags)
|
||||
TestStreamlineFile(amrWindFile, amrWindPts, amrWindStep, 10000, amrWindEndPts, useSL);
|
||||
{
|
||||
TestStreamlineFile(file, "vec", startPoints, stepSize, 10000, endPoints, useSL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -839,15 +839,16 @@ void ValidateResult(const ResultType& res,
|
||||
}
|
||||
|
||||
|
||||
void TestParticleAdvectionFile(const std::string& fname,
|
||||
void TestParticleAdvectionFile(const std::string& fileName,
|
||||
const std::string& fieldName,
|
||||
const std::vector<vtkm::Vec3f>& pts,
|
||||
vtkm::FloatDefault stepSize,
|
||||
vtkm::Id maxSteps,
|
||||
const std::vector<vtkm::Vec3f>& endPts)
|
||||
{
|
||||
|
||||
VTKM_LOG_S(vtkm::cont::LogLevel::Info, "Testing particle advection on file " << fname);
|
||||
vtkm::io::VTKDataSetReader reader(fname);
|
||||
VTKM_LOG_S(vtkm::cont::LogLevel::Info, "Testing particle advection on file " << fileName);
|
||||
vtkm::io::VTKDataSetReader reader(fileName);
|
||||
vtkm::cont::DataSet ds;
|
||||
try
|
||||
{
|
||||
@ -856,7 +857,7 @@ void TestParticleAdvectionFile(const std::string& fname,
|
||||
catch (vtkm::io::ErrorIO& e)
|
||||
{
|
||||
std::string message("Error reading: ");
|
||||
message += fname;
|
||||
message += fileName;
|
||||
message += ", ";
|
||||
message += e.GetMessage();
|
||||
|
||||
@ -869,8 +870,8 @@ void TestParticleAdvectionFile(const std::string& fname,
|
||||
using RK4Type = vtkm::worklet::flow::RK4Integrator<GridEvalType>;
|
||||
using Stepper = vtkm::worklet::flow::Stepper<RK4Type, GridEvalType>;
|
||||
|
||||
VTKM_TEST_ASSERT(ds.HasField("vec"), "Data set missing a field named 'vec'");
|
||||
vtkm::cont::Field& field = ds.GetField("vec");
|
||||
VTKM_TEST_ASSERT(ds.HasField(fieldName), "Data set missing a field named ", fieldName);
|
||||
vtkm::cont::Field& field = ds.GetField(fieldName);
|
||||
auto fieldData = field.GetData();
|
||||
|
||||
FieldHandle fieldArray;
|
||||
@ -923,32 +924,35 @@ void TestParticleAdvection()
|
||||
TestWorkletsBasic();
|
||||
TestParticleWorkletsWithDataSetTypes();
|
||||
|
||||
//Fusion test.
|
||||
std::vector<vtkm::Vec3f> fusionPts, fusionEndPts;
|
||||
fusionPts.push_back(vtkm::Vec3f(0.8f, 0.6f, 0.6f));
|
||||
fusionPts.push_back(vtkm::Vec3f(0.8f, 0.8f, 0.6f));
|
||||
fusionPts.push_back(vtkm::Vec3f(0.8f, 0.8f, 0.3f));
|
||||
{
|
||||
//Rotate test.
|
||||
std::vector<vtkm::Vec3f> startPoints, endPoints;
|
||||
startPoints.push_back(vtkm::Vec3f(0.4f, 0.3f, -0.2f));
|
||||
startPoints.push_back(vtkm::Vec3f(-0.4f, 0.0f, -0.84f));
|
||||
startPoints.push_back(vtkm::Vec3f(0.0f, 0.0f, 0.41f));
|
||||
//End point values were generated in VisIt.
|
||||
fusionEndPts.push_back(vtkm::Vec3f(0.5335789918f, 0.87112802267f, 0.6723330020f));
|
||||
fusionEndPts.push_back(vtkm::Vec3f(0.5601879954f, 0.91389900446f, 0.43989110522f));
|
||||
fusionEndPts.push_back(vtkm::Vec3f(0.7004770041f, 0.63193398714f, 0.64524400234f));
|
||||
vtkm::FloatDefault fusionStep = 0.005f;
|
||||
std::string fusionFile = vtkm::cont::testing::Testing::DataPath("rectilinear/fusion.vtk");
|
||||
TestParticleAdvectionFile(fusionFile, fusionPts, fusionStep, 1000, fusionEndPts);
|
||||
endPoints.push_back(vtkm::Vec3f(-0.341196f, 0.474331f, 0.142614f));
|
||||
endPoints.push_back(vtkm::Vec3f(-0.342764f, -0.713572f, -0.746209f));
|
||||
endPoints.push_back(vtkm::Vec3f(-0.617492f, -0.0167f, 0.104733f));
|
||||
vtkm::FloatDefault stepSize = 0.1f;
|
||||
std::string file = vtkm::cont::testing::Testing::DataPath("uniform/rotate-vectors.vtk");
|
||||
TestParticleAdvectionFile(file, "rotate", startPoints, stepSize, 1000, endPoints);
|
||||
}
|
||||
|
||||
//Fishtank test.
|
||||
std::vector<vtkm::Vec3f> fishPts, fishEndPts;
|
||||
fishPts.push_back(vtkm::Vec3f(0.75f, 0.5f, 0.01f));
|
||||
fishPts.push_back(vtkm::Vec3f(0.4f, 0.2f, 0.7f));
|
||||
fishPts.push_back(vtkm::Vec3f(0.5f, 0.3f, 0.8f));
|
||||
{
|
||||
//Kitchen test.
|
||||
std::vector<vtkm::Vec3f> startPoints, endPoints;
|
||||
startPoints.push_back(vtkm::Vec3f(6.0f, 1.0f, 2.0f));
|
||||
startPoints.push_back(vtkm::Vec3f(1.3f, 2.4f, 1.3f));
|
||||
startPoints.push_back(vtkm::Vec3f(1.0f, 3.0f, 2.0f));
|
||||
//End point values were generated in VisIt.
|
||||
fishEndPts.push_back(vtkm::Vec3f(0.7734669447f, 0.4870159328f, 0.8979591727f));
|
||||
fishEndPts.push_back(vtkm::Vec3f(0.7257543206f, 0.1277695596f, 0.7468645573f));
|
||||
fishEndPts.push_back(vtkm::Vec3f(0.8347796798f, 0.1276152730f, 0.4985143244f));
|
||||
|
||||
vtkm::FloatDefault fishStep = 0.001f;
|
||||
std::string fishFile = vtkm::cont::testing::Testing::DataPath("rectilinear/fishtank.vtk");
|
||||
TestParticleAdvectionFile(fishFile, fishPts, fishStep, 100, fishEndPts);
|
||||
endPoints.push_back(vtkm::Vec3f(4.42419f, 0.956935f, 1.89111f));
|
||||
endPoints.push_back(vtkm::Vec3f(0.217019f, 3.65243f, 2.49638f));
|
||||
endPoints.push_back(vtkm::Vec3f(0.753178f, 0.410568f, 1.11006f));
|
||||
vtkm::FloatDefault stepSize = 0.2f;
|
||||
std::string file = vtkm::cont::testing::Testing::DataPath("curvilinear/kitchen.vtk");
|
||||
TestParticleAdvectionFile(file, "velocity", startPoints, stepSize, 2000, endPoints);
|
||||
}
|
||||
}
|
||||
|
||||
int UnitTestWorkletParticleAdvection(int argc, char* argv[])
|
||||
|
@ -368,250 +368,115 @@ void TestReadingStructuredGridBin()
|
||||
"Incorrect cellset type");
|
||||
}
|
||||
|
||||
void TestReadingFishTank()
|
||||
void TestReadingRotate()
|
||||
{
|
||||
std::string fishtank = vtkm::cont::testing::Testing::DataPath("rectilinear/fishtank.vtk");
|
||||
vtkm::cont::DataSet ds = readVTKDataSet(fishtank.c_str());
|
||||
|
||||
// This is information you can glean by running 'strings' on fishtank.vtk:
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().IsType<vtkm::cont::CellSetStructured<3>>(),
|
||||
"Incorrect cellset type");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfPoints() == 50 * 50 * 50, "Incorrect number of points");
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().GetNumberOfPoints() == 50 * 50 * 50,
|
||||
"Incorrect number of points (from cell set)");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfFields() == 3, "Incorrect number of fields");
|
||||
VTKM_TEST_ASSERT(ds.HasField("vec"), "The vtk file has a field 'vec', but the dataset does not.");
|
||||
VTKM_TEST_ASSERT(ds.HasField("vec_magnitude"),
|
||||
"The vtk file has a field 'vec_magnitude', but the dataset does not.");
|
||||
|
||||
// I believe the coordinate system is implicitly given by the first element of X_COORDINATES:
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfCoordinateSystems() == 1,
|
||||
"Need one and only one coordinate system.");
|
||||
// In order to get the data from the coordinate system, I used the following workflow:
|
||||
// First, I deleted all ascii header lines just past 'X_COORDINATES 50 float'.
|
||||
// Once this is done, I can get the binary data from
|
||||
// $ od -tfF --endian=big fishtank_copy.vtk
|
||||
// The result is:
|
||||
// 0 0.020408163 ... 0.9591837 0.97959185 1
|
||||
// So monotone increasing, bound [0,1].
|
||||
const vtkm::cont::CoordinateSystem& coordinateSystem = ds.GetCoordinateSystem();
|
||||
vtkm::Vec<vtkm::Range, 3> ranges = coordinateSystem.GetRange();
|
||||
vtkm::Range xRange = ranges[0];
|
||||
VTKM_TEST_ASSERT(xRange.Min == 0);
|
||||
VTKM_TEST_ASSERT(xRange.Max == 1);
|
||||
// Do the same past 'Y_COORDINATES 50 float'.
|
||||
// You get exactly the same as the x data.
|
||||
vtkm::Range yRange = ranges[1];
|
||||
VTKM_TEST_ASSERT(yRange.Min == 0);
|
||||
VTKM_TEST_ASSERT(yRange.Max == 1);
|
||||
// And finally, do it past 'Z_COORDINATES 50 float':
|
||||
vtkm::Range zRange = ranges[2];
|
||||
VTKM_TEST_ASSERT(zRange.Min == 0);
|
||||
VTKM_TEST_ASSERT(zRange.Max == 1);
|
||||
|
||||
// Now delete the text up to LOOKUP TABLE default.
|
||||
// I see:
|
||||
// 0 0 0 0 3.5267966 . . .
|
||||
// This is a vector magnitude, so all values must be >= 0.
|
||||
// A cursory glance shows that 124.95 is a large value, so we can sanity check the data with the bounds
|
||||
// [0, ~130].
|
||||
// And if we open the file in Paraview, we can observe the bounds [0, 156.905].
|
||||
const vtkm::cont::Field& vec_magnitude = ds.GetField("vec_magnitude");
|
||||
VTKM_TEST_ASSERT(vec_magnitude.GetName() == "vec_magnitude");
|
||||
VTKM_TEST_ASSERT(vec_magnitude.IsPointField());
|
||||
|
||||
vtkm::Range mag_range;
|
||||
vec_magnitude.GetRange(&mag_range);
|
||||
VTKM_TEST_ASSERT(mag_range.Min == 0);
|
||||
VTKM_TEST_ASSERT(mag_range.Max <= 156.906);
|
||||
|
||||
// This info was gleaned from the Paraview Information panel:
|
||||
const vtkm::cont::Field& vec = ds.GetField("vec");
|
||||
VTKM_TEST_ASSERT(vec.GetName() == "vec");
|
||||
VTKM_TEST_ASSERT(vec.IsPointField());
|
||||
// Bounds from Information panel:
|
||||
// [-65.3147, 86.267], [-88.0325, 78.7217], [-67.0969, 156.867]
|
||||
const vtkm::cont::ArrayHandle<vtkm::Range>& vecRanges = vec.GetRange();
|
||||
VTKM_TEST_ASSERT(vecRanges.GetNumberOfValues() == 3);
|
||||
auto vecRangesReadPortal = vecRanges.ReadPortal();
|
||||
|
||||
auto xVecRange = vecRangesReadPortal.Get(0);
|
||||
VTKM_TEST_ASSERT(xVecRange.Min >= -65.3148 && xVecRange.Min <= -65.3146);
|
||||
VTKM_TEST_ASSERT(xVecRange.Max >= 86.26 && xVecRange.Min <= 86.268);
|
||||
|
||||
auto yVecRange = vecRangesReadPortal.Get(1);
|
||||
VTKM_TEST_ASSERT(yVecRange.Min >= -88.0326 && yVecRange.Min <= -88.0324);
|
||||
VTKM_TEST_ASSERT(yVecRange.Max >= 78.721);
|
||||
VTKM_TEST_ASSERT(yVecRange.Max <= 78.7218);
|
||||
|
||||
auto zVecRange = vecRangesReadPortal.Get(2);
|
||||
VTKM_TEST_ASSERT(zVecRange.Min >= -67.097 && zVecRange.Min <= -67.096);
|
||||
VTKM_TEST_ASSERT(zVecRange.Max >= 156.866 && zVecRange.Max <= 156.868);
|
||||
}
|
||||
|
||||
void TestReadingDoublePrecisionFishTank()
|
||||
{
|
||||
std::string fishtank =
|
||||
vtkm::cont::testing::Testing::DataPath("rectilinear/fishtank_double_big_endian.vtk");
|
||||
vtkm::cont::DataSet ds = readVTKDataSet(fishtank.c_str());
|
||||
|
||||
// This is information you can glean by running 'strings' on fishtank.vtk:
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().IsType<vtkm::cont::CellSetStructured<3>>(),
|
||||
"Incorrect cellset type");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfPoints() == 50 * 50 * 50, "Incorrect number of points");
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().GetNumberOfPoints() == 50 * 50 * 50,
|
||||
"Incorrect number of points (from cell set)");
|
||||
|
||||
VTKM_TEST_ASSERT(ds.HasField("vec"), "The vtk file has a field 'vec', but the dataset does not.");
|
||||
|
||||
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfCoordinateSystems() == 1,
|
||||
"fishtank has one and only one coordinate system.");
|
||||
// See the single precision version for info:
|
||||
const vtkm::cont::CoordinateSystem& coordinateSystem = ds.GetCoordinateSystem();
|
||||
vtkm::Vec<vtkm::Range, 3> ranges = coordinateSystem.GetRange();
|
||||
vtkm::Range xRange = ranges[0];
|
||||
VTKM_TEST_ASSERT(xRange.Min == 0);
|
||||
VTKM_TEST_ASSERT(xRange.Max == 1);
|
||||
vtkm::Range yRange = ranges[1];
|
||||
VTKM_TEST_ASSERT(yRange.Min == 0);
|
||||
VTKM_TEST_ASSERT(yRange.Max == 1);
|
||||
vtkm::Range zRange = ranges[2];
|
||||
VTKM_TEST_ASSERT(zRange.Min == 0);
|
||||
VTKM_TEST_ASSERT(zRange.Max == 1);
|
||||
|
||||
// This info was gleaned from the Paraview Information panel:
|
||||
const vtkm::cont::Field& vec = ds.GetField("vec");
|
||||
VTKM_TEST_ASSERT(vec.GetName() == "vec");
|
||||
VTKM_TEST_ASSERT(vec.IsPointField());
|
||||
// Bounds from Information panel:
|
||||
// [-65.3147, 86.267], [-88.0325, 78.7217], [-67.0969, 156.867]
|
||||
const vtkm::cont::ArrayHandle<vtkm::Range>& vecRanges = vec.GetRange();
|
||||
VTKM_TEST_ASSERT(vecRanges.GetNumberOfValues() == 3);
|
||||
auto vecRangesReadPortal = vecRanges.ReadPortal();
|
||||
|
||||
auto xVecRange = vecRangesReadPortal.Get(0);
|
||||
VTKM_TEST_ASSERT(xVecRange.Min >= -65.3148 && xVecRange.Min <= -65.3146);
|
||||
VTKM_TEST_ASSERT(xVecRange.Max >= 86.26 && xVecRange.Min <= 86.268);
|
||||
|
||||
auto yVecRange = vecRangesReadPortal.Get(1);
|
||||
VTKM_TEST_ASSERT(yVecRange.Min >= -88.0326 && yVecRange.Min <= -88.0324);
|
||||
VTKM_TEST_ASSERT(yVecRange.Max >= 78.721);
|
||||
VTKM_TEST_ASSERT(yVecRange.Max <= 78.7218);
|
||||
|
||||
auto zVecRange = vecRangesReadPortal.Get(2);
|
||||
VTKM_TEST_ASSERT(zVecRange.Min >= -67.097 && zVecRange.Min <= -67.096);
|
||||
VTKM_TEST_ASSERT(zVecRange.Max >= 156.866 && zVecRange.Max <= 156.868);
|
||||
}
|
||||
|
||||
void TestReadingASCIIFishTank()
|
||||
{
|
||||
std::string fishtank =
|
||||
vtkm::cont::testing::Testing::DataPath("rectilinear/fishtank_double_ascii.vtk");
|
||||
vtkm::cont::DataSet ds = readVTKDataSet(fishtank.c_str());
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().IsType<vtkm::cont::CellSetStructured<3>>(),
|
||||
"Incorrect cellset type");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfPoints() == 50 * 50 * 50, "Incorrect number of points");
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().GetNumberOfPoints() == 50 * 50 * 50,
|
||||
"Incorrect number of points (from cell set)");
|
||||
VTKM_TEST_ASSERT(ds.HasField("vec"), "The vtk file has a field 'vec', but the dataset does not.");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfCoordinateSystems() == 1,
|
||||
"fishtank has one and only one coordinate system.");
|
||||
const vtkm::cont::CoordinateSystem& coordinateSystem = ds.GetCoordinateSystem();
|
||||
vtkm::Vec<vtkm::Range, 3> ranges = coordinateSystem.GetRange();
|
||||
vtkm::Range xRange = ranges[0];
|
||||
VTKM_TEST_ASSERT(xRange.Min == 0);
|
||||
VTKM_TEST_ASSERT(xRange.Max == 1);
|
||||
vtkm::Range yRange = ranges[1];
|
||||
VTKM_TEST_ASSERT(yRange.Min == 0);
|
||||
VTKM_TEST_ASSERT(yRange.Max == 1);
|
||||
vtkm::Range zRange = ranges[2];
|
||||
VTKM_TEST_ASSERT(zRange.Min == 0);
|
||||
VTKM_TEST_ASSERT(zRange.Max == 1);
|
||||
|
||||
const vtkm::cont::Field& vec = ds.GetField("vec");
|
||||
VTKM_TEST_ASSERT(vec.GetName() == "vec");
|
||||
VTKM_TEST_ASSERT(vec.IsPointField());
|
||||
// Bounds from Paraview information panel:
|
||||
// [-65.3147, 86.267], [-88.0325, 78.7217], [-67.0969, 156.867]
|
||||
const vtkm::cont::ArrayHandle<vtkm::Range>& vecRanges = vec.GetRange();
|
||||
VTKM_TEST_ASSERT(vecRanges.GetNumberOfValues() == 3);
|
||||
auto vecRangesReadPortal = vecRanges.ReadPortal();
|
||||
auto xVecRange = vecRangesReadPortal.Get(0);
|
||||
VTKM_TEST_ASSERT(xVecRange.Min >= -65.3148 && xVecRange.Min <= -65.3146);
|
||||
VTKM_TEST_ASSERT(xVecRange.Max >= 86.26 && xVecRange.Min <= 86.268);
|
||||
|
||||
auto yVecRange = vecRangesReadPortal.Get(1);
|
||||
VTKM_TEST_ASSERT(yVecRange.Min >= -88.0326 && yVecRange.Min <= -88.0324);
|
||||
VTKM_TEST_ASSERT(yVecRange.Max >= 78.721);
|
||||
VTKM_TEST_ASSERT(yVecRange.Max <= 78.7218);
|
||||
|
||||
auto zVecRange = vecRangesReadPortal.Get(2);
|
||||
VTKM_TEST_ASSERT(zVecRange.Min >= -67.097 && zVecRange.Min <= -67.096);
|
||||
VTKM_TEST_ASSERT(zVecRange.Max >= 156.866 && zVecRange.Max <= 156.868);
|
||||
}
|
||||
|
||||
void TestReadingFusion()
|
||||
{
|
||||
std::string fusion = vtkm::cont::testing::Testing::DataPath("rectilinear/fusion.vtk");
|
||||
std::string fusion = vtkm::cont::testing::Testing::DataPath("uniform/rotate-vectors.vtk");
|
||||
vtkm::cont::DataSet ds = readVTKDataSet(fusion.c_str());
|
||||
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().IsType<vtkm::cont::CellSetStructured<3>>(),
|
||||
"Incorrect cellset type");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfPoints() == 32 * 32 * 32, "Incorrect number of points");
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().GetNumberOfPoints() == 32 * 32 * 32,
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfPoints() == 33 * 33 * 33, "Incorrect number of points");
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().GetNumberOfPoints() == 33 * 33 * 33,
|
||||
"Incorrect number of points (from cell set)");
|
||||
VTKM_TEST_ASSERT(ds.HasField("vec_magnitude"),
|
||||
"The vtk file has a field 'vec_magnitude', but the dataset does not.");
|
||||
VTKM_TEST_ASSERT(ds.HasField("vec"), "The vtk file has a field 'vec', but the dataset does not.");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfCoordinateSystems() == 1,
|
||||
"The vtk file has a field 'vec', but the dataset does not.");
|
||||
VTKM_TEST_ASSERT(ds.HasField("rotate"),
|
||||
"The vtk file has a field 'rotate', but the dataset does not.");
|
||||
|
||||
// Taken from Paraview + clicking Data Axes Grid:
|
||||
const vtkm::cont::CoordinateSystem& coordinateSystem = ds.GetCoordinateSystem();
|
||||
vtkm::Vec<vtkm::Range, 3> ranges = coordinateSystem.GetRange();
|
||||
vtkm::Range xRange = ranges[0];
|
||||
VTKM_TEST_ASSERT(xRange.Min == 0);
|
||||
VTKM_TEST_ASSERT(xRange.Min == -1);
|
||||
VTKM_TEST_ASSERT(xRange.Max == 1);
|
||||
vtkm::Range yRange = ranges[1];
|
||||
VTKM_TEST_ASSERT(yRange.Min == 0);
|
||||
VTKM_TEST_ASSERT(yRange.Min == -1);
|
||||
VTKM_TEST_ASSERT(yRange.Max == 1);
|
||||
vtkm::Range zRange = ranges[2];
|
||||
VTKM_TEST_ASSERT(zRange.Min == 0);
|
||||
VTKM_TEST_ASSERT(zRange.Min == -1);
|
||||
VTKM_TEST_ASSERT(zRange.Max == 1);
|
||||
|
||||
// Paraview Information Panel of this file:
|
||||
// vec_magnitude [0, 3.73778]
|
||||
vtkm::cont::Field vec_magnitude = ds.GetField("vec_magnitude");
|
||||
VTKM_TEST_ASSERT(vec_magnitude.GetName() == "vec_magnitude");
|
||||
VTKM_TEST_ASSERT(vec_magnitude.IsPointField());
|
||||
|
||||
vtkm::Range mag_range;
|
||||
vec_magnitude.GetRange(&mag_range);
|
||||
VTKM_TEST_ASSERT(mag_range.Min == 0);
|
||||
VTKM_TEST_ASSERT(mag_range.Max <= 3.73779);
|
||||
VTKM_TEST_ASSERT(mag_range.Max >= 3.73777);
|
||||
|
||||
vtkm::cont::Field vec = ds.GetField("vec");
|
||||
VTKM_TEST_ASSERT(vec.GetName() == "vec");
|
||||
// rotate double [-1.29845, 1.25443], [-1.34447, 1.22820], [-0.32387, 0.33180]
|
||||
vtkm::cont::Field vec = ds.GetField("rotate");
|
||||
VTKM_TEST_ASSERT(vec.GetName() == "rotate");
|
||||
VTKM_TEST_ASSERT(vec.IsPointField());
|
||||
const vtkm::cont::ArrayHandle<vtkm::Range>& vecRanges = vec.GetRange();
|
||||
VTKM_TEST_ASSERT(vecRanges.GetNumberOfValues() == 3);
|
||||
auto vecRangesReadPortal = vecRanges.ReadPortal();
|
||||
|
||||
// vec float [-3.41054, 3.40824], [-3.41018, 3.41036], [-0.689022, 0.480726]
|
||||
auto xVecRange = vecRangesReadPortal.Get(0);
|
||||
VTKM_TEST_ASSERT(test_equal(xVecRange.Min, -3.41054));
|
||||
VTKM_TEST_ASSERT(test_equal(xVecRange.Max, 3.40824));
|
||||
VTKM_TEST_ASSERT(test_equal(xVecRange.Min, -1.29845));
|
||||
VTKM_TEST_ASSERT(test_equal(xVecRange.Max, 1.25443));
|
||||
|
||||
auto yVecRange = vecRangesReadPortal.Get(1);
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(yVecRange.Min, -3.41018));
|
||||
VTKM_TEST_ASSERT(test_equal(yVecRange.Max, 3.41036));
|
||||
VTKM_TEST_ASSERT(test_equal(yVecRange.Min, -1.34447));
|
||||
VTKM_TEST_ASSERT(test_equal(yVecRange.Max, 1.22820));
|
||||
|
||||
auto zVecRange = vecRangesReadPortal.Get(2);
|
||||
VTKM_TEST_ASSERT(test_equal(zVecRange.Min, -0.689022));
|
||||
VTKM_TEST_ASSERT(test_equal(zVecRange.Max, 0.480726));
|
||||
VTKM_TEST_ASSERT(test_equal(zVecRange.Min, -0.32387));
|
||||
VTKM_TEST_ASSERT(test_equal(zVecRange.Max, 0.33180));
|
||||
}
|
||||
|
||||
void TestReadingKitchen()
|
||||
{
|
||||
std::string fusion = vtkm::cont::testing::Testing::DataPath("curvilinear/kitchen.vtk");
|
||||
vtkm::cont::DataSet ds = readVTKDataSet(fusion.c_str());
|
||||
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().IsType<vtkm::cont::CellSetStructured<3>>(),
|
||||
"Incorrect cellset type");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfPoints() == 28 * 24 * 17, "Incorrect number of points");
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().GetNumberOfPoints() == 28 * 24 * 17,
|
||||
"Incorrect number of points (from cell set)");
|
||||
VTKM_TEST_ASSERT(ds.HasField("h1"), "The vtk file has a field 'h1', but the dataset does not.");
|
||||
VTKM_TEST_ASSERT(ds.HasField("velocity"),
|
||||
"The vtk file has a field 'velocity', but the dataset does not.");
|
||||
|
||||
// Paraview Information Panel of this file:
|
||||
// Bounds: [0.01, 7], [0.01, 5], [0.01, 2.5]
|
||||
const vtkm::cont::CoordinateSystem& coordinateSystem = ds.GetCoordinateSystem();
|
||||
vtkm::Vec<vtkm::Range, 3> ranges = coordinateSystem.GetRange();
|
||||
vtkm::Range xRange = ranges[0];
|
||||
VTKM_TEST_ASSERT(test_equal(xRange.Min, 0.01));
|
||||
VTKM_TEST_ASSERT(test_equal(xRange.Max, 7));
|
||||
vtkm::Range yRange = ranges[1];
|
||||
VTKM_TEST_ASSERT(test_equal(yRange.Min, 0.01));
|
||||
VTKM_TEST_ASSERT(test_equal(yRange.Max, 5));
|
||||
vtkm::Range zRange = ranges[2];
|
||||
VTKM_TEST_ASSERT(test_equal(zRange.Min, 0.01));
|
||||
VTKM_TEST_ASSERT(test_equal(zRange.Max, 2.5));
|
||||
|
||||
// h1 float [0, 26823.6]
|
||||
vtkm::cont::Field h1 = ds.GetField("h1");
|
||||
VTKM_TEST_ASSERT(h1.GetName() == "h1");
|
||||
VTKM_TEST_ASSERT(h1.IsPointField());
|
||||
const vtkm::cont::ArrayHandle<vtkm::Range>& h1Ranges = h1.GetRange();
|
||||
VTKM_TEST_ASSERT(h1Ranges.GetNumberOfValues() == 1);
|
||||
auto h1RangesReadPortal = h1Ranges.ReadPortal();
|
||||
|
||||
auto h1Range = h1RangesReadPortal.Get(0);
|
||||
VTKM_TEST_ASSERT(test_equal(h1Range.Min, 0));
|
||||
VTKM_TEST_ASSERT(test_equal(h1Range.Max, 26823.6));
|
||||
|
||||
// velocity float [-0.34942, 0.26521], [-0.31407, 0.31543], [-0.45072, 0.28649]
|
||||
vtkm::cont::Field vec = ds.GetField("velocity");
|
||||
VTKM_TEST_ASSERT(vec.GetName() == "velocity");
|
||||
VTKM_TEST_ASSERT(vec.IsPointField());
|
||||
const vtkm::cont::ArrayHandle<vtkm::Range>& vecRanges = vec.GetRange();
|
||||
VTKM_TEST_ASSERT(vecRanges.GetNumberOfValues() == 3);
|
||||
auto vecRangesReadPortal = vecRanges.ReadPortal();
|
||||
|
||||
auto xVecRange = vecRangesReadPortal.Get(0);
|
||||
VTKM_TEST_ASSERT(test_equal(xVecRange.Min, -0.34942));
|
||||
VTKM_TEST_ASSERT(test_equal(xVecRange.Max, 0.26521));
|
||||
|
||||
auto yVecRange = vecRangesReadPortal.Get(1);
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(yVecRange.Min, -0.31407));
|
||||
VTKM_TEST_ASSERT(test_equal(yVecRange.Max, 0.31543));
|
||||
|
||||
auto zVecRange = vecRangesReadPortal.Get(2);
|
||||
VTKM_TEST_ASSERT(test_equal(zVecRange.Min, -0.45072));
|
||||
VTKM_TEST_ASSERT(test_equal(zVecRange.Max, 0.28649));
|
||||
}
|
||||
|
||||
void TestSkppingStringFields(Format format)
|
||||
@ -668,14 +533,10 @@ void TestReadingVTKDataSet()
|
||||
TestReadingStructuredGridASCII();
|
||||
std::cout << "Test reading VTK StructuredGrid file in BINARY" << std::endl;
|
||||
TestReadingStructuredGridBin();
|
||||
std::cout << "Test reading float precision fishtank" << std::endl;
|
||||
TestReadingFishTank();
|
||||
std::cout << "Test reading double precision fishtank" << std::endl;
|
||||
TestReadingDoublePrecisionFishTank();
|
||||
std::cout << "Test ASCII fishtank" << std::endl;
|
||||
TestReadingASCIIFishTank();
|
||||
std::cout << "Test reading fusion" << std::endl;
|
||||
TestReadingFusion();
|
||||
std::cout << "Test reading rotate" << std::endl;
|
||||
TestReadingRotate();
|
||||
std::cout << "Test reading kitchen" << std::endl;
|
||||
TestReadingKitchen();
|
||||
|
||||
std::cout << "Test skipping string fields in ASCII files" << std::endl;
|
||||
TestSkppingStringFields(FORMAT_ASCII);
|
||||
|
Loading…
Reference in New Issue
Block a user