3#ifndef DUNE_AMG_GRAPHCREATOR_HH
4#define DUNE_AMG_GRAPHCREATOR_HH
19 template<
class M,
class PI>
20 struct PropertiesGraphCreator
22 typedef typename M::matrix_type Matrix;
25 std::vector<bool> > SubGraph;
30 typename SubGraph::EdgeIndexMap>
33 typedef std::tuple<MatrixGraph*,PropertiesGraph*,SubGraph*> GraphTuple;
35 template<
class OF,
class T>
36 static GraphTuple create(
const M& matrix, T& excluded,
37 PI& pinfo,
const OF& of)
39 MatrixGraph* mg =
new MatrixGraph(matrix.getmat());
40 typedef typename PI::ParallelIndexSet ParallelIndexSet;
42 IndexIterator iend = pinfo.indexSet().end();
44 for(IndexIterator index = pinfo.indexSet().begin(); index != iend; ++index)
45 excluded[index->local()] = of.contains(index->local().attribute());
47 SubGraph* sg=
new SubGraph(*mg, excluded);
48 PropertiesGraph* pg =
new PropertiesGraph(*sg, IdentityMap(), sg->getEdgeIndexMap());
49 return GraphTuple(mg,pg,sg);
52 static void free(GraphTuple& graphs)
54 delete std::get<2>(graphs);
55 delete std::get<1>(graphs);
60 struct PropertiesGraphCreator<M,SequentialInformation>
62 typedef typename M::matrix_type Matrix;
70 IdentityMap> PropertiesGraph;
72 typedef std::tuple<MatrixGraph*,PropertiesGraph*> GraphTuple;
74 template<
class OF,
class T>
75 static GraphTuple create(
const M& matrix, T& excluded,
76 const SequentialInformation& pinfo,
81 MatrixGraph* mg =
new MatrixGraph(matrix.getmat());
82 PropertiesGraph* pg =
new PropertiesGraph(*mg, IdentityMap(), IdentityMap());
83 return GraphTuple(mg,pg);
86 static void free(GraphTuple& graphs)
88 delete std::get<1>(graphs);
Implementation of the BCRSMatrix class.
The (undirected) graph of a matrix.
Definition: graph.hh:49
Attaches properties to the edges and vertices of a graph.
Definition: graph.hh:976
A subgraph of a graph.
Definition: graph.hh:441
Provides classes for initializing the link attributes of a matrix graph.
Provides classes for building the matrix graph.
ArrayList< IndexPair, N >::const_iterator const_iterator
The constant iterator over the pairs.
Definition: indexset.hh:297
#define DUNE_UNUSED_PARAMETER(parm)
A macro to mark intentionally unused function parameters with.
Definition: unused.hh:25
Dune namespace.
Definition: alignedallocator.hh:14
Define general, extensible interface for operators. The available implementation wraps a matrix.
Definition of the DUNE_UNUSED macro for the case that config.h is not available.