vtuCells Class Reference

A deep-copy description of an OpenFOAM volume mesh in data structures suitable for VTK UnstructuredGrid, including the possibility of decomposing polyhedral cells into primitive cell types. More...

Inheritance diagram for vtuCells:
Collaboration diagram for vtuCells:

Public Member Functions

 vtuCells (const vtuCells &)=delete
 No copy construct. More...
 
void operator= (const vtuCells &)=delete
 No copy assignment. More...
 
 vtuCells (const enum contentType output=contentType::XML, const bool decompose=false)
 Default construct (XML format, no polyhedral decomposition) More...
 
 vtuCells (const polyMesh &mesh, const enum contentType output=contentType::XML, const bool decompose=false)
 Construct from components, create output information immediately. More...
 
 vtuCells (const vtk::outputOptions opts, const bool decompose=false)
 Construct from components. More...
 
 vtuCells (const polyMesh &mesh, const vtk::outputOptions opts, const bool decompose=false)
 Construct from components, create output information immediately. More...
 
enum contentType content () const noexcept
 The output content type. More...
 
bool decomposeRequested () const noexcept
 Query the polyhedral decompose requested flag. More...
 
bool merged () const noexcept
 Query the point merge status. More...
 
bool empty () const noexcept
 True if no cellTypes are populated. More...
 
label size () const noexcept
 The size of populated cellTypes (the number of cells) More...
 
bool useCellMap () const noexcept
 The cellMap is non-identity for a SUBSET_MESH or when there are decomposed cells. More...
 
bool usePointMap () const noexcept
 The pointMap is available and non-identity (eg, after point merge) More...
 
bool is_hdf () const noexcept
 Test for hdf content type. More...
 
void clear ()
 Reset all sizes to zero. More...
 
void reset (const polyMesh &mesh)
 Create the geometry using the previously requested output and decomposition types. More...
 
void reset (const polyMesh &mesh, const labelUList &subsetCellsIds)
 Create the geometry for a mesh subset, using previously requested output and decomposition types. More...
 
void reset (const polyMesh &mesh, const enum contentType output, const bool decompose)
 Respecify requested output and decomposition type prior to creating the geometry. More...
 
void resetShapes (const UList< cellShape > &shapes)
 Reset sizing using primitive shapes only (ADVANCED USAGE) More...
 
void renumberCells (const labelUList &mapping)
 Renumber cell ids to account for subset meshes. More...
 
void renumberPoints (const labelUList &mapping)
 Renumber point ids to account for subset meshes. More...
 
void addPointCellLabels (const labelUList &cellIds)
 Define which additional cell-centres are to be used (ADVANCED!) More...
 
void mergePoints (const polyMesh &mesh)
 Determine topological point merging, renumbers contents accordingly. More...
 
const List< uint8_t > & cellTypes () const noexcept
 The cell "types" (legacy: "CELL_TYPES") More...
 
const labelListvertLabels () const noexcept
 The cell "connectivity" (legacy: "CELLS") More...
 
const labelListvertOffsets () const noexcept
 The "offsets" into the connectivity list vertLabels() More...
 
const labelListfaceLabels () const noexcept
 The polyhedral "faces" or "FaceConnectivity". More...
 
const labelListfaceOffsets () const noexcept
 The "facesoffset" or the "FaceOffsets". More...
 
const labelListpolyFaceIds () const
 Face ids per polyhedral cell (HDF only) More...
 
const labelListpolyFaceOffsets () const noexcept
 Offsets into the polyhedral face ids (HDF only) More...
 
const labelListaddPointCellLabels () const noexcept
 Additional point addressing (from added point to original cell) More...
 
const labelListcellMap () const noexcept
 The mesh cell ids for all cells (regular and decomposed). More...
 
const labelUListpointMap () const noexcept
 The mesh point ids [FUTURE USE]. More...
 
refPtr< labelListvertLabels (label pointOffset) const
 The "connectivity" (legacy: "CELLS") adjusted by the specified (global) point offset. More...
 
refPtr< labelListvertOffsets (label beginOffset, bool syncPar=false) const
 Connectivity (vertices) offsets for each cell adjusted by the specified (global) cell offset. More...
 
