Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vtkRectilinearGridConnectivity Class Reference

Extracts material fragments from multi-block vtkRectilinearGrid datasets based on the selected volume fraction array(s) and a fraction isovalue and integrates the associated attributes. More...

#include <vtkRectilinearGridConnectivity.h>

Inheritance diagram for vtkRectilinearGridConnectivity:
Inheritance graph
[legend]
Collaboration diagram for vtkRectilinearGridConnectivity:
Collaboration graph
[legend]

Public Types

typedef vtkMultiBlockDataSetAlgorithm Superclass
 
- Public Types inherited from vtkMultiBlockDataSetAlgorithm
typedef vtkAlgorithm Superclass
 
- Public Types inherited from vtkAlgorithm
enum  DesiredOutputPrecision
 
enum  DesiredOutputPrecision
 
typedef vtkObject Superclass
 

Public Member Functions

virtual const char * GetClassName ()
 
virtual int IsA (const char *type)
 
void PrintSelf (ostream &os, vtkIndent indent) override
 
void RemoveAllVolumeArrayNames ()
 Remove all volume array names. More...
 
void RemoveDoubleVolumeArrayNames ()
 Remove double-type volume array names. More...
 
void RemoveFloatVolumeArrayNames ()
 Remove float-type volume array names. More...
 
void RemoveUnsignedCharVolumeArrayNames ()
 Remove unsigned char-type volume array names. More...
 
void AddDoubleVolumeArrayName (char *arayName)
 Add a double-type volume array name to the selection list. More...
 
void AddFloatVolumeArrayName (char *arayName)
 Add a float-type volume array name to the selection list. More...
 
void AddUnsignedCharVolumeArrayName (char *arayName)
 Add an unsigned char-type volume array name to the selection list. More...
 
void AddVolumeArrayName (char *arayName)
 Add a volume array (of any type) name to the selection list. More...
 
virtual void SetVolumeFractionSurfaceValue (double)
 Set / get the volume fraction value [0, 1] used for extracting fragments. More...
 
virtual double GetVolumeFractionSurfaceValue ()
 Set / get the volume fraction value [0, 1] used for extracting fragments. More...
 
- Public Member Functions inherited from vtkMultiBlockDataSetAlgorithm
vtkMultiBlockDataSetAlgorithmNewInstance () const
 
vtkMultiBlockDataSetGetOutput ()
 
vtkMultiBlockDataSetGetOutput (int)
 
void SetInputData (vtkDataObject *)
 
void SetInputData (int, vtkDataObject *)
 
virtual int ProcessRequest (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
 
vtkMultiBlockDataSetGetOutput ()
 
vtkMultiBlockDataSetGetOutput (int)
 
void SetInputData (vtkDataObject *)
 
void SetInputData (int, vtkDataObject *)
 
virtual int ProcessRequest (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
 
- Public Member Functions inherited from vtkAlgorithm
vtkAlgorithmNewInstance () const
 
int HasExecutive ()
 
vtkExecutiveGetExecutive ()
 
virtual void SetExecutive (vtkExecutive *executive)
 
virtual int ModifyRequest (vtkInformation *request, int when)
 
vtkInformationGetInputPortInformation (int port)
 
vtkInformationGetOutputPortInformation (int port)
 
int GetNumberOfInputPorts ()
 
int GetNumberOfOutputPorts ()
 
void UpdateProgress (double amount)
 
vtkInformationGetInputArrayInformation (int idx)
 
void RemoveAllInputs ()
 
vtkDataObjectGetOutputDataObject (int port)
 
virtual void RemoveInputConnection (int port, vtkAlgorithmOutput *input)
 
virtual void RemoveInputConnection (int port, int idx)
 
virtual void RemoveAllInputConnections (int port)
 
int GetNumberOfInputConnections (int port)
 
int GetTotalNumberOfInputConnections ()
 
vtkAlgorithmOutputGetInputConnection (int port, int index)
 
vtkAlgorithmGetInputAlgorithm (int port, int index, int &algPort)
 
vtkAlgorithmGetInputAlgorithm (int port, int index)
 
vtkExecutiveGetInputExecutive (int port, int index)
 
vtkInformationGetInputInformation (int port, int index)
 
vtkInformationGetOutputInformation (int port)
 
virtual int Update (int port, vtkInformationVector *requests)
 
virtual int Update (vtkInformation *requests)
 
virtual int UpdateExtent (const int extents[6])
 
virtual void UpdateInformation ()
 
virtual void UpdateDataObject ()
 
virtual void PropagateUpdateExtent ()
 
virtual void UpdateWholeExtent ()
 
void ConvertTotalInputToPortConnection (int ind, int &port, int &conn)
 
int SetUpdateExtentToWholeExtent (int port)
 
int SetUpdateExtentToWholeExtent ()
 
void SetUpdateExtent (int port, int extent[6])
 
void SetUpdateExtent (int extent[6])
 
int ProcessRequest (vtkInformation *request, vtkCollection *inInfo, vtkInformationVector *outInfo)
 
virtual int ComputePipelineMTime (vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int requestFromOutputPort, vtkMTimeType *mtime)
 
virtual vtkInformationGetInformation ()
 
virtual void SetInformation (vtkInformation *)
 
void Register (vtkObjectBase *o) VTK_OVERRIDE
 
void UnRegister (vtkObjectBase *o) VTK_OVERRIDE
 
virtual void SetAbortExecute (int)
 
virtual int GetAbortExecute ()
 
virtual void AbortExecuteOn ()
 
virtual void AbortExecuteOff ()
 
virtual void SetProgress (double)
 
virtual double GetProgress ()
 
void SetProgressText (const char *ptext)
 
virtual char * GetProgressText ()
 
virtual unsigned long GetErrorCode ()
 
virtual void SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, const char *name)
 
virtual void SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, int fieldAttributeType)
 
virtual void SetInputArrayToProcess (int idx, vtkInformation *info)
 
virtual void SetInputArrayToProcess (int idx, int port, int connection, const char *fieldAssociation, const char *attributeTypeorName)
 
vtkDataObjectGetInputDataObject (int port, int connection)
 
virtual void SetInputConnection (int port, vtkAlgorithmOutput *input)
 
virtual void SetInputConnection (vtkAlgorithmOutput *input)
 
virtual void AddInputConnection (int port, vtkAlgorithmOutput *input)
 
virtual void AddInputConnection (vtkAlgorithmOutput *input)
 
virtual void SetInputDataObject (int port, vtkDataObject *data)
 
virtual void SetInputDataObject (vtkDataObject *data)
 
virtual void AddInputDataObject (int port, vtkDataObject *data)
 
virtual void AddInputDataObject (vtkDataObject *data)
 
vtkAlgorithmOutputGetOutputPort (int index)
 
vtkAlgorithmOutputGetOutputPort ()
 
