NeoPZ
Public Member Functions | List of all members
TPZMetis Class Reference

Implements renumbering for elements of a mesh. Utility. More...

#include <pzmetis.h>

Inheritance diagram for TPZMetis:
[legend]
Collaboration diagram for TPZMetis:
[legend]

Public Member Functions

virtual void Resequence (TPZVec< int64_t > &perm, TPZVec< int64_t > &inverseperm)
 Perform the renumbering of elements. The aim of this operation is to minimize the band of the resulting stiffeness matrix. More...
 
 TPZMetis (int NElements, int NNodes)
 Constructor. More...
 
 TPZMetis ()
 
virtual ~TPZMetis ()
 Destructor. More...
 
void Print (std::ostream &out)
 Prints the current object data structure. More...
 
void Print (std::ostream &out, char *title)
 
void Subdivide (int nParts, TPZVec< int > &Domains)
 Subdivides a Graph in nParts. More...
 
- Public Member Functions inherited from TPZRenumbering
 TPZRenumbering ()
 
 TPZRenumbering (int64_t NElements, int64_t NNodes)
 
virtual ~TPZRenumbering ()
 
int ClassId () const override
 Define the class id associated with the class. More...
 
void Read (TPZStream &buf, void *context) override
 read objects from the stream More...
 
void Write (TPZStream &buf, int withclassid) const override
 Writes this object to the TPZStream buffer. Include the classid if withclassid = true. More...
 
void SetElementsNodes (int64_t NElements, int64_t NNodes)
 
void SetElementGraph (TPZVec< int64_t > &elgraph, TPZVec< int64_t > &elgraphindex)
 This method declares the element graph to the object. More...
 
void SetNodeWeights (TPZVec< int > &weights)
 Sets the number of equations associated with each node. More...
 
virtual void ClearDataStructures ()
 This will reset all datastructures the object may contain. More...
 
void ConvertGraph (TPZVec< int64_t > &elgraph, TPZVec< int64_t > &elgraphindex, TPZManVector< int64_t > &nodegraph, TPZManVector< int64_t > &nodegraphindex)
 Will convert an element graph defined by elgraph and elgraphindex into a node graph defined by nodegraph and nodegraphindex. More...
 
void ConvertToElementoToElementGraph (TPZVec< int64_t > &elgraph, TPZVec< int64_t > &elgraphindex, TPZVec< int64_t > &eltotelgraph, TPZVec< int > &eltoelweight, TPZVec< int64_t > &eltoelgraphindex)
 Convert a traditional elgraph to an element to element graph. More...
 
void NodeToElGraph (TPZVec< int64_t > &elgraph, TPZVec< int64_t > &elgraphindex, TPZVec< int64_t > &nodetoelgraph, TPZVec< int64_t > &nodetoelgraphindex)
 Stores the graph of nodes to elements. More...
 
int64_t ColorNodes (TPZVec< int64_t > &nodegraph, TPZVec< int64_t > &nodegraphindex, TPZVec< int > &family, TPZVec< int > &colors)
 Will assign a color to the nodes in the graph such that no two connected nodes have the same color the return value indicates the number of colors in the graph. More...
 
void Print (TPZVec< int64_t > &grapho, TPZVec< int64_t > &graphoindex, const char *name=0, std::ostream &out=std::cout)
 Prints graph. More...
 
void CornerEqs (unsigned int mincorners, int64_t nelconsider, std::set< int > &eligible, std::set< int > &cornernodes)
 Analyzes the graph, finds the corner nodes
Number of elements which should be considered for determining corner nodes. More...
 
- Public Member Functions inherited from TPZSavable
 TPZSavable ()
 
virtual ~TPZSavable ()
 
virtual std::list< std::map< std::string, uint64_t > > VersionHistory () const
 
virtual std::pair< std::string, uint64_t > Version () const
 
virtual bool Compare (TPZSavable *copy, bool override=false)
 Compares the object for identity with the object pointed to, eventually copy the object. More...
 
virtual bool Compare (TPZSavable *copy, bool override=false) const
 Compares the object for identity with the object pointed to, eventually copy the object. More...
 
- Public Member Functions inherited from TPZRegisterClassId
template<typename T >
 TPZRegisterClassId (int(T::*)() const)
 
 TPZRegisterClassId ()=default
 

Additional Inherited Members

