Flow123d  release_3.0.0-1070-g00ac913
Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Partitioning Class Reference

Class for the mesh partitioning. This should provide: More...

#include <partitioning.hh>

Collaboration diagram for Partitioning:
Collaboration graph
[legend]

Public Member Functions

 TYPEDEF_ERR_INFO (EI_MeshFile, std::string)
 
 TYPEDEF_ERR_INFO (EI_NElems, unsigned int)
 
 TYPEDEF_ERR_INFO (EI_NProcs, unsigned int)
 
 DECLARE_INPUT_EXCEPTION (ExcDecomposeMesh,<< "Number of processors "<< EI_NProcs::val<< " greater then number of elements "<< EI_NElems::val<< ". Can not make partitioning of the mesh "<< EI_MeshFile::qval<< ".\n")
 
 Partitioning (Mesh *mesh, Input::Record in)
 
const Distributionget_init_distr () const
 
const LongIdxget_loc_part () const
 
shared_ptr< vector< int > > subdomain_id_field_data ()
 
void id_maps (int n_ids, LongIdx *id_4_old, Distribution *&new_ds, LongIdx *&id_4_loc, LongIdx *&new_4_id)
 
 ~Partitioning ()
 Destructor. More...
 

Static Public Member Functions

static const Input::Type::Selectionget_graph_type_sel ()
 Input specification objects. More...
 
static const Input::Type::Selectionget_tool_sel ()
 
static const Input::Type::Recordget_input_type ()
 
static void id_maps (int n_ids, LongIdx *id_4_old, const Distribution &old_ds, LongIdx *loc_part, Distribution *&new_ds, LongIdx *&id_4_loc, LongIdx *&new_4_id)
 

Private Types

enum  PartitionTool { PETSc, METIS }
 
enum  PartitionGraphType { any_neighboring, any_weight_lower_dim_cuts, same_dimension_neighboring }
 

Private Member Functions

void make_element_connection_graph ()
 
void make_partition ()
 

Private Attributes

Meshmesh_
 The input mesh. More...
 
Input::Record in_
 Input Record accessor. More...
 
SparseGraphgraph_
 Graph used to partitioning the mesh. More...
 
LongIdxloc_part_
 Partition numbers for local elements in original distribution of elements given be init_el_ds_. More...
 
Distributioninit_el_ds_
 Original distribution of elements. Depends on type of partitioner. More...
 
shared_ptr< vector< int > > seq_part_
 Sequential partitioning for output. More...
 

Detailed Description

Class for the mesh partitioning. This should provide:

Definition at line 52 of file partitioning.hh.

Member Enumeration Documentation

Types of weights used for element partitioning.

Enumerator
any_neighboring 

Add edge for any pair of neighboring elements.

any_weight_lower_dim_cuts 

Same as before and assign higher weight to cuts of lower dimension in order to make them stick to one face.

same_dimension_neighboring 

Add edge for any pair of neighboring elements of same dimension (bad for matrix multiply)

Definition at line 112 of file partitioning.hh.

Types of partitioning algorithms.

Enumerator
PETSc 

Use PETSc interface to various partitioing tools.

METIS 

Use direct interface to Metis.

Definition at line 104 of file partitioning.hh.

Constructor & Destructor Documentation

Partitioning::Partitioning ( Mesh mesh,
Input::Record  in 
)

Constructor. A pointer to the mesh and accessor to an input record have to be provided.

Definition at line 62 of file partitioning.cc.

Partitioning::~Partitioning ( )

Destructor.

Definition at line 70 of file partitioning.cc.

Member Function Documentation

Partitioning::DECLARE_INPUT_EXCEPTION ( ExcDecomposeMesh  ,
<< "Number of processors "<< EI_NProcs::val<< " greater then number of elements "<< EI_NElems::val<< ". Can not make partitioning of the mesh "<< EI_MeshFile::qval<< ".\n"   
)
const IT::Selection & Partitioning::get_graph_type_sel ( )
static

Input specification objects.

Definition at line 32 of file partitioning.cc.

Here is the caller graph for this function:

const Distribution * Partitioning::get_init_distr ( ) const

Get initial distribution.

Definition at line 79 of file partitioning.cc.

const IT::Record & Partitioning::get_input_type ( )
static

Definition at line 50 of file partitioning.cc.

Here is the caller graph for this function:

const LongIdx * Partitioning::get_loc_part ( ) const

Get local part of mesh partition.

Definition at line 86 of file partitioning.cc.

Here is the caller graph for this function:

const IT::Selection & Partitioning::get_tool_sel ( )
static

Definition at line 43 of file partitioning.cc.

Here is the caller graph for this function:

void Partitioning::id_maps ( int  n_ids,
LongIdx id_4_old,
Distribution *&  new_ds,
LongIdx *&  id_4_loc,
LongIdx *&  new_4_id 
)

Obsolete see source file for doc.

Definition at line 231 of file partitioning.cc.

Here is the caller graph for this function:

void Partitioning::id_maps ( int  n_ids,
LongIdx id_4_old,
const Distribution old_ds,
LongIdx loc_part,
Distribution *&  new_ds,
LongIdx *&  id_4_loc,
LongIdx *&  new_4_id 
)
static

Old UGLY, PETSC dependent method for getting new numbering after partitioning.

n_ids - given maximal ID used in id_4_old id_4_old - given array of size init_el_ds_.size() - assign ID to an old index

new_ds - new distribution of elements according to current distributed partitioning loc_part_ id_4_loc - IDs for local elements in new distribution, has size new_ds->lsize() new_4_id - for given ID, the new index, -1 for unknown IDs

Definition at line 186 of file partitioning.cc.

void Partitioning::make_element_connection_graph ( )
private

Creates sparse parallel graph from the mesh (using algorithm given by the key "graph_type" of the input record accessor in_

Definition at line 93 of file partitioning.cc.

Here is the caller graph for this function:

void Partitioning::make_partition ( )
private

Creates sparse parallel graph from the mesh (using algorithm given by the key "graph_type" of the input record accessor in_) calls partitioning tool given by the key "tool" of the input record accessor in_) result is local part of the partitioning. Can be retrieved by get_loc_part().

Definition at line 143 of file partitioning.cc.

Here is the caller graph for this function:

shared_ptr< vector< int > > Partitioning::subdomain_id_field_data ( )

Creates and returns vector with element partitioning for output.

Definition at line 237 of file partitioning.cc.

Partitioning::TYPEDEF_ERR_INFO ( EI_MeshFile  ,
std::string   
)
Partitioning::TYPEDEF_ERR_INFO ( EI_NElems  ,
unsigned  int 
)
Partitioning::TYPEDEF_ERR_INFO ( EI_NProcs  ,
unsigned  int 
)

Member Data Documentation

SparseGraph* Partitioning::graph_
private

Graph used to partitioning the mesh.

Definition at line 124 of file partitioning.hh.

Input::Record Partitioning::in_
private

Input Record accessor.

Definition at line 121 of file partitioning.hh.

Distribution* Partitioning::init_el_ds_
private

Original distribution of elements. Depends on type of partitioner.

Definition at line 128 of file partitioning.hh.

LongIdx* Partitioning::loc_part_
private

Partition numbers for local elements in original distribution of elements given be init_el_ds_.

Definition at line 126 of file partitioning.hh.

Mesh* Partitioning::mesh_
private

The input mesh.

Definition at line 119 of file partitioning.hh.

shared_ptr< vector<int> > Partitioning::seq_part_
private

Sequential partitioning for output.

Definition at line 130 of file partitioning.hh.


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