vtkAlgorithmGetInputAlgorithm ()
 
vtkExecutiveGetInputExecutive ()
 
vtkInformationGetInputInformation ()
 
virtual void Update (int port)
 
virtual void Update ()
 
virtual int UpdatePiece (int piece, int numPieces, int ghostLevels, const int extents[6]=0)
 
virtual int UpdateTimeStep (double time, int piece=-1, int numPieces=1, int ghostLevels=0, const int extents[6]=0)
 
virtual void SetReleaseDataFlag (int)
 
virtual int GetReleaseDataFlag ()
 
void ReleaseDataFlagOn ()
 
void ReleaseDataFlagOff ()
 
int UpdateExtentIsEmpty (vtkInformation *pinfo, vtkDataObject *output)
 
int UpdateExtentIsEmpty (vtkInformation *pinfo, int extentType)
 
void SetUpdateExtent (int port, int piece, int numPieces, int ghostLevel)
 
void SetUpdateExtent (int piece, int numPieces, int ghostLevel)
 
intGetUpdateExtent ()
 
intGetUpdateExtent (int port)
 
void GetUpdateExtent (int &x0, int &x1, int &y0, int &y1, int &z0, int &z1)
 
void GetUpdateExtent (int port, int &x0, int &x1, int &y0, int &y1, int &z0, int &z1)
 
void GetUpdateExtent (int extent[6])
 
void GetUpdateExtent (int port, int extent[6])
 
int GetUpdatePiece ()
 
int GetUpdatePiece (int port)
 
int GetUpdateNumberOfPieces ()
 
int GetUpdateNumberOfPieces (int port)
 
int GetUpdateGhostLevel ()
 
int GetUpdateGhostLevel (int port)
 
void SetProgressObserver (vtkProgressObserver *)
 
virtual vtkProgressObserverGetProgressObserver ()
 
int ProcessRequest (vtkInformation *request, vtkCollection *inInfo, vtkInformationVector *outInfo)
 
virtual int ComputePipelineMTime (vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int requestFromOutputPort, vtkMTimeType *mtime)
 
virtual vtkInformationGetInformation ()
 
virtual void SetInformation (vtkInformation *)
 
void Register (vtkObjectBase *o) VTK_OVERRIDE
 
void UnRegister (vtkObjectBase *o) VTK_OVERRIDE
 
virtual void SetAbortExecute (int)
 
virtual int GetAbortExecute ()
 
virtual void AbortExecuteOn ()
 
virtual void AbortExecuteOff ()
 
virtual void SetProgress (double)
 
virtual double GetProgress ()
 
void SetProgressText (const char *ptext)
 
virtual char * GetProgressText ()
 
virtual unsigned long GetErrorCode ()
 
virtual void SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, const char *name)
 
virtual void SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, int fieldAttributeType)
 
virtual void SetInputArrayToProcess (int idx, vtkInformation *info)
 
virtual void SetInputArrayToProcess (int idx, int port, int connection, const char *fieldAssociation, const char *attributeTypeorName)
 
vtkDataObjectGetInputDataObject (int port, int connection)
 
virtual void SetInputConnection (int port, vtkAlgorithmOutput *input)
 
virtual void SetInputConnection (vtkAlgorithmOutput *input)
 
virtual void AddInputConnection (int port, vtkAlgorithmOutput *input)
 
virtual void AddInputConnection (vtkAlgorithmOutput *input)
 
virtual void SetInputDataObject (int port, vtkDataObject *data)
 
virtual void SetInputDataObject (vtkDataObject *data)
 
virtual void AddInputDataObject (int port, vtkDataObject *data)
 
virtual void AddInputDataObject (vtkDataObject *data)
 
vtkAlgorithmOutputGetOutputPort (int index)
 
vtkAlgorithmOutputGetOutputPort ()
 
vtkAlgorithmGetInputAlgorithm ()
 
vtkExecutiveGetInputExecutive ()
 
vtkInformationGetInputInformation ()
 
virtual void Update (int port)
 
virtual void Update ()
 
virtual int UpdatePiece (int piece, int numPieces, int ghostLevels, const int extents[6]=0)
 
virtual int UpdateTimeStep (double time, int piece=-1, int numPieces=1, int ghostLevels=0, const int extents[6]=0)
 
virtual void SetReleaseDataFlag (int)
 
virtual int GetReleaseDataFlag ()
 
void ReleaseDataFlagOn ()
 
void ReleaseDataFlagOff ()
 
int UpdateExtentIsEmpty (vtkInformation *pinfo, vtkDataObject *output)
 
int UpdateExtentIsEmpty (vtkInformation *pinfo, int extentType)
 
void SetUpdateExtent (int port, int piece, int numPieces, int ghostLevel)
 
void SetUpdateExtent (int piece, int numPieces, int ghostLevel)
 
intGetUpdateExtent ()
 
intGetUpdateExtent (int port)
 
void GetUpdateExtent (int &x0, int &x1, int &y0, int &y1, int &z0, int &z1)
 
void GetUpdateExtent (int port, int &x0, int &x1, int &y0, int &y1, int &z0, int &z1)
 
void GetUpdateExtent (int extent[6])
 
void GetUpdateExtent (int port, int extent[6])
 
int GetUpdatePiece ()
 
int GetUpdatePiece (int port)
 
int GetUpdateNumberOfPieces ()
 
int GetUpdateNumberOfPieces (int port)
 
int GetUpdateGhostLevel ()
 
int GetUpdateGhostLevel (int port)
 
void SetProgressObserver (vtkProgressObserver *)
 
virtual vtkProgressObserverGetProgressObserver ()
 
- Public Member Functions inherited from vtkObject
 vtkBaseTypeMacro (vtkObject, vtkObjectBase)
 
virtual void DebugOn ()
 
virtual void DebugOff ()
 
bool GetDebug ()
 
void SetDebug (bool debugFlag)
 
virtual void Modified ()
 
virtual vtkMTimeType GetMTime ()
 
void RemoveObserver (unsigned long tag)
 
void RemoveObservers (unsigned long event)
 
void RemoveObservers (const char *event)
 
void RemoveAllObservers ()
 
int HasObserver (unsigned long event)
 
int HasObserver (const char *event)
 
int InvokeEvent (unsigned long event)
 
int InvokeEvent (const char *event)
 
unsigned long AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
 
unsigned long AddObserver (const char *event, vtkCommand *, float priority=0.0f)
 
vtkCommandGetCommand (unsigned long tag)
 
void RemoveObserver (vtkCommand *)
 
void RemoveObservers (unsigned long event, vtkCommand *)
 
void RemoveObservers (const char *event, vtkCommand *)
 
int HasObserver (unsigned long event, vtkCommand *)
 
int HasObserver (const char *event, vtkCommand *)
 
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
 
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
unsigned long AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
int InvokeEvent (unsigned long event, void *callData)
 
