vtkStructuredGridPartitioner.h 2.84 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/*=========================================================================

 Program:   Visualization Toolkit
 Module:    vtkStructuredGridPartitioner.h

 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
 All rights reserved.
 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.

 This software is distributed WITHOUT ANY WARRANTY; without even
 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 PURPOSE.  See the above copyright notice for more information.

 =========================================================================*/
15 16 17 18 19 20 21 22 23 24 25 26
/**
 * @class   vtkStructuredGridPartitioner
 *
 *
 *  A concrete implementation of vtkMultiBlockDataSetAlgorithm that provides
 *  functionality for partitioning a VTK structured grid dataset. The partition-
 *  ing method used is Recursive Coordinate Bisection (RCB) where each time the
 *  longest dimension is split.
 *
 * @sa
 *  vtkUniformGridPartitioner vtkRectilinearGridPartitioner
*/
27

28 29
#ifndef vtkStructuredGridPartitioner_h
#define vtkStructuredGridPartitioner_h
30

31
#include "vtkFiltersGeometryModule.h" // For export macro
32 33 34 35 36
#include "vtkMultiBlockDataSetAlgorithm.h"

class vtkInformation;
class vtkInformationVector;
class vtkIndent;
37 38
class vtkStructuredGrid;
class vtkPoints;
39

40
class VTKFILTERSGEOMETRY_EXPORT vtkStructuredGridPartitioner :
41 42
  public vtkMultiBlockDataSetAlgorithm
{
43 44 45
public:
  static vtkStructuredGridPartitioner *New();
  vtkTypeMacro(vtkStructuredGridPartitioner, vtkMultiBlockDataSetAlgorithm);
46
  void PrintSelf(ostream &oss, vtkIndent indent ) override;
47

48 49 50 51
  //@{
  /**
   * Set/Get macro for the number of subdivisions.
   */
52 53
  vtkGetMacro(NumberOfPartitions,int);
  vtkSetMacro(NumberOfPartitions,int);
54
  //@}
55

56 57 58 59
  //@{
  /**
   * Set/Get macro for the number of ghost layers.
   */
60 61
  vtkGetMacro(NumberOfGhostLayers,int);
  vtkSetMacro(NumberOfGhostLayers,int);
62
  //@}
63

64 65 66 67
  //@{
  /**
   * Set/Get & boolean macro for the DuplicateNodes property.
   */
68 69 70
  vtkGetMacro(DuplicateNodes,vtkTypeBool);
  vtkSetMacro(DuplicateNodes,vtkTypeBool);
  vtkBooleanMacro(DuplicateNodes,vtkTypeBool);
71
  //@}
72

73 74
protected:
  vtkStructuredGridPartitioner();
75
  ~vtkStructuredGridPartitioner() override;
76

77 78 79
  /**
   * Extracts the coordinates of the sub-grid from the whole grid.
   */
80
  vtkPoints* ExtractSubGridPoints(vtkStructuredGrid *wholeGrid,int subext[6]);
81

82
  // Standard Pipeline methods
83
  int RequestData(
84 85 86
     vtkInformation*,vtkInformationVector**,vtkInformationVector*) override;
  int FillInputPortInformation(int port, vtkInformation *info) override;
  int FillOutputPortInformation(int port, vtkInformation *info) override;
87

88 89
  int NumberOfPartitions;
  int NumberOfGhostLayers;
90
  vtkTypeBool DuplicateNodes;
91

92
private:
93 94
  vtkStructuredGridPartitioner(const vtkStructuredGridPartitioner &) = delete;
  void operator=(const vtkStructuredGridPartitioner &) = delete;
95 96
};

97
#endif /* vtkStructuredGridPartitioner_h */