use the new CreateResult
This commit is contained in:
parent
3a9e9f1ac1
commit
d8fdda5c37
@ -84,19 +84,16 @@ vtkm::cont::DataSet ClipWithField::DoExecute(const vtkm::cont::DataSet& input)
|
||||
|
||||
vtkm::worklet::Clip worklet;
|
||||
|
||||
//get the cells and coordinates of the dataset
|
||||
const vtkm::cont::UnknownCellSet& cells = input.GetCellSet();
|
||||
vtkm::cont::DataSet output;
|
||||
const vtkm::cont::UnknownCellSet& inputCellSet = input.GetCellSet();
|
||||
vtkm::cont::CellSetExplicit<> outputCellSet;
|
||||
|
||||
auto resolveFieldType = [&, this](auto concrete) {
|
||||
vtkm::cont::CellSetExplicit<> outputCellSet =
|
||||
worklet.Run(cells, concrete, this->ClipValue, this->Invert);
|
||||
|
||||
output.SetCellSet(outputCellSet);
|
||||
outputCellSet = worklet.Run(inputCellSet, concrete, this->ClipValue, this->Invert);
|
||||
};
|
||||
this->CastAndCallScalarField(this->GetFieldFromDataSet(input).GetData(), resolveFieldType);
|
||||
|
||||
const auto& inArray = this->GetFieldFromDataSet(input).GetData();
|
||||
this->CastAndCallScalarField(inArray, resolveFieldType);
|
||||
auto mapper = [&](auto& result, const auto& f) { DoMapField(result, f, worklet); };
|
||||
vtkm::cont::DataSet output = this->CreateResult(input, outputCellSet, mapper);
|
||||
|
||||
// Compute the new boundary points and add them to the output:
|
||||
for (vtkm::IdComponent coordSystemId = 0; coordSystemId < input.GetNumberOfCoordinateSystems();
|
||||
@ -106,9 +103,6 @@ vtkm::cont::DataSet ClipWithField::DoExecute(const vtkm::cont::DataSet& input)
|
||||
coords.GetData().CastAndCall(ClipWithFieldProcessCoords{}, coords.GetName(), worklet, output);
|
||||
}
|
||||
|
||||
auto mapper = [&](auto& result, const auto& f) { DoMapField(result, f, worklet); };
|
||||
MapFieldsOntoOutput(input, output, mapper);
|
||||
|
||||
return output;
|
||||
}
|
||||
} // namespace contour
|
||||
|
@ -76,20 +76,17 @@ bool DoMapField(vtkm::cont::DataSet& result,
|
||||
//-----------------------------------------------------------------------------
|
||||
vtkm::cont::DataSet ClipWithImplicitFunction::DoExecute(const vtkm::cont::DataSet& input)
|
||||
{
|
||||
//get the cells and coordinates of the dataset
|
||||
const vtkm::cont::UnknownCellSet& cells = input.GetCellSet();
|
||||
|
||||
const vtkm::cont::UnknownCellSet& inputCellSet = input.GetCellSet();
|
||||
const vtkm::cont::CoordinateSystem& inputCoords =
|
||||
input.GetCoordinateSystem(this->GetActiveCoordinateSystemIndex());
|
||||
|
||||
vtkm::worklet::Clip Worklet;
|
||||
vtkm::worklet::Clip worklet;
|
||||
|
||||
vtkm::cont::CellSetExplicit<> outputCellSet =
|
||||
Worklet.Run(cells, this->Function, inputCoords, this->Invert);
|
||||
worklet.Run(inputCellSet, this->Function, inputCoords, this->Invert);
|
||||
|
||||
//create the output data
|
||||
vtkm::cont::DataSet output;
|
||||
output.SetCellSet(outputCellSet);
|
||||
auto mapper = [&](auto& result, const auto& f) { DoMapField(result, f, worklet); };
|
||||
vtkm::cont::DataSet output = this->CreateResult(input, outputCellSet, mapper);
|
||||
|
||||
// compute output coordinates
|
||||
for (vtkm::IdComponent coordSystemId = 0; coordSystemId < input.GetNumberOfCoordinateSystems();
|
||||
@ -97,12 +94,9 @@ vtkm::cont::DataSet ClipWithImplicitFunction::DoExecute(const vtkm::cont::DataSe
|
||||
{
|
||||
const vtkm::cont::CoordinateSystem& coords = input.GetCoordinateSystem(coordSystemId);
|
||||
coords.GetData().CastAndCall(
|
||||
ClipWithImplicitFunctionProcessCoords{}, coords.GetName(), Worklet, output);
|
||||
ClipWithImplicitFunctionProcessCoords{}, coords.GetName(), worklet, output);
|
||||
}
|
||||
|
||||
auto mapper = [&](auto& result, const auto& f) { DoMapField(result, f, Worklet); };
|
||||
MapFieldsOntoOutput(input, output, mapper);
|
||||
|
||||
return output;
|
||||
}
|
||||
} // namespace contour
|
||||
|
@ -105,10 +105,9 @@ vtkm::cont::DataSet Contour::DoExecute(const vtkm::cont::DataSet& inDataSet)
|
||||
throw vtkm::cont::ErrorFilterExecution("No iso-values provided.");
|
||||
}
|
||||
|
||||
//get the cells and coordinates of the dataset
|
||||
const vtkm::cont::UnknownCellSet& cells = inDataSet.GetCellSet();
|
||||
|
||||
const vtkm::cont::CoordinateSystem& coords =
|
||||
//get the inputCells and coordinates of the dataset
|
||||
const vtkm::cont::UnknownCellSet& inputCells = inDataSet.GetCellSet();
|
||||
const vtkm::cont::CoordinateSystem& inputCoords =
|
||||
inDataSet.GetCoordinateSystem(this->GetActiveCoordinateSystemIndex());
|
||||
|
||||
const auto& fieldArray = this->GetFieldFromDataSet(inDataSet).GetData();
|
||||
@ -117,10 +116,9 @@ vtkm::cont::DataSet Contour::DoExecute(const vtkm::cont::DataSet& inDataSet)
|
||||
Vec3HandleType vertices;
|
||||
Vec3HandleType normals;
|
||||
|
||||
vtkm::cont::DataSet output;
|
||||
vtkm::cont::CellSetSingleType<> outputCells;
|
||||
|
||||
bool generateHighQualityNormals = IsCellSetStructured(cells)
|
||||
bool generateHighQualityNormals = IsCellSetStructured(inputCells)
|
||||
? !this->ComputeFastNormalsForStructured
|
||||
: !this->ComputeFastNormalsForUnstructured;
|
||||
|
||||
@ -129,17 +127,22 @@ vtkm::cont::DataSet Contour::DoExecute(const vtkm::cont::DataSet& inDataSet)
|
||||
|
||||
if (this->GenerateNormals && generateHighQualityNormals)
|
||||
{
|
||||
outputCells = worklet.Run(ivalues, cells, coords.GetData(), concrete, vertices, normals);
|
||||
outputCells =
|
||||
worklet.Run(ivalues, inputCells, inputCoords.GetData(), concrete, vertices, normals);
|
||||
}
|
||||
else
|
||||
{
|
||||
outputCells = worklet.Run(ivalues, cells, coords.GetData(), concrete, vertices);
|
||||
outputCells = worklet.Run(ivalues, inputCells, inputCoords.GetData(), concrete, vertices);
|
||||
}
|
||||
};
|
||||
|
||||
fieldArray.CastAndCallForTypesWithFloatFallback<SupportedTypes, VTKM_DEFAULT_STORAGE_LIST>(
|
||||
ResolveFieldType);
|
||||
|
||||
auto mapper = [&](auto& result, const auto& f) { DoMapField(result, f, worklet); };
|
||||
vtkm::cont::DataSet output = this->CreateResult(
|
||||
inDataSet, outputCells, vtkm::cont::CoordinateSystem{ "coordinates", vertices }, mapper);
|
||||
|
||||
if (this->GenerateNormals)
|
||||
{
|
||||
if (!generateHighQualityNormals)
|
||||
@ -163,16 +166,6 @@ vtkm::cont::DataSet Contour::DoExecute(const vtkm::cont::DataSet& inDataSet)
|
||||
output.AddField(interpolationEdgeIdsField);
|
||||
}
|
||||
|
||||
//assign the connectivity to the cell set
|
||||
output.SetCellSet(outputCells);
|
||||
|
||||
//add the coordinates to the output dataset
|
||||
vtkm::cont::CoordinateSystem outputCoords("coordinates", vertices);
|
||||
output.AddCoordinateSystem(outputCoords);
|
||||
|
||||
auto mapper = [&](auto& result, const auto& f) { DoMapField(result, f, worklet); };
|
||||
MapFieldsOntoOutput(inDataSet, output, mapper);
|
||||
|
||||
return output;
|
||||
}
|
||||
} // namespace contour
|
||||
|
Loading…
Reference in New Issue
Block a user