int InvokeEvent (const char *event, void *callData)
 
unsigned long AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
 
unsigned long AddObserver (const char *event, vtkCommand *, float priority=0.0f)
 
vtkCommandGetCommand (unsigned long tag)
 
void RemoveObserver (vtkCommand *)
 
void RemoveObservers (unsigned long event, vtkCommand *)
 
void RemoveObservers (const char *event, vtkCommand *)
 
int HasObserver (unsigned long event, vtkCommand *)
 
int HasObserver (const char *event, vtkCommand *)
 
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
 
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
unsigned long AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
int InvokeEvent (unsigned long event, void *callData)
 
int InvokeEvent (const char *event, void *callData)
 
- Public Member Functions inherited from vtkObjectBase
const char * GetClassName () const
 
virtual void Delete ()
 
virtual void FastDelete ()
 
void Print (ostream &os)
 
void SetReferenceCount (int)
 
virtual void PrintHeader (ostream &os, vtkIndent indent)
 
virtual void PrintTrailer (ostream &os, vtkIndent indent)
 
int GetReferenceCount ()
 
void PrintRevisions (ostream &)
 
virtual void PrintHeader (ostream &os, vtkIndent indent)
 
virtual void PrintTrailer (ostream &os, vtkIndent indent)
 
int GetReferenceCount ()
 
void PrintRevisions (ostream &)
 

Static Public Member Functions

static int IsTypeOf (const char *type)
 
static vtkRectilinearGridConnectivitySafeDownCast (vtkObject *o)
 
static vtkRectilinearGridConnectivityNew ()
 
- Static Public Member Functions inherited from vtkMultiBlockDataSetAlgorithm
static vtkMultiBlockDataSetAlgorithmNew ()
 
static int IsTypeOf (const char *type)
 
static vtkMultiBlockDataSetAlgorithmSafeDownCast (vtkObjectBase *o)
 
- Static Public Member Functions inherited from vtkAlgorithm
static vtkAlgorithmNew ()
 
static int IsTypeOf (const char *type)
 
static vtkAlgorithmSafeDownCast (vtkObjectBase *o)
 
static vtkInformationIntegerKeyINPUT_IS_OPTIONAL ()
 
static vtkInformationIntegerKeyINPUT_IS_REPEATABLE ()
 
static vtkInformationInformationVectorKeyINPUT_REQUIRED_FIELDS ()
 
static vtkInformationStringVectorKeyINPUT_REQUIRED_DATA_TYPE ()
 
static vtkInformationInformationVectorKeyINPUT_ARRAYS_TO_PROCESS ()
 
static vtkInformationIntegerKeyINPUT_PORT ()
 
static vtkInformationIntegerKeyINPUT_CONNECTION ()
 
static vtkInformationIntegerKeyCAN_PRODUCE_SUB_EXTENT ()
 
static vtkInformationIntegerKeyCAN_HANDLE_PIECE_REQUEST ()
 
static void SetDefaultExecutivePrototype (vtkExecutive *proto)
 
- Static Public Member Functions inherited from vtkObject
static vtkObjectNew ()
 
static void BreakOnError ()
 
static void SetGlobalWarningDisplay (int val)
 
static void GlobalWarningDisplayOn ()
 
static void GlobalWarningDisplayOff ()
 
static int GetGlobalWarningDisplay ()
 
static void SetGlobalWarningDisplay (int val)
 
static void GlobalWarningDisplayOn ()
 
static void GlobalWarningDisplayOff ()
 
static int GetGlobalWarningDisplay ()
 
- Static Public Member Functions inherited from vtkObjectBase
static vtkTypeBool IsTypeOf (const char *name)
 
static vtkObjectBaseNew ()
 
static vtkObjectBaseNew ()
 

Protected Member Functions

 vtkRectilinearGridConnectivity ()
 
 ~vtkRectilinearGridConnectivity () override
 
vtkExecutiveCreateDefaultExecutive () override
 
int FillInputPortInformation (int, vtkInformation *) override
 
int RequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
 
int GetNumberOfVolumeFractionArrays ()
 Get the number of selected volume fraction arrays. More...
 
int GetNumberOfVolumeArrays ()
 Get the number of all volume arrays (not necessarily selected as the ones for extracting fragemnts). More...
 
const char * GetVolumeFractionArrayName (int arrayIdx)
 Get the name of a selected volume fraction array specified by arrayIdx. More...
 
bool IsVolumeFractionArray (const char *arayName)
 This function determines whether the specified name (arayName) refers to a selected volume fraction array (1) or not (0). More...
 
bool IsVolumeArray (const char *arayName)
 This function determines whether the specified name (arayName) refers to a volume array (1) or not (0). More...
 
int CheckVolumeDataArrays (vtkRectilinearGrid **recGrids, int numGrids)
 This function checks the consistency between a number (numGrids) of vtkRectilinearGrid blocks (recGrids, the original ones still with cell data attributes) in terms of the number of data attributes and specific data attribute array names. More...
 
void CreateDualRectilinearGrid (vtkRectilinearGrid *rectGrid, vtkRectilinearGrid *dualGrid)
 Given an input vtkRectilinearGrid dataset (rectGrid) with cell data attributes, this function creates a dual vtkRectilinearGrid dataset with point data attributes. More...
 
void ExtractFragments (vtkRectilinearGrid **dualGrds, int numBlcks, double boundBox[6], unsigned char partIndx, vtkPolyData *polyData)
 Given numBlcks vtkRectilinearGrid blocks with point data attributes (i.e.,the dual grid version of the original blocks with cell data attributes), the bounding box (boundBox) covering these blocks, and a selected volume fraction array specified by the material index (partIndx), this function extracts fragments based on this volume fraction array and exports the result to a vtkPolyData (polyData). More...
 
void IntegrateFragmentAttributes (int fragIndx, int numComps, double *attrVals)
 Given the raw fragment index (fragIndx) of either an original sub-volume extracted from marching cubes of a block or a macro-volume (combination of intra-process inter-block sub-volumes), the number (numComps) of all integrated components (of multiple cell data attributes), and the array (attrVals) storing the specific integrated values, this function integrates the attributes based on the fragment index, specifically by accumulating the input integration values to the target entry (specified by the fragment index) of a global integration array. More...
 
void ResolveEquivalentFragments ()
 This function resolves the equivalence set (intra-process intra-block, intra-process inter-block, or inter-process), followed by the face fragment Ids and integrated fragment attributes. More...
 
void ResolveFaceFragmentIds ()
 With the equivalence set (intra-process intra-block, intra-process inter- block, or inter-process) resolved in advance, this function updates each face / polygon stored in the face hash with a resolved fragment Id. More...
 
void ResolveIntegratedFragmentAttributes ()
 With the equivalence set (intra-process intra-block, intra-process inter- block, or inter-process) resolved in advance, this function integrates cell data attributes based on the fragment Id. More...
 
