From 8af7d0d6179e51d76d5656fef46588bda5ba631f Mon Sep 17 00:00:00 2001 From: Cyrus Harrison Date: Fri, 31 Jan 2025 16:29:32 -0800 Subject: [PATCH] add const cell field helper, move mpi rank to output cell centered --- .../ascent_runtime_vtkh_filters.cpp | 2 +- src/libs/vtkh/DataSet.cpp | 19 +++++++++++++++++-- src/libs/vtkh/DataSet.hpp | 1 + 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_vtkh_filters.cpp b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_vtkh_filters.cpp index ab804600e..1d0e8b213 100644 --- a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_vtkh_filters.cpp +++ b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_vtkh_filters.cpp @@ -1425,7 +1425,7 @@ VTKHAddRanks::execute() vtkh::DataSet &data = collection->dataset_by_topology(topo_name); VTKHCollection *new_coll = collection->copy_without_topology(topo_name); - data.AddConstantPointField(rank,output_field); + data.AddConstantCellField(rank,output_field); new_coll->add(data, topo_name); // re wrap in data object diff --git a/src/libs/vtkh/DataSet.cpp b/src/libs/vtkh/DataSet.cpp index a26c52fd5..cf28469b5 100644 --- a/src/libs/vtkh/DataSet.cpp +++ b/src/libs/vtkh/DataSet.cpp @@ -677,6 +677,21 @@ bool DataSet::HasDomainId(const vtkm::Id &domain_id) const return false; } +void +DataSet::AddConstantCellField(const vtkm::Float32 value, const std::string fieldname) +{ + const size_t size = m_domain_ids.size(); + + for(size_t i = 0; i < size; ++i) + { + vtkm::Id num_cells = m_domains[i].GetNumberOfCells(); + vtkm::cont::ArrayHandle array; + detail::MemSet(array, value, num_cells); + vtkm::cont::Field field(fieldname, vtkm::cont::Field::Association::Cells, array); + m_domains[i].AddField(field); + } +} + void DataSet::AddConstantPointField(const vtkm::Float32 value, const std::string fieldname) { @@ -717,9 +732,9 @@ DataSet::AddDomainIdField(const std::string fieldname) for(size_t i = 0; i < size; ++i) { vtkm::Id domain_id = m_domain_ids[i]; - vtkm::Id num_points = m_domains[i].GetNumberOfCells(); + vtkm::Id num_cells = m_domains[i].GetNumberOfCells(); vtkm::cont::ArrayHandle array; - detail::MemSet(array, (vtkm::Float32)domain_id, num_points); + detail::MemSet(array, (vtkm::Float32)domain_id, num_cells); vtkm::cont::Field field(fieldname, vtkm::cont::Field::Association::Cells, array); m_domains[i].AddField(field); } diff --git a/src/libs/vtkh/DataSet.hpp b/src/libs/vtkh/DataSet.hpp index 4662fab27..59ae1a8b8 100644 --- a/src/libs/vtkh/DataSet.hpp +++ b/src/libs/vtkh/DataSet.hpp @@ -96,6 +96,7 @@ class VTKH_API DataSet std::vector GetDomainIds() const; // add a scalar field to this data set with a constant value + void AddConstantCellField(const vtkm::Float32 value, const std::string fieldname); void AddConstantPointField(const vtkm::Float32 value, const std::string fieldname); void AddLinearPointField(const vtkm::Float32 value, const std::string fieldname); void AddDomainIdField(const std::string fieldname);