NeoPZ
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
TPZGenSubStruct Class Reference

An interface to "feed" the datastructure of the Dohrmann algorithm. Sub Structure. More...

#include <tpzgensubstruct.h>

Collaboration diagram for TPZGenSubStruct:
[legend]

Public Types

enum  ETypemesh { DistMaterial, RandomMat }
 

Public Member Functions

 TPZGenSubStruct (int dimension, int numlevels, int substructlevel)
 Constructor. More...
 
 ~TPZGenSubStruct ()
 
TPZAutoPointer< TPZCompMeshGenerateMesh ()
 Method which will generate the computational mesh. More...
 
void InitializeDohr (TPZAutoPointer< TPZMatrix< STATE > > dohr, TPZAutoPointer< TPZDohrAssembly< STATE > > assembly)
 Initialize the TPZDohrMatrix structure. More...
 
void InitializeDohrCondense (TPZAutoPointer< TPZMatrix< STATE > > dohr, TPZAutoPointer< TPZDohrAssembly< STATE > > assembly)
 Initialize the TPZDohrMatrix structure. More...
 
void ReorderInternalNodes (TPZSubCompMesh *sub, std::map< int, int > &globaltolocal, TPZVec< int > &internalnodes)
 
void SubStructure ()
 Divide the elements in substructures. More...
 

Static Public Member Functions

static void ReorderInternalNodes2 (TPZSubCompMesh *sub, TPZVec< int > &internalnodes, TPZVec< int64_t > &invpermute)
 
static void ComputeInternalEquationPermutation (TPZSubCompMesh *sub, TPZVec< int > &scatterpermute, TPZVec< int > &gatherpermute)
 Computes the permutation vectors from the subcompmesh ordening to the "internal first" ordering. More...
 

Public Attributes

ETypemesh fMatDist
 
TPZVec< REAL > fK
 

Private Member Functions

void UniformRefine ()
 Divide the geometric elements till num levels is achieved. More...
 
void IdentifyCornerNodes ()
 Identify cornernodes. More...
 
void IdentifyEqNumbers (TPZSubCompMesh *sub, TPZVec< std::pair< int, int > > &globaleq, std::map< int, int > &globinv)
 Identify the global equations as a pair of local equation and global equation. More...
 
void IdentifyEqNumbers (TPZSubCompMesh *sub, TPZVec< int > &global, std::map< int, int > &globinv)
 Get the global equation numbers of a substructure (and their inverse) More...
 
void IdentifySubCornerEqs (std::map< int, int > &globaltolocal, TPZVec< int > &cornereqs, TPZVec< int > &coarseindex)
 Identify the corner equations associated with a substructure. More...
 

Static Private Member Functions

static int64_t NInternalEq (TPZSubCompMesh *sub)
 

Private Attributes

int fDimension
 Dimension of the mesh. More...
 
int fNumLevels
 Number of uniform refinements. More...
 
int fSubstructLevel
 Level of substructures. More...
 
TPZAutoPointer< TPZCompMeshfCMesh
 computational mesh More...
 
std::set< int > fCornerEqs
 The set of equations which correspond to corner nodes. More...
 

Detailed Description

An interface to "feed" the datastructure of the Dohrmann algorithm. Sub Structure.

Author
Philippe Devloo

Definition at line 27 of file tpzgensubstruct.h.

Member Enumeration Documentation

◆ ETypemesh

Enumerator
DistMaterial 
RandomMat 

Definition at line 29 of file tpzgensubstruct.h.

Constructor & Destructor Documentation

◆ TPZGenSubStruct()

TPZGenSubStruct::TPZGenSubStruct ( int  dimension,
int  numlevels,
int  substructlevel 
)

Constructor.

Parameters
dimension
numlevelsnumber of uniform refinements
substructlevelnumber of refinements which define the substructures

Definition at line 44 of file tpzgensubstruct.cpp.

◆ ~TPZGenSubStruct()

TPZGenSubStruct::~TPZGenSubStruct ( )

Definition at line 50 of file tpzgensubstruct.cpp.

References co.

Member Function Documentation

◆ ComputeInternalEquationPermutation()

void TPZGenSubStruct::ComputeInternalEquationPermutation ( TPZSubCompMesh sub,
TPZVec< int > &  scatterpermute,
TPZVec< int > &  gatherpermute 
)
static

Computes the permutation vectors from the subcompmesh ordening to the "internal first" ordering.

The mesh is modified during this method but is returned to its original state at the end of execution

Definition at line 729 of file tpzgensubstruct.cpp.

