6#include <vtkDataArray.h>
8#include <vtkInformation.h>
9#include <vtkObjectFactory.h>
10#include <vtkPointData.h>
17ttkScalarFieldSmoother::ttkScalarFieldSmoother() {
18 this->SetNumberOfInputPorts(1);
19 this->SetNumberOfOutputPorts(1);
22ttkScalarFieldSmoother::~ttkScalarFieldSmoother() =
default;
24int ttkScalarFieldSmoother::FillInputPortInformation(
int port,
25 vtkInformation *info) {
27 info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(),
"vtkDataSet");
33int ttkScalarFieldSmoother::FillOutputPortInformation(
int port,
34 vtkInformation *info) {
42int ttkScalarFieldSmoother::RequestData(vtkInformation *
ttkNotUsed(request),
43 vtkInformationVector **inputVector,
44 vtkInformationVector *outputVector) {
46 auto input = vtkDataSet::GetData(inputVector[0]);
47 auto output = vtkDataSet::GetData(outputVector);
51 int const keepGoing = checkEmptyMPIInput<Triangulation>(triangulation);
58 vtkDataArray *inputScalarField = this->GetInputArrayToProcess(0, inputVector);
62 if(inputScalarField->GetNumberOfComponents() != 1) {
63 printErr(
"Invalid scalar field ("
64 + std::to_string(inputScalarField->GetNumberOfComponents())
75 outputArray->SetName(inputScalarField->GetName());
76 outputArray->SetNumberOfComponents(1);
77 outputArray->SetNumberOfTuples(inputScalarField->GetNumberOfTuples());
82 output->ShallowCopy(input);
83 output->GetPointData()->AddArray(outputArray);
87 {{
" Scalar Array", inputScalarField->GetName()},
88 {
" Mask Array", inputMaskField ? inputMaskField->GetName() :
"None"},
89 {
" #iterations", std::to_string(NumberOfIterations)}});
91 const auto inputMaskPtr
94 this->setDimensionNumber(inputScalarField->GetNumberOfComponents());
97 this->setMaskDataPointer(inputMaskPtr);
101 inputScalarField->GetDataType(), triangulation->
getType(),
103 static_cast<const T1 *
>(triangulation->
getData()), NumberOfIterations)));
#define ttkNotUsed(x)
Mark function/method parameters that are not used in the function body at all.
static vtkInformationIntegerKey * SAME_DATA_TYPE_AS_INPUT_PORT()
ttk::Triangulation * GetTriangulation(vtkDataSet *dataSet)
vtkDataArray * GetOptionalArray(const bool &enforceArrayIndex, const int &arrayIndex, const std::string &arrayName, vtkDataSet *const inputData, const int &inputPort=0)
static void * GetVoidPointer(vtkDataArray *array, vtkIdType start=0)
static DT * GetPointer(vtkDataArray *array, vtkIdType start=0)
Triangulation is a class that provides time and memory efficient traversal methods on triangulations ...
AbstractTriangulation * getData()
Triangulation::Type getType() const
void preconditionTriangulation(AbstractTriangulation &triangulation)
Triangulation precondition function.
TTK base package defining the standard types.
const char MaskScalarFieldName[]
default name for mask scalar field
#define ttkTypeMacroAT(group0, group1, call)
vtkStandardNewMacro(ttkScalarFieldSmoother)
printMsg(debug::output::BOLD+" | | | | | . \\ | | (__| | / __/| |_| / __/| (_) |"+debug::output::ENDCOLOR, debug::Priority::PERFORMANCE, debug::LineMode::NEW, stream)