refPtr< labelListfaceLabels (label pointOffset) const
 The "faces" stream/connectivity (non-legacy only) adjusted by the specified (global) point offset. More...
 
refPtr< labelListfaceOffsets (label beginOffset, bool syncPar=false) const
 The offsets into "faces" (non-legacy only) adjusted by the specified (global) face offset. More...
 
refPtr< labelListpolyFaceIds (label beginOffset) const
 The "PolyhedronToFaces" ids (HDF only) adjusted by the specified (global) face offset. More...
 
refPtr< labelListpolyFaceOffsets (label beginOffset, bool syncPar=false) const
 The "PolyhedronOffsets" (HDF only), which are the offsets into the polyhedral face ids, adjusted by the specified (global) cell offset. More...
 
template<class PointType = Foam::point>
tmp< Field< PointType > > points (const polyMesh &mesh) const
 Return the mesh points, possibly with cell centres for addPointCellLabels() More...
 
- Public Member Functions inherited from vtuSizing
 vtuSizing () noexcept
 Default construct. More...
 
 vtuSizing (const polyMesh &mesh)
 Construct sizing by analyzing the mesh. More...
 
 vtuSizing (const polyMesh &mesh, const bool decompose)
 Construct sizing by analyzing the mesh. More...
 
void reset (const polyMesh &mesh, const bool decompose=false)
 Reset sizing by analyzing the mesh. More...
 
void reset (const polyMesh &mesh, const labelUList &subsetCellsIds, const bool decompose=false)
 Reset sizing by analyzing a subset of the mesh. More...
 
void resetShapes (const UList< cellShape > &shapes)
 Reset sizing using primitive shapes only (ADVANCED USAGE) More...
 
void clear () noexcept
 Reset all sizes to zero. More...
 
bool decompose () const noexcept
 Query the decompose flag (normally off) More...
 
bool manifold () const noexcept
 Manifold mesh cells detected? Globally consistent quantity. More...
 
selectionModeType selectionMode () const noexcept
 Query how the mesh cells have been selected or defined. More...
 
bool hasPolyCells () const noexcept
 Has polyhedral cells? More...
 
label nCells () const noexcept
 Number of cells for the mesh. More...
 
label nPoints () const noexcept
 Number of points for the mesh. More...
 
label nVertLabels () const noexcept
 Number of vertex labels for the mesh. More...
 
label nFaceLabels () const noexcept
 Number of polyhedral face labels for the mesh, without any prefixing information. More...
 
label nFaceLabels (contentType output) const
 Number of polyhedral face labels for the mesh with format-dependent prefixing information. More...
 
label nCellsPoly () const noexcept
 Number of output polyhedral cells for the mesh. More...
 
label nFacesPoly () const noexcept
 Number of (non-unique) faces used by polyhedral cells. More...
 
label nVertPoly () const noexcept
 Number of vertex labels for polyhedral cells of the mesh. More...
 
label nAddCells () const noexcept
 Number of additional (decomposed) cells for the mesh. More...
 
label nAddPoints () const noexcept
 Number of additional (decomposed) points for the mesh. More...
 
label nAddVerts () const noexcept
 Number of additional (decomposed) vertices for the mesh. More...
 
label nFieldCells () const noexcept
 Number of field cells = nCells + nAddCells. More...
 
label nFieldPoints () const noexcept
 Number of field points = nPoints + nAddPoints. More...
 
void setNumPoints (label n) noexcept
 Alter number of mesh points (ADVANCED USAGE) More...
 
void setNumAddPoints (label n) noexcept
 Alter number of additional (cell-centre) points (ADVANCED USAGE) More...
 
label sizeOf (const enum contentType output, const enum slotType slot) const noexcept
 Return the required size for the storage slot. More...
 
template<vtuSizing::slotType slot>
label sizeOf (contentType output) const noexcept
 Return the required size for the storage slot. More...
 
void populateLegacy (const polyMesh &mesh, UList< uint8_t > &cellTypes, labelUList &connectivity, foamVtkMeshMaps &maps) const
 Populate lists for Legacy output. More...
 
