libMesh::Parallel::Utils Namespace Reference

Classes

struct  Convert
 
struct  Convert< Hilbert::HilbertIndices >
 
struct  Convert< std::pair< FirstKeyType, SecondKeyType > >
 

Functions

template<typename KeyType >
bool is_sorted (const std::vector< KeyType > &v)
 
template<typename KeyType >
double to_double (const KeyType &k)
 
template<typename FirstKeyType , typename SecondKeyType >
double to_double (const std::pair< FirstKeyType, SecondKeyType > &k)
 
template<>
double to_double (const Hilbert::HilbertIndices &bvt)
 

Function Documentation

◆ is_sorted()

template<typename KeyType >
bool libMesh::Parallel::Utils::is_sorted ( const std::vector< KeyType > &  v)
inline
Returns
true if the vector v is sorted, false otherwise.

Requires O(N) comparisons, where N is the length of the vector. This was implemented because std::is_sorted() was an STL extension at the time.

Definition at line 51 of file parallel_conversion_utils.h.

Referenced by libMesh::Parallel::BinSorter< KeyType, IdxType >::BinSorter(), and libMesh::Parallel::Histogram< KeyType, IdxType >::Histogram().

52 {
53  if (v.empty())
54  return true;
55 
56  for (std::size_t i=1; i<v.size(); i++)
57  if (v[i] < v[i-1])
58  return false;
59 
60  return true;
61 }

◆ to_double() [1/3]

template<typename KeyType >
double libMesh::Parallel::Utils::to_double ( const KeyType &  k)
inline

A utility function which converts whatever KeyType is to a double for the histogram bounds

Definition at line 69 of file parallel_conversion_utils.h.

Referenced by libMesh::Parallel::BinSorter< KeyType, IdxType >::binsort(), libMesh::Parallel::Histogram< KeyType, IdxType >::make_histogram(), and to_double().

70 {
71  return static_cast<double>(k);
72 }

◆ to_double() [2/3]

template<typename FirstKeyType , typename SecondKeyType >
double libMesh::Parallel::Utils::to_double ( const std::pair< FirstKeyType, SecondKeyType > &  k)
inline

A utility function for pairs of key types. When finding bounds, the second entry of the pair is effectively "rounded away".

Definition at line 111 of file parallel_conversion_utils.h.

References to_double().

112 {
113  return to_double(k.first);
114 }
double to_double(const Hilbert::HilbertIndices &bvt)

◆ to_double() [3/3]

template<>
double libMesh::Parallel::Utils::to_double ( const Hilbert::HilbertIndices &  bvt)
inline

Definition at line 121 of file parallel_conversion_utils.h.

122 {
123  return static_cast<double>(bvt.rack2);
124 }