Merge topic 'tutorial-edits' into release-1.9

689ba00e4 Minor formatting changes to tutorial examples

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2887
This commit is contained in:
Kenneth Moreland 2022-10-12 20:20:46 +00:00 committed by Kitware Robot
commit 45ae18d46a
9 changed files with 55 additions and 57 deletions

@ -16,8 +16,7 @@
int main(int argc, char** argv)
{
auto opts = vtkm::cont::InitializeOptions::DefaultAnyDevice;
vtkm::cont::InitializeResult config = vtkm::cont::Initialize(argc, argv, opts);
vtkm::cont::Initialize(argc, argv);
vtkm::io::VTKDataSetReader reader("data/kitchen.vtk");
vtkm::cont::DataSet ds_from_file = reader.ReadDataSet();

@ -16,8 +16,7 @@
int main(int argc, char** argv)
{
auto opts = vtkm::cont::InitializeOptions::DefaultAnyDevice;
vtkm::cont::InitializeResult config = vtkm::cont::Initialize(argc, argv, opts);
vtkm::cont::Initialize(argc, argv);
vtkm::io::VTKDataSetReader reader("data/kitchen.vtk");
vtkm::cont::DataSet ds_from_file = reader.ReadDataSet();

@ -35,8 +35,8 @@ struct CountEdgesWorklet : vtkm::worklet::WorkletVisitCellsWithPoints
using ExecutionSignature = _2(CellShape, PointCount);
template <typename CellShapeTag>
VTKM_EXEC_CONT vtkm::IdComponent operator()(CellShapeTag cellShape,
vtkm::IdComponent numPointsInCell) const
VTKM_EXEC vtkm::IdComponent operator()(CellShapeTag cellShape,
vtkm::IdComponent numPointsInCell) const
{
vtkm::IdComponent numEdges;
vtkm::exec::CellEdgeNumberOfEdges(numPointsInCell, cellShape, numEdges);
@ -122,8 +122,8 @@ namespace
VTKM_CONT bool DoMapField(
vtkm::cont::DataSet& result,
const vtkm::cont::Field& inputField,
const vtkm::worklet::ScatterCounting::OutputToInputMapType& OutputToInputCellMap,
const vtkm::worklet::Keys<vtkm::Id2>& CellToEdgeKeys)
const vtkm::worklet::ScatterCounting::OutputToInputMapType& outputToInputCellMap,
const vtkm::worklet::Keys<vtkm::Id2>& cellToEdgeKeys)
{
vtkm::cont::Field outputField;
@ -134,8 +134,8 @@ VTKM_CONT bool DoMapField(
else if (inputField.IsCellField())
{
vtkm::cont::Field permuted;
vtkm::filter::MapFieldPermutation(inputField, OutputToInputCellMap, permuted);
vtkm::filter::MapFieldMergeAverage(permuted, CellToEdgeKeys, outputField);
vtkm::filter::MapFieldPermutation(inputField, outputToInputCellMap, permuted);
vtkm::filter::MapFieldMergeAverage(permuted, cellToEdgeKeys, outputField);
}
else
{
@ -147,6 +147,8 @@ VTKM_CONT bool DoMapField(
return true;
}
} // anonymous namespace
class ExtractEdges : public vtkm::filter::NewFilter
{
public:
@ -164,8 +166,8 @@ VTKM_CONT vtkm::cont::DataSet ExtractEdges::DoExecute(const vtkm::cont::DataSet&
// Second, using these counts build a scatter that repeats a cell's visit
// for each edge in the cell.
vtkm::worklet::ScatterCounting scatter(edgeCounts);
vtkm::worklet::ScatterCounting::OutputToInputMapType OutputToInputCellMap;
OutputToInputCellMap = scatter.GetOutputToInputMap(inCellSet.GetNumberOfCells());
vtkm::worklet::ScatterCounting::OutputToInputMapType outputToInputCellMap;
outputToInputCellMap = scatter.GetOutputToInputMap(inCellSet.GetNumberOfCells());
vtkm::worklet::ScatterCounting::VisitArrayType outputToInputEdgeMap =
scatter.GetVisitArray(inCellSet.GetNumberOfCells());
@ -174,15 +176,15 @@ VTKM_CONT vtkm::cont::DataSet ExtractEdges::DoExecute(const vtkm::cont::DataSet&
this->Invoke(EdgeIdsWorklet{}, scatter, inCellSet, canonicalIds);
// Fourth, construct a Keys object to combine all like edge ids.
vtkm::worklet::Keys<vtkm::Id2> CellToEdgeKeys;
CellToEdgeKeys = vtkm::worklet::Keys<vtkm::Id2>(canonicalIds);
vtkm::worklet::Keys<vtkm::Id2> cellToEdgeKeys;
cellToEdgeKeys = vtkm::worklet::Keys<vtkm::Id2>(canonicalIds);
// Fifth, use a reduce-by-key to extract indices for each unique edge.
vtkm::cont::ArrayHandle<vtkm::Id> connectivityArray;
this->Invoke(EdgeIndicesWorklet{},
CellToEdgeKeys,
cellToEdgeKeys,
inCellSet,
OutputToInputCellMap,
outputToInputCellMap,
outputToInputEdgeMap,
vtkm::cont::make_ArrayHandleGroupVec<2>(connectivityArray));
@ -191,13 +193,11 @@ VTKM_CONT vtkm::cont::DataSet ExtractEdges::DoExecute(const vtkm::cont::DataSet&
outCellSet.Fill(inCellSet.GetNumberOfPoints(), vtkm::CELL_SHAPE_LINE, 2, connectivityArray);
auto mapper = [&](auto& outDataSet, const auto& f) {
DoMapField(outDataSet, f, OutputToInputCellMap, CellToEdgeKeys);
DoMapField(outDataSet, f, outputToInputCellMap, cellToEdgeKeys);
};
return this->CreateResult(inData, outCellSet, inData.GetCoordinateSystems(), mapper);
}
}
int main(int argc, char** argv)
{
auto opts = vtkm::cont::InitializeOptions::DefaultAnyDevice;

@ -16,8 +16,7 @@
int main(int argc, char** argv)
{
auto opts = vtkm::cont::InitializeOptions::DefaultAnyDevice;
vtkm::cont::InitializeResult config = vtkm::cont::Initialize(argc, argv, opts);
vtkm::cont::Initialize(argc, argv);
const char* input = "data/kitchen.vtk";
vtkm::io::VTKDataSetReader reader(input);

@ -14,10 +14,10 @@
int main(int argc, char** argv)
{
auto opts = vtkm::cont::InitializeOptions::DefaultAnyDevice;
auto opts = vtkm::cont::InitializeOptions::AddHelp;
// SetLogLevelName must be called before Initialize
vtkm::cont::SetLogLevelName(vtkm::cont::LogLevel::UserFirst, "tut_log");
vtkm::cont::SetLogLevelName(vtkm::cont::LogLevel::UserFirst, "tlog");
vtkm::cont::InitializeResult config = vtkm::cont::Initialize(argc, argv, opts);
const std::string input = "data/kitchen.vtk";
@ -27,10 +27,10 @@ int main(int argc, char** argv)
VTKM_LOG_F(vtkm::cont::LogLevel::Info, "Done reading from file %s", input.c_str());
const std::string output = "out_logging.vtk";
VTKM_LOG_S(vtkm::cont::LogLevel::Info, "Writing to file" << output);
VTKM_LOG_S(vtkm::cont::LogLevel::UserFirst, "Writing to file" << output);
vtkm::io::VTKDataSetWriter writer(output);
writer.WriteDataSet(ds_from_file);
VTKM_LOG_S(vtkm::cont::LogLevel::Info, "Done writing to file" << output);
VTKM_LOG_S(vtkm::cont::LogLevel::UserFirst, "Done writing to file" << output);
return 0;
}

@ -12,12 +12,14 @@
#include <vtkm/cont/Initialize.h>
#include <vtkm/cont/Invoker.h>
#include <vtkm/filter/NewFilterField.h>
#include <vtkm/filter/vector_analysis/Gradient.h>
#include <vtkm/io/VTKDataSetReader.h>
#include <vtkm/io/VTKDataSetWriter.h>
#include <vtkm/worklet/WorkletMapField.h>
// Worklet that does the actual work on the device.
struct ComputeMagnitude : vtkm::worklet::WorkletMapField
{
using ControlSignature = void(FieldIn inputVectors, FieldOut outputMagnitudes);
@ -28,33 +30,34 @@ struct ComputeMagnitude : vtkm::worklet::WorkletMapField
}
};
#include <vtkm/filter/NewFilterField.h>
// The filter class used by external code to run the algorithm. Normally the class definition
// is in a separate header file.
class FieldMagnitude : public vtkm::filter::NewFilterField
{
public:
using SupportedTypes = vtkm::List<vtkm::Vec3f>;
VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& inDataSet) override
{
const auto& inField = this->GetFieldFromDataSet(inDataSet);
vtkm::cont::ArrayHandle<vtkm::FloatDefault> outField;
auto resolveType = [&](const auto& concrete) {
this->Invoke(ComputeMagnitude{}, concrete, outField);
};
this->CastAndCallVecField<3>(inField, resolveType);
std::string outFieldName = this->GetOutputFieldName();
if (outFieldName == "")
{
outFieldName = inField.GetName() + "_magnitude";
}
return this->CreateResultFieldCell(inDataSet, outFieldName, outField);
}
protected:
VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& inDataSet) override;
};
// Implementation for the filter. Normally this is in its own .cxx file.
VTKM_CONT vtkm::cont::DataSet FieldMagnitude::DoExecute(const vtkm::cont::DataSet& inDataSet)
{
const vtkm::cont::Field& inField = this->GetFieldFromDataSet(inDataSet);
vtkm::cont::ArrayHandle<vtkm::FloatDefault> outArrayHandle;
auto resolveType = [&](const auto& inArrayHandle) {
this->Invoke(ComputeMagnitude{}, inArrayHandle, outArrayHandle);
};
this->CastAndCallVecField<3>(inField, resolveType);
std::string outFieldName = this->GetOutputFieldName();
if (outFieldName == "")
{
outFieldName = inField.GetName() + "_magnitude";
}
return this->CreateResultField(inDataSet, outFieldName, inField.GetAssociation(), outArrayHandle);
}
int main(int argc, char** argv)
{
auto opts = vtkm::cont::InitializeOptions::DefaultAnyDevice;

@ -63,13 +63,13 @@ VTKM_CONT cont::DataSet ConvertPointFieldToCells::DoExecute(const vtkm::cont::Da
const auto& inField = this->GetFieldFromDataSet(inDataSet);
vtkm::cont::UnknownArrayHandle outArray;
auto resolveType = [&](const auto& concrete) {
using ValueType = typename std::decay_t<decltype(concrete)>::ValueType;
auto resolveType = [&](const auto& inConcrete) {
using ValueType = typename std::decay_t<decltype(inConcrete)>::ValueType;
vtkm::cont::ArrayHandle<ValueType> outField;
vtkm::cont::ArrayHandle<ValueType> outConcrete;
this->Invoke(
vtkm::worklet::ConvertPointFieldToCells{}, inDataSet.GetCellSet(), concrete, outField);
outArray = outField;
vtkm::worklet::ConvertPointFieldToCells{}, inDataSet.GetCellSet(), inConcrete, outConcrete);
outArray = outConcrete;
};
this->CastAndCallScalarField(inField, resolveType);

@ -20,8 +20,7 @@
int main(int argc, char** argv)
{
auto opts = vtkm::cont::InitializeOptions::DefaultAnyDevice;
vtkm::cont::InitializeResult config = vtkm::cont::Initialize(argc, argv, opts);
vtkm::cont::Initialize(argc, argv);
//Loading .vtk File
vtkm::io::VTKDataSetReader reader("data/kitchen.vtk");

@ -17,8 +17,7 @@
int main(int argc, char** argv)
{
auto opts = vtkm::cont::InitializeOptions::DefaultAnyDevice;
vtkm::cont::InitializeResult config = vtkm::cont::Initialize(argc, argv, opts);
vtkm::cont::Initialize(argc, argv);
vtkm::io::VTKDataSetReader reader("data/kitchen.vtk");
vtkm::cont::DataSet ds_from_file = reader.ReadDataSet();