libMesh
Public Member Functions | Public Attributes | List of all members
libMesh::METIS_CSR_Graph< IndexType > Class Template Reference

This utility class provides a convenient implementation for building the compressed-row-storage graph required for the METIS/ParMETIS graph partitioning schemes. More...

#include <metis_csr_graph.h>

Public Member Functions

void prep_n_nonzeros (const libMesh::dof_id_type row, const libMesh::dof_id_type n_nonzeros_in)
 Sets the number of non-zero values in the given row. More...
 
libMesh::dof_id_type n_nonzeros (const libMesh::dof_id_type row) const
 
void prepare_for_use ()
 Replaces the entries in the offsets vector with their partial sums and resizes the val vector accordingly. More...
 
IndexType & operator() (const libMesh::dof_id_type row, const libMesh::dof_id_type nonzero)
 
const IndexType & operator() (const libMesh::dof_id_type row, const libMesh::dof_id_type nonzero) const
 

Public Attributes

std::vector< IndexType > offsets
 
std::vector< IndexType > vals
 

Detailed Description

template<class IndexType>
class libMesh::METIS_CSR_Graph< IndexType >

This utility class provides a convenient implementation for building the compressed-row-storage graph required for the METIS/ParMETIS graph partitioning schemes.

Author
Benjamin S. Kirk
Date
2013 Compressed graph data structure used by MetisPartitioner.

Definition at line 43 of file metis_csr_graph.h.

Member Function Documentation

◆ n_nonzeros()

template<class IndexType>
libMesh::dof_id_type libMesh::METIS_CSR_Graph< IndexType >::n_nonzeros ( const libMesh::dof_id_type  row) const
inline
Returns
The number of nonzeros in the requested row by subtracting the offsets vector entries.

Definition at line 63 of file metis_csr_graph.h.

References libMesh::METIS_CSR_Graph< IndexType >::offsets.

64  {
65  libmesh_assert_less (row+1, offsets.size());
66  return (offsets[row+1] - offsets[row]);
67  }
std::vector< IndexType > offsets

◆ operator()() [1/2]

template<class IndexType>
IndexType& libMesh::METIS_CSR_Graph< IndexType >::operator() ( const libMesh::dof_id_type  row,
const libMesh::dof_id_type  nonzero 
)
inline
Returns
A writable reference to the nonzero'th entry of row.

Definition at line 86 of file metis_csr_graph.h.

References libMesh::METIS_CSR_Graph< IndexType >::offsets, and libMesh::METIS_CSR_Graph< IndexType >::vals.

88  {
89  libmesh_assert_greater (vals.size(), offsets[row]+nonzero);
90 
91  return vals[offsets[row]+nonzero];
92  }
std::vector< IndexType > offsets
std::vector< IndexType > vals

◆ operator()() [2/2]

template<class IndexType>
const IndexType& libMesh::METIS_CSR_Graph< IndexType >::operator() ( const libMesh::dof_id_type  row,
const libMesh::dof_id_type  nonzero 
) const
inline
Returns
A const reference to the nonzero'th entry of row.

Definition at line 97 of file metis_csr_graph.h.

References libMesh::METIS_CSR_Graph< IndexType >::offsets, and libMesh::METIS_CSR_Graph< IndexType >::vals.

99  {
100  libmesh_assert_greater (vals.size(), offsets[row]+nonzero);
101 
102  return vals[offsets[row]+nonzero];
103  }
std::vector< IndexType > offsets
std::vector< IndexType > vals

◆ prep_n_nonzeros()

template<class IndexType>
void libMesh::METIS_CSR_Graph< IndexType >::prep_n_nonzeros ( const libMesh::dof_id_type  row,
const libMesh::dof_id_type  n_nonzeros_in 
)
inline

Sets the number of non-zero values in the given row.

The internal indexing is 1-based.

Definition at line 52 of file metis_csr_graph.h.

References libMesh::METIS_CSR_Graph< IndexType >::offsets.

Referenced by libMesh::MetisPartitioner::partition_range().

54  {
55  libmesh_assert_less (row+1, offsets.size());
56  offsets[row+1] = n_nonzeros_in;
57  }
std::vector< IndexType > offsets

◆ prepare_for_use()

template<class IndexType>
void libMesh::METIS_CSR_Graph< IndexType >::prepare_for_use ( )
inline

Replaces the entries in the offsets vector with their partial sums and resizes the val vector accordingly.

Definition at line 73 of file metis_csr_graph.h.

References libMesh::libmesh_assert(), libMesh::METIS_CSR_Graph< IndexType >::offsets, and libMesh::METIS_CSR_Graph< IndexType >::vals.

Referenced by libMesh::MetisPartitioner::partition_range().

74  {
75  std::partial_sum (offsets.begin(), offsets.end(), offsets.begin());
76  libmesh_assert (!offsets.empty());
77  vals.resize(offsets.back());
78 
79  if (vals.empty())
80  vals.push_back(0);
81  }
std::vector< IndexType > offsets
libmesh_assert(ctx)
std::vector< IndexType > vals

Member Data Documentation

◆ offsets

template<class IndexType>
std::vector<IndexType> libMesh::METIS_CSR_Graph< IndexType >::offsets

◆ vals

template<class IndexType>
std::vector<IndexType> libMesh::METIS_CSR_Graph< IndexType >::vals

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