diff --git a/vtkm/filter/mesh_info/CMakeLists.txt b/vtkm/filter/mesh_info/CMakeLists.txt index 1e322bf8c..9f1f30d57 100644 --- a/vtkm/filter/mesh_info/CMakeLists.txt +++ b/vtkm/filter/mesh_info/CMakeLists.txt @@ -12,6 +12,7 @@ set(mesh_info_headers GhostCellClassify.h MeshQuality.h MeshQualityArea.h + MeshQualityDiagonalRatio.h MeshQualityDimension.h MeshQualityJacobian.h MeshQualityMaxAngle.h @@ -36,6 +37,7 @@ set(mesh_info_sources GhostCellClassify.cxx MeshQuality.cxx MeshQualityArea.cxx + MeshQualityDiagonalRatio.cxx MeshQualityDimension.cxx MeshQualityJacobian.cxx MeshQualityMaxAngle.cxx diff --git a/vtkm/filter/mesh_info/MeshQuality.cxx b/vtkm/filter/mesh_info/MeshQuality.cxx index bfc4d93c3..03809235b 100644 --- a/vtkm/filter/mesh_info/MeshQuality.cxx +++ b/vtkm/filter/mesh_info/MeshQuality.cxx @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -92,6 +93,9 @@ VTKM_CONT vtkm::cont::DataSet MeshQuality::DoExecute(const vtkm::cont::DataSet& case vtkm::filter::mesh_info::CellMetric::Area: implementation.reset(new vtkm::filter::mesh_info::MeshQualityArea); break; + case vtkm::filter::mesh_info::CellMetric::DiagonalRatio: + implementation.reset(new vtkm::filter::mesh_info::MeshQualityDiagonalRatio); + break; case vtkm::filter::mesh_info::CellMetric::Dimension: implementation.reset(new vtkm::filter::mesh_info::MeshQualityDimension); break; diff --git a/vtkm/filter/mesh_info/MeshQualityDiagonalRatio.cxx b/vtkm/filter/mesh_info/MeshQualityDiagonalRatio.cxx new file mode 100644 index 000000000..ff1ae6760 --- /dev/null +++ b/vtkm/filter/mesh_info/MeshQualityDiagonalRatio.cxx @@ -0,0 +1,66 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +// +// Copyright 2014 National Technology & Engineering Solutions of Sandia, LLC (NTESS). +// Copyright 2014 UT-Battelle, LLC. +// Copyright 2014 Los Alamos National Security. +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National +// Laboratory (LANL), the U.S. Government retains certain rights in +// this software. +//========================================================================= + +#include + +#include +#include + +namespace +{ + +struct DiagonalRatioWorklet : MeshQualityWorklet +{ + template + VTKM_EXEC OutType ComputeMetric(const vtkm::IdComponent& numPts, + const PointCoordVecType& pts, + CellShapeType shape, + vtkm::ErrorCode& ec) const + { + return vtkm::worklet::cellmetrics::CellDiagonalRatioMetric(numPts, pts, shape, ec); + } +}; + +} // anonymous namespace + +namespace vtkm +{ +namespace filter +{ +namespace mesh_info +{ + +MeshQualityDiagonalRatio::MeshQualityDiagonalRatio() +{ + this->SetUseCoordinateSystemAsField(true); + this->SetOutputFieldName("diagonalRatio"); +} + +vtkm::cont::DataSet MeshQualityDiagonalRatio::DoExecute(const vtkm::cont::DataSet& input) +{ + vtkm::cont::UnknownArrayHandle outArray = + DiagonalRatioWorklet{}.Run(input, this->GetFieldFromDataSet(input)); + + return this->CreateResultFieldCell(input, this->GetOutputFieldName(), outArray); +} + +} // namespace mesh_info +} // namespace filter +} // namespace vtkm diff --git a/vtkm/filter/mesh_info/MeshQualityDiagonalRatio.h b/vtkm/filter/mesh_info/MeshQualityDiagonalRatio.h new file mode 100644 index 000000000..d53bb068f --- /dev/null +++ b/vtkm/filter/mesh_info/MeshQualityDiagonalRatio.h @@ -0,0 +1,46 @@ +//============================================================================ +// Copyright (c) Kitware, Inc. +// All rights reserved. +// See LICENSE.txt for details. +// This software is distributed WITHOUT ANY WARRANTY; without even +// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the above copyright notice for more information. +// +// Copyright 2014 National Technology & Engineering Solutions of Sandia, LLC (NTESS). +// Copyright 2014 UT-Battelle, LLC. +// Copyright 2014 Los Alamos National Security. +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// the U.S. Government retains certain rights in this software. +// +// Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National +// Laboratory (LANL), the U.S. Government retains certain rights in +// this software. +//============================================================================ +#ifndef vtk_m_filter_mesh_info_MeshQualityDiagonalRatio_h +#define vtk_m_filter_mesh_info_MeshQualityDiagonalRatio_h + +#include +#include + +namespace vtkm +{ +namespace filter +{ +namespace mesh_info +{ + +class VTKM_FILTER_MESH_INFO_EXPORT MeshQualityDiagonalRatio : public vtkm::filter::NewFilterField +{ +public: + MeshQualityDiagonalRatio(); + +private: + vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input) override; +}; + +} // namespace mesh_info +} // namespace filter +} // namespace vtkm + +#endif //vtk_m_filter_mesh_info_MeshQualityDiagonalRatio_h diff --git a/vtkm/filter/mesh_info/worklet/MeshQuality.h b/vtkm/filter/mesh_info/worklet/MeshQuality.h index 4c88a7717..34e58d2bc 100644 --- a/vtkm/filter/mesh_info/worklet/MeshQuality.h +++ b/vtkm/filter/mesh_info/worklet/MeshQuality.h @@ -27,7 +27,6 @@ #include #include #include -#include #include namespace vtkm @@ -111,10 +110,6 @@ private: metricValue = vtkm::worklet::cellmetrics::CellConditionMetric(numPts, pts, tag, ec); break; - case vtkm::filter::mesh_info::CellMetric::DiagonalRatio: - metricValue = - vtkm::worklet::cellmetrics::CellDiagonalRatioMetric(numPts, pts, tag, ec); - break; case vtkm::filter::mesh_info::CellMetric::None: break; default: diff --git a/vtkm/filter/mesh_info/worklet/cellmetrics/CellDiagonalRatioMetric.h b/vtkm/filter/mesh_info/worklet/cellmetrics/CellDiagonalRatioMetric.h index 61379673c..16ce305fe 100644 --- a/vtkm/filter/mesh_info/worklet/cellmetrics/CellDiagonalRatioMetric.h +++ b/vtkm/filter/mesh_info/worklet/cellmetrics/CellDiagonalRatioMetric.h @@ -33,11 +33,11 @@ * See: vtk/ThirdParty/verdict/vtkverdict (for VTK code implementation of this metric) */ -#include "vtkm/CellShape.h" -#include "vtkm/CellTraits.h" -#include "vtkm/VecTraits.h" -#include "vtkm/VectorAnalysis.h" -#include "vtkm/exec/FunctorBase.h" +#include +#include +#include +#include +#include #define UNUSED(expr) (void)(expr);