GraphColoring.hpp File Reference
#include <opm/common/TimingMacros.hpp>
#include <opm/grid/utility/SparseTable.hpp>
#include <algorithm>
#include <cstddef>
#include <deque>
#include <limits>
#include <numeric>
#include <queue>
#include <string>
#include <tuple>
#include <vector>
Include dependency graph for GraphColoring.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  Opm
 
namespace  Opm::Detail
 

Enumerations

enum class  Opm::ColoringType { Opm::SYMMETRIC , Opm::LOWER , Opm::UPPER }
 Specify coloring type. More...
 

Functions

template<class Graph >
std::size_t Opm::Detail::colorGraphWelshPowell (const Graph &graph, std::deque< typename Graph::VertexDescriptor > &orderedVertices, std::vector< int > &colors, int color, int noVertices)
 
template<class Graph , class Functor >
std::size_t Opm::Detail::breadthFirstSearch (const Graph &graph, typename Graph::VertexDescriptor root, Functor functor)
 
template<class Graph >
std::tuple< std::vector< int >, int, std::vector< std::size_t > > Opm::colorVerticesWelshPowell (const Graph &graph)
 Color the vertices of graph. More...
 
template<class Graph >
std::vector< std::size_t > Opm::reorderVerticesPreserving (const std::vector< int > &colors, int noColors, const std::vector< std::size_t > &verticesPerColor, const Graph &graph)
 ! Reorder colored graph preserving order of vertices with the same color. More...
 
template<class Graph >
std::vector< std::size_t > Opm::reorderVerticesSpheres (const std::vector< int > &colors, int noColors, const std::vector< std::size_t > &verticesPerColor, const Graph &graph, typename Graph::VertexDescriptor root)
 ! Reorder Vetrices in spheres More...
 
template<class M >
Opm::SparseTable< std::size_t > Opm::getMatrixRowColoring (const M &matrix, ColoringType coloringType)
 Given a matrix and dependecy type, returns a SparseTable grouping the rows by which can be executed in parallel without breaking dependencies. More...