NeoPZ
|
Implements renumbering for elements of a mesh. Utility. More...
#include <pzmetis.h>
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 TPZSavable * | CreateInstance (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... | |
|
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::TPZMetis | ( | ) |
Definition at line 24 of file pzmetis.cpp.
Referenced by TPZMetis().
|
inlinevirtual |
void TPZMetis::Print | ( | std::ostream & | out | ) |
Prints the current object data structure.
Definition at line 63 of file pzmetis.cpp.
References TPZRenumbering::ConvertGraph(), TPZRenumbering::fElementGraph, TPZRenumbering::fElementGraphIndex, TPZRenumbering::fNNodes, and TPZManVector< T, NumExtAlloc >::Resize().
Referenced by ~TPZMetis().
void TPZMetis::Print | ( | std::ostream & | out, |
char * | title | ||
) |
Definition at line 28 of file pzmetis.cpp.
References TPZRenumbering::ConvertGraph(), TPZRenumbering::fElementGraph, TPZRenumbering::fElementGraphIndex, TPZRenumbering::fNElements, TPZRenumbering::fNNodes, TPZVec< T >::NElements(), and TPZManVector< T, NumExtAlloc >::Resize().
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().
void TPZMetis::Subdivide | ( | int | nParts, |
TPZVec< int > & | Domains | ||
) |
Subdivides a Graph in nParts.
nParts | Number of subdomains the Original domain must be divided to. |
Domains | A 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().