3 #ifndef DUNE_AMG_DEPENDENCY_HH
4 #define DUNE_AMG_DEPENDENCY_HH
12 #include <dune/common/propertymap.hh>
45 std::bitset<SIZE> flags_;
51 std::bitset<SIZE>::reference
operator[](std::size_t v);
131 std::bitset<SIZE> flags_;
138 std::bitset<SIZE>::reference
operator[](std::size_t v);
214 template<
typename G, std::
size_t i>
216 :
public RAPropertyMapHelper<typename std::bitset<VertexProperties::SIZE>::reference,
217 PropertyGraphVertexPropertyMap<G,i> >
236 typedef std::bitset<VertexProperties::SIZE>
BitSet;
251 typedef typename G::VertexDescriptor
Vertex;
275 return graph_->getVertexProperties(vertex)[
index];
283 template<
typename G,
typename EP,
typename VM,
typename EM>
289 template<
typename G,
typename EP,
typename VM,
typename EM>
290 typename PropertyMapTypeSelector<Amg::VertexVisitedTag,Amg::PropertiesGraph<G,Amg::VertexProperties,EP,VM,EM> >::Type
300 return os << props.flags_;
307 inline std::bitset<EdgeProperties::SIZE>::reference
353 return flags_.test(
DEPEND);
378 return ((flags_) & std::bitset<SIZE>((1<<
INFLUENCE)|(1<<
DEPEND))).to_ulong();
384 return os << props.flags_;
392 inline std::bitset<VertexProperties::SIZE>::reference
440 return flags_.test(
FRONT);
455 return flags_.test(
BORDER);
Provides classes for building the matrix graph.
Provides classes for handling internal properties in a graph.
bool depends() const
Checks wether the vertex the edge points to depends on the vertex the edge starts.
Definition: dependency.hh:350
void resetFront()
Resets the front node flag.
Definition: dependency.hh:443
std::bitset< VertexProperties::SIZE > BitSet
The type of the bitset.
Definition: dependency.hh:236
bool isolated() const
Checks wether the node is isolated.
Definition: dependency.hh:408
bool ValueType
The value type.
Definition: dependency.hh:246
BitSet::reference Reference
The reference type.
Definition: dependency.hh:241
bool isTwoWay() const
Checks wether the edge is two way. I.e. both the influence flag and the depends flag are that.
Definition: dependency.hh:369
void setInfluences()
Marks the edge as one of which the start vertex by the end vertex.
Definition: dependency.hh:323
VertexProperties()
Constructor.
Definition: dependency.hh:387
void setDepends()
Marks the edge as one of which the end point depends on the starting point.
Definition: dependency.hh:336
std::ostream & operator<<(std::ostream &os, const AggregationCriterion< T > &criterion)
Definition: aggregates.hh:111
PropertyGraphVertexPropertyMap()
Default constructor.
Definition: dependency.hh:264
PropertyGraphVertexPropertyMap(G &g)
Constructor.
Definition: dependency.hh:257
G::VertexDescriptor Vertex
The vertex descriptor.
Definition: dependency.hh:251
void resetExcludedBorder()
Marks the vertex as included in the aggregation.
Definition: dependency.hh:458
void setFront()
Marks the node as belonging to the current clusters front.
Definition: dependency.hh:433
void reset()
Reset all flags.
Definition: dependency.hh:463
void setVisited()
Mark the node as already visited.
Definition: dependency.hh:418
friend std::ostream & operator<<(std::ostream &os, const EdgeProperties &props)
Definition: dependency.hh:298
EdgeProperties()
Constructor.
Definition: dependency.hh:303
void resetInfluences()
Resets the influence flag.
Definition: dependency.hh:356
G Graph
The type of the graph with internal properties.
Definition: dependency.hh:231
std::bitset< SIZE >::reference operator[](std::size_t v)
Access the bits directly.
Definition: dependency.hh:393
void printFlags() const
Prints the attributes of the edge for debugging.
friend std::ostream & operator<<(std::ostream &os, const VertexProperties &props)
Definition: dependency.hh:382
Amg::PropertyGraphVertexPropertyMap< Amg::PropertiesGraph< G, Amg::VertexProperties, EP, VM, EM >, Amg::VertexProperties::VISITED > Type
Definition: dependency.hh:286
bool influences() const
Checks wether the start vertex is influenced by the end vertex.
Definition: dependency.hh:330
void setIsolated()
Marks that node as being isolated.
Definition: dependency.hh:403
bool excludedBorder() const
Tests whether the vertex is excluded from the aggregation.
Definition: dependency.hh:453
void resetVisited()
Resets the visited flag.
Definition: dependency.hh:428
bool visited() const
Checks wether the node is marked as visited.
Definition: dependency.hh:423
Reference operator[](const Vertex &vertex) const
Get the properties associated to a vertex.
Definition: dependency.hh:273
void reset()
Reset all flags.
Definition: dependency.hh:318
void resetDepends()
Resets the depends flag.
Definition: dependency.hh:343
ReadWritePropertyMapTag Category
Definition: dependency.hh:221
void resetIsolated()
Resets the isolated flag.
Definition: dependency.hh:413
bool isStrong() const
Checks wether the edge is strong. I.e. the influence or depends flag is set.
Definition: dependency.hh:375
bool front() const
Checks wether the node is marked as a front node.
Definition: dependency.hh:438
std::bitset< SIZE >::reference operator[](std::size_t v)
Access the bits directly.
Definition: dependency.hh:308
void setExcludedBorder()
Marks the vertex as excluded from the aggregation.
Definition: dependency.hh:448
bool isOneWay() const
Checks wether the edge is one way. I.e. either the influence or the depends flag but is set.
Definition: dependency.hh:362
@ index
the index to access in the bitset.
Definition: dependency.hh:225
@ VISITED
Definition: dependency.hh:127
@ ISOLATED
Definition: dependency.hh:127
@ SIZE
Definition: dependency.hh:127
@ BORDER
Definition: dependency.hh:127
@ FRONT
Definition: dependency.hh:127
@ DEPEND
Definition: dependency.hh:41
@ SIZE
Definition: dependency.hh:41
@ INFLUENCE
Definition: dependency.hh:41
Definition: allocator.hh:9
PropertyMapTypeSelector< Amg::VertexVisitedTag, Amg::PropertiesGraph< G, Amg::VertexProperties, EP, VM, EM > >::Type get([[maybe_unused]] const Amg::VertexVisitedTag &tag, Amg::PropertiesGraph< G, Amg::VertexProperties, EP, VM, EM > &graph)
Definition: dependency.hh:291
Class representing the properties of an ede in the matrix graph.
Definition: dependency.hh:37
Class representing a node in the matrix graph.
Definition: dependency.hh:124
Definition: dependency.hh:218
Attaches properties to the edges and vertices of a graph.
Definition: graph.hh:976
Tag idnetifying the visited property of a vertex.
Definition: properties.hh:27