diff --git a/vtkm/cont/DataSet.h b/vtkm/cont/DataSet.h index 8f2cd9502..2cf6f3bfc 100644 --- a/vtkm/cont/DataSet.h +++ b/vtkm/cont/DataSet.h @@ -48,8 +48,9 @@ public: vtkm::cont::ArrayHandle array; vtkm::cont::DeviceAdapterAlgorithm:: Copy(tmp, array); - Fields.resize(Fields.size()+1); - Fields[Fields.size()-1].SetData(array); + + Field f("name", 1, Field::ASSOC_POINTS, array); + Fields.push_back(f); } vtkm::cont::Field &GetField(int index) { diff --git a/vtkm/cont/Field.h b/vtkm/cont/Field.h index 6db44b2b6..cfbcb29cb 100644 --- a/vtkm/cont/Field.h +++ b/vtkm/cont/Field.h @@ -42,15 +42,10 @@ public: ASSOC_LOGICAL_DIM }; - /// default constructor - Field() - { - } - /// constructor for points / whole mesh template - Field(int o, Association a, ArrayHandle &d) - : order(o), association(a), data(d) + Field(std::string n, int o, Association a, ArrayHandle &d) + : name(n), order(o), association(a), data(d) { VTKM_ASSERT_CONT(association == ASSOC_WHOLE_MESH || association == ASSOC_POINTS); @@ -59,8 +54,8 @@ public: /// constructor for cell set associations template - Field(int o, Association a, std::string n, ArrayHandle &d) - : order(o), association(a), assoc_cellset_name(n), data(d) + Field(std::string n, int o, Association a, std::string csn, ArrayHandle &d) + : name(n), order(o), association(a), assoc_cellset_name(csn), data(d) { VTKM_ASSERT_CONT(association == ASSOC_CELL_SET); SetData(d); @@ -68,13 +63,18 @@ public: /// constructor for logical dimension associations template - Field(int o, Association a, int l, ArrayHandle &d) - : order(o), association(a), assoc_logical_dim(l), data(d) + Field(std::string n, int o, Association a, int l, ArrayHandle &d) + : name(n), order(o), association(a), assoc_logical_dim(l), data(d) { VTKM_ASSERT_CONT(association == ASSOC_LOGICAL_DIM); SetData(d); } + const std::string &GetName() + { + return name; + } + Association GetAssociation() { return association; @@ -106,6 +106,14 @@ public: data = newdata; } + template + void CopyData(T *ptr, int nvals) + { + vtkm::cont::ArrayHandle tmp = vtkm::cont::make_ArrayHandle(ptr, nvals); + vtkm::cont::DeviceAdapterAlgorithm:: + Copy(tmp, data); + } + /* void CopyIntoData(vtkm::cont::ArrayHandle &tmp) { @@ -116,6 +124,8 @@ public: */ private: + std::string name; ///< only populate if assoc is cells + int order; ///< 0=(piecewise) constant, 1=linear, 2=quadratic Association association; std::string assoc_cellset_name; ///< only populate if assoc is cells