void ExtractFragmentPolyhedra (vtkRectilinearGrid *rectGrid, const char *fracName, double isoValue, vtkPolyData *plyHedra)
 
void InitializeFaceHash (vtkPolyData *plyHedra)
 Given a vtkPolyData (plyHedra) storing the polygons of the greater-than- isovalue sub-volumes (or polyhedra) extracted from a data block, this function initializes the size of the face hash (with the number of points of the polyhedra) used to maintain the polygons of the polyhedra. More...
 
void AddPolygonsToFaceHash (int blockIdx, vtkPolyData *plyHedra)
 Given a data block index (blockIdx) and a vtkPolyData (plyHedra) storing the polygons of the greater-than-isovalue sub-volumes (or polyhedra) that are extracted from the block, this function pushes the polygons on a per sub-volume basis to the face hash (the sub-volume Ids are used to group polygons into sub-volumes). More...
 
void ExtractFragmentPolygons (int blockIdx, int &maxFsize, vtkPolyData *plyHedra, vtkPolyData *polygons, vtkIncrementalOctreePointLocator *gPtIdGen)
 Given the index of the data block (blockIdx), the vtkPolyData (plyHedra) storing the polygons / faces of the greater-than-isovalue sub-volumes (or polyhedra) extracted from this block via marching cubes, and a global (intra-process inter-block) point locator, the function extracts fragments from this block by initializing the face hash with the raw polygons extracted from the block (via marching cubes), pushing these polygons to the face hash on a per sub-volume basis, detecting internal faces or polygons, registering faces to the intra-process intra-block equivalence set by the intermediate fragment Id, resolving the equivalence set, updating the fragment Id of each polygon, and integrating cell data attributes based on the fragment Id, grouping / re-arranging the 'valid' faces (as opposed to those removed internal faces) in the face hash by the fragment Id (to construct macro-volumes), accessing the full version of each valid face from the original polyhedra, and attaching the fragment Id as well as other integrated cell data attributes to each cell in the output vtkPolyData data (polygons) where each point is assigned with a global (intra-process inter-block) Id (via a global point locator gPtIdGen) used for subsequent combination of fragments extracted from multiple blocks. More...
 
void InitializeFaceHash (vtkPolyData **plyDatas, int numPolys)
 Given a number (numPolys) of vtkPolyData objects (plyDatas) storing the fragments extracted from the multiple data blocks, this function inits the face hash (with the maximum global inter-block point Id: a point data attribute attached to each point of these vtkPolyData objects) that is used to combine these intermediate fragments. More...
 
void AddPolygonsToFaceHash (vtkPolyData **plyDatas, int *maxFsize, int numPolys)
 Given a number (numPolys) of vtkPolyData objects (plyDatas) storing the initial fragments (macro-volumes — combination of greater-than-isovalue sub-volumes) extracted from multiple blocks and an array of values (maxFsize) storing the maximum number of faces that a macro-volume may contain in each block (used to allocate appropriate memory for buffering the polygons of a macro-volume), this function pushes these polygons on a per macro-volume basis to the face hash (fragment Ids are used to group polygons to macro-volumes), detects internal faces / polygons, and then registers polygons to the (intra-process inter-block) equivalence set by the intermediate fragment Id. More...
 
void GenerateOutputFromSingleProcess (vtkPolyData **surfaces, int numSurfs, unsigned char partIndx, vtkPolyData *polyData)
 With the intra-process inter-block equivalence set resolved, intra-process inter-block fragment Ids resolved, and cell data attributes integrated by the fragment Id, this function retrieves the face hash for the 'valid' faces (as opposed to those removed internal faces), accesses their full version from the vtkPolyData objects ('surfaces') that store the polygons of intermediate fragments extracted from multiple ('numSurfs') data blocks, and exports these complete yet 'valid' polygons to the output vtkPolyData ('polyData') while attaching the index of the material (partIndx, i.e. More...
 
void CreateInterProcessPolygons (vtkPolyData *fragPoly, vtkPolyData *procPoly, vtkIncrementalOctreePointLocator *gPtIdGen, int &maxFsize)
 Given the vtkPolyData (fragPoly) storing the fragments extracted from a single process (assigned with either one block or multiple blocks), this function groups / re-arranges the polygons by the (intra-process inter- block) fragment Id, determines the maximum number (maxFsize) of polygons (belonging to a fragment) with the same fragment Id, and exports the re- arranged polygons with the associated fragment Ids and all integrated cell data attributes to the output inter-process vtkPolyData (procPoly) where each point is assigned with a global inter-process point Id (through a global point locator 'gPtIdGen') as the point data attribute used later for combining the fragments across multiple processes. More...
 
void AddInterProcessPolygonsToFaceHash (vtkPolyData **procPlys, int *maxFsize, int numProcs)
 Given a number (numProcs) of vtkPolyData objects (procPlys) storing the (initial) fragments extracted from multiple processes and an array of values (maxFsize) storing the maximum number of faces that an initial fragment may contain on each process (used to allocate appropriate memory for buffering the polygons of an initial fragment), this function pushes these polygons to the face hash on a per fragment basis (the fragment Ids are used to group polygons into initial fragments), detects internal faces / polygons, and registers polygons to the inter-process equivalence set by the intermediate fragment Id. More...
 
void GenerateOutputFromMultiProcesses (vtkPolyData **procPlys, int numProcs, unsigned char partIndx, vtkPolyData *polyData)
 With the inter-process equivalence set resolved, inter-process fragment Ids resolved, and cell data attributes integrated by the fragment Id, this function retrieves the face hash for the 'valid' faces (as opposed to the removed internal faces), accesses their complete version (according to the information stored in the face) from the vtkPolyData objects (procPlys) that store the polygons of the fragments extracted from multiple (numProcs) processes, and exports these complete 'valid' polygons to the output vtkPolyData (polyData) while attaching the index of the material (partIndx, corresponding to the volume fraction array used to extract the fragments) to each polygon as a cell data attribute. More...
 
- Protected Member Functions inherited from vtkMultiBlockDataSetAlgorithm
virtual vtkObjectBaseNewInstanceInternal () const
 
 vtkMultiBlockDataSetAlgorithm ()
 
 ~vtkMultiBlockDataSetAlgorithm ()
 
virtual int FillOutputPortInformation (int port, vtkInformation *info)
 
vtkDataObjectGetInput (int port)
 
virtual int RequestDataObject (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
virtual int RequestInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
virtual int RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
virtual int RequestDataObject (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
virtual int RequestInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
virtual int RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
- Protected Member Functions inherited from vtkAlgorithm
 vtkAlgorithm ()
 
 ~vtkAlgorithm ()
 
virtual void SetNumberOfInputPorts (int n)
 
virtual void SetNumberOfOutputPorts (int n)
 
int InputPortIndexInRange (int index, const char *action)
 
int OutputPortIndexInRange (int index, const char *action)
 
int GetInputArrayAssociation (int idx, vtkInformationVector **inputVector)
 
void ReportReferences (vtkGarbageCollector *) VTK_OVERRIDE
 
virtual void SetNumberOfInputConnections (int port, int n)
 
int GetInputArrayAssociation (int idx, int connection, vtkInformationVector **inputVector)
 
int GetInputArrayAssociation (int idx, vtkDataObject *input)
 
vtkDataArrayGetInputArrayToProcess (int idx, vtkInformationVector **inputVector)
 
vtkDataArrayGetInputArrayToProcess (int idx, vtkInformationVector **inputVector, int &association)
 
vtkDataArrayGetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector)
 
vtkDataArrayGetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association)
 
vtkDataArrayGetInputArrayToProcess (int idx, vtkDataObject *input)
 
vtkDataArrayGetInputArrayToProcess (int idx, vtkDataObject *input, int &association)
 
vtkAbstractArrayGetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector)
 
vtkAbstractArrayGetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector, int &association)
 
vtkAbstractArrayGetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector)
 
vtkAbstractArrayGetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association)
 
vtkAbstractArrayGetInputAbstractArrayToProcess (int idx, vtkDataObject *input)
 
vtkAbstractArrayGetInputAbstractArrayToProcess (int idx, vtkDataObject *input, int &association)
 
vtkInformationGetInputArrayFieldInformation (int idx, vtkInformationVector **inputVector)
 
virtual void SetNthInputConnection (int port, int index, vtkAlgorithmOutput *input)
 
void SetInputDataInternal (int port, vtkDataObject *input)
 
void AddInputDataInternal (int port, vtkDataObject *input)
 
int GetInputArrayAssociation (int idx, int connection, vtkInformationVector **inputVector)
 
int GetInputArrayAssociation (int idx, vtkDataObject *input)
 
vtkDataArrayGetInputArrayToProcess (int idx, vtkInformationVector **inputVector)
 
vtkDataArrayGetInputArrayToProcess (int idx, vtkInformationVector **inputVector, int &association)
 
vtkDataArrayGetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector)
 
vtkDataArrayGetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association)
 
vtkDataArrayGetInputArrayToProcess (int idx, vtkDataObject *input)
 
vtkDataArrayGetInputArrayToProcess (int idx, vtkDataObject *input, int &association)
 
vtkAbstractArrayGetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector)
 
vtkAbstractArrayGetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector, int &association)
 
vtkAbstractArrayGetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector)
 
vtkAbstractArrayGetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association)
 
vtkAbstractArrayGetInputAbstractArrayToProcess (int idx, vtkDataObject *input)
 
vtkAbstractArrayGetInputAbstractArrayToProcess (int idx, vtkDataObject *input, int &association)
 
vtkInformationGetInputArrayFieldInformation (int idx, vtkInformationVector **inputVector)
 
virtual void SetErrorCode (unsigned long)
 
virtual void SetNthInputConnection (int port, int index, vtkAlgorithmOutput *input)
 
void SetInputDataInternal (int port, vtkDataObject *input)
 
void AddInputDataInternal (int port, vtkDataObject *input)
 
- Protected Member Functions inherited from vtkObject
 vtkObject ()
 
virtual ~vtkObject ()
 
void RegisterInternal (vtkObjectBase *, vtkTypeBool check) VTK_OVERRIDE
 
void UnRegisterInternal (vtkObjectBase *, vtkTypeBool check) VTK_OVERRIDE
 
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL)
 
void InternalReleaseFocus ()
 
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL)
 
void InternalReleaseFocus ()
 
- Protected Member Functions inherited from vtkObjectBase
 vtkObjectBase ()
 
virtual ~vtkObjectBase ()
 
virtual void CollectRevisions (ostream &)
 
 vtkObjectBase (const vtkObjectBase &)
 
void operator= (const vtkObjectBase &)
 

Protected Attributes

int DualGridsReady
 
int NumberOfBlocks
 
double DataBlocksTime
 
double DualGridBounds [6]
 
double VolumeFractionSurfaceValue
 
vtkDoubleArrayFragmentValues
 
vtkEquivalenceSetEquivalenceSet
 
vtkRectilinearGrid ** DualGridBlocks
 
vtkMultiProcessControllerController
 
vtkRectilinearGridConnectivityFaceHash * FaceHash
 
vtkRectilinearGridConnectivityInternal * Internal
 
- Protected Attributes inherited from vtkAlgorithm
vtkInformationInformation
 
double Progress
 
char * ProgressText
 
vtkProgressObserverProgressObserver
 
unsigned long ErrorCode
 
- Protected Attributes inherited from vtkObject
bool Debug
 
vtkTimeStamp MTime
 
vtkSubjectHelper * SubjectHelper
 
- Protected Attributes inherited from vtkObjectBase
vtkAtomicInt32 ReferenceCount
 
vtkWeakPointerBase ** WeakPointers
 

Additional Inherited Members

- Public Attributes inherited from vtkAlgorithm
 SINGLE_PRECISION
 
 DOUBLE_PRECISION
 
 DEFAULT_PRECISION
 
int AbortExecute
 
- Static Protected Member Functions inherited from vtkAlgorithm
static vtkInformationIntegerKeyPORT_REQUIREMENTS_FILLED ()
 
- Static Protected Attributes inherited from vtkAlgorithm
static vtkExecutiveDefaultExecutivePrototype
 

Detailed Description

Extracts material fragments from multi-block vtkRectilinearGrid datasets based on the selected volume fraction array(s) and a fraction isovalue and integrates the associated attributes.

Given one or multiple vtkRectilinearGrid datasets with one or multiple volume fraction arrays (representing some materials) and possibly other attributes (like pressure, density, and et al) as the cell data, this filter extracts fragments from the dual grids (with the aforementioned values as the point data) based on the (at least one) selected fraction array(s) in combination with a specified fraction value and integrates the attributes (e.g., volume, pressure, density) across the surface of each fragment. Each material, made up of one or multiple disconnected fragments, is exported to the output vtkMultiBlockDataSet as a single block that is a vtkPolyData storing the exterior polygons of the fragment (s) and the associated cell data attributes as the integrated result (of the fragment) in terms of the volume, pressure, density, and et al.

This filter differs from a closely related filter vtkGridConnectivity in that the former extracts fragments at a sub-cell resolution to create relatively smooth surfaces while the latter works at the cell granularity (a whole cell is taken as either inside or outside a fragment) to cause staircasing artifacts. In fact, an extended 256-entry marching cubes LUT is designed for generating cube faces (either truncated by iso-lines or not) in addition to iso-triangles. These two kinds of polygons in combination represent the surface(s) of the greater-than-isovalue sub- volume(s) extracted in a cube.