void populateXml (const polyMesh &mesh, UList< uint8_t > &cellTypes, labelUList &connectivity, labelUList &offsets, labelUList &faces, labelUList &facesOffsets, foamVtkMeshMaps &maps) const
 Populate lists for XML output. More...
 
void populateHdf (const polyMesh &mesh, UList< uint8_t > &cellTypes, labelUList &connectivity, labelUList &offsets, labelUList &faces, labelUList &facesOffsets, labelUList &polyFaceIds, labelUList &polyFaceOffsets, foamVtkMeshMaps &maps) const
 Populate lists for HDF output. More...
 
void populateInternal (const polyMesh &mesh, UList< uint8_t > &cellTypes, UList< int > &connectivity, UList< int > &offsets, UList< int > &faces, UList< int > &facesOffsets, foamVtkMeshMaps &maps, const enum contentType output) const
 Populate lists for Internal VTK format. More...
 
void populateInternal (const polyMesh &mesh, UList< uint8_t > &cellTypes, UList< int > &connectivity, UList< int > &offsets, UList< int > &faces, UList< int > &facesOffsets, labelUList &cellMap, labelUList &addPointsIds, const enum contentType output) const
 Populate lists for Internal VTK format. More...
 
void populateInternal (const polyMesh &mesh, UList< uint8_t > &cellTypes, UList< long > &connectivity, UList< long > &offsets, UList< long > &faces, UList< long > &facesOffsets, foamVtkMeshMaps &maps, const enum contentType output) const
 Populate lists for Internal VTK format. More...
 
void populateInternal (const polyMesh &mesh, UList< uint8_t > &cellTypes, UList< long > &connectivity, UList< long > &offsets, UList< long > &faces, UList< long > &facesOffsets, labelUList &cellMap, labelUList &addPointsIds, const enum contentType output) const
 Populate lists for Internal VTK format. More...
 
void populateInternal (const polyMesh &mesh, UList< uint8_t > &cellTypes, UList< long long > &connectivity, UList< long long > &offsets, UList< long long > &faces, UList< long long > &facesOffsets, foamVtkMeshMaps &maps, const enum contentType output) const
 Populate lists for Internal VTK format. More...
 
void populateInternal (const polyMesh &mesh, UList< uint8_t > &cellTypes, UList< long long > &connectivity, UList< long long > &offsets, UList< long long > &faces, UList< long long > &facesOffsets, labelUList &cellMap, labelUList &addPointsIds, const enum contentType output) const
 Populate lists for Internal VTK format. More...
 
void info (Ostream &os) const
 Report some information. More...
 
bool operator== (const vtuSizing &rhs) const
 Test equality. More...
 
bool operator!= (const vtuSizing &rhs) const
 Test inequality. More...
 
label sizeLegacy () const
 The calculated size for legacy storage. More...
 
label sizeLegacy (slotType slot) const
 The calculated size for legacy storage of the specified slot. More...
 
label sizeXml (slotType slot) const
 The calculated size for xml storage of the specified slot. More...
 
label sizeInternal2 (slotType slot) const
 The calculated size for vtk-internal storage of the specified slot. More...
 

Additional Inherited Members

- Public Types inherited from vtuSizing
enum  contentType : unsigned char { LEGACY, XML, INTERNAL2, HDF }
 Types of content that the storage may represent. More...
 
enum  slotType : unsigned char {
  CELLS, CELLS_OFFSETS, FACES, FACES_OFFSETS,
  POLY_FACEIDS, POLY_FACEIDS_OFFSETS
}
 The possible storage 'slots' that can be used. More...
 
enum  selectionModeType : unsigned char { FULL_MESH, SUBSET_MESH, SHAPE_MESH }
 How the mesh cells have been selected or defined. More...
 
enum  mergeType : unsigned char { NONE, MERGED }
 Tracking of the point merge status. More...
 
- Static Public Member Functions inherited from vtuSizing
static void renumberVertLabels (labelUList &connectivity, const label pointOffset, const contentType output)
 Renumber vertex labels by (global) point offset. More...
 
static void renumberFaceLabels (labelUList &faceLabels, const label pointOffset, const contentType output)
 Renumber faces stream labels by (global) point offset. More...
 
