MatMeshToCellGraph#

Convert a mesh to a cell graph.

Synopsis#

#include "petscmat.h" 
PetscErrorCode MatMeshToCellGraph(Mat mesh, PetscInt ncommonnodes, Mat *dual)

Collective

Input Parameters#

  • mesh - the graph that represents the coupling of the vertices of the mesh

  • ncommonnodes - mesh elements that share this number of common nodes are considered neighbors, use 2 for triangles and quadrilaterials, 3 for tetrahedrals and 4 for hexahedrals

Output Parameter#

  • dual - the dual graph

Options Database Key#

  • -mat_mesh_to_cell_graph_type (parmetis|metis) - the conversion package to use; default is ParMETIS if available, otherwise METIS

Notes#

Converts a Mat that represents coupling of vertices of a mesh to a Mat that represents the graph of the coupling between cells (the “dual” graph) and is suitable for partitioning with the MatPartitioning object. Use this to partition cells of a mesh.

Each row of the mesh object represents a single cell in the mesh. For triangles it has 3 entries, quadrilaterials 4 entries, tetrahedrals 4 entries and hexahedrals 8 entries. You can mix triangles and quadrilaterals in the same mesh, but cannot mix tetrahedrals and hexahedrals. The columns of each row of the Mat mesh are the global vertex numbers of the vertices of that row’s cell. The number of rows in mesh is number of cells, the number of columns is the number of vertices.

See Also#

MatCreateMPIAdj(), MatPartitioningCreate(), MatMeshToCellGraphRegister()

Level#

advanced

Location#

src/mat/graphops/partition/partition.c

Examples#

src/mat/tutorials/ex11f.F90
src/mat/tutorials/ex11.c

Implementations#

MatMeshToCellGraph_Metis() in src/mat/graphops/partition/impls/metis/metis.c
MatMeshToCellGraph_Parmetis() in src/mat/graphops/partition/impls/pmetis/pmetis.c


Index of all MatGraphOperations routines
Table of Contents for all manual pages
Index of all manual pages