mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-19 18:45:43 +00:00
Merge branch 'static-dataset-builder-methods' into 'master'
Improvements to data set builds Some improvements to data set builders to make them easier to use. The main changes are making most of the methods static so that the class does not have to be instantiated and to accept DynamicArrayHandle for fields. See merge request !325
This commit is contained in:
commit
51ef8f470c
@ -35,6 +35,8 @@ namespace cont {
|
||||
class DataSetBuilderExplicit
|
||||
{
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void CopyInto(const std::vector<T>& input,
|
||||
vtkm::cont::ArrayHandle<T>& output )
|
||||
{
|
||||
@ -52,6 +54,7 @@ public:
|
||||
//Zoo explicit cell
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<T> &xVals,
|
||||
const std::vector<T> &yVals,
|
||||
@ -63,13 +66,14 @@ public:
|
||||
const std::string &cellNm="cells")
|
||||
{
|
||||
std::vector<T> zVals(xVals.size(),0);
|
||||
return Create(xVals,yVals,zVals,
|
||||
return DataSetBuilderExplicit::Create(xVals,yVals,zVals,
|
||||
shapes,numIndices,connectivity,
|
||||
dimensionality, coordsNm,cellNm);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<T> &xVals,
|
||||
const std::vector<T> &yVals,
|
||||
@ -83,6 +87,7 @@ public:
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::cont::ArrayHandle<T> &xVals,
|
||||
const vtkm::cont::ArrayHandle<T> &yVals,
|
||||
@ -94,7 +99,8 @@ public:
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells")
|
||||
{
|
||||
return BuildDataSet(xVals,yVals,zVals,
|
||||
return DataSetBuilderExplicit::BuildDataSet(
|
||||
xVals,yVals,zVals,
|
||||
shapes,numIndices,connectivity,
|
||||
dimensionality, coordsNm,cellNm);
|
||||
}
|
||||
@ -102,6 +108,7 @@ public:
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<vtkm::Vec<T,3> > &coords,
|
||||
const std::vector<vtkm::UInt8> &shapes,
|
||||
@ -113,6 +120,7 @@ public:
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > &coords,
|
||||
const vtkm::cont::ArrayHandle<vtkm::UInt8> &shapes,
|
||||
@ -122,12 +130,18 @@ public:
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells")
|
||||
{
|
||||
return BuildDataSet(coords, shapes, numIndices, connectivity,
|
||||
dimensionality, coordsNm, cellNm);
|
||||
return DataSetBuilderExplicit::BuildDataSet(coords,
|
||||
shapes,
|
||||
numIndices,
|
||||
connectivity,
|
||||
dimensionality,
|
||||
coordsNm,
|
||||
cellNm);
|
||||
}
|
||||
|
||||
template<typename T, typename CellShapeTag>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<vtkm::Vec<T,3> > &coords,
|
||||
CellShapeTag tag,
|
||||
@ -137,6 +151,7 @@ public:
|
||||
|
||||
template<typename T, typename CellShapeTag>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > &coords,
|
||||
CellShapeTag tag,
|
||||
@ -144,11 +159,16 @@ public:
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells")
|
||||
{
|
||||
return BuildDataSet(coords, tag, connectivity, coordsNm, cellNm);
|
||||
return DataSetBuilderExplicit::BuildDataSet(coords,
|
||||
tag,
|
||||
connectivity,
|
||||
coordsNm,
|
||||
cellNm);
|
||||
}
|
||||
|
||||
private:
|
||||
template<typename T>
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
BuildDataSet(const vtkm::cont::ArrayHandle<T> &X,
|
||||
const vtkm::cont::ArrayHandle<T> &Y,
|
||||
@ -162,6 +182,7 @@ private:
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
BuildDataSet(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > &coords,
|
||||
const vtkm::cont::ArrayHandle<vtkm::UInt8> &shapes,
|
||||
@ -173,6 +194,7 @@ private:
|
||||
|
||||
template<typename T, typename CellShapeTag>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
BuildDataSet(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > &coords,
|
||||
CellShapeTag tag,
|
||||
@ -198,23 +220,25 @@ DataSetBuilderExplicit::Create(const std::vector<T> &xVals,
|
||||
xVals.size() > 0);
|
||||
|
||||
vtkm::cont::ArrayHandle<T> Xc, Yc, Zc;
|
||||
this->CopyInto(xVals, Xc);
|
||||
this->CopyInto(yVals, Yc);
|
||||
this->CopyInto(zVals, Zc);
|
||||
DataSetBuilderExplicit::CopyInto(xVals, Xc);
|
||||
DataSetBuilderExplicit::CopyInto(yVals, Yc);
|
||||
DataSetBuilderExplicit::CopyInto(zVals, Zc);
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::UInt8> Sc;
|
||||
vtkm::cont::ArrayHandle<vtkm::IdComponent> Nc;
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> Cc;
|
||||
this->CopyInto(shapes, Sc);
|
||||
this->CopyInto(numIndices, Nc);
|
||||
this->CopyInto(connectivity, Cc);
|
||||
DataSetBuilderExplicit::CopyInto(shapes, Sc);
|
||||
DataSetBuilderExplicit::CopyInto(numIndices, Nc);
|
||||
DataSetBuilderExplicit::CopyInto(connectivity, Cc);
|
||||
|
||||
return BuildDataSet(Xc,Yc,Zc, Sc,Nc,Cc, dimensionality, coordsNm, cellNm);
|
||||
return DataSetBuilderExplicit::BuildDataSet(
|
||||
Xc,Yc,Zc, Sc,Nc,Cc, dimensionality, coordsNm, cellNm);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
vtkm::cont::DataSet
|
||||
DataSetBuilderExplicit::BuildDataSet(const vtkm::cont::ArrayHandle<T> &X,
|
||||
DataSetBuilderExplicit::BuildDataSet(
|
||||
const vtkm::cont::ArrayHandle<T> &X,
|
||||
const vtkm::cont::ArrayHandle<T> &Y,
|
||||
const vtkm::cont::ArrayHandle<T> &Z,
|
||||
const vtkm::cont::ArrayHandle<vtkm::UInt8> &shapes,
|
||||
@ -253,16 +277,17 @@ DataSetBuilderExplicit::Create(const std::vector<vtkm::Vec<T,3> > &coords,
|
||||
const std::string &cellNm)
|
||||
{
|
||||
vtkm::cont::ArrayHandle<Vec<T,3> > coordsArray;
|
||||
CopyInto(coords, coordsArray);
|
||||
DataSetBuilderExplicit::CopyInto(coords, coordsArray);
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::UInt8> Sc;
|
||||
vtkm::cont::ArrayHandle<vtkm::IdComponent> Nc;
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> Cc;
|
||||
this->CopyInto(shapes, Sc);
|
||||
this->CopyInto(numIndices, Nc);
|
||||
this->CopyInto(connectivity, Cc);
|
||||
DataSetBuilderExplicit::CopyInto(shapes, Sc);
|
||||
DataSetBuilderExplicit::CopyInto(numIndices, Nc);
|
||||
DataSetBuilderExplicit::CopyInto(connectivity, Cc);
|
||||
|
||||
return Create(coordsArray, Sc, Nc, Cc, dimensionality, coordsNm, cellNm);
|
||||
return DataSetBuilderExplicit::Create(
|
||||
coordsArray, Sc, Nc, Cc, dimensionality, coordsNm, cellNm);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
@ -298,12 +323,12 @@ DataSetBuilderExplicit::Create(const std::vector<vtkm::Vec<T,3> > &coords,
|
||||
const std::string &cellNm)
|
||||
{
|
||||
vtkm::cont::ArrayHandle<Vec<T,3> > coordsArray;
|
||||
this->CopyInto(coords, coordsArray);
|
||||
DataSetBuilderExplicit::CopyInto(coords, coordsArray);
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> Cc;
|
||||
this->CopyInto(connectivity, Cc);
|
||||
DataSetBuilderExplicit::CopyInto(connectivity, Cc);
|
||||
|
||||
return Create(coordsArray, tag, Cc, coordsNm, cellNm);
|
||||
return DataSetBuilderExplicit::Create(coordsArray, tag, Cc, coordsNm, cellNm);
|
||||
}
|
||||
|
||||
template<typename T, typename CellShapeTag>
|
||||
|
@ -32,6 +32,8 @@ namespace cont {
|
||||
class DataSetBuilderRectilinear
|
||||
{
|
||||
template<typename T, typename U>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void CopyInto(const std::vector<T>& input,
|
||||
vtkm::cont::ArrayHandle<U>& output )
|
||||
{
|
||||
@ -41,6 +43,8 @@ class DataSetBuilderRectilinear
|
||||
}
|
||||
|
||||
template<typename T, typename U>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void CopyInto(const vtkm::cont::ArrayHandle<T>& input,
|
||||
vtkm::cont::ArrayHandle<U>& output )
|
||||
{
|
||||
@ -51,6 +55,8 @@ class DataSetBuilderRectilinear
|
||||
}
|
||||
|
||||
template<typename T, typename U>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void CopyInto(const T* input, vtkm::Id len,
|
||||
vtkm::cont::ArrayHandle<U>& output )
|
||||
{
|
||||
@ -65,17 +71,20 @@ public:
|
||||
//2D grids.
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(vtkm::Id nx, vtkm::Id ny,
|
||||
T *xvals, T *yvals,
|
||||
std::string coordNm="coords", std::string cellNm="cells")
|
||||
{
|
||||
T zvals = 0;
|
||||
return Create(2, nx,ny, 1, xvals, yvals, &zvals, coordNm, cellNm);
|
||||
return DataSetBuilderRectilinear::Create(
|
||||
2, nx,ny, 1, xvals, yvals, &zvals, coordNm, cellNm);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(int dim, vtkm::Id nx, vtkm::Id ny, vtkm::Id nz,
|
||||
T *xvals, T *yvals, T *zvals,
|
||||
@ -85,25 +94,29 @@ public:
|
||||
((dim==2 && nz==1)||(dim==3 && nz>=1)));
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::FloatDefault> Xc, Yc, Zc;
|
||||
CopyInto(xvals,nx,Xc);
|
||||
CopyInto(yvals,ny,Yc);
|
||||
CopyInto(zvals,nz,Zc);
|
||||
DataSetBuilderRectilinear::CopyInto(xvals,nx,Xc);
|
||||
DataSetBuilderRectilinear::CopyInto(yvals,ny,Yc);
|
||||
DataSetBuilderRectilinear::CopyInto(zvals,nz,Zc);
|
||||
|
||||
return BuildDataSet(dim, Xc,Yc,Zc, coordNm, cellNm);
|
||||
return DataSetBuilderRectilinear::BuildDataSet(
|
||||
dim, Xc,Yc,Zc, coordNm, cellNm);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<T> &xvals, const std::vector<T> &yvals,
|
||||
std::string coordNm="coords", std::string cellNm="cells")
|
||||
{
|
||||
std::vector<T> zvals(1,0);
|
||||
return BuildDataSet(2, xvals,yvals,zvals, coordNm,cellNm);
|
||||
return DataSetBuilderRectilinear::BuildDataSet(
|
||||
2, xvals,yvals,zvals, coordNm,cellNm);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::cont::ArrayHandle<T> &xvals,
|
||||
const vtkm::cont::ArrayHandle<T> &yvals,
|
||||
@ -114,33 +127,39 @@ public:
|
||||
vtkm::cont::ArrayHandle<T> zvals;
|
||||
zvals.Allocate(1);
|
||||
zvals.GetPortalControl().Set(0,0.0);
|
||||
return BuildDataSet(2, xvals,yvals,zvals, coordNm, cellNm);
|
||||
return DataSetBuilderRectilinear::BuildDataSet(
|
||||
2, xvals,yvals,zvals, coordNm, cellNm);
|
||||
}
|
||||
|
||||
//3D grids.
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(vtkm::Id nx, vtkm::Id ny, vtkm::Id nz,
|
||||
T *xvals, T *yvals, T *zvals,
|
||||
std::string coordNm="coords", std::string cellNm="cells")
|
||||
{
|
||||
return Create(3, nx,ny,nz, xvals, yvals, zvals, coordNm, cellNm);
|
||||
return DataSetBuilderRectilinear::Create(
|
||||
3, nx,ny,nz, xvals, yvals, zvals, coordNm, cellNm);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<T> &xvals,
|
||||
const std::vector<T> &yvals,
|
||||
const std::vector<T> &zvals,
|
||||
std::string coordNm="coords", std::string cellNm="cells")
|
||||
{
|
||||
return BuildDataSet(3, xvals, yvals, zvals, coordNm, cellNm);
|
||||
return DataSetBuilderRectilinear::BuildDataSet(
|
||||
3, xvals, yvals, zvals, coordNm, cellNm);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::cont::ArrayHandle<T> &xvals,
|
||||
const vtkm::cont::ArrayHandle<T> &yvals,
|
||||
@ -150,12 +169,14 @@ public:
|
||||
VTKM_ASSERT_CONT(xvals.GetNumberOfValues()>1 &&
|
||||
yvals.GetNumberOfValues()>1 &&
|
||||
zvals.GetNumberOfValues()>1);
|
||||
return BuildDataSet(3, xvals,yvals,zvals, coordNm, cellNm);
|
||||
return DataSetBuilderRectilinear::BuildDataSet(
|
||||
3, xvals,yvals,zvals, coordNm, cellNm);
|
||||
}
|
||||
|
||||
private:
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
BuildDataSet(int dim,
|
||||
const std::vector<T> &xvals,
|
||||
@ -167,15 +188,17 @@ private:
|
||||
((dim==2 && zvals.size()==1)||(dim==3 && zvals.size()>=1)));
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::FloatDefault> Xc, Yc, Zc;
|
||||
this->CopyInto(xvals, Xc);
|
||||
this->CopyInto(yvals, Yc);
|
||||
this->CopyInto(zvals, Zc);
|
||||
DataSetBuilderRectilinear::CopyInto(xvals, Xc);
|
||||
DataSetBuilderRectilinear::CopyInto(yvals, Yc);
|
||||
DataSetBuilderRectilinear::CopyInto(zvals, Zc);
|
||||
|
||||
return BuildDataSet(dim, Xc,Yc,Zc, coordNm, cellNm);
|
||||
return DataSetBuilderRectilinear::BuildDataSet(
|
||||
dim, Xc,Yc,Zc, coordNm, cellNm);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
BuildDataSet(int dim,
|
||||
const vtkm::cont::ArrayHandle<T> &X,
|
||||
@ -192,9 +215,9 @@ private:
|
||||
vtkm::cont::ArrayHandle<vtkm::FloatDefault> > coords;
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::FloatDefault> Xc, Yc, Zc;
|
||||
this->CopyInto(X, Xc);
|
||||
this->CopyInto(Y, Yc);
|
||||
this->CopyInto(Z, Zc);
|
||||
DataSetBuilderRectilinear::CopyInto(X, Xc);
|
||||
DataSetBuilderRectilinear::CopyInto(Y, Yc);
|
||||
DataSetBuilderRectilinear::CopyInto(Z, Zc);
|
||||
|
||||
coords = vtkm::cont::make_ArrayHandleCartesianProduct(Xc,Yc,Zc);
|
||||
vtkm::cont::CoordinateSystem cs(coordNm, 1, coords);
|
||||
|
@ -35,27 +35,31 @@ public:
|
||||
|
||||
//2D uniform grids.
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::Id2 &dimensions,
|
||||
const vtkm::Vec<vtkm::FloatDefault,2> &origin = vtkm::Vec<vtkm::FloatDefault,2>(0.0f),
|
||||
const vtkm::Vec<vtkm::FloatDefault,2> &spacing = vtkm::Vec<vtkm::FloatDefault,2>(1.0f),
|
||||
std::string coordNm="coords", std::string cellNm="cells")
|
||||
{
|
||||
return CreateDS(2,
|
||||
dimensions[0],dimensions[1],1, origin[0],origin[1],0.0f,
|
||||
return DataSetBuilderUniform::CreateDS(2,
|
||||
dimensions[0],dimensions[1],1,
|
||||
origin[0],origin[1],0.0f,
|
||||
spacing[0],spacing[1],1.0f,
|
||||
coordNm, cellNm);
|
||||
}
|
||||
|
||||
//3D uniform grids.
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::Id3 &dimensions,
|
||||
const vtkm::Vec<vtkm::FloatDefault,3> &origin = vtkm::Vec<vtkm::FloatDefault,3>(0.0f),
|
||||
const vtkm::Vec<vtkm::FloatDefault,3> &spacing = vtkm::Vec<vtkm::FloatDefault,3>(1.0f),
|
||||
std::string coordNm="coords", std::string cellNm="cells")
|
||||
{
|
||||
return CreateDS(3,
|
||||
return DataSetBuilderUniform::CreateDS(
|
||||
3,
|
||||
dimensions[0],dimensions[1],dimensions[2],
|
||||
origin[0],origin[1],origin[2],
|
||||
spacing[0],spacing[1],spacing[2],
|
||||
@ -65,6 +69,7 @@ public:
|
||||
private:
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
vtkm::cont::DataSet
|
||||
CreateDS(int dim, vtkm::Id nx, vtkm::Id ny, vtkm::Id nz,
|
||||
T originX, T originY, T originZ,
|
||||
|
@ -34,11 +34,22 @@ public:
|
||||
DataSetFieldAdd() {}
|
||||
|
||||
//Point centered fields.
|
||||
template <typename T, typename Storage>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void AddPointField(vtkm::cont::DataSet &dataSet,
|
||||
const std::string &fieldName,
|
||||
vtkm::cont::ArrayHandle<T, Storage> &field)
|
||||
const vtkm::cont::DynamicArrayHandle &field)
|
||||
{
|
||||
dataSet.AddField(Field(fieldName, 1, vtkm::cont::Field::ASSOC_POINTS,
|
||||
field));
|
||||
}
|
||||
|
||||
template <typename T, typename Storage>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void AddPointField(vtkm::cont::DataSet &dataSet,
|
||||
const std::string &fieldName,
|
||||
const vtkm::cont::ArrayHandle<T, Storage> &field)
|
||||
{
|
||||
dataSet.AddField(Field(fieldName, 1, vtkm::cont::Field::ASSOC_POINTS,
|
||||
field));
|
||||
@ -46,6 +57,7 @@ public:
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void AddPointField(vtkm::cont::DataSet &dataSet,
|
||||
const std::string &fieldName,
|
||||
const std::vector<T> &field)
|
||||
@ -56,6 +68,7 @@ public:
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void AddPointField(vtkm::cont::DataSet &dataSet,
|
||||
const std::string &fieldName,
|
||||
const T *field, const vtkm::Id &n)
|
||||
@ -65,11 +78,23 @@ public:
|
||||
}
|
||||
|
||||
//Cell centered field
|
||||
template <typename T, typename Storage>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void AddCellField(vtkm::cont::DataSet &dataSet,
|
||||
const std::string &fieldName,
|
||||
vtkm::cont::ArrayHandle<T, Storage> &field,
|
||||
const vtkm::cont::DynamicArrayHandle &field,
|
||||
const std::string &cellSetName)
|
||||
{
|
||||
dataSet.AddField(Field(fieldName, 1, vtkm::cont::Field::ASSOC_CELL_SET,
|
||||
cellSetName, field));
|
||||
}
|
||||
|
||||
template <typename T, typename Storage>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void AddCellField(vtkm::cont::DataSet &dataSet,
|
||||
const std::string &fieldName,
|
||||
const vtkm::cont::ArrayHandle<T, Storage> &field,
|
||||
const std::string &cellSetName)
|
||||
{
|
||||
dataSet.AddField(Field(fieldName, 1, vtkm::cont::Field::ASSOC_CELL_SET,
|
||||
@ -78,6 +103,7 @@ public:
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void AddCellField(vtkm::cont::DataSet &dataSet,
|
||||
const std::string &fieldName,
|
||||
const std::vector<T> &field,
|
||||
@ -89,6 +115,7 @@ public:
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void AddCellField(vtkm::cont::DataSet &dataSet,
|
||||
const std::string &fieldName,
|
||||
const T *field, const vtkm::Id &n,
|
||||
@ -98,19 +125,32 @@ public:
|
||||
cellSetName, field, n));
|
||||
}
|
||||
|
||||
template <typename T, typename Storage>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void AddCellField(vtkm::cont::DataSet &dataSet,
|
||||
const std::string &fieldName,
|
||||
vtkm::cont::ArrayHandle<T, Storage> &field,
|
||||
const vtkm::cont::DynamicArrayHandle &field,
|
||||
vtkm::Id cellSetIndex = 0)
|
||||
{
|
||||
std::string cellSetName =
|
||||
dataSet.GetCellSet(cellSetIndex).GetCellSet().GetName();
|
||||
this->AddCellField(dataSet, fieldName, field, cellSetName);
|
||||
DataSetFieldAdd::AddCellField(dataSet, fieldName, field, cellSetName);
|
||||
}
|
||||
template <typename T, typename Storage>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void AddCellField(vtkm::cont::DataSet &dataSet,
|
||||
const std::string &fieldName,
|
||||
const vtkm::cont::ArrayHandle<T, Storage> &field,
|
||||
vtkm::Id cellSetIndex = 0)
|
||||
{
|
||||
std::string cellSetName =
|
||||
dataSet.GetCellSet(cellSetIndex).GetCellSet().GetName();
|
||||
DataSetFieldAdd::AddCellField(dataSet, fieldName, field, cellSetName);
|
||||
}
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void AddCellField(vtkm::cont::DataSet &dataSet,
|
||||
const std::string &fieldName,
|
||||
const std::vector<T> &field,
|
||||
@ -118,11 +158,12 @@ public:
|
||||
{
|
||||
std::string cellSetName =
|
||||
dataSet.GetCellSet(cellSetIndex).GetCellSet().GetName();
|
||||
this->AddCellField(dataSet, fieldName, field, cellSetName);
|
||||
DataSetFieldAdd::AddCellField(dataSet, fieldName, field, cellSetName);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
static
|
||||
void AddCellField(vtkm::cont::DataSet &dataSet,
|
||||
const std::string &fieldName,
|
||||
const T *field, const vtkm::Id &n,
|
||||
@ -130,7 +171,7 @@ public:
|
||||
{
|
||||
std::string cellSetName =
|
||||
dataSet.GetCellSet(cellSetIndex).GetCellSet().GetName();
|
||||
this->AddCellField(dataSet, fieldName, field, n, cellSetName);
|
||||
DataSetFieldAdd::AddCellField(dataSet, fieldName, field, n, cellSetName);
|
||||
}
|
||||
|
||||
|
||||
|
@ -158,10 +158,10 @@ private:
|
||||
|
||||
// Special implementation for regular point coordinates, which are easy
|
||||
// to determine.
|
||||
void operator()(vtkm::cont::ArrayHandle<
|
||||
void operator()(const vtkm::cont::ArrayHandle<
|
||||
vtkm::Vec<vtkm::FloatDefault,3>,
|
||||
vtkm::cont::ArrayHandleUniformPointCoordinates::StorageTag>
|
||||
array)
|
||||
&array)
|
||||
{
|
||||
vtkm::internal::ArrayPortalUniformPointCoordinates portal =
|
||||
array.GetPortalConstControl();
|
||||
@ -327,32 +327,13 @@ public:
|
||||
this->CopyData(data, nvals);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
Field(std::string name,
|
||||
vtkm::IdComponent order,
|
||||
AssociationEnum association,
|
||||
T)
|
||||
: Name(name),
|
||||
Order(order),
|
||||
Association(association),
|
||||
AssocCellSetName(),
|
||||
AssocLogicalDim(-1),
|
||||
Data(vtkm::cont::ArrayHandle<T>()),
|
||||
Bounds(),
|
||||
ModifiedFlag(true)
|
||||
{
|
||||
VTKM_ASSERT_CONT((this->Association == ASSOC_WHOLE_MESH) ||
|
||||
(this->Association == ASSOC_POINTS));
|
||||
}
|
||||
|
||||
/// constructors for cell set associations
|
||||
VTKM_CONT_EXPORT
|
||||
Field(std::string name,
|
||||
vtkm::IdComponent order,
|
||||
AssociationEnum association,
|
||||
const std::string& cellSetName,
|
||||
vtkm::cont::DynamicArrayHandle &data)
|
||||
const vtkm::cont::DynamicArrayHandle &data)
|
||||
: Name(name),
|
||||
Order(order),
|
||||
Association(association),
|
||||
@ -371,7 +352,7 @@ public:
|
||||
vtkm::IdComponent order,
|
||||
AssociationEnum association,
|
||||
const std::string& cellSetName,
|
||||
vtkm::cont::ArrayHandle<T, Storage> &data)
|
||||
const vtkm::cont::ArrayHandle<T, Storage> &data)
|
||||
: Name(name),
|
||||
Order(order),
|
||||
Association(association),
|
||||
@ -423,32 +404,13 @@ public:
|
||||
this->CopyData(data, nvals);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
Field(std::string name,
|
||||
vtkm::IdComponent order,
|
||||
AssociationEnum association,
|
||||
const std::string& cellSetName,
|
||||
T)
|
||||
: Name(name),
|
||||
Order(order),
|
||||
Association(association),
|
||||
AssocCellSetName(cellSetName),
|
||||
AssocLogicalDim(-1),
|
||||
Data(vtkm::cont::ArrayHandle<T>()),
|
||||
Bounds(),
|
||||
ModifiedFlag(true)
|
||||
{
|
||||
VTKM_ASSERT_CONT(this->Association == ASSOC_CELL_SET);
|
||||
}
|
||||
|
||||
/// constructors for logical dimension associations
|
||||
VTKM_CONT_EXPORT
|
||||
Field(std::string name,
|
||||
vtkm::IdComponent order,
|
||||
AssociationEnum association,
|
||||
vtkm::IdComponent logicalDim,
|
||||
vtkm::cont::DynamicArrayHandle &data)
|
||||
const vtkm::cont::DynamicArrayHandle &data)
|
||||
: Name(name),
|
||||
Order(order),
|
||||
Association(association),
|
||||
@ -467,7 +429,7 @@ public:
|
||||
vtkm::IdComponent order,
|
||||
AssociationEnum association,
|
||||
vtkm::IdComponent logicalDim,
|
||||
vtkm::cont::ArrayHandle<T, Storage> &data)
|
||||
const vtkm::cont::ArrayHandle<T, Storage> &data)
|
||||
: Name(name),
|
||||
Order(order),
|
||||
Association(association),
|
||||
@ -515,25 +477,6 @@ public:
|
||||
CopyData(data, nvals);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
Field(std::string name,
|
||||
vtkm::IdComponent order,
|
||||
AssociationEnum association,
|
||||
vtkm::IdComponent logicalDim,
|
||||
T)
|
||||
: Name(name),
|
||||
Order(order),
|
||||
Association(association),
|
||||
AssocCellSetName(),
|
||||
AssocLogicalDim(logicalDim),
|
||||
Data(vtkm::cont::ArrayHandle<T>()),
|
||||
Bounds(),
|
||||
ModifiedFlag(true)
|
||||
{
|
||||
VTKM_ASSERT_CONT(this->Association == ASSOC_LOGICAL_DIM);
|
||||
}
|
||||
|
||||
VTKM_CONT_EXPORT
|
||||
Field()
|
||||
: Name(),
|
||||
@ -659,7 +602,14 @@ public:
|
||||
|
||||
template <typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
void SetData(vtkm::cont::ArrayHandle<T> &newdata)
|
||||
void SetData(const vtkm::cont::ArrayHandle<T> &newdata)
|
||||
{
|
||||
this->Data = newdata;
|
||||
this->ModifiedFlag = true;
|
||||
}
|
||||
|
||||
VTKM_CONT_EXPORT
|
||||
void SetData(const vtkm::cont::DynamicArrayHandle &newdata)
|
||||
{
|
||||
this->Data = newdata;
|
||||
this->ModifiedFlag = true;
|
||||
|
@ -84,8 +84,7 @@ inline vtkm::cont::DataSet make_SingleTypeDataSet()
|
||||
const int nVerts = 5;
|
||||
vtkm::Float32 vars[nVerts] = {10.1f, 20.1f, 30.2f, 40.2f, 50.3f};
|
||||
|
||||
vtkm::cont::DataSetFieldAdd fieldAdder;
|
||||
fieldAdder.AddPointField(ds, "pointvar", vars, nVerts);
|
||||
vtkm::cont::DataSetFieldAdd::AddPointField(ds, "pointvar", vars, nVerts);
|
||||
|
||||
return ds;
|
||||
}
|
||||
|
@ -37,25 +37,19 @@ void TestCellAverageUniform3D()
|
||||
vtkm::cont::testing::MakeTestDataSet testDataSet;
|
||||
vtkm::cont::DataSet dataSet = testDataSet.Make3DUniformDataSet0();
|
||||
|
||||
vtkm::cont::Field result("avgvals",
|
||||
1,
|
||||
vtkm::cont::Field::ASSOC_CELL_SET,
|
||||
std::string("cells"),
|
||||
vtkm::Float32());
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> result;
|
||||
|
||||
vtkm::worklet::DispatcherMapTopology<vtkm::worklet::CellAverage> dispatcher;
|
||||
dispatcher.Invoke(dataSet.GetField("pointvar").GetData(),
|
||||
dataSet.GetCellSet(),
|
||||
result.GetData());
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> resultArrayHandle;
|
||||
result.GetData().CopyTo(resultArrayHandle);
|
||||
result);
|
||||
|
||||
vtkm::Float32 expected[4] = { 60.1875f, 70.2125f, 120.3375f, 130.3625f };
|
||||
for (int i = 0; i < 4; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(test_equal(resultArrayHandle.GetPortalConstControl().Get(i),
|
||||
expected[i]), "Wrong result for CellAverage worklet on 3D uniform data");
|
||||
VTKM_TEST_ASSERT(
|
||||
test_equal(result.GetPortalConstControl().Get(i), expected[i]),
|
||||
"Wrong result for CellAverage worklet on 3D uniform data");
|
||||
}
|
||||
}
|
||||
|
||||
@ -66,25 +60,19 @@ void TestCellAverageUniform2D()
|
||||
vtkm::cont::testing::MakeTestDataSet testDataSet;
|
||||
vtkm::cont::DataSet dataSet = testDataSet.Make2DUniformDataSet0();
|
||||
|
||||
vtkm::cont::Field result("avgvals",
|
||||
1,
|
||||
vtkm::cont::Field::ASSOC_CELL_SET,
|
||||
std::string("cells"),
|
||||
vtkm::Float32());
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> result;
|
||||
|
||||
vtkm::worklet::DispatcherMapTopology<vtkm::worklet::CellAverage> dispatcher;
|
||||
dispatcher.Invoke(dataSet.GetField("pointvar").GetData(),
|
||||
dataSet.GetCellSet(),
|
||||
result.GetData());
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> resultArrayHandle;
|
||||
result.GetData().CopyTo(resultArrayHandle);
|
||||
result);
|
||||
|
||||
vtkm::Float32 expected[2] = { 30.1f, 40.1f };
|
||||
for (int i = 0; i < 2; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(test_equal(resultArrayHandle.GetPortalConstControl().Get(i),
|
||||
expected[i]), "Wrong result for CellAverage worklet on 2D uniform data");
|
||||
VTKM_TEST_ASSERT(
|
||||
test_equal(result.GetPortalConstControl().Get(i), expected[i]),
|
||||
"Wrong result for CellAverage worklet on 2D uniform data");
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,25 +83,19 @@ void TestCellAverageExplicit()
|
||||
vtkm::cont::testing::MakeTestDataSet testDataSet;
|
||||
vtkm::cont::DataSet dataSet = testDataSet.Make3DExplicitDataSet0();
|
||||
|
||||
vtkm::cont::Field result("avgvals",
|
||||
1,
|
||||
vtkm::cont::Field::ASSOC_CELL_SET,
|
||||
std::string("cells"),
|
||||
vtkm::Float32());
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> result;
|
||||
|
||||
vtkm::worklet::DispatcherMapTopology<vtkm::worklet::CellAverage> dispatcher;
|
||||
dispatcher.Invoke(dataSet.GetField("pointvar").GetData(),
|
||||
dataSet.GetCellSet(),
|
||||
result.GetData());
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> resultArrayHandle;
|
||||
result.GetData().CopyTo(resultArrayHandle);
|
||||
result);
|
||||
|
||||
vtkm::Float32 expected[2] = { 20.1333f, 35.2f };
|
||||
for (int i = 0; i < 2; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(test_equal(resultArrayHandle.GetPortalConstControl().Get(i),
|
||||
expected[i]), "Wrong result for CellAverage worklet on 3D explicit data");
|
||||
VTKM_TEST_ASSERT(
|
||||
test_equal(result.GetPortalConstControl().Get(i), expected[i]),
|
||||
"Wrong result for CellAverage worklet on 3D explicit data");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -81,8 +81,7 @@ void TestPointElevation()
|
||||
|
||||
vtkm::cont::DataSet dataSet = MakePointElevationTestDataSet();
|
||||
|
||||
dataSet.AddField(vtkm::cont::Field("elevation", 1, vtkm::cont::Field::ASSOC_POINTS,
|
||||
vtkm::Float32()));
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> result;
|
||||
|
||||
vtkm::worklet::PointElevation pointElevationWorklet;
|
||||
pointElevationWorklet.SetLowPoint(vtkm::make_Vec<vtkm::Float64>(0.0, 0.0, 0.0));
|
||||
@ -92,16 +91,15 @@ void TestPointElevation()
|
||||
vtkm::worklet::DispatcherMapField<vtkm::worklet::PointElevation>
|
||||
dispatcher(pointElevationWorklet);
|
||||
dispatcher.Invoke(dataSet.GetCoordinateSystem().GetData(),
|
||||
dataSet.GetField("elevation").GetData());
|
||||
result);
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec<vtkm::Float32,3> > coordinates;
|
||||
dataSet.GetCoordinateSystem().GetData().CopyTo(coordinates);
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> result;
|
||||
dataSet.GetField("elevation").GetData().CopyTo(result);
|
||||
|
||||
for (vtkm::Id i = 0; i < result.GetNumberOfValues(); ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(test_equal(coordinates.GetPortalConstControl().Get(i)[1] * 2.0,
|
||||
VTKM_TEST_ASSERT(
|
||||
test_equal(coordinates.GetPortalConstControl().Get(i)[1] * 2.0,
|
||||
result.GetPortalConstControl().Get(i)),
|
||||
"Wrong result for PointElevation worklet");
|
||||
}
|
||||
|
@ -150,35 +150,19 @@ TestMaxPointOrCell()
|
||||
vtkm::cont::testing::MakeTestDataSet testDataSet;
|
||||
vtkm::cont::DataSet dataSet = testDataSet.Make3DExplicitDataSet0();
|
||||
|
||||
//Run a worklet to populate a cell centered field.
|
||||
//Here, we're filling it with test values.
|
||||
vtkm::cont::Field f("outcellvar",
|
||||
0,
|
||||
vtkm::cont::Field::ASSOC_CELL_SET,
|
||||
std::string("cells"),
|
||||
vtkm::Float32());
|
||||
|
||||
dataSet.AddField(f);
|
||||
|
||||
VTKM_TEST_ASSERT(dataSet.GetNumberOfCellSets() == 1,
|
||||
"Incorrect number of cell sets");
|
||||
|
||||
VTKM_TEST_ASSERT(dataSet.GetNumberOfFields() == 3,
|
||||
"Incorrect number of fields");
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> result;
|
||||
|
||||
vtkm::worklet::DispatcherMapTopology< ::test_explicit::MaxPointOrCellValue >
|
||||
dispatcher;
|
||||
dispatcher.Invoke(dataSet.GetField("cellvar").GetData(),
|
||||
dataSet.GetField("pointvar").GetData(),
|
||||
dataSet.GetCellSet(0),
|
||||
dataSet.GetField("outcellvar").GetData());
|
||||
result);
|
||||
|
||||
//Make sure we got the right answer.
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> res;
|
||||
dataSet.GetField("outcellvar").GetData().CopyTo(res);
|
||||
VTKM_TEST_ASSERT(test_equal(res.GetPortalConstControl().Get(0), 100.1f),
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(0), 100.1f),
|
||||
"Wrong result for PointToCellMax worklet");
|
||||
VTKM_TEST_ASSERT(test_equal(res.GetPortalConstControl().Get(1), 100.2f),
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(1), 100.2f),
|
||||
"Wrong result for PointToCellMax worklet");
|
||||
}
|
||||
|
||||
@ -190,34 +174,17 @@ TestAvgPointToCell()
|
||||
vtkm::cont::testing::MakeTestDataSet testDataSet;
|
||||
vtkm::cont::DataSet dataSet = testDataSet.Make3DExplicitDataSet0();
|
||||
|
||||
//Run a worklet to populate a cell centered field.
|
||||
//Here, we're filling it with test values.
|
||||
vtkm::cont::Field f("outcellvar",
|
||||
0,
|
||||
vtkm::cont::Field::ASSOC_CELL_SET,
|
||||
std::string("cells"),
|
||||
vtkm::Float32());
|
||||
|
||||
dataSet.AddField(f);
|
||||
|
||||
VTKM_TEST_ASSERT(dataSet.GetNumberOfCellSets() == 1,
|
||||
"Incorrect number of cell sets");
|
||||
|
||||
VTKM_TEST_ASSERT(dataSet.GetNumberOfFields() == 3,
|
||||
"Incorrect number of fields");
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> result;
|
||||
|
||||
vtkm::worklet::DispatcherMapTopology< ::test_explicit::AveragePointToCellValue > dispatcher;
|
||||
dispatcher.Invoke(dataSet.GetField("pointvar").GetData(),
|
||||
dataSet.GetCellSet(),
|
||||
dataSet.GetField("outcellvar").GetData());
|
||||
result);
|
||||
|
||||
//make sure we got the right answer.
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> res;
|
||||
dataSet.GetField("outcellvar").GetData().CopyTo(res);
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(res.GetPortalConstControl().Get(0), 20.1333f),
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(0), 20.1333f),
|
||||
"Wrong result for PointToCellAverage worklet");
|
||||
VTKM_TEST_ASSERT(test_equal(res.GetPortalConstControl().Get(1), 35.2f),
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(1), 35.2f),
|
||||
"Wrong result for PointToCellAverage worklet");
|
||||
}
|
||||
|
||||
@ -229,34 +196,18 @@ TestAvgCellToPoint()
|
||||
vtkm::cont::testing::MakeTestDataSet testDataSet;
|
||||
vtkm::cont::DataSet dataSet = testDataSet.Make3DExplicitDataSet1();
|
||||
|
||||
//Run a worklet to populate a point centered field.
|
||||
//Here, we're filling it with test values.
|
||||
vtkm::cont::Field f("outpointvar",
|
||||
1,
|
||||
vtkm::cont::Field::ASSOC_POINTS,
|
||||
vtkm::Float32());
|
||||
|
||||
dataSet.AddField(f);
|
||||
|
||||
VTKM_TEST_ASSERT(dataSet.GetNumberOfCellSets() == 1,
|
||||
"Incorrect number of cell sets");
|
||||
|
||||
VTKM_TEST_ASSERT(dataSet.GetNumberOfFields() == 3,
|
||||
"Incorrect number of fields");
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> result;
|
||||
|
||||
|
||||
vtkm::worklet::DispatcherMapTopology< ::test_explicit::AverageCellToPointValue > dispatcher;
|
||||
dispatcher.Invoke(dataSet.GetField("cellvar").GetData(),
|
||||
dataSet.GetCellSet(),
|
||||
dataSet.GetField("outpointvar").GetData());
|
||||
result);
|
||||
|
||||
//make sure we got the right answer.
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> res;
|
||||
dataSet.GetField("outpointvar").GetData().CopyTo(res);
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(res.GetPortalConstControl().Get(0), 100.1f),
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(0), 100.1f),
|
||||
"Wrong result for CellToPointAverage worklet");
|
||||
VTKM_TEST_ASSERT(test_equal(res.GetPortalConstControl().Get(1), 100.15f),
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(1), 100.15f),
|
||||
"Wrong result for CellToPointAverage worklet");
|
||||
}
|
||||
|
||||
|
@ -178,21 +178,8 @@ TestMaxPointOrCell()
|
||||
vtkm::cont::testing::MakeTestDataSet testDataSet;
|
||||
vtkm::cont::DataSet dataSet = testDataSet.Make2DUniformDataSet0();
|
||||
|
||||
//Run a worklet to populate a cell centered field.
|
||||
//Here, we're filling it with test values.
|
||||
vtkm::cont::Field f("outcellvar",
|
||||
1,
|
||||
vtkm::cont::Field::ASSOC_CELL_SET,
|
||||
std::string("cells"),
|
||||
vtkm::Float32());
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> result;
|
||||
|
||||
dataSet.AddField(f);
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(dataSet.GetNumberOfCellSets(), 1),
|
||||
"Incorrect number of cell sets");
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(dataSet.GetNumberOfFields(), 3),
|
||||
"Incorrect number of fields");
|
||||
vtkm::worklet::DispatcherMapTopology< ::test_uniform::MaxPointOrCellValue > dispatcher;
|
||||
dispatcher.Invoke(dataSet.GetField("cellvar").GetData(),
|
||||
dataSet.GetField("pointvar").GetData(),
|
||||
@ -202,15 +189,13 @@ TestMaxPointOrCell()
|
||||
// part more flexible.
|
||||
dataSet.GetCellSet(0).ResetCellSetList(
|
||||
vtkm::cont::CellSetListTagStructured2D()),
|
||||
dataSet.GetField("outcellvar").GetData());
|
||||
result);
|
||||
|
||||
//make sure we got the right answer.
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> res;
|
||||
dataSet.GetField("outcellvar").GetData().CopyTo(res);
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(res.GetPortalConstControl().Get(0), 100.1f),
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(0), 100.1f),
|
||||
"Wrong result for MaxPointOrCell worklet");
|
||||
VTKM_TEST_ASSERT(test_equal(res.GetPortalConstControl().Get(1), 200.1f),
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(1), 200.1f),
|
||||
"Wrong result for MaxPointOrCell worklet");
|
||||
}
|
||||
|
||||
@ -221,21 +206,8 @@ TestAvgPointToCell()
|
||||
vtkm::cont::testing::MakeTestDataSet testDataSet;
|
||||
vtkm::cont::DataSet dataSet = testDataSet.Make2DUniformDataSet0();
|
||||
|
||||
//Run a worklet to populate a cell centered field.
|
||||
//Here, we're filling it with test values.
|
||||
vtkm::cont::Field f("outcellvar",
|
||||
0,
|
||||
vtkm::cont::Field::ASSOC_CELL_SET,
|
||||
std::string("cells"),
|
||||
vtkm::Float32());
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> result;
|
||||
|
||||
dataSet.AddField(f);
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(dataSet.GetNumberOfCellSets(), 1),
|
||||
"Incorrect number of cell sets");
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(dataSet.GetNumberOfFields(), 3),
|
||||
"Incorrect number of fields");
|
||||
vtkm::worklet::DispatcherMapTopology< ::test_uniform::AveragePointToCellValue > dispatcher;
|
||||
dispatcher.Invoke(dataSet.GetField("pointvar").GetData(),
|
||||
// We know that the cell set is a structured 2D grid and
|
||||
@ -244,15 +216,12 @@ TestAvgPointToCell()
|
||||
// part more flexible.
|
||||
dataSet.GetCellSet(0).ResetCellSetList(
|
||||
vtkm::cont::CellSetListTagStructured2D()),
|
||||
dataSet.GetField("outcellvar").GetData());
|
||||
result);
|
||||
|
||||
//make sure we got the right answer.
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> res;
|
||||
dataSet.GetField("outcellvar").GetData().CopyTo(res);
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(res.GetPortalConstControl().Get(0), 30.1f),
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(0), 30.1f),
|
||||
"Wrong result for PointToCellAverage worklet");
|
||||
VTKM_TEST_ASSERT(test_equal(res.GetPortalConstControl().Get(1), 40.1f),
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(1), 40.1f),
|
||||
"Wrong result for PointToCellAverage worklet");
|
||||
}
|
||||
|
||||
@ -264,20 +233,7 @@ TestAvgCellToPoint()
|
||||
vtkm::cont::testing::MakeTestDataSet testDataSet;
|
||||
vtkm::cont::DataSet dataSet = testDataSet.Make2DUniformDataSet0();
|
||||
|
||||
//Run a worklet to populate a point centered field.
|
||||
//Here, we're filling it with test values.
|
||||
vtkm::cont::Field f("outpointvar",
|
||||
1,
|
||||
vtkm::cont::Field::ASSOC_POINTS,
|
||||
vtkm::Float32());
|
||||
|
||||
dataSet.AddField(f);
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(dataSet.GetNumberOfCellSets(), 1),
|
||||
"Incorrect number of cell sets");
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(dataSet.GetNumberOfFields(), 3),
|
||||
"Incorrect number of fields");
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> result;
|
||||
|
||||
vtkm::worklet::DispatcherMapTopology< ::test_uniform::AverageCellToPointValue > dispatcher;
|
||||
dispatcher.Invoke(dataSet.GetField("cellvar").GetData(),
|
||||
@ -287,15 +243,12 @@ TestAvgCellToPoint()
|
||||
// part more flexible.
|
||||
dataSet.GetCellSet(0).ResetCellSetList(
|
||||
vtkm::cont::CellSetListTagStructured2D()),
|
||||
dataSet.GetField("outpointvar").GetData());
|
||||
result);
|
||||
|
||||
//make sure we got the right answer.
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> res;
|
||||
dataSet.GetField("outpointvar").GetData().CopyTo(res);
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(res.GetPortalConstControl().Get(0), 100.1f),
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(0), 100.1f),
|
||||
"Wrong result for CellToPointAverage worklet");
|
||||
VTKM_TEST_ASSERT(test_equal(res.GetPortalConstControl().Get(1), 150.1f),
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(1), 150.1f),
|
||||
"Wrong result for CellToPointAverage worklet");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user