76 #ifndef vtkRectilinearGridConnectivity_h 77 #define vtkRectilinearGridConnectivity_h 79 #include "vtkMultiBlockDataSetAlgorithm.h" 80 #include "vtkPVVTKExtensionsDefaultModule.h" 86 class vtkRectilinearGrid;
87 class vtkInformationVector;
88 class vtkMultiProcessController;
89 class vtkIncrementalOctreePointLocator;
90 class vtkRectilinearGridConnectivityFaceHash;
91 class vtkRectilinearGridConnectivityInternal;
94 :
public vtkMultiBlockDataSetAlgorithm
99 void PrintSelf(ostream& os, vtkIndent indent);
105 vtkSetClampMacro(VolumeFractionSurfaceValue,
double, 0.0, 1.0);
106 vtkGetMacro(VolumeFractionSurfaceValue,
double);
112 void RemoveAllVolumeArrayNames();
117 void RemoveDoubleVolumeArrayNames();
122 void RemoveFloatVolumeArrayNames();
127 void RemoveUnsignedCharVolumeArrayNames();
132 void AddDoubleVolumeArrayName(
char* arayName);
137 void AddFloatVolumeArrayName(
char* arayName);
142 void AddUnsignedCharVolumeArrayName(
char* arayName);
147 void AddVolumeArrayName(
char* arayName);
156 double DualGridBounds[6];
165 virtual vtkExecutive* CreateDefaultExecutive();
166 virtual int FillInputPortInformation(
int, vtkInformation*);
167 virtual int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
168 vtkInformationVector* outputVector);
177 int GetNumberOfVolumeFractionArrays();
183 int GetNumberOfVolumeArrays();
188 const char* GetVolumeFractionArrayName(
int arrayIdx);
194 bool IsVolumeFractionArray(
const char* arayName);
201 bool IsVolumeArray(
const char* arayName);
211 int CheckVolumeDataArrays(vtkRectilinearGrid** recGrids,
int numGrids);
222 void CreateDualRectilinearGrid(vtkRectilinearGrid* rectGrid, vtkRectilinearGrid* dualGrid);
232 void ExtractFragments(vtkRectilinearGrid** dualGrds,
int numBlcks,
double boundBox[6],
233 unsigned char partIndx, vtkPolyData* polyData);
251 void IntegrateFragmentAttributes(
int fragIndx,
int numComps,
double* attrVals);
258 void ResolveEquivalentFragments();
269 void ResolveFaceFragmentIds();
279 void ResolveIntegratedFragmentAttributes();
298 void ExtractFragmentPolyhedra(
299 vtkRectilinearGrid* rectGrid,
const char* fracName,
double isoValue, vtkPolyData* plyHedra);
307 void InitializeFaceHash(vtkPolyData* plyHedra);
319 void AddPolygonsToFaceHash(
int blockIdx, vtkPolyData* plyHedra);
343 void ExtractFragmentPolygons(
int blockIdx,
int& maxFsize, vtkPolyData* plyHedra,
344 vtkPolyData* polygons, vtkIncrementalOctreePointLocator* gPtIdGen);
357 void InitializeFaceHash(vtkPolyData** plyDatas,
int numPolys);
373 void AddPolygonsToFaceHash(vtkPolyData** plyDatas,
int* maxFsize,
int numPolys);
388 void GenerateOutputFromSingleProcess(
389 vtkPolyData** surfaces,
int numSurfs,
unsigned char partIndx, vtkPolyData* polyData);
407 void CreateInterProcessPolygons(vtkPolyData* fragPoly, vtkPolyData* procPoly,
408 vtkIncrementalOctreePointLocator* gPtIdGen,
int& maxFsize);
426 void AddInterProcessPolygonsToFaceHash(vtkPolyData** procPlys,
int* maxFsize,
int numProcs);
442 void GenerateOutputFromMultiProcesses(
443 vtkPolyData** procPlys,
int numProcs,
unsigned char partIndx, vtkPolyData* polyData);
vtkMultiProcessController * Controller
double VolumeFractionSurfaceValue
vtkRectilinearGridConnectivityInternal * Internal
vtkRectilinearGrid ** DualGridBlocks
vtkDoubleArray * FragmentValues
vtkEquivalenceSet * EquivalenceSet
Extracts material fragments from multi-block vtkRectilinearGrid datasets based on the selected volume...
vtkRectilinearGridConnectivityFaceHash * FaceHash
records groups of integers that are equivalent.