- Static Public Member Functions inherited from TPZRenumbering
static int64_t ColorElements (const TPZCompMesh *cmesh, const TPZVec< int64_t > &elementIndices, TPZVec< int64_t > &elementColors)
 Assigns a color to the elements in the elementIndices list such that two elements that share a connect have different colors. The return value indicates the number of colors. More...
 
- Static Public Member Functions inherited from TPZSavable
static std::set< TPZRestoreClassBase * > & RestoreClassSet ()
 This static function guarantees that the gMap object is available when needed. More...
 
static std::map< int, TPZRestore_t > & ClassIdMap ()
 This static function guarantees that the gMap object is available when needed. More...
 
static std::pair< std::string, uint64_t > NeoPZVersion ()
 
static void Register (TPZRestoreClassBase *restore)
 
static void RegisterClassId (int classid, TPZRestore_t fun)
 
static TPZSavableCreateInstance (const int &classId)
 
- Public Attributes inherited from TPZRenumbering
int fHDivPermute
 
- Protected Attributes inherited from TPZRenumbering
int64_t fNElements
 Number of elements in the graph. More...
 
int64_t fNNodes
 Number of nodes in the graph. More...
 
TPZVec< int > fNodeWeights
 Number of equations associated with each node. More...
 
TPZVec< int64_t > fElementGraph
 Node number of each element. More...
 
TPZVec< int64_t > fElementGraphIndex
 Indicates for each element the index of the first entry with fElementGraph for that element The size of this vector is fNElements+1. More...
 

Detailed Description

Implements renumbering for elements of a mesh. Utility.

Definition at line 17 of file pzmetis.h.

Constructor & Destructor Documentation

◆ TPZMetis() [1/2]

TPZMetis::TPZMetis ( int  NElements,
int  NNodes 
)
inline

Constructor.

Instantiates an object which will compute the resequencing scheme of the metis package.

Definition at line 30 of file pzmetis.h.

References TPZMetis().

◆ TPZMetis() [2/2]

TPZMetis::TPZMetis ( )

Definition at line 24 of file pzmetis.cpp.

Referenced by TPZMetis().

◆ ~TPZMetis()

virtual TPZMetis::~TPZMetis ( )
inlinevirtual

Destructor.

Definition at line 37 of file pzmetis.h.

References Print(), and Subdivide().

Member Function Documentation

◆ Print() [1/2]

void TPZMetis::Print ( std::ostream &  out)

◆ Print() [2/2]

void TPZMetis::Print ( std::ostream &  out,
char *  title 
)

◆ Resequence()

void TPZMetis::Resequence ( TPZVec< int64_t > &  perm,
TPZVec< int64_t > &  inverseperm 
)
virtual

Perform the renumbering of elements. The aim of this operation is to minimize the band of the resulting stiffeness matrix.

Reimplemented from TPZRenumbering.

Definition at line 97 of file pzmetis.cpp.

References TPZRenumbering::ConvertGraph(), TPZRenumbering::fElementGraph, TPZRenumbering::fElementGraphIndex, TPZRenumbering::fNNodes, TPZVec< T >::NElements(), TPZManVector< T, NumExtAlloc >::Resize(), TPZVec< T >::Resize(), and TPZVec< T >::size().

◆ Subdivide()

void TPZMetis::Subdivide ( int  nParts,
TPZVec< int > &  Domains 
)

Subdivides a Graph in nParts.

Parameters
nPartsNumber of subdomains the Original domain must be divided to.
DomainsA vector the subdomain index for each vertex The Adjacency list works according to the MeTiS specification as found on MeTiS manual.
The graph information is stored using the CSR (Compressed Storage Format)
The CSR for a graph with 'n' vertices and 'm' edges is represented using two vector XAdj
and Adjacency. XAdj is of size 'n + 1' while Adjacency is of size '2 * m'.
The graph structures is stored as follows:
For the ith vertex, its Adjacency list is stored in the Adjacency vector positions
startint in XAdj[i] until XAdj[i+1]-1.

Definition at line 148 of file pzmetis.cpp.

References TPZRenumbering::ConvertToElementoToElementGraph(), DebugStop, TPZRenumbering::fElementGraph, TPZRenumbering::fElementGraphIndex, LOGPZ_DEBUG, TPZVec< T >::NElements(), TPZRenumbering::Print(), and TPZVec< T >::Resize().

Referenced by TPZDohrStructMatrix::SubStructure(), and ~TPZMetis().


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