1 /*========================================================================= 2 3 Program: Visualization Toolkit 4 Module: vtkPDataSetGhostGenerator.h 5 6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 7 All rights reserved. 8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 9 10 This software is distributed WITHOUT ANY WARRANTY; without even 11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 12 PURPOSE. See the above copyright notice for more information. 13 14 =========================================================================*/ 15 /** 16 * @class vtkPDataSetGhostGenerator 17 * 18 * 19 * An abstract class that provides common functionality and implements an 20 * interface for all parallel ghost data generators. 21 * 22 * @sa 23 * vtkDataSetGhostGenerator, vtkPUniformGridGhostDataGenerator, 24 * vtkPStructuredGridGhostDataGenerator, vtkPRectilinearGridGhostDataGenerator 25 */ 26 27 #ifndef vtkPDataSetGhostGenerator_h 28 #define vtkPDataSetGhostGenerator_h 29 30 #include "vtkFiltersParallelGeometryModule.h" // For export macro 31 #include "vtkDataSetGhostGenerator.h" 32 33 class vtkMultiProcessController; 34 class vtkMultiBlockDataSet; 35 36 class VTKFILTERSPARALLELGEOMETRY_EXPORT vtkPDataSetGhostGenerator : 37 public vtkDataSetGhostGenerator 38 { 39 public: 40 vtkTypeMacro(vtkPDataSetGhostGenerator,vtkDataSetGhostGenerator); 41 void PrintSelf(ostream& os, vtkIndent indent) override; 42 43 //@{ 44 /** 45 * Get/Set macro for the multi-process controller. If a controller is not 46 * supplied, then, the global controller is assumed. 47 */ 48 vtkSetMacro(Controller, vtkMultiProcessController*); 49 vtkGetMacro(Controller, vtkMultiProcessController*); 50 //@} 51 52 /** 53 * Initializes 54 */ 55 void Initialize(); 56 57 /** 58 * Barrier synchronization 59 */ 60 void Barrier(); 61 62 protected: 63 vtkPDataSetGhostGenerator(); 64 ~vtkPDataSetGhostGenerator() override; 65 66 /** 67 * Creates ghost layers. Implemented by concrete implementations. 68 */ 69 virtual void GenerateGhostLayers( 70 vtkMultiBlockDataSet *in, vtkMultiBlockDataSet *out) override = 0; 71 72 int Rank; 73 bool Initialized; 74 vtkMultiProcessController *Controller; 75 76 private: 77 vtkPDataSetGhostGenerator(const vtkPDataSetGhostGenerator&) = delete; 78 void operator=(const vtkPDataSetGhostGenerator&) = delete; 79 }; 80 81 #endif /* vtkPDataSetGhostGenerator_h */ 82