74 std::array<int, 6> outExtent_;
75 std::array<int, 6> inExtent_;
76 std::array<double, 6> boundsWithoutGhosts_;
77 std::array<double, 6> globalBounds_;
78 std::array<double, 3> origin_;
79 std::array<double, 3> spacing_;
80 bool isOutputExtentComputed_{
false};
81 std::array<ttk::periodicGhosts::partialGlobalBound, 6> localGlobalBounds_;
82 std::vector<int> neighbors_;
83 std::vector<std::array<ttk::SimplexId, 6>> neighborVertexBBoxes_;
84 std::array<unsigned char, 6> isBoundaryPeriodic_{};
96 vtkInformationVector **inputVector,
97 vtkInformationVector *outputVector)
override;
100 vtkInformationVector **inputVectors,
101 vtkInformationVector *outputVector)
override;
108 int MPIPeriodicGhostPipelinePreconditioning(vtkImageData *imageIn,
109 vtkImageData *imageOut);
111 inline std::vector<int> getNeighbors() {
112 std::sort(neighbors_.begin(), neighbors_.end());
116 inline std::map<int, int> getNeighborsToId() {
117 std::map<int, int> neighborsToId{};
118 int neighborNumber = neighbors_.size();
119 for(
int i = 0; i < neighborNumber; i++) {
120 neighborsToId[neighbors_[i]] = i;
122 return neighborsToId;
125 inline std::array<unsigned char, 6> getIsBoundaryPeriodic() {
126 return isBoundaryPeriodic_;
144 int ComputeOutputExtent();
165 template <
int matchesSize,
int metaDataSize>
166 int MarshalAndSendRecv(
167 vtkImageData *imageIn,
169 &charArrayBoundaries,
170 std::vector<std::vector<std::array<ttk::SimplexId, metaDataSize>>>
171 &charArrayBoundariesMetaData,
172 std::vector<std::array<ttk::SimplexId, matchesSize>> &matches,
174 std::vector<std::array<ttk::SimplexId, metaDataSize>>
175 &charArrayBoundariesMetaDataReceived,
189 int MergeImageAndSlice(vtkImageData *image,
191 vtkImageData *mergedImage,
207 template <
typename boundaryType>
208 int UnMarshalAndMerge(
209 std::vector<boundaryType> &metaDataReceived,
211 boundaryType direction,
213 vtkImageData *mergedImage);
227 template <
typename boundaryType>
228 int UnMarshalAndCopy(
229 std::vector<boundaryType> &metaDataReceived,
231 boundaryType direction,
232 vtkImageData *mergedImage);
249 int MergeDataArrays(vtkDataArray *imageArray,
250 vtkDataArray *sliceArray,
254 unsigned char ghostValue,
261 vtkInformationVector **inputVector,
262 vtkInformationVector *outputVector)
override;