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.

144 lines
4.6 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkHierarchicalBoxDataSet.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.
=========================================================================*/
//
// .SECTION Description
// vtkUniformGridAMR is a concrete implementation of
// vtkCompositeDataSet. The dataset type is restricted to
// vtkUniformGrid.
#ifndef vtkUniformGridAMR_h
#define vtkUniformGridAMR_h
#include "vtkCommonDataModelModule.h" // For export macro
#include "vtkCompositeDataSet.h"
class vtkCompositeDataIterator;
class vtkUniformGrid;
class vtkAMRInformation;
class vtkAMRDataInternals;
class VTKCOMMONDATAMODEL_EXPORT vtkUniformGridAMR : public vtkCompositeDataSet
{
public:
static vtkUniformGridAMR* New();
vtkTypeMacro(vtkUniformGridAMR, vtkCompositeDataSet);
// Description:
// Return a new iterator (the iterator has to be deleted by the user).
VTK_NEWINSTANCE vtkCompositeDataIterator* NewIterator() override;
// Description:
// Return class name of data type (see vtkType.h for definitions).
int GetDataObjectType() override { return VTK_UNIFORM_GRID_AMR; }
// Description: // Print internal states
void PrintSelf(ostream& os, vtkIndent indent) override;
// Description:
// Restore data object to initial
void Initialize() override;
// Description:
// Initialize the AMR.
virtual void Initialize(int numLevels, const int* blocksPerLevel);
// Description:
// Set/Get the data description of this uniform grid instance,
// e.g. VTK_XYZ_GRID
void SetGridDescription(int gridDescription);
int GetGridDescription();
// Description:
// Return the number of levels
unsigned int GetNumberOfLevels();
// Description:
// Return the total number of blocks, including nullptr blocks
virtual unsigned int GetTotalNumberOfBlocks();
// Description:
// Returns the number of datasets at the given level, including null blocks
unsigned int GetNumberOfDataSets(const unsigned int level);
// Description:
// Retrieve the bounds of the AMR domain
void GetBounds(double bounds[6]);
const double* GetBounds();
void GetMin(double min[3]);
void GetMax(double max[3]);
// Description:
// Unhiding superclass method.
void SetDataSet(vtkCompositeDataIterator* iter, vtkDataObject* dataObj) override;
// Description:
// At the passed in level, set grid as the idx'th block at that level.
// idx must be less than the number of data sets at that level.
virtual void SetDataSet(unsigned int level, unsigned int idx, vtkUniformGrid* grid);
// Description:
// Return the data set pointed to by iter
vtkDataObject* GetDataSet(vtkCompositeDataIterator* iter) override;
// Description:
// Get the data set using the index pair
vtkUniformGrid* GetDataSet(unsigned int level, unsigned int idx);
// Description:
// Retrieves the composite index associated with the data at the given
// (level,index) pair.
int GetCompositeIndex(const unsigned int level, const unsigned int index);
// Description:
// Givenes the composite Idx (as set by SetCompositeIdx) this method returns the
// corresponding level and dataset index within the level.
void GetLevelAndIndex(const unsigned int compositeIdx, unsigned int& level, unsigned int& idx);
// Description:
// Override ShallowCopy/DeepCopy and CopyStructure
void ShallowCopy(vtkDataObject* src) override;
void DeepCopy(vtkDataObject* src) override;
void CopyStructure(vtkCompositeDataSet* src) override;
// Retrieve an instance of this class from an information object.
static vtkUniformGridAMR* GetData(vtkInformation* info);
static vtkUniformGridAMR* GetData(vtkInformationVector* v, int i = 0);
protected:
vtkUniformGridAMR();
~vtkUniformGridAMR() override;
// Description:
// Get/Set the meta AMR meta data
vtkGetObjectMacro(AMRData, vtkAMRDataInternals);
vtkAMRInformation* AMRInfo;
vtkAMRDataInternals* AMRData;
double Bounds[6];
// Description:
// Get/Set the meta AMR meta data
vtkGetObjectMacro(AMRInfo, vtkAMRInformation);
virtual void SetAMRInfo(vtkAMRInformation*);
private:
vtkUniformGridAMR(const vtkUniformGridAMR&) = delete;
void operator=(const vtkUniformGridAMR&) = delete;
friend class vtkUniformGridAMRDataIterator;
};
#endif