45 vtkInformationVector **inputVector,
46 vtkInformationVector *outputVector) {
55 const auto domain = vtkDataSet::GetData(inputVector[0]);
56 const auto constraints = vtkPointSet::GetData(inputVector[1]);
57 if(!domain || !constraints)
58 return !this->
printErr(
"Unable to retrieve required input data objects.");
60 auto output = vtkDataSet::GetData(outputVector);
66 this->
printErr(
"Input triangulation pointer is NULL.");
72 if(triangulation->isEmpty()) {
73 this->
printErr(
"Triangulation allocation problem.");
78 this->
printErr(
"Input pointer is NULL.");
82 const auto numberOfVertices = domain->GetNumberOfPoints();
83 if(numberOfVertices <= 0) {
84 this->
printErr(
"Domain has no points.");
89 const auto inputScalars = this->GetInputArrayToProcess(0, domain);
91 this->
printErr(
"Input scalar field pointer is null.");
97 domain, 0, triangulation,
false, 2, ForceInputOffsetScalarField);
99 this->
printErr(
"Wrong input offset scalar field.");
106 outputScalars->DeepCopy(inputScalars);
109 outputOrder->DeepCopy(inputOrder);
112 int const numberOfConstraints = constraints->GetNumberOfPoints();
114 std::vector<ttk::SimplexId> idSpareStorage{};
117 constraints, idSpareStorage);
120 switch(inputScalars->GetDataType()) {
121 vtkTemplateMacro(ret = this->
execute(
122 ttkUtils::GetPointer<VTK_TT>(inputScalars),
123 ttkUtils::GetPointer<VTK_TT>(outputScalars), identifiers,
124 ttkUtils::GetPointer<SimplexId>(inputOrder),
125 ttkUtils::GetPointer<SimplexId>(outputOrder),
126 numberOfConstraints, this->AddPerturbation,
127 *triangulation->getData()));
132 this->
printErr(
"TopologicalSimplification.execute() error code: "
137 output->ShallowCopy(domain);
138 output->GetPointData()->AddArray(outputOrder);
139 output->GetPointData()->AddArray(outputScalars);
ttk::SimplexId * GetIdentifierArrayPtr(const bool &enforceArrayIndex, const int &arrayIndex, const std::string &arrayName, vtkDataSet *const inputData, std::vector< ttk::SimplexId > &spareStorage, const int inputPort=0, const bool printErr=true)
vtkDataArray * GetOrderArray(vtkDataSet *const inputData, const int scalarArrayIdx, ttk::Triangulation *triangulation, const bool getGlobalOrder=false, const int orderArrayIdx=0, const bool enforceOrderArrayIdx=false)
int execute(const dataType *const inputScalars, dataType *const outputScalars, const SimplexId *const identifiers, const SimplexId *const inputOffsets, SimplexId *const offsets, const SimplexId constraintNumber, const bool addPerturbation, const triangulationType &triangulation)