References TPZCompMesh::Block(), TPZSubCompMesh::ComputePermutationInternalFirst(), TPZCompMesh::ConnectVec(), TPZVec< T >::Fill(), TPZConnect::HasDependency(), TPZConnect::IsCondensed(), LOGPZ_DEBUG, TPZBlock< TVar >::NBlocks(), TPZVec< T >::NElements(), TPZChunkVector< T, EXP >::NElements(), TPZBlock< TVar >::Position(), TPZBlock< TVar >::Resequence(), TPZVec< T >::Resize(), TPZBlock< TVar >::Set(), and TPZBlock< TVar >::Size().

Referenced by InitializeDohrCondense().

◆ GenerateMesh()

TPZAutoPointer< TPZCompMesh > TPZGenSubStruct::GenerateMesh ( )

◆ IdentifyCornerNodes()

void TPZGenSubStruct::IdentifyCornerNodes ( )
private

◆ IdentifyEqNumbers() [1/2]

void TPZGenSubStruct::IdentifyEqNumbers ( TPZSubCompMesh sub,
TPZVec< std::pair< int, int > > &  globaleq,
std::map< int, int > &  globinv 
)
private

◆ IdentifyEqNumbers() [2/2]

void TPZGenSubStruct::IdentifyEqNumbers ( TPZSubCompMesh sub,
TPZVec< int > &  global,
std::map< int, int > &  globinv 
)
private

◆ IdentifySubCornerEqs()

void TPZGenSubStruct::IdentifySubCornerEqs ( std::map< int, int > &  globaltolocal,
TPZVec< int > &  cornereqs,
TPZVec< int > &  coarseindex 
)
private

Identify the corner equations associated with a substructure.

Definition at line 845 of file tpzgensubstruct.cpp.

References fCornerEqs, LOGPZ_DEBUG, and TPZVec< T >::Resize().

Referenced by InitializeDohr(), and InitializeDohrCondense().

◆ InitializeDohr()

void TPZGenSubStruct::InitializeDohr ( TPZAutoPointer< TPZMatrix< STATE > >  dohr,
TPZAutoPointer< TPZDohrAssembly< STATE > >  assembly 
)

◆ InitializeDohrCondense()

void TPZGenSubStruct::InitializeDohrCondense ( TPZAutoPointer< TPZMatrix< STATE > >  dohr,
TPZAutoPointer< TPZDohrAssembly< STATE > >  assembly 
)

◆ NInternalEq()

int64_t TPZGenSubStruct::NInternalEq ( TPZSubCompMesh sub)
staticprivate

◆ ReorderInternalNodes()

TPZGenSubStruct::ReorderInternalNodes ( TPZSubCompMesh sub,
std::map< int, int > &  globaltolocal,
TPZVec< int > &  internalnodes 
)

◆ ReorderInternalNodes2()

void TPZGenSubStruct::ReorderInternalNodes2 ( TPZSubCompMesh sub,
TPZVec< int > &  internalnodes,
TPZVec< int64_t > &  invpermute 
)
static

◆ SubStructure()

void TPZGenSubStruct::SubStructure ( )

◆ UniformRefine()

void TPZGenSubStruct::UniformRefine ( )
private

Member Data Documentation

◆ fCMesh

TPZAutoPointer<TPZCompMesh> TPZGenSubStruct::fCMesh
private

◆ fCornerEqs

std::set<int> TPZGenSubStruct::fCornerEqs
private

The set of equations which correspond to corner nodes.

Definition at line 81 of file tpzgensubstruct.h.

Referenced by IdentifyCornerNodes(), IdentifySubCornerEqs(), InitializeDohr(), and InitializeDohrCondense().

◆ fDimension

int TPZGenSubStruct::fDimension
private

Dimension of the mesh.

Definition at line 71 of file tpzgensubstruct.h.

Referenced by GenerateMesh(), IdentifyCornerNodes(), and SubStructure().

◆ fK

TPZVec<REAL> TPZGenSubStruct::fK

Definition at line 36 of file tpzgensubstruct.h.

Referenced by GenerateMesh(), and UniformRefine().

◆ fMatDist

ETypemesh TPZGenSubStruct::fMatDist

Definition at line 34 of file tpzgensubstruct.h.

Referenced by UniformRefine().

◆ fNumLevels

int TPZGenSubStruct::fNumLevels
private

Number of uniform refinements.

Definition at line 73 of file tpzgensubstruct.h.

Referenced by UniformRefine().

◆ fSubstructLevel

int TPZGenSubStruct::fSubstructLevel
private

Level of substructures.

Definition at line 75 of file tpzgensubstruct.h.

Referenced by SubStructure().


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