Finite Element Domain Decomposition Library
FEDDLib
|
Public Types | |
typedef Domain< SC, LO, GO, NO > | Domain_Type |
typedef Domain_Type::DomainPtr_Type | DomainPtr_Type |
typedef Domain_Type::CommConstPtr_Type | CommConstPtr_Type |
typedef std::vector< DomainPtr_Type > | DomainPtrArray_Type |
typedef Domain_Type::MeshUnstr_Type | MeshUnstr_Type |
typedef Domain_Type::MeshUnstrPtr_Type | MeshUnstrPtr_Type |
typedef Domain_Type::MapConstPtr_Type | MapConstPtr_Type |
typedef Elements | Elements_Type |
typedef Teuchos::RCP< Elements_Type > | ElementsPtr_Type |
typedef EdgeElements | EdgeElements_Type |
typedef Teuchos::RCP< EdgeElements_Type > | EdgeElementsPtr_Type |
typedef std::vector< idx_t > | vec_idx_Type |
Public Member Functions | |
MeshPartitioner (DomainPtrArray_Type domains, ParameterListPtr_Type pL, std::string feType, int dimension) | |
void | readAndPartition (int volumeID=10) |
Main Function of partitioner. Called with volume ID in order to set in case it is not equal to ten. Always make sure the volumeID corresponds to the highest given flag. | |
void | setEdgesToSurfaces (int meshNumber) |
Only used in 3D to set the edges as subelements to surfaces. | |
void | setSurfacesToElements (int meshNumber) |
Setting surfaces, i.e. edges in 2D and triangles in 3D, as subelements to the corresponding elements. | |
void | partitionMesh (MeshUnstrPtr_Type &mesh, int meshNumber) |
Main function, that reads and partions and distributes the mesh to the different processors. Here all necessary maps and lists are created. | |
void | buildEdgeListParallel (MeshUnstrPtr_Type mesh, ElementsPtr_Type elementsGlobal) |
Making the edge list parallel. | |
void | buildEdgeList (MeshUnstrPtr_Type mesh, ElementsPtr_Type &elementsGlobal) |
Building the edge list. | |
void | setLocalEdgeIndices (vec2D_int_Type &localEdgeIndices) |
Setting surfaces, i.e. edges in 2D and triangles in 3D, as subelements to the corresponding elements. | |
void | determineRanks () |
void | determineRanksFromNumberRanks (vec_int_Type &ranks) |
void | determineRanksFromFractions (vec_int_Type &fractions) |
void | makeContinuousElements (ElementsPtr_Type elements, vec_idx_Type &eind_vec, vec_idx_Type &eptr_vec) |
void | findAndSetSurfacesPartitioned (vec2D_int_Type &surfElements_vec, vec2D_int_Type &surfElements_vec_unsorted, vec_int_Type &surfElementsFlag_vec, FiniteElement &element, vec2D_int_Type &permutation, vec_GO_Type &linearSurfacePartitionOffset, int globalElID) |
Finding the surfaces corresponding to a specfic element and then setting subelements. | |
void | setLocalSurfaceEdgeIndices (vec2D_int_Type &localSurfaceEdgeIndices, int edgesElementOrder) |
Setting local IDs to the edges in 3D case with respect to the local numbering of elements. | |
void | findAndSetSurfaceEdges (vec2D_int_Type &edgeElements_vec, vec_int_Type &edgeElementsFlag_vec, FiniteElement &element, vec2D_int_Type &permutation, MapConstPtr_Type mapRepeated) |
Only relevant in 3D. Finding the edges corresponding to the specfic element and then setting as subsubelement. | |
int | searchInSurfaces (vec2D_int_Type &surfaces, vec_int_Type searchSurface) |
Searching on particular surface in a surface list. | |
void | setLocalSurfaceIndices (vec2D_int_Type &localSurfaceIndices, int surfaceElementOrder) |
void FEDD::MeshPartitioner< SC, LO, GO, NO >::findAndSetSurfacesPartitioned | ( | vec2D_int_Type & | surfElements_vec, |
vec2D_int_Type & | surfElements_vec_unsorted, | ||
vec_int_Type & | surfElementsFlag_vec, | ||
FiniteElement & | element, | ||
vec2D_int_Type & | permutation, | ||
vec_GO_Type & | linearSurfacePartitionOffset, | ||
int | globalElID ) |
Finding the surfaces corresponding to a specfic element and then setting subelements.
Function that sets edges (2D) or surfaces(3D) to the corresponding element. It determines for the specific element 'element' if it has a surface with a non volumeflag that can be set as subelement
void FEDD::MeshPartitioner< SC, LO, GO, NO >::setEdgesToSurfaces | ( | int | meshNumber | ) |
Only used in 3D to set the edges as subelements to surfaces.
Function that (addionally) adds edges as subelements in the 3D case. This is relevant when the .mesh file also contains edge information in 3D. Otherwise edges are not set as subelements in 3D.
void FEDD::MeshPartitioner< SC, LO, GO, NO >::setSurfacesToElements | ( | int | meshNumber | ) |
Setting surfaces, i.e. edges in 2D and triangles in 3D, as subelements to the corresponding elements.
Adding surfaces as subelements to the corresponding elements. This adresses surfaces in 3D or edges in 2D. If in the 3D case edges are also part of the .mesh file, they will be added as subelements later.