Isorropia: Partitioning, Load Balancing and more
Public Member Functions | Private Member Functions | Private Attributes | List of all members
Isorropia::Epetra::Matcher Class Reference

An implementation of the Matcher interface that operates on Epetra matrices and Graphs. More...

#include <Isorropia_EpetraMatcher.hpp>

Public Member Functions

 Matcher (const Epetra_CrsMatrix *, const Teuchos::ParameterList &paramlist=Teuchos::ParameterList("EmptyParameterList"))
 Constructor. More...
 
 Matcher (Teuchos::RCP< const Epetra_CrsMatrix >, const Teuchos::ParameterList &paramlist=Teuchos::ParameterList("EmptyParameterList"))
 Constructor. More...
 
 Matcher (const Epetra_CrsGraph *, const Teuchos::ParameterList &paramlist=Teuchos::ParameterList("EmptyParameterList"))
 Constructor. More...
 
 Matcher (Teuchos::RCP< const Epetra_CrsGraph >, const Teuchos::ParameterList &paramlist=Teuchos::ParameterList("EmptyParameterList"))
 Constructor. More...
 
virtual ~Matcher ()
 Destructor. More...
 
void getMatchedColumnsForRowsCopy (int, int &, int *) const
 Copies the matched columns corresponding to each row in a user given array. More...
 
void getMatchedRowsForColumnsCopy (int, int &, int *) const
 Copies the matched rows corresponding to each column in a user given array. More...
 
int getNumberOfMatchedVertices ()
 
Teuchos::RCP< Epetra_CrsMatrix > applyRowPermutation ()
 Applies the row permutation from matching and returns a new matrix. More...
 
Teuchos::RCP< Epetra_CrsMatrix > applyColumnPermutation ()
 Applies the column permutation from matching and returns a new matrix. More...
 
int match ()
 Provides the column map which is actually the complete column permutation. More...
 

Private Member Functions

void delete_matched_v ()
 
void complete_nonperfect_permutation ()
 
int SGM ()
 
int match_dfs ()
 
int match_hk ()
 
int construct_layered_graph ()
 
int find_set_del_M ()
 
int recursive_path_finder (int, int)
 
int dfs_path_finder (int)
 
int dfs_augment ()
 
int augment_matching (int)
 
int DW_phase ()
 

Private Attributes

int * mateU_
 
int * mateV_
 
int * Queue_
 
int * LV_
 
int * LU_
 
int * unmatchedU_
 
int * parent_
 
int * lookahead_
 
int * CRS_pointers_
 
int * CRS_indices_
 
double * CRS_vals_
 
bool finish_
 
int U_
 
int V_
 
int E_
 
int avgDegU_
 
int k_star_
 
int icm_
 
int BFSInd_
 
int numThread_
 
int Qst_
 
int Qend_
 
int matched_
 
int choice_
 
const Epetra_CrsMatrix * A_
 

Detailed Description

An implementation of the Matcher interface that operates on Epetra matrices and Graphs.

One of the use of Maximum Cardinality Matching is that it provides nonzero diagonal for the sparse matrices. This multithreaded version of the matching algorithms provides an interface to solve the Bipartite Matching problem as well as it also provides permutation to get zero free diagonal for input sparse matrices.

Member Function Documentation

void Isorropia::Epetra::Matcher::delete_matched_v ( )
private
void Isorropia::Epetra::Matcher::complete_nonperfect_permutation ( )
private
int Isorropia::Epetra::Matcher::SGM ( )
private
int Isorropia::Epetra::Matcher::match_dfs ( )
private
int Isorropia::Epetra::Matcher::match_hk ( )
private
int Isorropia::Epetra::Matcher::construct_layered_graph ( )
private
int Isorropia::Epetra::Matcher::find_set_del_M ( )
private
int Isorropia::Epetra::Matcher::recursive_path_finder ( int  ,
int   
)
private
int Isorropia::Epetra::Matcher::dfs_path_finder ( int  )
private
int Isorropia::Epetra::Matcher::dfs_augment ( )
private
int Isorropia::Epetra::Matcher::augment_matching ( int  )
private
int Isorropia::Epetra::Matcher::DW_phase ( )
private
int Isorropia::Epetra::Matcher::getNumberOfMatchedVertices ( )

Member Data Documentation

int* Isorropia::Epetra::Matcher::mateU_
private
int* Isorropia::Epetra::Matcher::mateV_
private
int* Isorropia::Epetra::Matcher::Queue_
private
int* Isorropia::Epetra::Matcher::LV_
private
int* Isorropia::Epetra::Matcher::LU_
private
int* Isorropia::Epetra::Matcher::unmatchedU_
private
int* Isorropia::Epetra::Matcher::parent_
private
int* Isorropia::Epetra::Matcher::lookahead_
private
int* Isorropia::Epetra::Matcher::CRS_pointers_
private
int* Isorropia::Epetra::Matcher::CRS_indices_
private
double* Isorropia::Epetra::Matcher::CRS_vals_
private
bool Isorropia::Epetra::Matcher::finish_
private
int Isorropia::Epetra::Matcher::U_
private
int Isorropia::Epetra::Matcher::V_
private
int Isorropia::Epetra::Matcher::E_
private
int Isorropia::Epetra::Matcher::avgDegU_
private
int Isorropia::Epetra::Matcher::k_star_
private
int Isorropia::Epetra::Matcher::icm_
private
int Isorropia::Epetra::Matcher::BFSInd_
private
int Isorropia::Epetra::Matcher::numThread_
private
int Isorropia::Epetra::Matcher::Qst_
private
int Isorropia::Epetra::Matcher::Qend_
private
int Isorropia::Epetra::Matcher::matched_
private
int Isorropia::Epetra::Matcher::choice_
private
const Epetra_CrsMatrix* Isorropia::Epetra::Matcher::A_
private

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