MCPcopy Create free account
hub / github.com/Kitware/VTK / MergeDataObjectFields

Method MergeDataObjectFields

Filters/Parallel/vtkPMergeArrays.cxx:21–54  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

19
20//------------------------------------------------------------------------------
21int vtkPMergeArrays::MergeDataObjectFields(vtkDataObject* input, int idx, vtkDataObject* output)
22{
23 int checks[vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES];
24 for (int attr = 0; attr < vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES; attr++)
25 {
26 checks[attr] = output->GetNumberOfElements(attr) == input->GetNumberOfElements(attr) ? 0 : 1;
27 }
28 int globalChecks[vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES];
29 auto controller = vtkMultiProcessController::GetGlobalController();
30 if (controller == nullptr)
31 {
32 for (int i = 0; i < vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES; ++i)
33 {
34 globalChecks[i] = checks[i];
35 }
36 }
37 else
38 {
39 controller->AllReduce(
40 checks, globalChecks, vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES, vtkCommunicator::MAX_OP);
41 }
42
43 for (int attr = 0; attr < vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES; attr++)
44 {
45 if (globalChecks[attr] == 0)
46 {
47 // only merge arrays when the number of elements in the input and output are the same
48 this->MergeArrays(
49 idx, input->GetAttributesAsFieldData(attr), output->GetAttributesAsFieldData(attr));
50 }
51 }
52
53 return 1;
54}
55VTK_ABI_NAMESPACE_END

Callers

nothing calls this directly

Calls 4

MergeArraysMethod · 0.80
GetNumberOfElementsMethod · 0.45
AllReduceMethod · 0.45

Tested by

no test coverage detected