5#ifndef DUNE_AMG_DEPENDENCY_HH
6#define DUNE_AMG_DEPENDENCY_HH
14#include <dune/common/propertymap.hh>
47 std::bitset<SIZE> flags_;
53 std::bitset<SIZE>::reference
operator[](std::size_t v);
133 std::bitset<SIZE> flags_;
140 std::bitset<SIZE>::reference
operator[](std::size_t v);
216 template<
typename G, std::
size_t i>
218 :
public RAPropertyMapHelper<typename std::bitset<VertexProperties::SIZE>::reference,
219 PropertyGraphVertexPropertyMap<G,i> >
238 typedef std::bitset<VertexProperties::SIZE>
BitSet;
253 typedef typename G::VertexDescriptor
Vertex;
277 return graph_->getVertexProperties(vertex)[
index];
285 template<
typename G,
typename EP,
typename VM,
typename EM>
291 template<
typename G,
typename EP,
typename VM,
typename EM>
292 typename PropertyMapTypeSelector<Amg::VertexVisitedTag,Amg::PropertiesGraph<G,Amg::VertexProperties,EP,VM,EM> >::Type
302 return os << props.flags_;
309 inline std::bitset<EdgeProperties::SIZE>::reference
355 return flags_.test(
DEPEND);
380 return ((flags_) & std::bitset<SIZE>((1<<
INFLUENCE)|(1<<
DEPEND))).to_ulong();
386 return os << props.flags_;
394 inline std::bitset<VertexProperties::SIZE>::reference
442 return flags_.test(
FRONT);
457 return flags_.test(
BORDER);
Provides classes for handling internal properties in a graph.
Provides classes for building the matrix graph.
bool depends() const
Checks whether the vertex the edge points to depends on the vertex the edge starts.
Definition dependency.hh:352
void resetFront()
Resets the front node flag.
Definition dependency.hh:445
ReadWritePropertyMapTag Category
Definition dependency.hh:223
bool isolated() const
Checks whether the node is isolated.
Definition dependency.hh:410
friend std::ostream & operator<<(std::ostream &os, const VertexProperties &props)
Definition dependency.hh:384
bool isTwoWay() const
Checks whether the edge is two way. I.e. both the influence flag and the depends flag are that.
Definition dependency.hh:371
void setInfluences()
Marks the edge as one of which the start vertex by the end vertex.
Definition dependency.hh:325
VertexProperties()
Constructor.
Definition dependency.hh:389
void setDepends()
Marks the edge as one of which the end point depends on the starting point.
Definition dependency.hh:338
PropertyGraphVertexPropertyMap()
Default constructor.
Definition dependency.hh:266
PropertyGraphVertexPropertyMap(G &g)
Constructor.
Definition dependency.hh:259
G Graph
The type of the graph with internal properties.
Definition dependency.hh:233
void resetExcludedBorder()
Marks the vertex as included in the aggregation.
Definition dependency.hh:460
void setFront()
Marks the node as belonging to the current clusters front.
Definition dependency.hh:435
void reset()
Reset all flags.
Definition dependency.hh:465
void setVisited()
Mark the node as already visited.
Definition dependency.hh:420
EdgeProperties()
Constructor.
Definition dependency.hh:305
std::bitset< VertexProperties::SIZE > BitSet
The type of the bitset.
Definition dependency.hh:238
void resetInfluences()
Resets the influence flag.
Definition dependency.hh:358
Amg::PropertyGraphVertexPropertyMap< Amg::PropertiesGraph< G, Amg::VertexProperties, EP, VM, EM >, Amg::VertexProperties::VISITED > Type
Definition dependency.hh:288
bool ValueType
The value type.
Definition dependency.hh:248
std::bitset< SIZE >::reference operator[](std::size_t v)
Access the bits directly.
Definition dependency.hh:395
void printFlags() const
Prints the attributes of the edge for debugging.
friend std::ostream & operator<<(std::ostream &os, const EdgeProperties &props)
Definition dependency.hh:300
bool influences() const
Checks whether the start vertex is influenced by the end vertex.
Definition dependency.hh:332
void setIsolated()
Marks that node as being isolated.
Definition dependency.hh:405
BitSet::reference Reference
The reference type.
Definition dependency.hh:243
bool excludedBorder() const
Tests whether the vertex is excluded from the aggregation.
Definition dependency.hh:455
void resetVisited()
Resets the visited flag.
Definition dependency.hh:430
bool visited() const
Checks whether the node is marked as visited.
Definition dependency.hh:425
Reference operator[](const Vertex &vertex) const
Get the properties associated to a vertex.
Definition dependency.hh:275
void reset()
Reset all flags.
Definition dependency.hh:320
void resetDepends()
Resets the depends flag.
Definition dependency.hh:345
G::VertexDescriptor Vertex
The vertex descriptor.
Definition dependency.hh:253
void resetIsolated()
Resets the isolated flag.
Definition dependency.hh:415
std::ostream & operator<<(std::ostream &os, const AggregationCriterion< T > &criterion)
Definition aggregates.hh:113
bool isStrong() const
Checks whether the edge is strong. I.e. the influence or depends flag is set.
Definition dependency.hh:377
bool front() const
Checks whether the node is marked as a front node.
Definition dependency.hh:440
std::bitset< SIZE >::reference operator[](std::size_t v)
Access the bits directly.
Definition dependency.hh:310
void setExcludedBorder()
Marks the vertex as excluded from the aggregation.
Definition dependency.hh:450
bool isOneWay() const
Checks whether the edge is one way. I.e. either the influence or the depends flag but is set.
Definition dependency.hh:364
@ index
the index to access in the bitset.
Definition dependency.hh:227
@ VISITED
Definition dependency.hh:129
@ ISOLATED
Definition dependency.hh:129
@ SIZE
Definition dependency.hh:129
@ BORDER
Definition dependency.hh:129
@ FRONT
Definition dependency.hh:129
@ DEPEND
Definition dependency.hh:43
@ SIZE
Definition dependency.hh:43
@ INFLUENCE
Definition dependency.hh:43
Definition allocator.hh:11
PropertyMapTypeSelector< Amg::VertexVisitedTag, Amg::PropertiesGraph< G, Amg::VertexProperties, EP, VM, EM > >::Type get(const Amg::VertexVisitedTag &tag, Amg::PropertiesGraph< G, Amg::VertexProperties, EP, VM, EM > &graph)
Definition dependency.hh:293
Class representing the properties of an edge in the matrix graph.
Definition dependency.hh:39
Class representing a node in the matrix graph.
Definition dependency.hh:126
Definition dependency.hh:220
Attaches properties to the edges and vertices of a graph.
Definition graph.hh:978
Tag idnetifying the visited property of a vertex.
Definition properties.hh:29