vtkRectilinearGridConnectivity performs fragments extraction using a three-level mechanism, i.e., intra-process intra-block, intra-process inter-block, and inter-process in increasing order, with the fragments extracted (in the form of polygons stored as a vtkPolyData) at a lower level submitted to its upper level for further extraction (specifically by combining multiple disconnected fragments into a single one wherever possible). Since a fragment is represented by means of its exterior faces / polygons, extracting fragments turns into the task of detecting and removing internal faces (an internal face is the one shared by two sub- volumes or fragments) in a way of combining the associated sub-volumes or fragments. For the fragemnts extraction conducted at any level, the polygons of the input (e.g., greater-than-isovalue sub-volumes resulting from marching cubes for the lowest level extraction) are pushed to a face hash (that accepts the three smallest point Ids of a polygon: triangle, quad, or pentagon) on a per sub-volume or fragment basis. Once the face hash detects an internal face, an entry is added to an equivalence set (by means of class vtkEquivalenceSet) to correlate the two fragment Ids that are attached to the two associated sub-volumes or fragments' polygons. After resolving the equivalence set, each face that remains in the face hash (internal faces are masked as invalid) is updated with a resolved fragment Id. In this way the original complete polygons (triangles, quads, pentagons) pointed to by the remaining hashed faces with the same resolved fragment Id are retrieved from the input vtkPolyData and hence combined by means of the same fragemnt Id.

See also
vtkGridConnectivity vtkExtractCTHPart vtkPolyData vtkRectilinearGrid vtkMultiBlockDataSetAlgorithm

Definition at line 82 of file vtkRectilinearGridConnectivity.h.

Member Typedef Documentation

◆ Superclass

Definition at line 86 of file vtkRectilinearGridConnectivity.h.

Constructor & Destructor Documentation

◆ vtkRectilinearGridConnectivity()

vtkRectilinearGridConnectivity::vtkRectilinearGridConnectivity ( )
protected

◆ ~vtkRectilinearGridConnectivity()

vtkRectilinearGridConnectivity::~vtkRectilinearGridConnectivity ( )
overrideprotected

Member Function Documentation

◆ GetClassName()

virtual const char* vtkRectilinearGridConnectivity::GetClassName ( )
virtual

◆ IsTypeOf()

static int vtkRectilinearGridConnectivity::IsTypeOf ( const char *  type)
static

◆ IsA()

virtual int vtkRectilinearGridConnectivity::IsA ( const char *  type)
virtual

Reimplemented from vtkMultiBlockDataSetAlgorithm.

◆ SafeDownCast()

static vtkRectilinearGridConnectivity* vtkRectilinearGridConnectivity::SafeDownCast ( vtkObject o)
static

◆ New()

static vtkRectilinearGridConnectivity* vtkRectilinearGridConnectivity::New ( )
static

◆ PrintSelf()

void vtkRectilinearGridConnectivity::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
overridevirtual

Reimplemented from vtkMultiBlockDataSetAlgorithm.

◆ SetVolumeFractionSurfaceValue()

virtual void vtkRectilinearGridConnectivity::SetVolumeFractionSurfaceValue ( double  )
virtual

Set / get the volume fraction value [0, 1] used for extracting fragments.

◆ GetVolumeFractionSurfaceValue()

virtual double vtkRectilinearGridConnectivity::GetVolumeFractionSurfaceValue ( )
virtual

Set / get the volume fraction value [0, 1] used for extracting fragments.

◆ RemoveAllVolumeArrayNames()

void vtkRectilinearGridConnectivity::RemoveAllVolumeArrayNames ( )

Remove all volume array names.

◆ RemoveDoubleVolumeArrayNames()

void vtkRectilinearGridConnectivity::RemoveDoubleVolumeArrayNames ( )

Remove double-type volume array names.

◆ RemoveFloatVolumeArrayNames()

void vtkRectilinearGridConnectivity::RemoveFloatVolumeArrayNames ( )

Remove float-type volume array names.

◆ RemoveUnsignedCharVolumeArrayNames()

void vtkRectilinearGridConnectivity::RemoveUnsignedCharVolumeArrayNames ( )

Remove unsigned char-type volume array names.

◆ AddDoubleVolumeArrayName()

void vtkRectilinearGridConnectivity::AddDoubleVolumeArrayName ( char *  arayName)

Add a double-type volume array name to the selection list.

◆ AddFloatVolumeArrayName()

void vtkRectilinearGridConnectivity::AddFloatVolumeArrayName ( char *  arayName)

Add a float-type volume array name to the selection list.

◆ AddUnsignedCharVolumeArrayName()

void vtkRectilinearGridConnectivity::AddUnsignedCharVolumeArrayName ( char *  arayName)

Add an unsigned char-type volume array name to the selection list.

◆ AddVolumeArrayName()

void vtkRectilinearGridConnectivity::AddVolumeArrayName ( char *  arayName)

Add a volume array (of any type) name to the selection list.

◆ CreateDefaultExecutive()

vtkExecutive* vtkRectilinearGridConnectivity::CreateDefaultExecutive ( )
overrideprotectedvirtual

Reimplemented from vtkMultiBlockDataSetAlgorithm.

◆ FillInputPortInformation()

int vtkRectilinearGridConnectivity::FillInputPortInformation ( int  ,
vtkInformation  
)
overrideprotectedvirtual

Reimplemented from vtkMultiBlockDataSetAlgorithm.

◆ RequestData()

int vtkRectilinearGridConnectivity::RequestData ( vtkInformation request,
vtkInformationVector **  inputVector,
vtkInformationVector outputVector 
)
overrideprotectedvirtual

Reimplemented from vtkMultiBlockDataSetAlgorithm.

◆ GetNumberOfVolumeFractionArrays()

int vtkRectilinearGridConnectivity::GetNumberOfVolumeFractionArrays ( )
protected

Get the number of selected volume fraction arrays.

◆ GetNumberOfVolumeArrays()

int vtkRectilinearGridConnectivity::GetNumberOfVolumeArrays ( )
protected

Get the number of all volume arrays (not necessarily selected as the ones for extracting fragemnts).

◆ GetVolumeFractionArrayName()

const char* vtkRectilinearGridConnectivity::GetVolumeFractionArrayName ( int  arrayIdx)
protected

Get the name of a selected volume fraction array specified by arrayIdx.

◆ IsVolumeFractionArray()

bool vtkRectilinearGridConnectivity::IsVolumeFractionArray ( const char *  arayName)
protected

This function determines whether the specified name (arayName) refers to a selected volume fraction array (1) or not (0).

◆ IsVolumeArray()

bool vtkRectilinearGridConnectivity::IsVolumeArray ( const char *  arayName)
protected

