Remove DotProduct from worklet directory
All worklets are now encapsulated in the DotProduct filter.
This commit is contained in:
parent
d76929a788
commit
0c47645bad
@ -26,7 +26,6 @@ set(headers
|
||||
DispatcherCellNeighborhood.h
|
||||
DispatcherPointNeighborhood.h
|
||||
DispatcherReduceByKey.h
|
||||
DotProduct.h
|
||||
FieldStatistics.h
|
||||
Gradient.h
|
||||
ImageDifference.h
|
||||
|
@ -1,45 +0,0 @@
|
||||
//============================================================================
|
||||
// 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.
|
||||
//============================================================================
|
||||
#ifndef vtk_m_worklet_DotProduct_h
|
||||
#define vtk_m_worklet_DotProduct_h
|
||||
|
||||
#include <vtkm/worklet/WorkletMapField.h>
|
||||
|
||||
#include <vtkm/Math.h>
|
||||
#include <vtkm/VectorAnalysis.h>
|
||||
|
||||
namespace vtkm
|
||||
{
|
||||
namespace worklet
|
||||
{
|
||||
|
||||
class DotProduct : public vtkm::worklet::WorkletMapField
|
||||
{
|
||||
public:
|
||||
using ControlSignature = void(FieldIn, FieldIn, FieldOut);
|
||||
|
||||
template <typename T, vtkm::IdComponent Size>
|
||||
VTKM_EXEC void operator()(const vtkm::Vec<T, Size>& v1,
|
||||
const vtkm::Vec<T, Size>& v2,
|
||||
T& outValue) const
|
||||
{
|
||||
outValue = static_cast<T>(vtkm::Dot(v1, v2));
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
VTKM_EXEC void operator()(T s1, T s2, T& outValue) const
|
||||
{
|
||||
outValue = static_cast<T>(s1 * s2);
|
||||
}
|
||||
};
|
||||
}
|
||||
} // namespace vtkm::worklet
|
||||
|
||||
#endif // vtk_m_worklet_Normalize_h
|
@ -31,7 +31,6 @@ set(unit_tests
|
||||
UnitTestCosmoTools.cxx
|
||||
UnitTestCrossProduct.cxx
|
||||
UnitTestDescriptiveStatistics.cxx
|
||||
UnitTestDotProduct.cxx
|
||||
UnitTestFieldStatistics.cxx
|
||||
UnitTestGraphConnectivity.cxx
|
||||
UnitTestInnerJoin.cxx
|
||||
|
@ -1,105 +0,0 @@
|
||||
//============================================================================
|
||||
// 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.
|
||||
//============================================================================
|
||||
|
||||
#include <vtkm/worklet/DispatcherMapField.h>
|
||||
#include <vtkm/worklet/DotProduct.h>
|
||||
|
||||
#include <vtkm/cont/testing/Testing.h>
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
template <typename T>
|
||||
T normalizedVector(T v)
|
||||
{
|
||||
T vN = vtkm::Normal(v);
|
||||
return vN;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void createVectors(std::vector<vtkm::Vec<T, 3>>& vecs1,
|
||||
std::vector<vtkm::Vec<T, 3>>& vecs2,
|
||||
std::vector<T>& result)
|
||||
{
|
||||
vecs1.push_back(normalizedVector(vtkm::make_Vec(T(1), T(0), T(0))));
|
||||
vecs2.push_back(normalizedVector(vtkm::make_Vec(T(1), T(0), T(0))));
|
||||
result.push_back(1);
|
||||
|
||||
vecs1.push_back(normalizedVector(vtkm::make_Vec(T(1), T(0), T(0))));
|
||||
vecs2.push_back(normalizedVector(vtkm::make_Vec(T(-1), T(0), T(0))));
|
||||
result.push_back(-1);
|
||||
|
||||
vecs1.push_back(normalizedVector(vtkm::make_Vec(T(1), T(0), T(0))));
|
||||
vecs2.push_back(normalizedVector(vtkm::make_Vec(T(0), T(1), T(0))));
|
||||
result.push_back(0);
|
||||
|
||||
vecs1.push_back(normalizedVector(vtkm::make_Vec(T(1), T(0), T(0))));
|
||||
vecs2.push_back(normalizedVector(vtkm::make_Vec(T(0), T(-1), T(0))));
|
||||
result.push_back(0);
|
||||
|
||||
vecs1.push_back(normalizedVector(vtkm::make_Vec(T(1), T(0), T(0))));
|
||||
vecs2.push_back(normalizedVector(vtkm::make_Vec(T(1), T(1), T(0))));
|
||||
result.push_back(T(1.0 / vtkm::Sqrt(2.0)));
|
||||
|
||||
vecs1.push_back(normalizedVector(vtkm::make_Vec(T(1), T(1), T(0))));
|
||||
vecs2.push_back(normalizedVector(vtkm::make_Vec(T(1), T(0), T(0))));
|
||||
result.push_back(T(1.0 / vtkm::Sqrt(2.0)));
|
||||
|
||||
vecs1.push_back(normalizedVector(vtkm::make_Vec(T(-1), T(0), T(0))));
|
||||
vecs2.push_back(normalizedVector(vtkm::make_Vec(T(1), T(1), T(0))));
|
||||
result.push_back(-T(1.0 / vtkm::Sqrt(2.0)));
|
||||
|
||||
vecs1.push_back(normalizedVector(vtkm::make_Vec(T(0), T(1), T(0))));
|
||||
vecs2.push_back(normalizedVector(vtkm::make_Vec(T(1), T(1), T(0))));
|
||||
result.push_back(T(1.0 / vtkm::Sqrt(2.0)));
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void TestDotProduct()
|
||||
{
|
||||
std::vector<vtkm::Vec<T, 3>> inputVecs1, inputVecs2;
|
||||
std::vector<T> answer;
|
||||
createVectors(inputVecs1, inputVecs2, answer);
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec<T, 3>> inputArray1, inputArray2;
|
||||
vtkm::cont::ArrayHandle<T> outputArray;
|
||||
inputArray1 = vtkm::cont::make_ArrayHandle(inputVecs1, vtkm::CopyFlag::Off);
|
||||
inputArray2 = vtkm::cont::make_ArrayHandle(inputVecs2, vtkm::CopyFlag::Off);
|
||||
|
||||
vtkm::worklet::DotProduct dotProductWorklet;
|
||||
vtkm::worklet::DispatcherMapField<vtkm::worklet::DotProduct> dispatcherDotProduct(
|
||||
dotProductWorklet);
|
||||
dispatcherDotProduct.Invoke(inputArray1, inputArray2, outputArray);
|
||||
|
||||
VTKM_TEST_ASSERT(outputArray.GetNumberOfValues() == inputArray1.GetNumberOfValues(),
|
||||
"Wrong number of results for DotProduct worklet");
|
||||
|
||||
for (vtkm::Id i = 0; i < inputArray1.GetNumberOfValues(); i++)
|
||||
{
|
||||
vtkm::Vec<T, 3> v1 = inputArray1.ReadPortal().Get(i);
|
||||
vtkm::Vec<T, 3> v2 = inputArray2.ReadPortal().Get(i);
|
||||
T ans = answer[static_cast<std::size_t>(i)];
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal(ans, vtkm::Dot(v1, v2)), "Wrong result for dot product");
|
||||
}
|
||||
}
|
||||
|
||||
void TestDotProductWorklets()
|
||||
{
|
||||
std::cout << "Testing DotProduct Worklet" << std::endl;
|
||||
TestDotProduct<vtkm::Float32>();
|
||||
// TestDotProduct<vtkm::Float64>();
|
||||
}
|
||||
}
|
||||
|
||||
int UnitTestDotProduct(int argc, char* argv[])
|
||||
{
|
||||
return vtkm::cont::testing::Testing::Run(TestDotProductWorklets, argc, argv);
|
||||
}
|
Loading…
Reference in New Issue
Block a user