Template function for applying filter to multiblock data

This commit is contained in:
dongliangchu 2017-06-01 16:43:40 -04:00
parent 14a7f22377
commit add3299b61
2 changed files with 10 additions and 11 deletions

@ -1 +0,0 @@
,dongliang,dongliang-Precision-Tower-7810,31.05.2017 14:01,file:///home/dongliang/.config/libreoffice/4;

@ -42,7 +42,8 @@
#include <vtkm/worklet/WorkletMapField.h>
#include <vtkm/worklet/AverageByKey.h>
#include <vtkm/filter/FilterField.h>
namespace vtkm {
#include <vtkm/filter/Histogram.h>
/*namespace vtkm {
namespace filter {
class DivideField : public vtkm::filter::FilterField<DivideField>
@ -86,7 +87,7 @@ public:
}
}
}*/
const std::vector<vtkm::filter::ResultField> MultiBlock_WorkletTest();
@ -96,12 +97,11 @@ void TestMultiBlock_Worklet()
std::cout << "--TestDataSet Uniform and Rectilinear--" << std::endl << std::endl;
std::vector<vtkm::filter::ResultField> results=MultiBlock_WorkletTest();
for(std::size_t j=0; j<results.size(); j++)
{
{ std::cout<<"dataset "<<j<<" \n";
results[j].GetField().PrintSummary(std::cout);
for(std::size_t i=0; i<results[j].GetField().GetData().GetNumberOfValues(); i++)
{
vtkm::cont::ArrayHandle<vtkm::Float64, vtkm::cont::StorageTagBasic> array;
results[j].GetField().GetData().CopyTo(array);
//results[j].GetField().GetData().CopyTo(array);
//VTKM_TEST_ASSERT(array.GetPortalConstControl().Get(i) == vtkm::Float64(j/2.0), "result incorrect");
}
@ -149,12 +149,12 @@ vtkm::cont::MultiBlock UniformMultiBlockBuilder()
std::vector<T> varP2D(static_cast<std::size_t>(numPoints));
for (std::size_t i = 0; i < static_cast<std::size_t>(numPoints); i++)
{
varP2D[i] = static_cast<T>(trial);
varP2D[i] = static_cast<T>((trial-1)*i);
}
std::vector<T> varC2D(static_cast<std::size_t>(numCells));
for (std::size_t i = 0; i < static_cast<std::size_t>(numCells); i++)
{
varC2D[i] = static_cast<T>(trial);
varC2D[i] = static_cast<T>(trial*i);
}
dataSet = dataSetBuilder.Create(vtkm::Id2(dimensions[0], dimensions[1]),
vtkm::Vec<T,2>(origin[0], origin[1]),
@ -188,10 +188,10 @@ const std::vector<vtkm::filter::ResultField> MultiBlock_WorkletTest()
vtkm::cont::MultiBlock Blocks=UniformMultiBlockBuilder<vtkm::Float64>();
std::vector<vtkm::filter::ResultField> results;
vtkm::filter::DivideField divider;
divider.SetDividerValue(2);
vtkm::filter::Histogram histogram;
histogram.SetNumberOfBins(10);
//results = Apply(Blocks,divider,"pointvar");
results = divider.Execute(Blocks, std::string("pointvar"));
results = histogram.Execute(Blocks, std::string("pointvar"));
/*for(std::size_t j=100; j<Blocks.GetNumberOfBlocks(); j++)
{
divider.SetDividerValue(2);