Don't use DeviceAdapter inside DataSetBuilderExplicit.
No need to use the device adapter, just do a manual host side copy.
This commit is contained in:
parent
6d9d7fac83
commit
8cf9b979c7
@ -20,158 +20,165 @@
|
||||
#ifndef vtk_m_cont_DataSetBuilderExplicit_h
|
||||
#define vtk_m_cont_DataSetBuilderExplicit_h
|
||||
|
||||
#include <vtkm/cont/DataSet.h>
|
||||
#include <vtkm/cont/CoordinateSystem.h>
|
||||
#include <vtkm/cont/ArrayHandleCompositeVector.h>
|
||||
#include <vtkm/cont/ArrayPortalToIterators.h>
|
||||
#include <vtkm/cont/Assert.h>
|
||||
#include <vtkm/cont/CoordinateSystem.h>
|
||||
#include <vtkm/cont/DataSet.h>
|
||||
|
||||
namespace vtkm {
|
||||
namespace cont {
|
||||
|
||||
typedef vtkm::cont::DeviceAdapterAlgorithm<VTKM_DEFAULT_DEVICE_ADAPTER_TAG> DFA;
|
||||
|
||||
//Coordinates builder??
|
||||
//Need a singlecellset handler.
|
||||
|
||||
class DataSetBuilderExplicit
|
||||
{
|
||||
template<typename T>
|
||||
void CopyInto(const std::vector<T>& input,
|
||||
vtkm::cont::ArrayHandle<T>& output )
|
||||
{
|
||||
output.Allocate( static_cast<vtkm::Id>(input.size()) );
|
||||
std::copy( input.begin(), input.end(),
|
||||
ArrayPortalToIteratorBegin(output.GetPortalControl()) );
|
||||
}
|
||||
public:
|
||||
VTKM_CONT_EXPORT
|
||||
DataSetBuilderExplicit() {}
|
||||
VTKM_CONT_EXPORT
|
||||
DataSetBuilderExplicit() {}
|
||||
|
||||
//Single cell explicits.
|
||||
//TODO
|
||||
//Single cell explicits.
|
||||
//TODO
|
||||
|
||||
//Zoo explicit cell
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<T> &xVals,
|
||||
const std::vector<T> &yVals,
|
||||
const std::vector<vtkm::UInt8> &shapes,
|
||||
const std::vector<vtkm::IdComponent> &numIndices,
|
||||
const std::vector<vtkm::Id> &connectivity,
|
||||
int dimensionality=3,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells")
|
||||
{
|
||||
std::vector<T> zVals(xVals.size(),0);
|
||||
return Create(xVals,yVals,zVals,
|
||||
shapes,numIndices,connectivity,
|
||||
dimensionality, coordsNm,cellNm);
|
||||
}
|
||||
//Zoo explicit cell
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<T> &xVals,
|
||||
const std::vector<T> &yVals,
|
||||
const std::vector<vtkm::UInt8> &shapes,
|
||||
const std::vector<vtkm::IdComponent> &numIndices,
|
||||
const std::vector<vtkm::Id> &connectivity,
|
||||
int dimensionality=2,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells")
|
||||
{
|
||||
std::vector<T> zVals(xVals.size(),0);
|
||||
return Create(xVals,yVals,zVals,
|
||||
shapes,numIndices,connectivity,
|
||||
dimensionality, coordsNm,cellNm);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<T> &xVals,
|
||||
const std::vector<T> &yVals,
|
||||
const std::vector<T> &zVals,
|
||||
const std::vector<vtkm::UInt8> &shapes,
|
||||
const std::vector<vtkm::IdComponent> &numIndices,
|
||||
const std::vector<vtkm::Id> &connectivity,
|
||||
int dimensionality=3,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells");
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<T> &xVals,
|
||||
const std::vector<T> &yVals,
|
||||
const std::vector<T> &zVals,
|
||||
const std::vector<vtkm::UInt8> &shapes,
|
||||
const std::vector<vtkm::IdComponent> &numIndices,
|
||||
const std::vector<vtkm::Id> &connectivity,
|
||||
int dimensionality=3,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells");
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::cont::ArrayHandle<T> &xVals,
|
||||
const vtkm::cont::ArrayHandle<T> &yVals,
|
||||
const vtkm::cont::ArrayHandle<T> &zVals,
|
||||
const vtkm::cont::ArrayHandle<vtkm::UInt8> &shapes,
|
||||
const vtkm::cont::ArrayHandle<vtkm::IdComponent> &numIndices,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
int dimensionality=3,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells")
|
||||
{
|
||||
return BuildDataSet(xVals,yVals,zVals,
|
||||
shapes,numIndices,connectivity,
|
||||
dimensionality, coordsNm,cellNm);
|
||||
}
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::cont::ArrayHandle<T> &xVals,
|
||||
const vtkm::cont::ArrayHandle<T> &yVals,
|
||||
const vtkm::cont::ArrayHandle<T> &zVals,
|
||||
const vtkm::cont::ArrayHandle<vtkm::UInt8> &shapes,
|
||||
const vtkm::cont::ArrayHandle<vtkm::IdComponent> &numIndices,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
int dimensionality=3,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells")
|
||||
{
|
||||
return BuildDataSet(xVals,yVals,zVals,
|
||||
shapes,numIndices,connectivity,
|
||||
dimensionality, coordsNm,cellNm);
|
||||
}
|
||||
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<vtkm::Vec<T,3> > &coords,
|
||||
const std::vector<vtkm::UInt8> &shapes,
|
||||
const std::vector<vtkm::IdComponent> &numIndices,
|
||||
const std::vector<vtkm::Id> &connectivity,
|
||||
int dimensionality=3,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells");
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<vtkm::Vec<T,3> > &coords,
|
||||
const std::vector<vtkm::UInt8> &shapes,
|
||||
const std::vector<vtkm::IdComponent> &numIndices,
|
||||
const std::vector<vtkm::Id> &connectivity,
|
||||
int dimensionality=3,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells");
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > &coords,
|
||||
const vtkm::cont::ArrayHandle<vtkm::UInt8> &shapes,
|
||||
const vtkm::cont::ArrayHandle<vtkm::IdComponent> &numIndices,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
int dimensionality=3,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells")
|
||||
{
|
||||
return BuildDataSet(coords, shapes, numIndices, connectivity,
|
||||
dimensionality, coordsNm, cellNm);
|
||||
}
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > &coords,
|
||||
const vtkm::cont::ArrayHandle<vtkm::UInt8> &shapes,
|
||||
const vtkm::cont::ArrayHandle<vtkm::IdComponent> &numIndices,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
int dimensionality=3,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells")
|
||||
{
|
||||
return BuildDataSet(coords, shapes, numIndices, connectivity,
|
||||
dimensionality, coordsNm, cellNm);
|
||||
}
|
||||
|
||||
template<typename T, typename CellShapeTag>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<vtkm::Vec<T,3> > &coords,
|
||||
CellShapeTag tag,
|
||||
const std::vector<vtkm::Id> &connectivity,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells");
|
||||
template<typename T, typename CellShapeTag>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const std::vector<vtkm::Vec<T,3> > &coords,
|
||||
CellShapeTag tag,
|
||||
const std::vector<vtkm::Id> &connectivity,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells");
|
||||
|
||||
template<typename T, typename CellShapeTag>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > &coords,
|
||||
CellShapeTag tag,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells")
|
||||
{
|
||||
return BuildDataSet(coords, tag, connectivity, coordsNm, cellNm);
|
||||
}
|
||||
|
||||
private:
|
||||
template<typename T>
|
||||
vtkm::cont::DataSet
|
||||
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,
|
||||
const vtkm::cont::ArrayHandle<vtkm::IdComponent> &numIndices,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
int dimensionality,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm);
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
BuildDataSet(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > &coords,
|
||||
const vtkm::cont::ArrayHandle<vtkm::UInt8> &shapes,
|
||||
const vtkm::cont::ArrayHandle<vtkm::IdComponent> &numIndices,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
int dimensionality,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm);
|
||||
|
||||
template<typename T, typename CellShapeTag>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
BuildDataSet(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > &coords,
|
||||
template<typename T, typename CellShapeTag>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
Create(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > &coords,
|
||||
CellShapeTag tag,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm);
|
||||
const std::string &coordsNm="coords",
|
||||
const std::string &cellNm="cells")
|
||||
{
|
||||
return BuildDataSet(coords, tag, connectivity, coordsNm, cellNm);
|
||||
}
|
||||
|
||||
private:
|
||||
template<typename T>
|
||||
vtkm::cont::DataSet
|
||||
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,
|
||||
const vtkm::cont::ArrayHandle<vtkm::IdComponent> &numIndices,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
int dimensionality,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm);
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
BuildDataSet(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > &coords,
|
||||
const vtkm::cont::ArrayHandle<vtkm::UInt8> &shapes,
|
||||
const vtkm::cont::ArrayHandle<vtkm::IdComponent> &numIndices,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
int dimensionality,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm);
|
||||
|
||||
template<typename T, typename CellShapeTag>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet
|
||||
BuildDataSet(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > &coords,
|
||||
CellShapeTag tag,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm);
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
@ -186,53 +193,53 @@ DataSetBuilderExplicit::Create(const std::vector<T> &xVals,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm)
|
||||
{
|
||||
VTKM_ASSERT_CONT(xVals.size() == yVals.size() &&
|
||||
yVals.size() == zVals.size() &&
|
||||
xVals.size() > 0);
|
||||
VTKM_ASSERT_CONT(xVals.size() == yVals.size() &&
|
||||
yVals.size() == zVals.size() &&
|
||||
xVals.size() > 0);
|
||||
|
||||
vtkm::cont::ArrayHandle<T> Xc, Yc, Zc;
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(xVals), Xc);
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(yVals), Yc);
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(zVals), Zc);
|
||||
vtkm::cont::ArrayHandle<T> Xc, Yc, Zc;
|
||||
this->CopyInto(xVals, Xc);
|
||||
this->CopyInto(yVals, Yc);
|
||||
this->CopyInto(zVals, Zc);
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::UInt8> Sc;
|
||||
vtkm::cont::ArrayHandle<vtkm::IdComponent> Nc;
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> Cc;
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(shapes), Sc);
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(numIndices), Nc);
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(connectivity), Cc);
|
||||
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);
|
||||
|
||||
return BuildDataSet(Xc,Yc,Zc, Sc,Nc,Cc, dimensionality, coordsNm, cellNm);
|
||||
return BuildDataSet(Xc,Yc,Zc, Sc,Nc,Cc, dimensionality, coordsNm, cellNm);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
vtkm::cont::DataSet
|
||||
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,
|
||||
const vtkm::cont::ArrayHandle<vtkm::IdComponent> &numIndices,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
const vtkm::cont::ArrayHandle<T> &Y,
|
||||
const vtkm::cont::ArrayHandle<T> &Z,
|
||||
const vtkm::cont::ArrayHandle<vtkm::UInt8> &shapes,
|
||||
const vtkm::cont::ArrayHandle<vtkm::IdComponent> &numIndices,
|
||||
const vtkm::cont::ArrayHandle<vtkm::Id> &connectivity,
|
||||
int dimensionality,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm)
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm)
|
||||
{
|
||||
VTKM_ASSERT_CONT(X.GetNumberOfValues() == Y.GetNumberOfValues() &&
|
||||
Y.GetNumberOfValues() == Z.GetNumberOfValues() &&
|
||||
X.GetNumberOfValues() > 0 &&
|
||||
shapes.GetNumberOfValues() == numIndices.GetNumberOfValues());
|
||||
VTKM_ASSERT_CONT(X.GetNumberOfValues() == Y.GetNumberOfValues() &&
|
||||
Y.GetNumberOfValues() == Z.GetNumberOfValues() &&
|
||||
X.GetNumberOfValues() > 0 &&
|
||||
shapes.GetNumberOfValues() == numIndices.GetNumberOfValues());
|
||||
|
||||
vtkm::cont::DataSet dataSet;
|
||||
dataSet.AddCoordinateSystem(
|
||||
vtkm::cont::CoordinateSystem(coordsNm, 1,
|
||||
make_ArrayHandleCompositeVector(X,0, Y,0, Z,0)));
|
||||
vtkm::Id nPts = X.GetNumberOfValues();
|
||||
vtkm::cont::CellSetExplicit<> cellSet(nPts, cellNm, dimensionality);
|
||||
vtkm::cont::DataSet dataSet;
|
||||
dataSet.AddCoordinateSystem(
|
||||
vtkm::cont::CoordinateSystem(coordsNm, 1,
|
||||
make_ArrayHandleCompositeVector(X,0, Y,0, Z,0)));
|
||||
vtkm::Id nPts = X.GetNumberOfValues();
|
||||
vtkm::cont::CellSetExplicit<> cellSet(nPts, cellNm, dimensionality);
|
||||
|
||||
cellSet.Fill(shapes, numIndices, connectivity);
|
||||
dataSet.AddCellSet(cellSet);
|
||||
cellSet.Fill(shapes, numIndices, connectivity);
|
||||
dataSet.AddCellSet(cellSet);
|
||||
|
||||
return dataSet;
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
@ -245,17 +252,17 @@ DataSetBuilderExplicit::Create(const std::vector<vtkm::Vec<T,3> > &coords,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm)
|
||||
{
|
||||
vtkm::cont::ArrayHandle<Vec<T,3> > coordsArray;
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(coords), coordsArray);
|
||||
vtkm::cont::ArrayHandle<Vec<T,3> > coordsArray;
|
||||
CopyInto(coords, coordsArray);
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::UInt8> Sc;
|
||||
vtkm::cont::ArrayHandle<vtkm::IdComponent> Nc;
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> Cc;
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(shapes), Sc);
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(numIndices), Nc);
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(connectivity), Cc);
|
||||
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);
|
||||
|
||||
return Create(coordsArray, Sc, Nc, Cc, dimensionality, coordsNm, cellNm);
|
||||
return Create(coordsArray, Sc, Nc, Cc, dimensionality, coordsNm, cellNm);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
@ -269,17 +276,17 @@ DataSetBuilderExplicit::BuildDataSet(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm)
|
||||
{
|
||||
vtkm::cont::DataSet dataSet;
|
||||
vtkm::cont::DataSet dataSet;
|
||||
|
||||
dataSet.AddCoordinateSystem(vtkm::cont::CoordinateSystem(coordsNm,
|
||||
1, coords));
|
||||
vtkm::Id nPts = static_cast<vtkm::Id>(coords.GetNumberOfValues());
|
||||
vtkm::cont::CellSetExplicit<> cellSet(nPts, cellNm, dimensionality);
|
||||
dataSet.AddCoordinateSystem(vtkm::cont::CoordinateSystem(coordsNm,
|
||||
1, coords));
|
||||
vtkm::Id nPts = static_cast<vtkm::Id>(coords.GetNumberOfValues());
|
||||
vtkm::cont::CellSetExplicit<> cellSet(nPts, cellNm, dimensionality);
|
||||
|
||||
cellSet.Fill(shapes, numIndices, connectivity);
|
||||
dataSet.AddCellSet(cellSet);
|
||||
cellSet.Fill(shapes, numIndices, connectivity);
|
||||
dataSet.AddCellSet(cellSet);
|
||||
|
||||
return dataSet;
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
template<typename T, typename CellShapeTag>
|
||||
@ -290,13 +297,13 @@ DataSetBuilderExplicit::Create(const std::vector<vtkm::Vec<T,3> > &coords,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm)
|
||||
{
|
||||
vtkm::cont::ArrayHandle<Vec<T,3> > coordsArray;
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(coords), coordsArray);
|
||||
vtkm::cont::ArrayHandle<Vec<T,3> > coordsArray;
|
||||
this->CopyInto(coords, coordsArray);
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> Cc;
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(connectivity), Cc);
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> Cc;
|
||||
this->CopyInto(connectivity, Cc);
|
||||
|
||||
return Create(coordsArray, tag, Cc, coordsNm, cellNm);
|
||||
return Create(coordsArray, tag, Cc, coordsNm, cellNm);
|
||||
}
|
||||
|
||||
template<typename T, typename CellShapeTag>
|
||||
@ -308,121 +315,126 @@ DataSetBuilderExplicit::BuildDataSet(const vtkm::cont::ArrayHandle<vtkm::Vec<T,3
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm)
|
||||
{
|
||||
vtkm::cont::DataSet dataSet;
|
||||
vtkm::cont::DataSet dataSet;
|
||||
|
||||
dataSet.AddCoordinateSystem(vtkm::cont::CoordinateSystem(coordsNm,
|
||||
1, coords));
|
||||
vtkm::cont::CellSetSingleType<> cellSet(tag, cellNm);
|
||||
dataSet.AddCoordinateSystem(vtkm::cont::CoordinateSystem(coordsNm,1, coords));
|
||||
vtkm::cont::CellSetSingleType<> cellSet(tag, cellNm);
|
||||
|
||||
cellSet.Fill(connectivity);
|
||||
dataSet.AddCellSet(cellSet);
|
||||
cellSet.Fill(connectivity);
|
||||
dataSet.AddCellSet(cellSet);
|
||||
|
||||
return dataSet;
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
|
||||
class DataSetBuilderExplicitIterative
|
||||
{
|
||||
public:
|
||||
VTKM_CONT_EXPORT
|
||||
DataSetBuilderExplicitIterative() {}
|
||||
VTKM_CONT_EXPORT
|
||||
DataSetBuilderExplicitIterative() {}
|
||||
|
||||
VTKM_CONT_EXPORT
|
||||
void Begin(int dim,
|
||||
const std::string &coordName="coords",
|
||||
const std::string &cellName="cells")
|
||||
{
|
||||
VTKM_CONT_EXPORT
|
||||
void Begin(int dim,
|
||||
const std::string &coordName="coords",
|
||||
const std::string &cellName="cells")
|
||||
{
|
||||
this->dimensionality = dim;
|
||||
this->coordNm = coordName;
|
||||
this->cellNm = cellName;
|
||||
this->coordNm = coordName;
|
||||
this->cellNm = cellName;
|
||||
this->points.resize(0);
|
||||
this->shapes.resize(0);
|
||||
this->numIdx.resize(0);
|
||||
this->connectivity.resize(0);
|
||||
}
|
||||
}
|
||||
|
||||
//Define points.
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet Create();
|
||||
//Define points.
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::cont::DataSet Create();
|
||||
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::Id AddPoint(const vtkm::Vec<vtkm::Float32, 3> &pt)
|
||||
{
|
||||
points.push_back(pt);
|
||||
vtkm::Id id = static_cast<vtkm::Id>(points.size());
|
||||
return id;
|
||||
}
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::Id AddPoint(const vtkm::Float32 &x,
|
||||
const vtkm::Float32 &y,
|
||||
const vtkm::Float32 &z=0)
|
||||
{
|
||||
points.push_back(vtkm::make_Vec(x,y,z));
|
||||
vtkm::Id id = static_cast<vtkm::Id>(points.size());
|
||||
return id;
|
||||
}
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::Id AddPoint(const vtkm::Vec<vtkm::Float32, 3> &pt)
|
||||
{
|
||||
points.push_back(pt);
|
||||
vtkm::Id id = static_cast<vtkm::Id>(points.size());
|
||||
return id;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::Id AddPoint(const T &x, const T &y, const T &z=0)
|
||||
{
|
||||
return AddPoint(static_cast<vtkm::Float32>(x),
|
||||
static_cast<vtkm::Float32>(y),
|
||||
static_cast<vtkm::Float32>(z));
|
||||
}
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::Id AddPoint(const vtkm::Float32 &x,
|
||||
const vtkm::Float32 &y,
|
||||
const vtkm::Float32 &z=0)
|
||||
{
|
||||
points.push_back(vtkm::make_Vec(x,y,z));
|
||||
vtkm::Id id = static_cast<vtkm::Id>(points.size());
|
||||
return id;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::Id AddPoint(const vtkm::Vec<T,3> &pt)
|
||||
{
|
||||
return AddPoint(static_cast<vtkm::Vec<vtkm::Float32,3> >(pt));
|
||||
}
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::Id AddPoint(const T &x, const T &y, const T &z=0)
|
||||
{
|
||||
return AddPoint(static_cast<vtkm::Float32>(x),
|
||||
static_cast<vtkm::Float32>(y),
|
||||
static_cast<vtkm::Float32>(z));
|
||||
}
|
||||
|
||||
//Define cells.
|
||||
VTKM_CONT_EXPORT
|
||||
void AddCell(vtkm::UInt8 shape)
|
||||
{
|
||||
this->shapes.push_back(shape);
|
||||
this->numIdx.push_back(0);
|
||||
}
|
||||
VTKM_CONT_EXPORT
|
||||
void AddCell(const vtkm::UInt8 &shape, const std::vector<vtkm::Id> &conn)
|
||||
{
|
||||
this->shapes.push_back(shape);
|
||||
this->numIdx.push_back(static_cast<vtkm::IdComponent>(conn.size()));
|
||||
connectivity.insert(connectivity.end(), conn.begin(), conn.end());
|
||||
}
|
||||
VTKM_CONT_EXPORT
|
||||
void AddCell(const vtkm::UInt8 &shape, const vtkm::Id *conn, const vtkm::IdComponent &n)
|
||||
{
|
||||
this->shapes.push_back(shape);
|
||||
this->numIdx.push_back(n);
|
||||
for (int i = 0; i < n; i++)
|
||||
connectivity.push_back(conn[i]);
|
||||
}
|
||||
VTKM_CONT_EXPORT
|
||||
void AddCellPoint(vtkm::Id pointIndex)
|
||||
{
|
||||
VTKM_ASSERT_CONT(this->numIdx.size() > 0);
|
||||
this->connectivity.push_back(pointIndex);
|
||||
this->numIdx.back() += 1;
|
||||
}
|
||||
template<typename T>
|
||||
VTKM_CONT_EXPORT
|
||||
vtkm::Id AddPoint(const vtkm::Vec<T,3> &pt)
|
||||
{
|
||||
return AddPoint(static_cast<vtkm::Vec<vtkm::Float32,3> >(pt));
|
||||
}
|
||||
|
||||
//Define cells.
|
||||
VTKM_CONT_EXPORT
|
||||
void AddCell(vtkm::UInt8 shape)
|
||||
{
|
||||
this->shapes.push_back(shape);
|
||||
this->numIdx.push_back(0);
|
||||
}
|
||||
|
||||
VTKM_CONT_EXPORT
|
||||
void AddCell(const vtkm::UInt8 &shape, const std::vector<vtkm::Id> &conn)
|
||||
{
|
||||
this->shapes.push_back(shape);
|
||||
this->numIdx.push_back(static_cast<vtkm::IdComponent>(conn.size()));
|
||||
connectivity.insert(connectivity.end(), conn.begin(), conn.end());
|
||||
}
|
||||
|
||||
VTKM_CONT_EXPORT
|
||||
void AddCell(const vtkm::UInt8 &shape, const vtkm::Id *conn, const vtkm::IdComponent &n)
|
||||
{
|
||||
this->shapes.push_back(shape);
|
||||
this->numIdx.push_back(n);
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
connectivity.push_back(conn[i]);
|
||||
}
|
||||
}
|
||||
|
||||
VTKM_CONT_EXPORT
|
||||
void AddCellPoint(vtkm::Id pointIndex)
|
||||
{
|
||||
VTKM_ASSERT_CONT(this->numIdx.size() > 0);
|
||||
this->connectivity.push_back(pointIndex);
|
||||
this->numIdx.back() += 1;
|
||||
}
|
||||
|
||||
private:
|
||||
std::string coordNm, cellNm;
|
||||
int dimensionality;
|
||||
std::string coordNm, cellNm;
|
||||
int dimensionality;
|
||||
|
||||
std::vector<vtkm::Vec<vtkm::Float32,3> > points;
|
||||
std::vector<vtkm::UInt8> shapes;
|
||||
std::vector<vtkm::IdComponent> numIdx;
|
||||
std::vector<vtkm::Id> connectivity;
|
||||
std::vector<vtkm::Vec<vtkm::Float32,3> > points;
|
||||
std::vector<vtkm::UInt8> shapes;
|
||||
std::vector<vtkm::IdComponent> numIdx;
|
||||
std::vector<vtkm::Id> connectivity;
|
||||
};
|
||||
|
||||
vtkm::cont::DataSet
|
||||
DataSetBuilderExplicitIterative::Create()
|
||||
{
|
||||
DataSetBuilderExplicit dsb;
|
||||
return dsb.Create(points, shapes, numIdx, connectivity, dimensionality, coordNm, cellNm);
|
||||
DataSetBuilderExplicit dsb;
|
||||
return dsb.Create(points, shapes, numIdx, connectivity, dimensionality, coordNm, cellNm);
|
||||
}
|
||||
|
||||
|
||||
@ -431,65 +443,65 @@ DataSetBuilderExplicitIterative::Create()
|
||||
template<typename T, typename CellType>
|
||||
vtkm::cont::DataSet
|
||||
DataSetBuilderExplicit::Create(const std::vector<T> &xVals,
|
||||
const std::vector<T> &yVals,
|
||||
const std::vector<vtkm::Id> &connectivity,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm)
|
||||
const std::vector<T> &yVals,
|
||||
const std::vector<vtkm::Id> &connectivity,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm)
|
||||
{
|
||||
VTKM_CONT_ASSERT(xVals.size() == yVals.size() && xVals.size() > 0);
|
||||
vtkm::cont::DataSet dataSet;
|
||||
VTKM_CONT_ASSERT(xVals.size() == yVals.size() && xVals.size() > 0);
|
||||
vtkm::cont::DataSet dataSet;
|
||||
|
||||
typedef vtkm::Vec<vtkm::Float32,3> CoordType;
|
||||
std::vector<CoordType> coords(xVals.size());
|
||||
typedef vtkm::Vec<vtkm::Float32,3> CoordType;
|
||||
std::vector<CoordType> coords(xVals.size());
|
||||
|
||||
for (size_t i=0; i < coords.size(); i++)
|
||||
{
|
||||
coords[i][0] = xVals[i];
|
||||
coords[i][1] = yVals[i];
|
||||
coords[i][2] = 0;
|
||||
}
|
||||
dataSet.AddCoordinateSystem(
|
||||
vtkm::cont::CoordinateSystem(coordsNm, 1, coords));
|
||||
for (size_t i=0; i < coords.size(); i++)
|
||||
{
|
||||
coords[i][0] = xVals[i];
|
||||
coords[i][1] = yVals[i];
|
||||
coords[i][2] = 0;
|
||||
}
|
||||
dataSet.AddCoordinateSystem(
|
||||
vtkm::cont::CoordinateSystem(coordsNm, 1, coords));
|
||||
|
||||
vtkm::cont::CellSetSingleType< > cellSet(CellType(), cellNm);
|
||||
cellSet.FillViaCopy(connectivity);
|
||||
dataSet.AddCellSet(cellSet);
|
||||
vtkm::cont::CellSetSingleType< > cellSet(CellType(), cellNm);
|
||||
cellSet.FillViaCopy(connectivity);
|
||||
dataSet.AddCellSet(cellSet);
|
||||
|
||||
return dataSet;
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
template<typename T, typename CellType>
|
||||
vtkm::cont::DataSet
|
||||
DataSetBuilderExplicit::Create(const std::vector<T> &xVals,
|
||||
const std::vector<T> &yVals,
|
||||
const std::vector<T> &zVals,
|
||||
const std::vector<vtkm::Id> &connectivity,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm)
|
||||
const std::vector<T> &yVals,
|
||||
const std::vector<T> &zVals,
|
||||
const std::vector<vtkm::Id> &connectivity,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm)
|
||||
{
|
||||
VTKM_CONT_ASSERT(xVals.size() == yVals.size() &&
|
||||
yVals.size() == zVals.size() &&
|
||||
xVals.size() > 0);
|
||||
vtkm::cont::DataSet dataSet;
|
||||
VTKM_CONT_ASSERT(xVals.size() == yVals.size() &&
|
||||
yVals.size() == zVals.size() &&
|
||||
xVals.size() > 0);
|
||||
vtkm::cont::DataSet dataSet;
|
||||
|
||||
typedef vtkm::Vec<vtkm::Float32,3> CoordType;
|
||||
std::vector<CoordType> coords(xVals.size());
|
||||
typedef vtkm::Vec<vtkm::Float32,3> CoordType;
|
||||
std::vector<CoordType> coords(xVals.size());
|
||||
|
||||
vtkm::Id nPts = static_cast<vtkm::Id>(coords.size());
|
||||
for (vtkm::Id i=0; i < nPts; i++)
|
||||
{
|
||||
coords[i][0] = xVals[i];
|
||||
coords[i][1] = yVals[i];
|
||||
coords[i][2] = zVals[i];
|
||||
}
|
||||
dataSet.AddCoordinateSystem(
|
||||
vtkm::cont::CoordinateSystem(coordsNm, 1, coords));
|
||||
vtkm::Id nPts = static_cast<vtkm::Id>(coords.size());
|
||||
for (vtkm::Id i=0; i < nPts; i++)
|
||||
{
|
||||
coords[i][0] = xVals[i];
|
||||
coords[i][1] = yVals[i];
|
||||
coords[i][2] = zVals[i];
|
||||
}
|
||||
dataSet.AddCoordinateSystem(
|
||||
vtkm::cont::CoordinateSystem(coordsNm, 1, coords));
|
||||
|
||||
vtkm::cont::CellSetSingleType< > cellSet(CellType(), cellNm);
|
||||
cellSet.FillViaCopy(connectivity);
|
||||
dataSet.AddCellSet(cellSet);
|
||||
vtkm::cont::CellSetSingleType< > cellSet(CellType(), cellNm);
|
||||
cellSet.FillViaCopy(connectivity);
|
||||
dataSet.AddCellSet(cellSet);
|
||||
|
||||
return dataSet;
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
template<typename T, typename CellType>
|
||||
@ -499,19 +511,19 @@ DataSetBuilderExplicit::Create(const std::vector<vtkm::Vec<T,3> > &coords,
|
||||
const std::string &coordsNm,
|
||||
const std::string &cellNm)
|
||||
{
|
||||
vtkm::cont::DataSet dataSet;
|
||||
vtkm::cont::DataSet dataSet;
|
||||
|
||||
vtkm::cont::ArrayHandle<Vec<T,3> > coordsArray;
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(coords), coordsArray);
|
||||
vtkm::cont::ArrayHandle<Vec<T,3> > coordsArray;
|
||||
CopyInto(coords, coordsArray);
|
||||
|
||||
dataSet.AddCoordinateSystem(
|
||||
vtkm::cont::CoordinateSystem(coordsNm, 1, coordsArray));
|
||||
dataSet.AddCoordinateSystem(
|
||||
vtkm::cont::CoordinateSystem(coordsNm, 1, coordsArray));
|
||||
|
||||
vtkm::cont::CellSetSingleType< > cellSet(CellType(), cellNm);
|
||||
cellSet.FillViaCopy(connectivity);
|
||||
dataSet.AddCellSet(cellSet);
|
||||
vtkm::cont::CellSetSingleType< > cellSet(CellType(), cellNm);
|
||||
cellSet.FillViaCopy(connectivity);
|
||||
dataSet.AddCellSet(cellSet);
|
||||
|
||||
return dataSet;
|
||||
return dataSet;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user