This function determines whether the specified name (arayName) refers to a volume array (1) or not (0).

Note the array is not necessarily a selected one used for extracting fragments.

◆ CheckVolumeDataArrays()

int vtkRectilinearGridConnectivity::CheckVolumeDataArrays ( vtkRectilinearGrid **  recGrids,
int  numGrids 
)
protected

This function checks the consistency between a number (numGrids) of vtkRectilinearGrid blocks (recGrids, the original ones still with cell data attributes) in terms of the number of data attributes and specific data attribute array names.

It also checks the consistency of multiple (unless one) volume fraction arrays in the data type. This function returns 1 for consistency and 0 for inconsistency.

◆ CreateDualRectilinearGrid()

void vtkRectilinearGridConnectivity::CreateDualRectilinearGrid ( vtkRectilinearGrid rectGrid,
vtkRectilinearGrid dualGrid 
)
protected

Given an input vtkRectilinearGrid dataset (rectGrid) with cell data attributes, this function creates a dual vtkRectilinearGrid dataset with point data attributes.

◆ ExtractFragments()

void vtkRectilinearGridConnectivity::ExtractFragments ( vtkRectilinearGrid **  dualGrds,
int  numBlcks,
double  boundBox[6],
unsigned char  partIndx,
vtkPolyData polyData 
)
protected

Given numBlcks vtkRectilinearGrid blocks with point data attributes (i.e.,the dual grid version of the original blocks with cell data attributes), the bounding box (boundBox) covering these blocks, and a selected volume fraction array specified by the material index (partIndx), this function extracts fragments based on this volume fraction array and exports the result to a vtkPolyData (polyData).

◆ IntegrateFragmentAttributes()

void vtkRectilinearGridConnectivity::IntegrateFragmentAttributes ( int  fragIndx,
int  numComps,
double attrVals 
)
protected

Given the raw fragment index (fragIndx) of either an original sub-volume extracted from marching cubes of a block or a macro-volume (combination of intra-process inter-block sub-volumes), the number (numComps) of all integrated components (of multiple cell data attributes), and the array (attrVals) storing the specific integrated values, this function integrates the attributes based on the fragment index, specifically by accumulating the input integration values to the target entry (specified by the fragment index) of a global integration array.

In this way, different sub-volumes or macro-volumes belonging to the same fragment have their integrated results summed together.

◆ ResolveEquivalentFragments()

void vtkRectilinearGridConnectivity::ResolveEquivalentFragments ( )
protected

This function resolves the equivalence set (intra-process intra-block, intra-process inter-block, or inter-process), followed by the face fragment Ids and integrated fragment attributes.

◆ ResolveFaceFragmentIds()

void vtkRectilinearGridConnectivity::ResolveFaceFragmentIds ( )
protected

With the equivalence set (intra-process intra-block, intra-process inter- block, or inter-process) resolved in advance, this function updates each face / polygon stored in the face hash with a resolved fragment Id.

In this way, polygons of multiple sub-volumes or macro-volumes that have different (old) fragment Ids are automatically grouped into a single entity (macro-volume or fragment, respectively) by being assigned with the same (new) fragment Id.

◆ ResolveIntegratedFragmentAttributes()

void vtkRectilinearGridConnectivity::ResolveIntegratedFragmentAttributes ( )
protected

With the equivalence set (intra-process intra-block, intra-process inter- block, or inter-process) resolved in advance, this function integrates cell data attributes based on the fragment Id.

Specifically, multiple entries (of the old array of integrated attributes) with the same fragment Id have their integration results summed together and are then combined into a single entry (of the new shortened array of integrated attributes).

◆ ExtractFragmentPolyhedra()

void vtkRectilinearGridConnectivity::ExtractFragmentPolyhedra ( vtkRectilinearGrid rectGrid,
const char *  fracName,
double  isoValue,
vtkPolyData plyHedra 
)
protected

◆ InitializeFaceHash() [1/2]

void vtkRectilinearGridConnectivity::InitializeFaceHash ( vtkPolyData plyHedra)
protected

Given a vtkPolyData (plyHedra) storing the polygons of the greater-than- isovalue sub-volumes (or polyhedra) extracted from a data block, this function initializes the size of the face hash (with the number of points of the polyhedra) used to maintain the polygons of the polyhedra.

◆ AddPolygonsToFaceHash() [1/2]

void vtkRectilinearGridConnectivity::AddPolygonsToFaceHash ( int  blockIdx,
vtkPolyData plyHedra 
)
protected

Given a data block index (blockIdx) and a vtkPolyData (plyHedra) storing the polygons of the greater-than-isovalue sub-volumes (or polyhedra) that are extracted from the block, this function pushes the polygons on a per sub-volume basis to the face hash (the sub-volume Ids are used to group polygons into sub-volumes).

For each internal polygon / face shared by two sub-volumes, an entry is added to the (intra-process intra-block) equivalence set to associate the fragment Ids assigned to the two sub- volumes' polygons.

◆ ExtractFragmentPolygons()

void vtkRectilinearGridConnectivity::ExtractFragmentPolygons ( int  blockIdx,
int maxFsize,
vtkPolyData plyHedra,
vtkPolyData polygons,
vtkIncrementalOctreePointLocator gPtIdGen 
)
protected

Given the index of the data block (blockIdx), the vtkPolyData (plyHedra) storing the polygons / faces of the greater-than-isovalue sub-volumes (or polyhedra) extracted from this block via marching cubes, and a global (intra-process inter-block) point locator, the function extracts fragments from this block by initializing the face hash with the raw polygons extracted from the block (via marching cubes), pushing these polygons to the face hash on a per sub-volume basis, detecting internal faces or polygons, registering faces to the intra-process intra-block equivalence set by the intermediate fragment Id, resolving the equivalence set, updating the fragment Id of each polygon, and integrating cell data attributes based on the fragment Id, grouping / re-arranging the 'valid' faces (as opposed to those removed internal faces) in the face hash by the fragment Id (to construct macro-volumes), accessing the full version of each valid face from the original polyhedra, and attaching the fragment Id as well as other integrated cell data attributes to each cell in the output vtkPolyData data (polygons) where each point is assigned with a global (intra-process inter-block) Id (via a global point locator gPtIdGen) used for subsequent combination of fragments extracted from multiple blocks.

Argument maxFSize returns the maximum number of faces a macro-volume (combination of sub-volumes) may contain in a block.

◆ InitializeFaceHash() [2/2]

void vtkRectilinearGridConnectivity::InitializeFaceHash ( vtkPolyData **  plyDatas,
int  numPolys 
)
protected

Given a number (numPolys) of vtkPolyData objects (plyDatas) storing the fragments extracted from the multiple data blocks, this function inits the face hash (with the maximum global inter-block point Id: a point data attribute attached to each point of these vtkPolyData objects) that is used to combine these intermediate fragments.

