24 #ifndef vtkOverlappingAMRMetaData_h
25 #define vtkOverlappingAMRMetaData_h
30 #include "vtkCommonDataModelModule.h"
33 VTK_ABI_NAMESPACE_BEGIN
54 void Initialize(
const std::vector<unsigned int>& blocksPerLevel)
override;
61 void GetOrigin(
double origin[3]);
62 [[nodiscard]]
double* GetOrigin();
63 void SetOrigin(
const double* origin);
83 void SetBounds(
unsigned int level,
unsigned int id,
double* bb);
90 bool GetOrigin(
unsigned int level,
unsigned int id,
double* origin);
101 [[nodiscard]]
bool HasSpacing(
unsigned int level)
const;
106 [[nodiscard]]
bool HasSpacing()
const;
111 [[nodiscard]]
bool HasBlockBounds(
unsigned int index)
const;
116 [[nodiscard]]
bool HasBlockBounds()
const;
122 void SetAMRBox(
unsigned int level,
unsigned int id,
const vtkAMRBox& box);
123 [[nodiscard]]
const vtkAMRBox& GetAMRBox(
unsigned int level,
unsigned int id)
const;
124 bool GetAMRBox(
unsigned int level,
unsigned int id,
vtkAMRBox& box)
const;
132 bool GetCoarsenedAMRBox(
unsigned int level,
unsigned int id,
vtkAMRBox& box);
139 [[nodiscard]]
int GetAMRBlockSourceIndex(
int index);
140 void SetAMRBlockSourceIndex(
int index,
int sourceId);
154 bool GenerateRefinementRatio();
161 [[nodiscard]]
bool HasRefinementRatio()
const;
167 void SetRefinementRatio(
unsigned int level,
int ratio);
174 [[nodiscard]]
int GetRefinementRatio(
unsigned int level)
const;
179 void SetSpacing(
unsigned int level,
const double* h);
184 [[nodiscard]]
bool HasChildrenInformation()
const;
191 unsigned int* GetParents(
unsigned int level,
unsigned int index,
unsigned int& numParents);
198 unsigned int* GetChildren(
unsigned int level,
unsigned int index,
unsigned int& numChildren);
203 void PrintParentChildInfo(
unsigned int level,
unsigned int index);
212 void GenerateParentChildInformation();
217 [[nodiscard]]
bool CheckValidity();
225 bool FindCell(
double q[3],
unsigned int level,
unsigned int index,
int& cellIdx);
231 bool FindGrid(
double q[3],
int level,
unsigned int& gridId);
237 bool FindGrids(
double q[3],
unsigned int level, std::vector<unsigned int>& gridIds);
244 bool FindGrid(
double q[3],
unsigned int&
level,
unsigned int& gridId);
252 return this->AllChildren[i];
259 [[nodiscard]] vtkGetMacro(
GridType,
unsigned int);
260 vtkSetMacro(
GridType,
unsigned int);
277 bool HasValidOrigin()
const;
278 bool HasValidBounds()
const;
279 void UpdateBounds(
int level,
int id);
280 void AllocateBoxes(
unsigned int n);
281 void AllocateBlockBounds(
unsigned int n);
282 void CalculateParentChildRelationShip(
unsigned int level,
295 std::vector<vtkAMRBox> Boxes;
298 std::vector<vtkBoundingBox> BlockBounds;
318 std::vector<std::vector<std::vector<unsigned int>>> AllChildren;
319 std::vector<std::vector<std::vector<unsigned int>>> AllParents;
322 VTK_ABI_NAMESPACE_END
void GetBounds(T a, double bds[6])
Encloses a rectangular region of voxel like cells.
dynamic, self-adjusting array of double
dynamic, self-adjusting array of int
a simple class to control print indentation