You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
4.5 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkUnstructuredGridGhostCellsGenerator.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.
=========================================================================*/
/**
* @class vtkUnstructuredGridGhostCellsGenerator
* @brief Builds ghost cells for a distributed unstructured grid dataset.
*
* This filter is a serial implementation of the vtkPUnstructuredGridGhostCellsGenerator
* filter with the intent that it can be used in non-MPI builds. Both the serial and
* parallel version act as a "pass-through" filter when run in serial. The combination
* of these filters serves to unify the API for serial and parallel builds.
*
* @sa
* vtkPDistributedDataFilter
* vtkPUnstructuredGridGhostCellsGenerator
*
*
*/
#ifndef vtkUnstructuredGridGhostCellsGenerator_h
#define vtkUnstructuredGridGhostCellsGenerator_h
#include "vtkFiltersParallelModule.h" // For export macro
#include "vtkUnstructuredGridAlgorithm.h"
class vtkMultiProcessController;
class vtkUnstructuredGrid;
class vtkUnstructuredGridBase;
class VTKFILTERSPARALLEL_EXPORT vtkUnstructuredGridGhostCellsGenerator
: public vtkUnstructuredGridAlgorithm
{
vtkTypeMacro(vtkUnstructuredGridGhostCellsGenerator, vtkUnstructuredGridAlgorithm);
public:
void PrintSelf(ostream& os, vtkIndent indent) override;
static vtkUnstructuredGridGhostCellsGenerator* New();
//@{
/**
* Specify if the filter must take benefit of global point ids if they exist.
* If false, point coordinates are used. Default is TRUE.
*/
vtkSetMacro(UseGlobalPointIds, bool);
vtkGetMacro(UseGlobalPointIds, bool);
vtkBooleanMacro(UseGlobalPointIds, bool);
//@}
//@{
/**
* Specify the name of the global point ids data array if the GlobalIds
* attribute array is not set. Default is "GlobalNodeIds".
*/
vtkSetStringMacro(GlobalPointIdsArrayName);
vtkGetStringMacro(GlobalPointIdsArrayName);
//@}
//@{
/**
* Specify if the data has global cell ids.
* If more than one layer of ghost cells is needed, global cell ids are
* necessary. If global cell ids are not provided, they will be computed
* internally.
* If false, global cell ids will be computed, then deleted afterwards.
* Default is FALSE.
*/
vtkSetMacro(HasGlobalCellIds, bool);
vtkGetMacro(HasGlobalCellIds, bool);
vtkBooleanMacro(HasGlobalCellIds, bool);
//@}
//@{
/**
* Specify the name of the global cell ids data array if the GlobalIds
* attribute array is not set. Default is "GlobalNodeIds".
*/
vtkSetStringMacro(GlobalCellIdsArrayName);
vtkGetStringMacro(GlobalCellIdsArrayName);
//@}
//@{
/**
* Specify if the filter must generate the ghost cells only if required by
* the pipeline.
* If false, ghost cells are computed even if they are not required.
* Default is TRUE.
*/
vtkSetMacro(BuildIfRequired, bool);
vtkGetMacro(BuildIfRequired, bool);
vtkBooleanMacro(BuildIfRequired, bool);
//@}
//@{
/**
* When BuildIfRequired is `false`, this can be used to set the minimum number
* of ghost levels to generate. Note, if the downstream pipeline requests more
* ghost levels than the number specified here, then the filter will generate
* those extra ghost levels as needed. Accepted values are in the interval
* [1, VTK_INT_MAX].
*/
vtkSetClampMacro(MinimumNumberOfGhostLevels, int, 1, VTK_INT_MAX);
vtkGetMacro(MinimumNumberOfGhostLevels, int);
//@}
protected:
vtkUnstructuredGridGhostCellsGenerator();
~vtkUnstructuredGridGhostCellsGenerator() override;
int RequestUpdateExtent(vtkInformation*, vtkInformationVector** inputVector,
vtkInformationVector* outputVector) override;
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
char* GlobalPointIdsArrayName;
bool UseGlobalPointIds;
char* GlobalCellIdsArrayName;
bool HasGlobalCellIds;
bool BuildIfRequired;
int MinimumNumberOfGhostLevels;
private:
vtkUnstructuredGridGhostCellsGenerator(const vtkUnstructuredGridGhostCellsGenerator&) = delete;
void operator=(const vtkUnstructuredGridGhostCellsGenerator&) = delete;
};
#endif