static void renumberVertLabels (labelUList &connectivity, const labelUList &oldToNew, const contentType output)
 Renumber vertex labels. More...
 
static void renumberFaceLabels (labelUList &faceLabels, const labelUList &oldToNew, const contentType output)
 Renumber faces stream labels. More...
 
static void renumberFaceOffsets (labelUList &faceOffsets, const label beginOffset, const contentType output)
 Renumber face offsets with a specified (global) begin offset. More...
 
static labelList copyVertLabels (const labelUList &connectivity, const label pointOffset, const contentType output)
 Copy vertex labels with a (global) point offset. More...
 
static labelList copyFaceLabels (const labelUList &faceLabels, const label pointOffset, const contentType output)
 Copy faces stream labels with a (global) point offset. More...
 
static labelList copyFaceOffsets (const labelUList &faceOffsets, const label beginOffset, const contentType output)
 Copy face offsets with a specified (global) begin offset. More...
 
static void renumberVertLabelsLegacy (labelUList &connectivity, const label pointOffset)
 Renumber vertex labels by (global) point offset - legacy format. More...
 
static void renumberVertLabelsXml (labelUList &connectivity, const label pointOffset)
 Renumber vertex labels by (global) point offset - XML format. More...
 
static void renumberFaceLabelsXml (labelUList &faceLabels, const label pointOffset)
 Renumber faces stream labels by (global) point offset - XML format. More...
 
static void renumberFaceOffsetsXml (labelUList &faceOffsets, const label beginOffset)
 Renumber face offsets with a specified begin offset - XML format. More...
 
static labelList copyVertLabelsLegacy (const labelUList &connectivity, const label pointOffset)
 Copy vertex labels with a (global) point offset - legacy format. More...
 
static labelList copyVertLabelsXml (const labelUList &connectivity, const label pointOffset)
 Copy vertex labels with a (global) point offset - XML format. More...
 
static labelList copyFaceLabelsXml (const labelUList &faceLabels, const label pointOffset)
 Copy faces stream labels with a (global) point offset - XML format. More...
 
static labelList copyFaceOffsetsXml (const labelUList &faceOffsets, const label beginOffset)
 Copy face offsets with an offset from previous - XML format. More...
 
- Protected Member Functions inherited from vtuSizing
void populateShapesLegacy (const UList< cellShape > &shapes, UList< uint8_t > &cellTypes, labelUList &connectivity, foamVtkMeshMaps &maps) const
 Reset list for primitive shapes only (ADVANCED USAGE) More...
 
void populateShapesXml (const UList< cellShape > &shapes, UList< uint8_t > &cellTypes, labelUList &connectivity, labelUList &offsets, labelUList &faces, labelUList &facesOffsets, foamVtkMeshMaps &maps) const
 Reset list for primitive shapes only (ADVANCED USAGE) More...
 
- Static Protected Member Functions inherited from vtuSizing
static labelList dummyFaceOffsets (const label numCells, const enum contentType output, label beginOffset=0)
 Return a list of dummy faceOffsets. More...
 

Detailed Description

A deep-copy description of an OpenFOAM volume mesh in data structures suitable for VTK UnstructuredGrid, including the possibility of decomposing polyhedral cells into primitive cell types.

Knowledge of the vtkUnstructuredGrid and the corresponding .vtu xml file-format aids in understanding this class. The class can be used for the VTK xml format, legacy format, as well as a VTK internal representation. The internal representation is somewhat related to the xml format, but not entirely.

See also
Foam::vtk::vtuSizing
Source files

Definition at line 73 of file foamVtuCells.H.

Constructor & Destructor Documentation

◆ vtuCells() [1/5]

vtuCells ( const vtuCells )
delete

No copy construct.

◆ vtuCells() [2/5]

vtuCells ( const enum contentType  output = contentType::XML,
const bool  decompose = false 
)
explicit

Default construct (XML format, no polyhedral decomposition)

◆ vtuCells() [3/5]

vtuCells ( const polyMesh mesh,
const enum contentType  output = contentType::XML,
const bool  decompose = false 
)
explicit

Construct from components, create output information immediately.

