VTK
vtkAMRResampleFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkAMRResampleFilter.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  =========================================================================*/
36 #ifndef vtkAMRResampleFilter_h
37 #define vtkAMRResampleFilter_h
38 
39 #include "vtkFiltersAMRModule.h" // For export macro
41 #include <vector> // For STL vector
42 
43 class vtkInformation;
45 class vtkUniformGrid;
46 class vtkOverlappingAMR;
49 class vtkFieldData;
50 class vtkCellData;
51 class vtkPointData;
52 class vtkIndent;
53 
54 class vtkAMRBox;
55 class VTKFILTERSAMR_EXPORT vtkAMRResampleFilter : public vtkMultiBlockDataSetAlgorithm
56 {
57 public:
60  void PrintSelf(ostream &oss, vtkIndent indent) override;
61 
63 
67  vtkSetVector3Macro(NumberOfSamples,int);
68  vtkGetVector3Macro(NumberOfSamples,int);
70 
72 
75  vtkSetMacro(TransferToNodes,int);
76  vtkGetMacro(TransferToNodes,int);
78 
80 
84  vtkSetMacro(DemandDrivenMode,int);
85  vtkGetMacro(DemandDrivenMode,int);
87 
89 
92  vtkSetMacro(NumberOfPartitions,int);
93  vtkGetMacro(NumberOfPartitions,int);
95 
97 
100  vtkSetVector3Macro(Min,double);
101  vtkGetVector3Macro(Min,double);
103 
105 
108  vtkSetVector3Macro(Max,double);
109  vtkGetVector3Macro(Max,double);
111 
113 
116  vtkSetMacro(UseBiasVector,bool);
117  vtkGetMacro(UseBiasVector,bool);
119 
121 
126  vtkSetVector3Macro(BiasVector,double);
127  vtkGetVector3Macro(BiasVector,double);
129 
131 
134  vtkSetMacro(Controller, vtkMultiProcessController*);
135  vtkGetMacro(Controller, vtkMultiProcessController*);
137 
138  // Standard pipeline routines
139 
145  vtkInformation *rqst,
146  vtkInformationVector **inputVector,
147  vtkInformationVector *outputVector ) override;
148 
153 
159 
160 
161 protected:
164 
166  vtkMultiBlockDataSet *ROI; // Pointer to the region of interest.
167  int NumberOfSamples[3];
168  int GridNumberOfSamples[3];
169  double Min[3];
170  double Max[3];
171  double GridMin[3];
172  double GridMax[3];
179  double BiasVector[3];
180 
181  // Debugging Stuff
189  double AverageLevel;
190 
191  std::vector< int > BlocksToLoad; // Holds the ids of the blocks to load.
192 
196  bool IsParallel();
197 
202  bool IsRegionMine( const int regionIdx );
203 
208  int GetRegionProcessId( const int regionIdx );
209 
214  vtkUniformGrid *g, const vtkIdType cellIdx, double c[3] );
215 
223 
228  vtkCellData *src, vtkIdType srcIdx );
229 
234  bool FoundDonor(double q[3],vtkUniformGrid *&donorGrid,int &cellIdx);
235 
236 
243  double q[3], vtkOverlappingAMR *amrds,
244  unsigned int level, unsigned int& gridId,
245  int &donorCellIdx);
246 
254  double q[3], unsigned int &donorLevel, unsigned int& donorGridId,
255  vtkOverlappingAMR *amrds, unsigned int maxLevel, bool useCached);
256 
263  int ProbeGridPointInAMRGraph(double q[3],
264  unsigned int &donorLevel, unsigned int &donorGridId,
265  vtkOverlappingAMR *amrds, unsigned int maxLevel, bool useCached);
266 
272  vtkUniformGrid *g, vtkOverlappingAMR *amrds );
273 
279  vtkUniformGrid *g, vtkOverlappingAMR *amrds );
280 
285  vtkUniformGrid *g, vtkOverlappingAMR *amrds);
286 
292  vtkOverlappingAMR *metadata );
293 
298  bool IsBlockWithinBounds( double *grd );
299 
306 
311  vtkOverlappingAMR *amrds,
312  int N[3], double min[3], double max[3], double h[3] );
313 
318  vtkOverlappingAMR *amr,
319  double domainMin[3], double domainMax[3], double h[3],
320  int dims[3], double &rf );
321 
326  double domainMin[3], double domainMax[3],
327  double regionMin[3], double regionMax[3] );
328 
333  void AdjustNumberOfSamplesInRegion(const double Rh[3],
334  const bool outside[6], int N[3] );
335 
342  const int N[3], const double h0[3], const double L[3], const double rf);
343 
351  const double h0[3], const double domainMin[3], const double domainMax[3],
352  const int dims[3], bool outside[6] );
353 
360  vtkOverlappingAMR *amrds, double h[3] );
361 
365  void GetRegion( double h[3] );
366 
370  bool GridsIntersect( double *g1, double *g2 );
371 
376 
390  void SearchGridDecendants(double q[3],
391  vtkOverlappingAMR *amrds,
392  unsigned int maxLevel,
393  unsigned int &level,
394  unsigned int &gridId,
395  int &id);
396 
401  bool SearchGridAncestors(double q[3],
402  vtkOverlappingAMR *amrds,
403  unsigned int &level,
404  unsigned int &gridId,
405  int &id);
406 
407 
408 private:
410  void operator=(const vtkAMRResampleFilter&) = delete;
411 
412 };
413 
414 #endif /* vtkAMRResampleFilter_h */
vtkAMRBox
Encloses a rectangular region of voxel like cells.
Definition: vtkAMRBox.h:40
vtkAMRResampleFilter::GridsIntersect
bool GridsIntersect(double *g1, double *g2)
Checks if two uniform grids intersect.
vtkAMRResampleFilter::AMRMetaData
vtkOverlappingAMR * AMRMetaData
Definition: vtkAMRResampleFilter.h:165
vtkAMRResampleFilter::GetDomainParameters
void GetDomainParameters(vtkOverlappingAMR *amr, double domainMin[3], double domainMax[3], double h[3], int dims[3], double &rf)
This method accesses the domain boundaries.
vtkAMRResampleFilter::~vtkAMRResampleFilter
~vtkAMRResampleFilter() override
vtkAMRResampleFilter::TransferToGridNodes
void TransferToGridNodes(vtkUniformGrid *g, vtkOverlappingAMR *amrds)
Transfer the solution from the AMR dataset to the nodes of the given uniform grid.
vtkAMRResampleFilter::NumberOfTimesLevelUp
int NumberOfTimesLevelUp
Definition: vtkAMRResampleFilter.h:186
vtkAMRResampleFilter::ROI
vtkMultiBlockDataSet * ROI
Definition: vtkAMRResampleFilter.h:166
vtkAMRResampleFilter::TransferSolution
void TransferSolution(vtkUniformGrid *g, vtkOverlappingAMR *amrds)
Transfers the solution.
vtkPointData
represent and manipulate point attribute data
Definition: vtkPointData.h:38
vtkAMRResampleFilter::IsRegionMine
bool IsRegionMine(const int regionIdx)
Given the Region ID this function returns whether or not the region belongs to this process or not.
vtkIdType
int vtkIdType
Definition: vtkType.h:347
vtkAMRResampleFilter::NumberOfTimesFoundOnDonorLevel
int NumberOfTimesFoundOnDonorLevel
Definition: vtkAMRResampleFilter.h:185
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:42
vtkAMRResampleFilter::UseBiasVector
bool UseBiasVector
Definition: vtkAMRResampleFilter.h:178
vtkAMRResampleFilter::AdjustNumberOfSamplesInRegion
void AdjustNumberOfSamplesInRegion(const double Rh[3], const bool outside[6], int N[3])
This method adjust the numbers of samples in the region, N, if the requested region falls outside,...
vtkAMRResampleFilter::PrintSelf
void PrintSelf(ostream &oss, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkUniformGrid
image data with blanking
Definition: vtkUniformGrid.h:41
vtkAMRResampleFilter::AverageLevel
double AverageLevel
Definition: vtkAMRResampleFilter.h:189
vtkAMRResampleFilter::NumberOfPartitions
int NumberOfPartitions
Definition: vtkAMRResampleFilter.h:174
vtkAMRResampleFilter::RequestUpdateExtent
int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Performs upstream requests to the reader.
vtkAMRResampleFilter::TransferToNodes
int TransferToNodes
Definition: vtkAMRResampleFilter.h:175
vtkAMRResampleFilter::GetRegionProcessId
int GetRegionProcessId(const int regionIdx)
Given the Region ID, this method computes the corresponding process ID that owns the region based on ...
vtkMultiBlockDataSet
Composite dataset that organizes datasets into blocks.
Definition: vtkMultiBlockDataSet.h:52
vtkAMRResampleFilter::LevelOfResolution
int LevelOfResolution
Definition: vtkAMRResampleFilter.h:173
vtkAMRResampleFilter::FillInputPortInformation
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtkAMRResampleFilter::RequestData
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
max
#define max(a, b)
Definition: vtkX3DExporterFIWriterHelper.h:31
vtkFieldData
represent and manipulate fields of data
Definition: vtkFieldData.h:57
vtkAMRResampleFilter::InitializeFields
void InitializeFields(vtkFieldData *f, vtkIdType size, vtkCellData *src)
Given the source cell data of an AMR grid, this method initializes the field values,...
vtkAMRResampleFilter::ComputeAMRBlocksToLoad
void ComputeAMRBlocksToLoad(vtkOverlappingAMR *metadata)
Given a user-supplied region of interest and the metadata by a module upstream, this method generates...
vtkAMRResampleFilter::NumberOfBlocksVisSkipped
int NumberOfBlocksVisSkipped
Definition: vtkAMRResampleFilter.h:184
vtkAMRResampleFilter::ComputeCellCentroid
void ComputeCellCentroid(vtkUniformGrid *g, const vtkIdType cellIdx, double c[3])
Given a cell index and a grid, this method computes the cell centroid.
vtkAMRResampleFilter::NumberOfFailedPoints
int NumberOfFailedPoints
Definition: vtkAMRResampleFilter.h:188
vtkX3D::level
@ level
Definition: vtkX3D.h:395
vtkX3D::port
@ port
Definition: vtkX3D.h:447
vtkAMRResampleFilter::ComputeAndAdjustRegionParameters
void ComputeAndAdjustRegionParameters(vtkOverlappingAMR *amrds, double h[3])
This method computes and adjusts the region parameters s.t.
vtkAMRResampleFilter::SearchGridAncestors
bool SearchGridAncestors(double q[3], vtkOverlappingAMR *amrds, unsigned int &level, unsigned int &gridId, int &id)
Find an ancestor of the specified grid that contains the point.
vtkAMRResampleFilter::RegionIntersectsWithAMR
bool RegionIntersectsWithAMR(double domainMin[3], double domainMax[3], double regionMin[3], double regionMax[3])
Checks if the domain and requested region intersect.
vtkAMRResampleFilter::GetReferenceGrid
vtkUniformGrid * GetReferenceGrid(vtkOverlappingAMR *amrds)
Returns a reference grid from the amrdataset.
vtkAMRResampleFilter::ExtractRegion
void ExtractRegion(vtkOverlappingAMR *amrds, vtkMultiBlockDataSet *mbds, vtkOverlappingAMR *metadata)
Extract the region (as a multiblock) from the given AMR dataset.
vtkMultiProcessController
Multiprocessing communication superclass.
Definition: vtkMultiProcessController.h:83
vtkAMRResampleFilter::FillOutputPortInformation
int FillOutputPortInformation(int port, vtkInformation *info) override
Fill the output port information objects for this algorithm.
vtkAMRResampleFilter::SearchGridDecendants
void SearchGridDecendants(double q[3], vtkOverlappingAMR *amrds, unsigned int maxLevel, unsigned int &level, unsigned int &gridId, int &id)
Writes a uniform grid to a file.
vtkAMRResampleFilter::ComputeRegionParameters
void ComputeRegionParameters(vtkOverlappingAMR *amrds, int N[3], double min[3], double max[3], double h[3])
Computes the region parameters.
vtkCellData
represent and manipulate cell attribute data
Definition: vtkCellData.h:39
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkAMRResampleFilter::IsBlockWithinBounds
bool IsBlockWithinBounds(double *grd)
Checks if the AMR block, described by a uniform grid, is within the bounds of the ROI perscribed by t...
vtkAMRResampleFilter::SnapBounds
void SnapBounds(const double h0[3], const double domainMin[3], const double domainMax[3], const int dims[3], bool outside[6])
This method snaps the bounds s.t.
vtkAMRResampleFilter::CopyData
void CopyData(vtkFieldData *target, vtkIdType targetIdx, vtkCellData *src, vtkIdType srcIdx)
Copies the data to the target from the given source.
vtkAMRResampleFilter::SearchForDonorGridAtLevel
bool SearchForDonorGridAtLevel(double q[3], vtkOverlappingAMR *amrds, unsigned int level, unsigned int &gridId, int &donorCellIdx)
Given a query point q and a target level, this method finds a suitable grid at the given level that c...
vtkX3D::size
@ size
Definition: vtkX3D.h:253
vtkMultiBlockDataSetAlgorithm.h
vtkAMRResampleFilter::BlocksToLoad
std::vector< int > BlocksToLoad
Definition: vtkAMRResampleFilter.h:191
vtkOverlappingAMR
hierarchical dataset of vtkUniformGrids
Definition: vtkOverlappingAMR.h:47
vtkAMRResampleFilter::NumberOfBlocksTestedForLevel
int NumberOfBlocksTestedForLevel
Definition: vtkAMRResampleFilter.h:182
vtkAMRResampleFilter::GetRegion
void GetRegion(double h[3])
This method gets the region of interest as perscribed by the user.
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:87
vtkX3D::info
@ info
Definition: vtkX3D.h:376
vtkAMRResampleFilter::IsParallel
bool IsParallel()
Checks if this filter instance is running on more than one processes.
vtkAMRResampleFilter::Controller
vtkMultiProcessController * Controller
Definition: vtkAMRResampleFilter.h:177
vtkAMRResampleFilter::NumberOfBlocksTested
int NumberOfBlocksTested
Definition: vtkAMRResampleFilter.h:183
vtkAMRResampleFilter::DemandDrivenMode
int DemandDrivenMode
Definition: vtkAMRResampleFilter.h:176
vtkAMRResampleFilter::TransferToCellCenters
void TransferToCellCenters(vtkUniformGrid *g, vtkOverlappingAMR *amrds)
Transfers the solution from the AMR dataset to the cell-centers of the given uniform grid.
vtkAMRResampleFilter::ComputeLevelOfResolution
void ComputeLevelOfResolution(const int N[3], const double h0[3], const double L[3], const double rf)
This method computes the level of resolution based on the number of samples requested,...
vtkAMRResampleFilter::FoundDonor
bool FoundDonor(double q[3], vtkUniformGrid *&donorGrid, int &cellIdx)
Given a query point q and a candidate donor grid, this method checks for the corresponding donor cell...
vtkAMRResampleFilter::ProbeGridPointInAMR
int ProbeGridPointInAMR(double q[3], unsigned int &donorLevel, unsigned int &donorGridId, vtkOverlappingAMR *amrds, unsigned int maxLevel, bool useCached)
Finds the AMR grid that contains the point q.
target
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Definition: vtkBoostGraphAdapter.h:832
vtkAMRResampleFilter
Definition: vtkAMRResampleFilter.h:56
vtkAMRResampleFilter::NumberOfTimesLevelDown
int NumberOfTimesLevelDown
Definition: vtkAMRResampleFilter.h:187
vtkAMRResampleFilter::ProbeGridPointInAMRGraph
int ProbeGridPointInAMRGraph(double q[3], unsigned int &donorLevel, unsigned int &donorGridId, vtkOverlappingAMR *amrds, unsigned int maxLevel, bool useCached)
Finds the AMR grid that contains the point q.
h
vtkAMRResampleFilter::vtkAMRResampleFilter
vtkAMRResampleFilter()
vtkAMRResampleFilter::RequestInformation
int RequestInformation(vtkInformation *rqst, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
Gets the metadata from upstream module and determines which blocks should be loaded by this instance.
vtkAMRResampleFilter::New
static vtkAMRResampleFilter * New()
vtkMultiBlockDataSetAlgorithm
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
Definition: vtkMultiBlockDataSetAlgorithm.h:36