◆ AddPolygonsToFaceHash() [2/2]

void vtkRectilinearGridConnectivity::AddPolygonsToFaceHash ( vtkPolyData **  plyDatas,
int maxFsize,
int  numPolys 
)
protected

Given a number (numPolys) of vtkPolyData objects (plyDatas) storing the initial fragments (macro-volumes — combination of greater-than-isovalue sub-volumes) extracted from multiple blocks and an array of values (maxFsize) storing the maximum number of faces that a macro-volume may contain in each block (used to allocate appropriate memory for buffering the polygons of a macro-volume), this function pushes these polygons on a per macro-volume basis to the face hash (fragment Ids are used to group polygons to macro-volumes), detects internal faces / polygons, and then registers polygons to the (intra-process inter-block) equivalence set by the intermediate fragment Id.

For each internal polygon / face shared by two macro-volumes, an entry is added to the equivalence set to associate the fragment Ids assigned to the two macro-volumes' polygons.

◆ GenerateOutputFromSingleProcess()

void vtkRectilinearGridConnectivity::GenerateOutputFromSingleProcess ( vtkPolyData **  surfaces,
int  numSurfs,
unsigned char  partIndx,
vtkPolyData polyData 
)
protected

With the intra-process inter-block equivalence set resolved, intra-process inter-block fragment Ids resolved, and cell data attributes integrated by the fragment Id, this function retrieves the face hash for the 'valid' faces (as opposed to those removed internal faces), accesses their full version from the vtkPolyData objects ('surfaces') that store the polygons of intermediate fragments extracted from multiple ('numSurfs') data blocks, and exports these complete yet 'valid' polygons to the output vtkPolyData ('polyData') while attaching the index of the material (partIndx, i.e.

the volume fraction array used to extract fragments) to each polygon as a cell data attribute. In a word, this function exports a combined version of the fragments extracted from multiple blocks assigned to a single process.

◆ CreateInterProcessPolygons()

void vtkRectilinearGridConnectivity::CreateInterProcessPolygons ( vtkPolyData fragPoly,
vtkPolyData procPoly,
vtkIncrementalOctreePointLocator gPtIdGen,
int maxFsize 
)
protected

Given the vtkPolyData (fragPoly) storing the fragments extracted from a single process (assigned with either one block or multiple blocks), this function groups / re-arranges the polygons by the (intra-process inter- block) fragment Id, determines the maximum number (maxFsize) of polygons (belonging to a fragment) with the same fragment Id, and exports the re- arranged polygons with the associated fragment Ids and all integrated cell data attributes to the output inter-process vtkPolyData (procPoly) where each point is assigned with a global inter-process point Id (through a global point locator 'gPtIdGen') as the point data attribute used later for combining the fragments across multiple processes.

◆ AddInterProcessPolygonsToFaceHash()

void vtkRectilinearGridConnectivity::AddInterProcessPolygonsToFaceHash ( vtkPolyData **  procPlys,
int maxFsize,
int  numProcs 
)
protected

Given a number (numProcs) of vtkPolyData objects (procPlys) storing the (initial) fragments extracted from multiple processes and an array of values (maxFsize) storing the maximum number of faces that an initial fragment may contain on each process (used to allocate appropriate memory for buffering the polygons of an initial fragment), this function pushes these polygons to the face hash on a per fragment basis (the fragment Ids are used to group polygons into initial fragments), detects internal faces / polygons, and registers polygons to the inter-process equivalence set by the intermediate fragment Id.

For each internal polygon / face shared by two initial fragments, an entry is added to the equivalence set in a way to associate the fragment Ids assigned to the two initial fragments' polygons. Note each face in the face hash is assigned with a process Id that is used later to retrieve the source vtkPolyData for the target complete polygon if the face remains in the face hash after removing internal faces.

◆ GenerateOutputFromMultiProcesses()

void vtkRectilinearGridConnectivity::GenerateOutputFromMultiProcesses ( vtkPolyData **  procPlys,
int  numProcs,
unsigned char  partIndx,
vtkPolyData polyData 
)
protected

With the inter-process equivalence set resolved, inter-process fragment Ids resolved, and cell data attributes integrated by the fragment Id, this function retrieves the face hash for the 'valid' faces (as opposed to the removed internal faces), accesses their complete version (according to the information stored in the face) from the vtkPolyData objects (procPlys) that store the polygons of the fragments extracted from multiple (numProcs) processes, and exports these complete 'valid' polygons to the output vtkPolyData (polyData) while attaching the index of the material (partIndx, corresponding to the volume fraction array used to extract the fragments) to each polygon as a cell data attribute.

In a word, this function exports a combined version of the fragments extracted from multiple processes (of which each is assigned with either one block or multiple blocks).

Member Data Documentation

◆ DualGridsReady

int vtkRectilinearGridConnectivity::DualGridsReady
protected

Definition at line 142 of file vtkRectilinearGridConnectivity.h.

◆ NumberOfBlocks

int vtkRectilinearGridConnectivity::NumberOfBlocks
protected

Definition at line 143 of file vtkRectilinearGridConnectivity.h.

◆ DataBlocksTime

double vtkRectilinearGridConnectivity::DataBlocksTime
protected

Definition at line 144 of file vtkRectilinearGridConnectivity.h.

◆ DualGridBounds

double vtkRectilinearGridConnectivity::DualGridBounds[6]
protected

Definition at line 145 of file vtkRectilinearGridConnectivity.h.

◆ VolumeFractionSurfaceValue

double vtkRectilinearGridConnectivity::VolumeFractionSurfaceValue
protected

Definition at line 146 of file vtkRectilinearGridConnectivity.h.

◆ FragmentValues

vtkDoubleArray* vtkRectilinearGridConnectivity::FragmentValues
protected

Definition at line 147 of file vtkRectilinearGridConnectivity.h.

◆ EquivalenceSet

vtkEquivalenceSet* vtkRectilinearGridConnectivity::EquivalenceSet
protected

Definition at line 148 of file vtkRectilinearGridConnectivity.h.

◆ DualGridBlocks

vtkRectilinearGrid** vtkRectilinearGridConnectivity::DualGridBlocks
protected

Definition at line 149 of file vtkRectilinearGridConnectivity.h.

◆ Controller

vtkMultiProcessController* vtkRectilinearGridConnectivity::Controller
protected

Definition at line 150 of file vtkRectilinearGridConnectivity.h.

◆ FaceHash

vtkRectilinearGridConnectivityFaceHash* vtkRectilinearGridConnectivity::FaceHash
protected

Definition at line 151 of file vtkRectilinearGridConnectivity.h.

◆ Internal

vtkRectilinearGridConnectivityInternal* vtkRectilinearGridConnectivity::Internal
protected

Definition at line 152 of file vtkRectilinearGridConnectivity.h.


The documentation for this class was generated from the following file: