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 // .NAME vtkPDataSetGhostGenerator.h -- Base class for parallel ghost generators
16 //
17 // .SECTION Description
18 //  An abstract class that provides common functionality and implements an
19 //  interface for all parallel ghost data generators.
20 //
21 // .SECTION See Also
22 // vtkDataSetGhostGenerator, vtkPUniformGridGhostDataGenerator,
23 // vtkPStructuredGridGhostDataGenerator, vtkPRectilinearGridGhostDataGenerator
24 
25 #ifndef VTKPDATASETGHOSTGENERATOR_H_
26 #define VTKPDATASETGHOSTGENERATOR_H_
27 
28 #include "vtkFiltersParallelGeometryModule.h" // For export macro
29 #include "vtkDataSetGhostGenerator.h"
30 
31 class vtkMultiProcessController;
32 class vtkMultiBlockDataSet;
33 
34 class VTKFILTERSPARALLELGEOMETRY_EXPORT vtkPDataSetGhostGenerator :
35   public vtkDataSetGhostGenerator
36 {
37 public:
38    vtkTypeMacro(vtkPDataSetGhostGenerator,vtkDataSetGhostGenerator);
39    void PrintSelf(ostream& os, vtkIndent indent);
40 
41    // Description:
42    // Get/Set macro for the multi-process controller. If a controller is not
43    // supplied, then, the global controller is assumed.
44    vtkSetMacro(Controller, vtkMultiProcessController*);
45    vtkGetMacro(Controller, vtkMultiProcessController*);
46 
47    // Description:
48    // Initializes
49    void Initialize();
50 
51    // Description:
52    // Barrier synchronization
53    void Barrier();
54 
55 protected:
56   vtkPDataSetGhostGenerator();
57   virtual ~vtkPDataSetGhostGenerator();
58 
59   // Description:
60   // Creates ghost layers. Implemented by concrete implementations.
61   virtual void GenerateGhostLayers(
62       vtkMultiBlockDataSet *in, vtkMultiBlockDataSet *out)=0;
63 
64   int Rank;
65   bool Initialized;
66   vtkMultiProcessController *Controller;
67 
68 private:
69   vtkPDataSetGhostGenerator(const vtkPDataSetGhostGenerator&); // Not implemented
70   void operator=(const vtkPDataSetGhostGenerator&); // Not implemented
71 };
72 
73 #endif /* VTKPDATASETGHOSTGENERATOR_H_ */
74