Add mapfield method.

This commit is contained in:
Dave Pugmire 2018-02-27 13:24:30 -05:00
parent daf1171382
commit 1a0dfaa760
4 changed files with 40 additions and 0 deletions

@ -46,6 +46,13 @@ public:
const vtkm::filter::PolicyBase<DerivedPolicy>& policy, const vtkm::filter::PolicyBase<DerivedPolicy>& policy,
const DeviceAdapter& tag); const DeviceAdapter& tag);
template <typename T, typename StorageType, typename DerivedPolicy, typename DeviceAdapter>
VTKM_CONT bool DoMapField(vtkm::filter::Result& result,
const vtkm::cont::ArrayHandle<T, StorageType>& input,
const vtkm::filter::FieldMetadata& fieldMeta,
const vtkm::filter::PolicyBase<DerivedPolicy>& policy,
DeviceAdapter tag);
private: private:
vtkm::worklet::CrossProduct Worklet; vtkm::worklet::CrossProduct Worklet;
std::string SecondaryFieldName; std::string SecondaryFieldName;

@ -67,5 +67,18 @@ inline VTKM_CONT vtkm::filter::Result CrossProduct::DoExecute(
fieldMetadata.GetAssociation(), fieldMetadata.GetAssociation(),
fieldMetadata.GetCellSetName()); fieldMetadata.GetCellSetName());
} }
//-----------------------------------------------------------------------------
template <typename T, typename StorageType, typename DerivedPolicy, typename DeviceAdapter>
inline VTKM_CONT bool CrossProduct::DoMapField(vtkm::filter::Result& result,
const vtkm::cont::ArrayHandle<T, StorageType>& input,
const vtkm::filter::FieldMetadata& fieldMeta,
const vtkm::filter::PolicyBase<DerivedPolicy>&,
DeviceAdapter device)
{
//we copy the input handle to the result dataset, reusing the metadata
result.GetDataSet().AddField(fieldMeta.AsField(input));
return true;
}
} }
} // namespace vtkm::filter } // namespace vtkm::filter

@ -46,6 +46,13 @@ public:
const vtkm::filter::PolicyBase<DerivedPolicy>& policy, const vtkm::filter::PolicyBase<DerivedPolicy>& policy,
const DeviceAdapter& tag); const DeviceAdapter& tag);
template <typename T, typename StorageType, typename DerivedPolicy, typename DeviceAdapter>
VTKM_CONT bool DoMapField(vtkm::filter::Result& result,
const vtkm::cont::ArrayHandle<T, StorageType>& input,
const vtkm::filter::FieldMetadata& fieldMeta,
const vtkm::filter::PolicyBase<DerivedPolicy>& policy,
DeviceAdapter tag);
private: private:
vtkm::worklet::DotProduct Worklet; vtkm::worklet::DotProduct Worklet;
std::string SecondaryFieldName; std::string SecondaryFieldName;

@ -67,5 +67,18 @@ inline VTKM_CONT vtkm::filter::Result DotProduct::DoExecute(
fieldMetadata.GetAssociation(), fieldMetadata.GetAssociation(),
fieldMetadata.GetCellSetName()); fieldMetadata.GetCellSetName());
} }
//-----------------------------------------------------------------------------
template <typename T, typename StorageType, typename DerivedPolicy, typename DeviceAdapter>
inline VTKM_CONT bool DotProduct::DoMapField(vtkm::filter::Result& result,
const vtkm::cont::ArrayHandle<T, StorageType>& input,
const vtkm::filter::FieldMetadata& fieldMeta,
const vtkm::filter::PolicyBase<DerivedPolicy>&,
DeviceAdapter device)
{
//we copy the input handle to the result dataset, reusing the metadata
result.GetDataSet().AddField(fieldMeta.AsField(input));
return true;
}
} }
} // namespace vtkm::filter } // namespace vtkm::filter