◆ vtuCells() [4/5]

vtuCells ( const vtk::outputOptions  opts,
const bool  decompose = false 
)
explicit

Construct from components.

Optionally with polyhedral decomposition.

◆ vtuCells() [5/5]

vtuCells ( const polyMesh mesh,
const vtk::outputOptions  opts,
const bool  decompose = false 
)

Construct from components, create output information immediately.

Member Function Documentation

◆ operator=()

void operator= ( const vtuCells )
delete

No copy assignment.

◆ content()

enum Foam::vtk::vtuCells::contentType content ( ) const
inlinenoexcept

The output content type.

Definition at line 26 of file foamVtuCellsI.H.

◆ decomposeRequested()

bool decomposeRequested ( ) const
inlinenoexcept

Query the polyhedral decompose requested flag.

Definition at line 38 of file foamVtuCellsI.H.

◆ merged()

bool merged ( ) const
inlinenoexcept

Query the point merge status.

Definition at line 44 of file foamVtuCellsI.H.

References vtuSizing::MERGED.

◆ empty()

bool empty ( ) const
inlinenoexcept

True if no cellTypes are populated.

Definition at line 50 of file foamVtuCellsI.H.

◆ size()

Foam::label size ( ) const
inlinenoexcept

The size of populated cellTypes (the number of cells)

Definition at line 56 of file foamVtuCellsI.H.

◆ useCellMap()

bool useCellMap ( ) const
inlinenoexcept

The cellMap is non-identity for a SUBSET_MESH or when there are decomposed cells.

Definition at line 111 of file foamVtuCellsI.H.

◆ usePointMap()

bool usePointMap ( ) const
inlinenoexcept

The pointMap is available and non-identity (eg, after point merge)

Definition at line 128 of file foamVtuCellsI.H.

◆ is_hdf()

bool is_hdf ( ) const
inlinenoexcept

Test for hdf content type.

Definition at line 32 of file foamVtuCellsI.H.

◆ clear()

void clear ( )

Reset all sizes to zero.

◆ reset() [1/3]

void reset ( const polyMesh mesh)

Create the geometry using the previously requested output and decomposition types.

Referenced by isoSurfaceTopo::isoSurfaceTopo().

Here is the caller graph for this function:

◆ reset() [2/3]

void reset ( const polyMesh mesh,
const labelUList subsetCellsIds 
)

Create the geometry for a mesh subset, using previously requested output and decomposition types.

◆ reset() [3/3]

void reset ( const polyMesh mesh,
const enum contentType  output,
const bool  decompose 
)

Respecify requested output and decomposition type prior to creating the geometry.

◆ resetShapes()

void resetShapes ( const UList< cellShape > &  shapes)

Reset sizing using primitive shapes only (ADVANCED USAGE)

Effectively removes any polyhedrals!

Referenced by isoSurfaceTopo::isoSurfaceTopo().

Here is the caller graph for this function:

◆ renumberCells()

void renumberCells ( const labelUList mapping)

Renumber cell ids to account for subset meshes.

◆ renumberPoints()

void renumberPoints ( const labelUList mapping)

Renumber point ids to account for subset meshes.

◆ addPointCellLabels() [1/2]

void addPointCellLabels ( const labelUList cellIds)

Define which additional cell-centres are to be used (ADVANCED!)

Referenced by isoSurfaceTopo::isoSurfaceTopo().

Here is the caller graph for this function:

◆ mergePoints()

void mergePoints ( const polyMesh mesh)

Determine topological point merging, renumbers contents accordingly.

◆ cellTypes()

const Foam::List< uint8_t > & cellTypes ( ) const
inlinenoexcept

The cell "types" (legacy: "CELL_TYPES")

Definition at line 63 of file foamVtuCellsI.H.

◆ vertLabels() [1/2]

const Foam::labelList & vertLabels ( ) const
inlinenoexcept

The cell "connectivity" (legacy: "CELLS")

Definition at line 70 of file foamVtuCellsI.H.

◆ vertOffsets() [1/2]

const Foam::labelList & vertOffsets ( ) const
inlinenoexcept

The "offsets" into the connectivity list vertLabels()

