Flow123d  release_2.2.0-20-gb8056ca
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 int * get_loc_part () const
 
shared_ptr< vector< int > > subdomain_id_field_data ()
 
void id_maps (int n_ids, int *id_4_old, Distribution *&new_ds, int *&id_4_loc, int *&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, int *id_4_old, const Distribution &old_ds, int *loc_part, Distribution *&new_ds, int *&id_4_loc, int *&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...
 
int * loc_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 39 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 99 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 91 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 57 of file partitioning.cc.

Partitioning::~Partitioning ( )

Destructor.

Definition at line 65 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 27 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 74 of file partitioning.cc.

Here is the caller graph for this function:

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

Definition at line 45 of file partitioning.cc.

Here is the caller graph for this function:

const int * Partitioning::get_loc_part ( ) const

Get local part of mesh partition.

Definition at line 81 of file partitioning.cc.

Here is the caller graph for this function:

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

Definition at line 38 of file partitioning.cc.

Here is the caller graph for this function:

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

Obsolete see source file for doc.

Definition at line 226 of file partitioning.cc.

Here is the caller graph for this function:

void Partitioning::id_maps ( int  n_ids,
int *  id_4_old,
const Distribution old_ds,
int *  loc_part,
Distribution *&  new_ds,
int *&  id_4_loc,
int *&  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 181 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 88 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 138 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 232 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 111 of file partitioning.hh.

Input::Record Partitioning::in_
private

Input Record accessor.

Definition at line 108 of file partitioning.hh.

Distribution* Partitioning::init_el_ds_
private

Original distribution of elements. Depends on type of partitioner.

Definition at line 115 of file partitioning.hh.

int* Partitioning::loc_part_
private

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

Definition at line 113 of file partitioning.hh.

Mesh* Partitioning::mesh_
private

The input mesh.

Definition at line 106 of file partitioning.hh.

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

Sequential partitioning for output.

Definition at line 117 of file partitioning.hh.


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