The content depends on the format:

  • XML : end offset
  • INTERNAL2 : begin/end offsets
  • HDF : begin/end offsets

Definition at line 77 of file foamVtuCellsI.H.

◆ faceLabels() [1/2]

const Foam::labelList & faceLabels ( ) const
inlinenoexcept

The polyhedral "faces" or "FaceConnectivity".

The content depends on the format:

  • XML / INTERNAL : a face stream with embedded sizing
  • HDF : the vertex list of polyhedral faces

Definition at line 84 of file foamVtuCellsI.H.

◆ faceOffsets() [1/2]

const Foam::labelList & faceOffsets ( ) const
inlinenoexcept

The "facesoffset" or the "FaceOffsets".

The content depends on the format:

  • XML : the per-cell end offset into faceLabels(),
  • INTERNAL : the per-cell begin offset into faceLabels(), with -1 for primitive types
  • HDF : the per-cell begin/end offset into faceLabels(), with an empty range for primitive types

Definition at line 91 of file foamVtuCellsI.H.

◆ polyFaceIds() [1/2]

const labelList& polyFaceIds ( ) const

Face ids per polyhedral cell (HDF only)

Possibly demand-driven content

◆ polyFaceOffsets() [1/2]

const Foam::labelList & polyFaceOffsets ( ) const
inlinenoexcept

Offsets into the polyhedral face ids (HDF only)

Definition at line 98 of file foamVtuCellsI.H.

◆ addPointCellLabels() [2/2]

const Foam::labelList & addPointCellLabels ( ) const
inlinenoexcept

Additional point addressing (from added point to original cell)

Definition at line 105 of file foamVtuCellsI.H.

◆ cellMap()

const Foam::labelList & cellMap ( ) const
inlinenoexcept

The mesh cell ids for all cells (regular and decomposed).

For a volume field these would be the cell ids to extract from the field.

Definition at line 122 of file foamVtuCellsI.H.

◆ pointMap()

const Foam::labelUList & pointMap ( ) const
inlinenoexcept

The mesh point ids [FUTURE USE].

Definition at line 135 of file foamVtuCellsI.H.

◆ vertLabels() [2/2]

refPtr<labelList> vertLabels ( label  pointOffset) const

The "connectivity" (legacy: "CELLS") adjusted by the specified (global) point offset.

◆ vertOffsets() [2/2]

refPtr<labelList> vertOffsets ( label  beginOffset,
bool  syncPar = false 
) const

Connectivity (vertices) offsets for each cell adjusted by the specified (global) cell offset.

Parameters
beginOffsetFor formats with begin/end, can specify -1 for an automatic calculation (in parallel)
syncParFor begin/end offsets for parallel concatenation

◆ faceLabels() [2/2]

refPtr<labelList> faceLabels ( label  pointOffset) const

The "faces" stream/connectivity (non-legacy only) adjusted by the specified (global) point offset.

◆ faceOffsets() [2/2]

refPtr<labelList> faceOffsets ( label  beginOffset,
bool  syncPar = false 
) const

The offsets into "faces" (non-legacy only) adjusted by the specified (global) face offset.

Returns a dummy set of offsets if there are no "faces"

Parameters
beginOffsetFor formats with begin/end, can specify -1 for an automatic calculation (in parallel)
syncParFor begin/end offsets for parallel concatenation

◆ polyFaceIds() [2/2]

refPtr<labelList> polyFaceIds ( label  beginOffset) const

The "PolyhedronToFaces" ids (HDF only) adjusted by the specified (global) face offset.

◆ polyFaceOffsets() [2/2]

refPtr<labelList> polyFaceOffsets ( label  beginOffset,
bool  syncPar = false 
) const

The "PolyhedronOffsets" (HDF only), which are the offsets into the polyhedral face ids, adjusted by the specified (global) cell offset.

Parameters
beginOffsetFor formats with begin/end, can specify -1 for an automatic calculation (in parallel)
syncParFor begin/end offsets for parallel concatenation

◆ points()

tmp<Field<PointType> > points ( const polyMesh mesh) const

Return the mesh points, possibly with cell centres for addPointCellLabels()

Note
not valid for a SHAPE_MESH

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