Dune Core Modules (unstable)

A Parallel Algebraic Multigrid based on Agglomeration. More...

Files

file  aggregates.hh
 Provides classes for the Coloring process of AMG.
 
file  amg.hh
 The AMG preconditioner.
 
file  construction.hh
 Helper classes for the construction of classes without empty constructor.
 
file  dependency.hh
 Provides classes for initializing the link attributes of a matrix graph.
 
file  galerkin.hh
 Provides a class for building the galerkin product based on a aggregation scheme.
 
file  globalaggregates.hh
 Provdes class for identifying aggregates globally.
 
file  graph.hh
 Provides classes for building the matrix graph.
 
file  hierarchy.hh
 Provides a classes representing the hierarchies in AMG.
 
file  indicescoarsener.hh
 Provides a class for building the index set and remote indices on the coarse level.
 
file  kamg.hh
 Provides an algebraic multigrid using a Krylov cycle.
 
file  matrixhierarchy.hh
 Provides a classes representing the hierarchies in AMG.
 
file  parameters.hh
 Parameter classes for customizing AMG.
 
file  properties.hh
 Provides classes for handling internal properties in a graph.
 
file  smoother.hh
 Classes for the generic construction and application of the smoothers.
 
file  transfer.hh
 Prolongation and restriction for amg.
 
file  twolevelmethod.hh
 Algebraic twolevel methods.
 

Namespaces

namespace  Dune
 Dune namespace.
 

Classes

class  Dune::Amg::AggregationCriterion< T >
 Base class of all aggregation criterions. More...
 
class  Dune::Amg::SymmetricMatrixDependency< M, N >
 Dependency policy for symmetric matrices. More...
 
class  Dune::Amg::Dependency< M, N >
 Dependency policy for symmetric matrices. More...
 
class  Dune::Amg::SymmetricDependency< M, N >
 Dependency policy for symmetric matrices. More...
 
class  Dune::Amg::Diagonal< N >
 Norm that uses only the [N][N] entry of the block to determine couplings. More...
 
class  Dune::Amg::FirstDiagonal
 Norm that uses only the [0][0] entry of the block to determine couplings. More...
 
struct  Dune::Amg::RowSum
 Functor using the row sum (infinity) norm to determine strong couplings. More...
 
class  Dune::Amg::SymmetricCriterion< M, Norm >
 Criterion taking advantage of symmetric matrices. More...
 
class  Dune::Amg::UnSymmetricCriterion< M, Norm >
 Criterion suitable for unsymmetric matrices. More...
 
class  Dune::Amg::Aggregator< G >
 Class for building the aggregates. More...
 
class  Dune::Amg::AggregatesMap< V >
 Class providing information about the mapping of the vertices onto aggregates. More...
 
class  Dune::Amg::AggregatesMap< V >::DummyEdgeVisitor
 A Dummy visitor that does nothing for each visited edge. More...
 
class  Dune::Amg::Aggregate< G, S >
 A class for temporarily storing the vertices of an aggregate in. More...
 
class  Dune::Amg::KAMG< M, X, S, PI, K, A >
 an algebraic multigrid method using a Krylov-cycle. More...
 
class  Dune::Amg::KAmgTwoGrid< AMG >
 Two grid operator for AMG with Krylov cycle. More...
 
class  Dune::Amg::AMG< M, X, S, PI, A >
 Parallel algebraic multigrid based on agglomeration. More...
 
struct  Dune::Amg::ConstructionTraits< T >
 Traits class for generically constructing non default constructable types. More...
 
class  Dune::Amg::EdgeProperties
 Class representing the properties of an edge in the matrix graph. More...
 
class  Dune::Amg::VertexProperties
 Class representing a node in the matrix graph. More...
 
class  Dune::Amg::SparsityBuilder< M >
 Functor for building the sparsity pattern of the matrix using examineConnectivity. More...
 
class  Dune::Amg::BaseConnectivityConstructor::ConnectedBuilder< G, S, V >
 Visitor for identifying connected aggregates during a breadthFirstSearch. More...
 
class  Dune::Amg::MatrixGraph< M >
 The (undirected) graph of a matrix. More...
 
class  Dune::Amg::SubGraph< G, T >
 A subgraph of a graph. More...
 
class  Dune::Amg::VertexPropertiesGraph< G, VP, VM >
 Attaches properties to the vertices of a graph. More...
 
class  Dune::Amg::PropertiesGraph< G, VP, EP, VM, EM >
 Attaches properties to the edges and vertices of a graph. More...
 
class  Dune::Amg::GraphVertexPropertiesSelector< G >
 Wrapper to access the internal edge properties of a graph via operator[]() More...
 
class  Dune::Amg::GraphEdgePropertiesSelector< G >
 Wrapper to access the internal vertex properties of a graph via operator[]() More...
 
class  Dune::Amg::Hierarchy< T, A >
 A hierarchy of containers (e.g. matrices or vectors) More...
 
class  Dune::Amg::IndicesCoarsener< OwnerOverlapCopyCommunication< G, L >, E >
 Coarsen Indices in the parallel case. More...
 
class  Dune::Amg::IndicesCoarsener< SequentialInformation, E >
 Coarsen Indices in the sequential case. More...
 
class  Dune::Amg::MatrixHierarchy< M, PI, A >
 The hierarchies build by the coarsening process. More...
 
class  Dune::Amg::CoarsenCriterion< T >
 The criterion describing the stop criteria for the coarsening process. More...
 
class  Dune::Amg::DependencyParameters
 Parameters needed to check whether a node depends on another. More...
 
class  Dune::Amg::AggregationParameters
 Parameters needed for the aggregation process. More...
 
class  Dune::Amg::CoarseningParameters
 Parameters for the complete coarsening process. More...
 
class  Dune::Amg::Parameters
 All parameters for AMG. More...
 
struct  Dune::Amg::VertexVisitedTag
 Tag idnetifying the visited property of a vertex. More...
 
class  Dune::Amg::RandomAccessBundledPropertyMap< C, K, i, T, R >
 A property map that extracts one property out of a bundle using operator[]() More...
 
struct  Dune::Amg::DefaultSmootherArgs< T >
 The default class for the smoother arguments. More...
 
struct  Dune::Amg::SmootherTraits< T >
 Traits class for getting the attribute class of a smoother. More...
 
class  Dune::Amg::DefaultConstructionArgs< T >
 Construction Arguments for the default smoothers. More...
 
struct  Dune::Amg::ConstructionTraits< SeqSSOR< M, X, Y, l > >
 Policy for the construction of the SeqSSOR smoother. More...
 
struct  Dune::Amg::ConstructionTraits< SeqSOR< M, X, Y, l > >
 Policy for the construction of the SeqSOR smoother. More...
 
struct  Dune::Amg::ConstructionTraits< SeqJac< M, X, Y, l > >
 Policy for the construction of the SeqJac smoother. More...
 
struct  Dune::Amg::ConstructionTraits< Richardson< X, Y > >
 Policy for the construction of the Richardson smoother. More...
 
struct  Dune::Amg::ConstructionTraits< SeqILU< M, X, Y > >
 Policy for the construction of the SeqILU smoother. More...
 
struct  Dune::Amg::ConstructionTraits< ParSSOR< M, X, Y, C > >
 Policy for the construction of the ParSSOR smoother. More...
 
struct  Dune::Amg::SmootherApplier< T >
 Helper class for applying the smoothers. More...
 

Typedefs

typedef T Dune::Amg::AggregationCriterion< T >::DependencyPolicy
 The policy for calculating the dependency graph.
 
typedef M Dune::Amg::SymmetricMatrixDependency< M, N >::Matrix
 The matrix type we build the dependency of.
 
typedef N Dune::Amg::SymmetricMatrixDependency< M, N >::Norm
 The norm to use for examining the matrix entries.
 
typedef Matrix::row_type Dune::Amg::SymmetricMatrixDependency< M, N >::Row
 Constant Row iterator of the matrix.
 
typedef Matrix::ConstColIterator Dune::Amg::SymmetricMatrixDependency< M, N >::ColIter
 Constant column iterator of the matrix.
 
typedef Matrix::field_type Dune::Amg::SymmetricMatrixDependency< M, N >::field_type
 The current max value.
 
typedef M Dune::Amg::Dependency< M, N >::Matrix
 The matrix type we build the dependency of.
 
typedef N Dune::Amg::Dependency< M, N >::Norm
 The norm to use for examining the matrix entries.
 
typedef Matrix::row_type Dune::Amg::Dependency< M, N >::Row
 Constant Row iterator of the matrix.
 
typedef Matrix::ConstColIterator Dune::Amg::Dependency< M, N >::ColIter
 Constant column iterator of the matrix.
 
typedef Matrix::field_type Dune::Amg::Dependency< M, N >::field_type
 The current max value.
 
typedef M Dune::Amg::SymmetricDependency< M, N >::Matrix
 The matrix type we build the dependency of.
 
typedef N Dune::Amg::SymmetricDependency< M, N >::Norm
 The norm to use for examining the matrix entries.
 
typedef Matrix::row_type Dune::Amg::SymmetricDependency< M, N >::Row
 Constant Row iterator of the matrix.
 
typedef Matrix::ConstColIterator Dune::Amg::SymmetricDependency< M, N >::ColIter
 Constant column iterator of the matrix.
 
typedef Matrix::field_type Dune::Amg::SymmetricDependency< M, N >::field_type
 The current max value.
 
typedef V Dune::Amg::AggregatesMap< V >::VertexDescriptor
 The vertex descriptor type.
 
typedef V Dune::Amg::AggregatesMap< V >::AggregateDescriptor
 The aggregate descriptor type.
 
typedef PoolAllocator< VertexDescriptor, 100 > Dune::Amg::AggregatesMap< V >::Allocator
 The allocator we use for our lists and the set.
 
typedef SLList< VertexDescriptor, AllocatorDune::Amg::AggregatesMap< V >::VertexList
 The type of a single linked list of vertex descriptors.
 
typedef MatrixGraph::VertexDescriptor Dune::Amg::Aggregate< G, S >::Vertex
 The vertex descriptor type.
 
typedef PoolAllocator< Vertex, 100 > Dune::Amg::Aggregate< G, S >::Allocator
 The allocator we use for our lists and the set.
 
typedef S Dune::Amg::Aggregate< G, S >::VertexSet
 The type of a single linked list of vertex descriptors.
 
typedef VertexSet::const_iterator Dune::Amg::Aggregate< G, S >::const_iterator
 Const iterator over a vertex list.
 
typedef std::size_t * Dune::Amg::Aggregate< G, S >::SphereMap
 Type of the mapping of aggregate members onto distance spheres.
 
typedef G Dune::Amg::Aggregator< G >::MatrixGraph
 The matrix graph type used.
 
typedef MatrixGraph::VertexDescriptor Dune::Amg::Aggregator< G >::Vertex
 The vertex identifier.
 
typedef MatrixGraph::VertexDescriptor Dune::Amg::Aggregator< G >::AggregateDescriptor
 The type of the aggregate descriptor.
 
typedef V Dune::Amg::Aggregator< G >::AggregateVisitor< V >::Visitor
 The type of the adapted visitor.
 
typedef M Dune::Amg::AMG< M, X, S, PI, A >::Operator
 The matrix operator type.
 
typedef PI Dune::Amg::AMG< M, X, S, PI, A >::ParallelInformation
 The type of the parallel information. Either OwnerOverlapCommunication or another type describing the parallel data distribution and providing communication methods.
 
typedef MatrixHierarchy< M, ParallelInformation, A > Dune::Amg::AMG< M, X, S, PI, A >::OperatorHierarchy
 The operator hierarchy type.
 
typedef OperatorHierarchy::ParallelInformationHierarchy Dune::Amg::AMG< M, X, S, PI, A >::ParallelInformationHierarchy
 The parallal data distribution hierarchy type.
 
typedef X Dune::Amg::AMG< M, X, S, PI, A >::Domain
 The domain type.
 
typedef X Dune::Amg::AMG< M, X, S, PI, A >::Range
 The range type.
 
typedef InverseOperator< X, X > Dune::Amg::AMG< M, X, S, PI, A >::CoarseSolver
 the type of the coarse solver.
 
typedef S Dune::Amg::AMG< M, X, S, PI, A >::Smoother
 The type of the smoother. More...
 
typedef SmootherTraits< Smoother >::Arguments Dune::Amg::AMG< M, X, S, PI, A >::SmootherArgs
 The argument type for the construction of the smoother.
 
typedef const void * Dune::Amg::ConstructionTraits< T >::Arguments
 A type holding all the arguments needed to call the constructor.
 
typedef G Dune::Amg::PropertyGraphVertexPropertyMap< G, i >::Graph
 The type of the graph with internal properties.
 
typedef std::bitset< VertexProperties::SIZE > Dune::Amg::PropertyGraphVertexPropertyMap< G, i >::BitSet
 The type of the bitset.
 
typedef BitSet::reference Dune::Amg::PropertyGraphVertexPropertyMap< G, i >::Reference
 The reference type.
 
typedef bool Dune::Amg::PropertyGraphVertexPropertyMap< G, i >::ValueType
 The value type.
 
typedef G::VertexDescriptor Dune::Amg::PropertyGraphVertexPropertyMap< G, i >::Vertex
 The vertex descriptor.
 
typedef T Dune::Amg::OverlapVertex< T >::Aggregate
 The aggregate descriptor.
 
typedef T Dune::Amg::OverlapVertex< T >::Vertex
 The vertex descriptor.
 
typedef G Dune::Amg::BaseConnectivityConstructor::ConnectedBuilder< G, S, V >::Graph
 The type of the graph.
 
typedef Graph::ConstEdgeIterator Dune::Amg::BaseConnectivityConstructor::ConnectedBuilder< G, S, V >::ConstEdgeIterator
 The constant edge iterator.
 
typedef S Dune::Amg::BaseConnectivityConstructor::ConnectedBuilder< G, S, V >::Set
 The type of the connected set.
 
typedef V Dune::Amg::BaseConnectivityConstructor::ConnectedBuilder< G, S, V >::VisitedMap
 The type of the map for marking vertices as visited.
 
typedef Graph::VertexDescriptor Dune::Amg::BaseConnectivityConstructor::ConnectedBuilder< G, S, V >::Vertex
 The vertex descriptor of the graph.
 
typedef E Dune::Amg::ParallelIndicesCoarsener< T, E >::ExcludedAttributes
 The set of excluded attributes.
 
typedef T Dune::Amg::ParallelIndicesCoarsener< T, E >::ParallelInformation
 The type of the parallel information.
 
typedef ParallelIndexSet::GlobalIndex Dune::Amg::ParallelIndicesCoarsener< T, E >::GlobalIndex
 The type of the global index.
 
typedef ParallelIndexSet::LocalIndex Dune::Amg::ParallelIndicesCoarsener< T, E >::LocalIndex
 The type of the local index.
 
typedef LocalIndex::Attribute Dune::Amg::ParallelIndicesCoarsener< T, E >::Attribute
 The type of the attribute.
 
typedef Dune::RemoteIndices< ParallelIndexSet > Dune::Amg::ParallelIndicesCoarsener< T, E >::RemoteIndices
 The type of the remote indices.
 
typedef C Dune::Amg::RandomAccessBundledPropertyMap< C, K, i, T, R >::Container
 The container that holds the properties.
 
typedef R Dune::Amg::RandomAccessBundledPropertyMap< C, K, i, T, R >::Reference
 The reference type of the container.
 
typedef K Dune::Amg::RandomAccessBundledPropertyMap< C, K, i, T, R >::Key
 The key of the property map.
 
typedef LvaluePropertyMapTag Dune::Amg::RandomAccessBundledPropertyMap< C, K, i, T, R >::Category
 The category of the property map.
 
typedef FieldTraits< T >::real_type Dune::Amg::DefaultSmootherArgs< T >::RelaxationFactor
 The type of the relaxation factor.
 

Enumerations

enum  
 Flags of the link.
 
enum  { Dune::Amg::PropertyGraphVertexPropertyMap< G, i >::index = i }
 
enum  { Dune::Amg::MAX_PROCESSES = 72000 }
 
enum  Dune::Amg::AccumulationMode { Dune::Amg::noAccu = 0 , Dune::Amg::atOnceAccu =1 , Dune::Amg::successiveAccu =2 }
 Identifiers for the different accumulation modes. More...
 
enum  { Dune::Amg::RandomAccessBundledPropertyMap< C, K, i, T, R >::index = i }
 

Functions

 Dune::Amg::AggregationCriterion< T >::AggregationCriterion ()
 Constructor. More...
 
void Dune::Amg::AggregationCriterion< T >::setDefaultValuesIsotropic (std::size_t dim, std::size_t diameter=2)
 Sets reasonable default values for an isotropic problem. More...
 
void Dune::Amg::AggregationCriterion< T >::setDefaultValuesAnisotropic (std::size_t dim, std::size_t diameter=2)
 Sets reasonable default values for an aisotropic problem. More...
 
template<class M >
FieldTraits< typenameM::field_type >::real_type Dune::Amg::Diagonal< N >::operator() (const M &m, typename std::enable_if_t<!Dune::IsNumber< M >::value > *sfinae=nullptr) const
 compute the norm of a matrix. More...
 
template<class M >
auto Dune::Amg::Diagonal< N >::operator() (const M &m, typename std::enable_if_t< Dune::IsNumber< M >::value > *sfinae=nullptr) const
 Compute the norm of a scalar. More...
 
template<class M >
FieldTraits< typenameM::field_type >::real_type Dune::Amg::RowSum::operator() (const M &m) const
 compute the norm of a matrix. More...
 
template<class M >
FieldTraits< typenameM::field_type >::real_type Dune::Amg::FrobeniusNorm::operator() (const M &m) const
 compute the norm of a matrix. More...
 
template<class M >
FieldTraits< typenameM::field_type >::real_type Dune::Amg::AlwaysOneNorm::operator() (const M &m) const
 compute the norm of a matrix. More...
 
 Dune::Amg::AggregatesMap< V >::AggregatesMap ()
 Constructs without allocating memory.
 
 Dune::Amg::AggregatesMap< V >::AggregatesMap (std::size_t noVertices)
 Constructs with allocating memory. More...
 
 Dune::Amg::AggregatesMap< V >::~AggregatesMap ()
 Destructor.
 
template<class M , class G , class C >
std::tuple< int, int, int, int > Dune::Amg::AggregatesMap< V >::buildAggregates (const M &matrix, G &graph, const C &criterion, bool finestLevel)
 Build the aggregates. More...
 
template<bool reset, class G , class F , class VM >
std::size_t Dune::Amg::AggregatesMap< V >::breadthFirstSearch (const VertexDescriptor &start, const AggregateDescriptor &aggregate, const G &graph, F &aggregateVisitor, VM &visitedMap) const
 Breadth first search within an aggregate. More...
 
template<bool remove, bool reset, class G , class L , class F1 , class F2 , class VM >
std::size_t Dune::Amg::AggregatesMap< V >::breadthFirstSearch (const VertexDescriptor &start, const AggregateDescriptor &aggregate, const G &graph, L &visited, F1 &aggregateVisitor, F2 &nonAggregateVisitor, VM &visitedMap) const
 Breadth first search within an aggregate. More...
 
void Dune::Amg::AggregatesMap< V >::allocate (std::size_t noVertices)
 Allocate memory for holding the information. More...
 
std::size_t Dune::Amg::AggregatesMap< V >::noVertices () const
 Get the number of vertices.
 
void Dune::Amg::AggregatesMap< V >::free ()
 Free the allocated memory.
 
AggregateDescriptorDune::Amg::AggregatesMap< V >::operator[] (const VertexDescriptor &v)
 Get the aggregate a vertex belongs to. More...
 
const AggregateDescriptorDune::Amg::AggregatesMap< V >::operator[] (const VertexDescriptor &v) const
 Get the aggregate a vertex belongs to. More...
 
template<class G , class C >
void Dune::Amg::buildDependency (G &graph, const typename C::Matrix &matrix, C criterion, bool finestLevel)
 Build the dependency of the matrix graph.
 
 Dune::Amg::Aggregate< G, S >::Aggregate (MatrixGraph &graph, AggregatesMap< Vertex > &aggregates, VertexSet &connectivity, std::vector< Vertex > &front_)
 Constructor. More...
 
void Dune::Amg::Aggregate< G, S >::reconstruct (const Vertex &vertex)
 Reconstruct the aggregat from an seed node. More...
 
void Dune::Amg::Aggregate< G, S >::seed (const Vertex &vertex)
 Initialize the aggregate with one vertex.
 
void Dune::Amg::Aggregate< G, S >::add (const Vertex &vertex)
 Add a vertex to the aggregate.
 
void Dune::Amg::Aggregate< G, S >::clear ()
 Clear the aggregate.
 
VertexSet::size_type Dune::Amg::Aggregate< G, S >::size ()
 Get the size of the aggregate.
 
VertexSet::size_type Dune::Amg::Aggregate< G, S >::connectSize ()
 Get the number of connections to other aggregates.
 
int Dune::Amg::Aggregate< G, S >::id ()
 Get the id identifying the aggregate.
 
const_iterator Dune::Amg::Aggregate< G, S >::begin () const
 get an iterator over the vertices of the aggregate.
 
const_iterator Dune::Amg::Aggregate< G, S >::end () const
 get an iterator over the vertices of the aggregate.
 
 Dune::Amg::Aggregator< G >::Aggregator ()
 Constructor.
 
 Dune::Amg::Aggregator< G >::~Aggregator ()
 Destructor.
 
template<class M , class C >
std::tuple< int, int, int, int > Dune::Amg::Aggregator< G >::build (const M &m, G &graph, AggregatesMap< Vertex > &aggregates, const C &c, bool finestLevel)
 Build the aggregates. More...
 
 Dune::Amg::Aggregator< G >::AggregateVisitor< V >::AggregateVisitor (const AggregatesMap< Vertex > &aggregates, const AggregateDescriptor &aggregate, Visitor &visitor)
 Constructor. More...
 
void Dune::Amg::Aggregator< G >::AggregateVisitor< V >::operator() (const typename MatrixGraph::ConstEdgeIterator &edge)
 Examine an edge. More...
 
 Dune::Amg::Aggregator< G >::Counter::Counter ()
 Constructor.
 
int Dune::Amg::Aggregator< G >::Counter::value ()
 Access the current count.
 
void Dune::Amg::Aggregator< G >::Counter::increment ()
 Increment counter.
 
void Dune::Amg::Aggregator< G >::Counter::decrement ()
 Decrement counter.
 
 Dune::Amg::Aggregator< G >::FrontNeighbourCounter::FrontNeighbourCounter (const MatrixGraph &front)
 Constructor. More...
 
 Dune::Amg::Aggregator< G >::ConnectivityCounter::ConnectivityCounter (const VertexSet &connected, const AggregatesMap< Vertex > &aggregates)
 Constructor. More...
 
 Dune::Amg::Aggregator< G >::DependencyCounter::DependencyCounter ()
 Constructor.
 
 Dune::Amg::Aggregator< G >::FrontMarker::FrontMarker (std::vector< Vertex > &front, MatrixGraph &graph)
 Constructor. More...
 
 Dune::Amg::AMG< M, X, S, PI, A >::AMG (OperatorHierarchy &matrices, CoarseSolver &coarseSolver, const SmootherArgs &smootherArgs, const Parameters &parms)
 Construct a new amg with a specific coarse solver. More...
 
template<class C >
 Dune::Amg::AMG< M, X, S, PI, A >::AMG (const Operator &fineOperator, const C &criterion, const SmootherArgs &smootherArgs=SmootherArgs(), const ParallelInformation &pinfo=ParallelInformation())
 Construct an AMG with an inexact coarse solver based on the smoother. More...
 
 Dune::Amg::AMG< M, X, S, PI, A >::AMG (std::shared_ptr< const Operator > fineOperator, const ParameterTree &configuration, const ParallelInformation &pinfo=ParallelInformation())
 Constructor an AMG via ParameterTree. More...
 
 Dune::Amg::AMG< M, X, S, PI, A >::AMG (const AMG &amg)
 Copy constructor.
 
void Dune::Amg::AMG< M, X, S, PI, A >::pre (Domain &x, Range &b)
 Prepare the preconditioner. More...
 
void Dune::Amg::AMG< M, X, S, PI, A >::apply (Domain &v, const Range &d)
 Apply one step of the preconditioner to the system A(v)=d. More...
 
virtual SolverCategory::Category Dune::Amg::AMG< M, X, S, PI, A >::category () const
 Category of the preconditioner (see SolverCategory::Category)
 
void Dune::Amg::AMG< M, X, S, PI, A >::post (Domain &x)
 Clean up. More...
 
template<class A1 >
void Dune::Amg::AMG< M, X, S, PI, A >::getCoarsestAggregateNumbers (std::vector< std::size_t, A1 > &cont)
 Get the aggregate number of each unknown on the coarsest level. More...
 
void Dune::Amg::AMG< M, X, S, PI, A >::recalculateHierarchy ()
 Recalculate the matrix hierarchy. More...
 
bool Dune::Amg::AMG< M, X, S, PI, A >::usesDirectCoarseLevelSolver () const
 Check whether the coarse solver used is a direct solver. More...
 
static std::shared_ptr< T > Dune::Amg::ConstructionTraits< T >::construct (Arguments &args)
 Construct an object with the specified arguments. More...
 
 Dune::Amg::EdgeProperties::EdgeProperties ()
 Constructor.
 
std::bitset< SIZE >::reference Dune::Amg::EdgeProperties::operator[] (std::size_t v)
 Access the bits directly.
 
bool Dune::Amg::EdgeProperties::operator[] (std::size_t v) const
 Access the bits directly.
 
bool Dune::Amg::EdgeProperties::depends () const
 Checks whether the vertex the edge points to depends on the vertex the edge starts. More...
 
void Dune::Amg::EdgeProperties::setDepends ()
 Marks the edge as one of which the end point depends on the starting point.
 
void Dune::Amg::EdgeProperties::resetDepends ()
 Resets the depends flag.
 
bool Dune::Amg::EdgeProperties::influences () const
 Checks whether the start vertex is influenced by the end vertex. More...
 
void Dune::Amg::EdgeProperties::setInfluences ()
 Marks the edge as one of which the start vertex by the end vertex.
 
void Dune::Amg::EdgeProperties::resetInfluences ()
 Resets the influence flag.
 
bool Dune::Amg::EdgeProperties::isOneWay () const
 Checks whether the edge is one way. I.e. either the influence or the depends flag but is set.
 
bool Dune::Amg::EdgeProperties::isTwoWay () const
 Checks whether the edge is two way. I.e. both the influence flag and the depends flag are that.
 
bool Dune::Amg::EdgeProperties::isStrong () const
 Checks whether the edge is strong. I.e. the influence or depends flag is set.
 
void Dune::Amg::EdgeProperties::reset ()
 Reset all flags.
 
void Dune::Amg::EdgeProperties::printFlags () const
 Prints the attributes of the edge for debugging.
 
 Dune::Amg::VertexProperties::VertexProperties ()
 Constructor.
 
std::bitset< SIZE >::reference Dune::Amg::VertexProperties::operator[] (std::size_t v)
 Access the bits directly.
 
bool Dune::Amg::VertexProperties::operator[] (std::size_t v) const
 Access the bits directly.
 
void Dune::Amg::VertexProperties::setIsolated ()
 Marks that node as being isolated. More...
 
bool Dune::Amg::VertexProperties::isolated () const
 Checks whether the node is isolated.
 
void Dune::Amg::VertexProperties::resetIsolated ()
 Resets the isolated flag.
 
void Dune::Amg::VertexProperties::setVisited ()
 Mark the node as already visited.
 
bool Dune::Amg::VertexProperties::visited () const
 Checks whether the node is marked as visited.
 
void Dune::Amg::VertexProperties::resetVisited ()
 Resets the visited flag.
 
void Dune::Amg::VertexProperties::setFront ()
 Marks the node as belonging to the current clusters front.
 
bool Dune::Amg::VertexProperties::front () const
 Checks whether the node is marked as a front node.
 
void Dune::Amg::VertexProperties::resetFront ()
 Resets the front node flag.
 
void Dune::Amg::VertexProperties::setExcludedBorder ()
 Marks the vertex as excluded from the aggregation.
 
bool Dune::Amg::VertexProperties::excludedBorder () const
 Tests whether the vertex is excluded from the aggregation. More...
 
void Dune::Amg::VertexProperties::resetExcludedBorder ()
 Marks the vertex as included in the aggregation.
 
void Dune::Amg::VertexProperties::reset ()
 Reset all flags.
 
 Dune::Amg::PropertyGraphVertexPropertyMap< G, i >::PropertyGraphVertexPropertyMap (G &g)
 Constructor. More...
 
 Dune::Amg::PropertyGraphVertexPropertyMap< G, i >::PropertyGraphVertexPropertyMap ()
 Default constructor.
 
Reference Dune::Amg::PropertyGraphVertexPropertyMap< G, i >::operator[] (const Vertex &vertex) const
 Get the properties associated to a vertex. More...
 
 Dune::Amg::SparsityBuilder< M >::SparsityBuilder (M &matrix)
 Constructor. More...
 
template<class M , class V , class I , class O >
void Dune::Amg::BaseGalerkinProduct::calculate (const M &fine, const AggregatesMap< V > &aggregates, M &coarse, const I &pinfo, const O &copy)
 Calculate the galerkin product. More...
 
template<class G , class V , class Set >
G::MutableMatrix * Dune::Amg::GalerkinProduct< T >::build (G &fineGraph, V &visitedMap, const ParallelInformation &pinfo, AggregatesMap< typename G::VertexDescriptor > &aggregates, const typename G::Matrix::size_type &size, const Set &copy)
 Calculates the coarse matrix via a Galerkin product. More...
 
template<class G , class V , class Set >
G::MutableMatrix * Dune::Amg::GalerkinProduct< SequentialInformation >::build (G &fineGraph, V &visitedMap, const SequentialInformation &pinfo, const AggregatesMap< typename G::VertexDescriptor > &aggregates, const typename G::Matrix::size_type &size, const Set &copy)
 Calculates the coarse matrix via a Galerkin product. More...
 
template<class R , class G , class V >
static void Dune::Amg::BaseConnectivityConstructor::constructNonOverlapConnectivity (R &row, G &graph, V &visitedMap, const AggregatesMap< typename G::VertexDescriptor > &aggregates, const typename G::VertexDescriptor &seed)
 Construct the connectivity of an aggregate in the overlap.
 
 Dune::Amg::BaseConnectivityConstructor::ConnectedBuilder< G, S, V >::ConnectedBuilder (const AggregatesMap< Vertex > &aggregates, Graph &graph, VisitedMap &visitedMap, Set &connected)
 Constructor. More...
 
void Dune::Amg::BaseConnectivityConstructor::ConnectedBuilder< G, S, V >::operator() (const ConstEdgeIterator &edge)
 Process an edge pointing to another aggregate. More...
 
template<class G , class V >
int Dune::Amg::visitNeighbours (const G &graph, const typename G::VertexDescriptor &vertex, V &visitor)
 Visit all neighbour vertices of a vertex in a graph. More...
 
template<typename Graph , typename VM >
static Graph::VertexDescriptor Dune::Amg::ParallelIndicesCoarsener< T, E >::coarsen (ParallelInformation &fineInfo, Graph &fineGraph, VM &visitedMap, AggregatesMap< typename Graph::VertexDescriptor > &aggregates, ParallelInformation &coarseInfo, typename Graph::VertexDescriptor noAggregates, bool useFixedOrder=false)
 Build the coarse index set after the aggregatio. More...
 
 Dune::Amg::DependencyParameters::DependencyParameters ()
 Constructor.
 
void Dune::Amg::DependencyParameters::setBeta (double b)
 Set threshold for marking nodes as isolated. The default value is 1.0E-5.
 
double Dune::Amg::DependencyParameters::beta () const
 Get the threshold for marking nodes as isolated. The default value is 1.0E-5. More...
 
void Dune::Amg::DependencyParameters::setAlpha (double a)
 Set the scaling value for marking connections as strong. Default value is 1/3.
 
double Dune::Amg::DependencyParameters::alpha () const
 Get the scaling value for marking connections as strong. Default value is 1/3.
 
 Dune::Amg::AggregationParameters::AggregationParameters ()
 Constructor. More...
 
void Dune::Amg::AggregationParameters::setDefaultValuesIsotropic (std::size_t dim, std::size_t diameter=2)
 Sets reasonable default values for an isotropic problem. More...
 
void Dune::Amg::AggregationParameters::setDefaultValuesAnisotropic (std::size_t dim, std::size_t diameter=2)
 Sets reasonable default values for an anisotropic problem. More...
 
std::size_t Dune::Amg::AggregationParameters::maxDistance () const
 Get the maximal distance allowed between two nodes in a aggregate. More...
 
void Dune::Amg::AggregationParameters::setMaxDistance (std::size_t distance)
 Set the maximal distance allowed between two nodes in a aggregate. More...
 
bool Dune::Amg::AggregationParameters::skipIsolated () const
 Whether isolated aggregates will not be represented on the coarse level. More...
 
void Dune::Amg::AggregationParameters::setSkipIsolated (bool skip)
 Set whether isolated aggregates will not be represented on the coarse level. More...
 
std::size_t Dune::Amg::AggregationParameters::minAggregateSize () const
 Get the minimum number of nodes a aggregate has to consist of. More...
 
void Dune::Amg::AggregationParameters::setMinAggregateSize (std::size_t size)
 Set the minimum number of nodes a aggregate has to consist of. More...
 
std::size_t Dune::Amg::AggregationParameters::maxAggregateSize () const
 Get the maximum number of nodes a aggregate is allowed to have. More...
 
void Dune::Amg::AggregationParameters::setMaxAggregateSize (std::size_t size)
 Set the maximum number of nodes a aggregate is allowed to have. More...
 
std::size_t Dune::Amg::AggregationParameters::maxConnectivity () const
 Get the maximum number of connections a aggregate is allowed to have. More...
 
void Dune::Amg::AggregationParameters::setMaxConnectivity (std::size_t connectivity)
 Set the maximum number of connections a aggregate is allowed to have. More...
 
void Dune::Amg::CoarseningParameters::setMaxLevel (int l)
 Set the maximum number of levels allowed in the hierarchy.
 
int Dune::Amg::CoarseningParameters::maxLevel () const
 Get the maximum number of levels allowed in the hierarchy.
 
void Dune::Amg::CoarseningParameters::setCoarsenTarget (int nodes)
 Set the maximum number of unknowns allowed on the coarsest level.
 
int Dune::Amg::CoarseningParameters::coarsenTarget () const
 Get the maximum number of unknowns allowed on the coarsest level.
 
void Dune::Amg::CoarseningParameters::setMinCoarsenRate (double rate)
 Set the minimum coarsening rate to be achieved in each coarsening. More...
 
double Dune::Amg::CoarseningParameters::minCoarsenRate () const
 Get the minimum coarsening rate to be achieved.
 
AccumulationMode Dune::Amg::CoarseningParameters::accumulate () const
 Whether the data should be accumulated on fewer processes on coarser levels.
 
void Dune::Amg::CoarseningParameters::setAccumulate (AccumulationMode accu)
 Set whether the data should be accumulated on fewer processes on coarser levels.
 
bool Dune::Amg::CoarseningParameters::useFixedOrder () const
 Check if the indices for the coarser levels should be created in a fixed order.
 
void Dune::Amg::CoarseningParameters::setProlongationDampingFactor (double d)
 Set the damping factor for the prolongation. More...
 
double Dune::Amg::CoarseningParameters::getProlongationDampingFactor () const
 Get the damping factor for the prolongation. More...
 
 Dune::Amg::CoarseningParameters::CoarseningParameters (int maxLevel=100, int coarsenTarget=1000, double minCoarsenRate=1.2, double prolongDamp=1.6, AccumulationMode accumulate=successiveAccu, bool useFixedOrder=false)
 Constructor. More...
 
void Dune::Amg::Parameters::setDebugLevel (int level)
 Set the debugging level. More...
 
int Dune::Amg::Parameters::debugLevel () const
 Get the debugging Level. More...
 
void Dune::Amg::Parameters::setNoPreSmoothSteps (std::size_t steps)
 Set the number of presmoothing steps to apply. More...
 
std::size_t Dune::Amg::Parameters::getNoPreSmoothSteps () const
 Get the number of presmoothing steps to apply. More...
 
void Dune::Amg::Parameters::setNoPostSmoothSteps (std::size_t steps)
 Set the number of postsmoothing steps to apply. More...
 
std::size_t Dune::Amg::Parameters::getNoPostSmoothSteps () const
 Get the number of postsmoothing steps to apply. More...
 
void Dune::Amg::Parameters::setGamma (std::size_t gamma)
 Set the value of gamma; 1 for V-cycle, 2 for W-cycle.
 
std::size_t Dune::Amg::Parameters::getGamma () const
 Get the value of gamma; 1 for V-cycle, 2 for W-cycle.
 
void Dune::Amg::Parameters::setAdditive (bool additive)
 Set whether to use additive multigrid. More...
 
bool Dune::Amg::Parameters::getAdditive () const
 Get whether to use additive multigrid. More...
 
 Dune::Amg::Parameters::Parameters (int maxLevel=100, int coarsenTarget=1000, double minCoarsenRate=1.2, double prolongDamp=1.6, AccumulationMode accumulate=successiveAccu, bool useFixedOrder=false)
 Constructor. More...
 
Reference Dune::Amg::RandomAccessBundledPropertyMap< C, K, i, T, R >::operator[] (const Key &key) const
 Get the property for a key. More...
 
 Dune::Amg::RandomAccessBundledPropertyMap< C, K, i, T, R >::RandomAccessBundledPropertyMap (Container &container)
 Constructor. More...
 
 Dune::Amg::RandomAccessBundledPropertyMap< C, K, i, T, R >::RandomAccessBundledPropertyMap ()
 The default constructor.
 
 Dune::Amg::DefaultSmootherArgs< T >::DefaultSmootherArgs ()
 Default constructor.
 
static void Dune::Amg::SmootherApplier< T >::preSmooth (Smoother &smoother, Domain &v, const Range &d)
 apply pre smoothing in forward direction More...
 
static void Dune::Amg::SmootherApplier< T >::postSmooth (Smoother &smoother, Domain &v, const Range &d)
 apply post smoothing in forward direction More...
 
template<typename LevelContext >
void Dune::Amg::presmooth (LevelContext &levelContext, size_t steps)
 Apply pre smoothing on the current level. More...
 
template<typename LevelContext >
void Dune::Amg::postsmooth (LevelContext &levelContext, size_t steps)
 Apply post smoothing on the current level. More...
 
 Dune::Amg::Hierarchy< T, A >::Hierarchy (const std::shared_ptr< MemberType > &first)
 Construct a new hierarchy. More...
 
 Dune::Amg::Hierarchy< T, A >::Hierarchy (const Hierarchy &other)
 Copy constructor (deep copy!). More...
 
std::size_t Dune::Amg::Hierarchy< T, A >::levels () const
 Get the number of levels in the hierarchy. More...
 
void Dune::Amg::Hierarchy< T, A >::addCoarser (Arguments &args)
 Add an element on a coarser level. More...
 
void Dune::Amg::Hierarchy< T, A >::addFiner (Arguments &args)
 Add an element on a finer level. More...
 
Iterator Dune::Amg::Hierarchy< T, A >::finest ()
 Get an iterator positioned at the finest level. More...
 
Iterator Dune::Amg::Hierarchy< T, A >::coarsest ()
 Get an iterator positioned at the coarsest level. More...
 
ConstIterator Dune::Amg::Hierarchy< T, A >::finest () const
 Get an iterator positioned at the finest level. More...
 
ConstIterator Dune::Amg::Hierarchy< T, A >::coarsest () const
 Get an iterator positioned at the coarsest level. More...
 
 Dune::Amg::KAMG< M, X, S, PI, K, A >::KAMG (OperatorHierarchy &matrices, CoarseSolver &coarseSolver, const SmootherArgs &smootherArgs, const Parameters &parms, std::size_t maxLevelKrylovSteps=3, double minDefectReduction=1e-1)
 Construct a new amg with a specific coarse solver. More...
 
template<class C >
 Dune::Amg::KAMG< M, X, S, PI, K, A >::KAMG (const Operator &fineOperator, const C &criterion, const SmootherArgs &smootherArgs=SmootherArgs(), std::size_t maxLevelKrylovSteps=3, double minDefectReduction=1e-1, const ParallelInformation &pinfo=ParallelInformation())
 Construct an AMG with an inexact coarse solver based on the smoother. More...
 
void Dune::Amg::KAMG< M, X, S, PI, K, A >::pre (Domain &x, Range &b)
 Prepare the preconditioner. More...
 
void Dune::Amg::KAMG< M, X, S, PI, K, A >::post (Domain &x)
 Clean up. More...
 
void Dune::Amg::KAMG< M, X, S, PI, K, A >::apply (Domain &v, const Range &d)
 Apply one step of the preconditioner to the system A(v)=d. More...
 
 Dune::Amg::MatrixHierarchy< M, PI, A >::MatrixHierarchy (std::shared_ptr< MatrixOperator > fineMatrix, std::shared_ptr< ParallelInformation > pinfo=std::make_shared< ParallelInformation >())
 Constructor. More...
 
template<typename O , typename T >
void Dune::Amg::MatrixHierarchy< M, PI, A >::build (const T &criterion)
 Build the matrix hierarchy using aggregation. More...
 
const ParallelMatrixHierarchyDune::Amg::MatrixHierarchy< M, PI, A >::matrices () const
 Get the matrix hierarchy. More...
 
const ParallelInformationHierarchyDune::Amg::MatrixHierarchy< M, PI, A >::parallelInformation () const
 Get the hierarchy of the parallel data distribution information. More...
 
void Dune::Amg::MatrixHierarchy< M, PI, A >::getCoarsestAggregatesOnFinest (std::vector< std::size_t > &data) const
 Get the mapping of fine level unknowns to coarse level aggregates. More...
 
const AggregatesMapListDune::Amg::MatrixHierarchy< M, PI, A >::aggregatesMaps () const
 Get the hierarchy of the mappings of the nodes onto aggregates. More...
 
const RedistributeInfoListDune::Amg::MatrixHierarchy< M, PI, A >::redistributeInformation () const
 Get the hierarchy of the information about redistributions,. More...
 
template<class V , class BA , class TA >
void Dune::Amg::MatrixHierarchy< M, PI, A >::coarsenVector (Hierarchy< BlockVector< V, BA >, TA > &hierarchy) const
 Coarsen the vector hierarchy according to the matrix hierarchy. More...
 
template<class S , class TA >
void Dune::Amg::MatrixHierarchy< M, PI, A >::coarsenSmoother (Hierarchy< S, TA > &smoothers, const typename SmootherTraits< S >::Arguments &args) const
 Coarsen the smoother hierarchy according to the matrix hierarchy. More...
 
template<class F >
void Dune::Amg::MatrixHierarchy< M, PI, A >::recalculateGalerkin (const F &copyFlags)
 Recalculate the galerkin products. More...
 
std::size_t Dune::Amg::MatrixHierarchy< M, PI, A >::levels () const
 Get the number of levels in the hierarchy. More...
 
std::size_t Dune::Amg::MatrixHierarchy< M, PI, A >::maxlevels () const
 Get the max number of levels in the hierarchy of processors. More...
 
bool Dune::Amg::MatrixHierarchy< M, PI, A >::isBuilt () const
 Whether the hierarchy was built. More...
 

Variables

const MatrixDune::Amg::SymmetricMatrixDependency< M, N >::matrix_
 The matrix we work on.
 
Norm Dune::Amg::SymmetricMatrixDependency< M, N >::norm_
 The functor for calculating the norm.
 
int Dune::Amg::SymmetricMatrixDependency< M, N >::row_
 index of the currently evaluated row.
 
real_type Dune::Amg::SymmetricMatrixDependency< M, N >::diagonal_
 The norm of the current diagonal.
 
const MatrixDune::Amg::Dependency< M, N >::matrix_
 The matrix we work on.
 
Norm Dune::Amg::Dependency< M, N >::norm_
 The functor for calculating the norm.
 
int Dune::Amg::Dependency< M, N >::row_
 index of the currently evaluated row.
 
real_type Dune::Amg::Dependency< M, N >::diagonal_
 The norm of the current diagonal.
 
const MatrixDune::Amg::SymmetricDependency< M, N >::matrix_
 The matrix we work on.
 
Norm Dune::Amg::SymmetricDependency< M, N >::norm_
 The functor for calculating the norm.
 
int Dune::Amg::SymmetricDependency< M, N >::row_
 index of the currently evaluated row.
 
real_type Dune::Amg::SymmetricDependency< M, N >::diagonal_
 The norm of the current diagonal.
 
static const V Dune::Amg::AggregatesMap< V >::UNAGGREGATED
 Identifier of not yet aggregated vertices.
 
static const V Dune::Amg::AggregatesMap< V >::ISOLATED
 Identifier of isolated vertices.
 
Hierarchy< Smoother, A >::Iterator Dune::Amg::AMG< M, X, S, PI, A >::LevelContext::smoother
 The iterator over the smoothers.
 
OperatorHierarchy::ParallelMatrixHierarchy::ConstIterator Dune::Amg::AMG< M, X, S, PI, A >::LevelContext::matrix
 The iterator over the matrices.
 
ParallelInformationHierarchy::Iterator Dune::Amg::AMG< M, X, S, PI, A >::LevelContext::pinfo
 The iterator over the parallel information.
 
OperatorHierarchy::RedistributeInfoList::const_iterator Dune::Amg::AMG< M, X, S, PI, A >::LevelContext::redist
 The iterator over the redistribution information.
 
OperatorHierarchy::AggregatesMapList::const_iterator Dune::Amg::AMG< M, X, S, PI, A >::LevelContext::aggregates
 The iterator over the aggregates maps.
 
Hierarchy< Domain, A >::Iterator Dune::Amg::AMG< M, X, S, PI, A >::LevelContext::lhs
 The iterator over the left hand side.
 
Hierarchy< Domain, A >::Iterator Dune::Amg::AMG< M, X, S, PI, A >::LevelContext::update
 The iterator over the updates.
 
Hierarchy< Range, A >::Iterator Dune::Amg::AMG< M, X, S, PI, A >::LevelContext::rhs
 The iterator over the right hand sided.
 
std::size_t Dune::Amg::AMG< M, X, S, PI, A >::LevelContext::level
 The level index.
 
AggregateDune::Amg::OverlapVertex< T >::aggregate
 The aggregate the vertex belongs to.
 
Vertex Dune::Amg::OverlapVertex< T >::vertex
 The vertex descriptor.
 
int Dune::Amg::DefaultSmootherArgs< T >::iterations
 The number of iterations to perform.
 
RelaxationFactor Dune::Amg::DefaultSmootherArgs< T >::relaxationFactor
 The relaxation factor to use.
 

Detailed Description

A Parallel Algebraic Multigrid based on Agglomeration.

Typedef Documentation

◆ Smoother

template<class M , class X , class S , class PI = SequentialInformation, class A = std::allocator<X>>
typedef S Dune::Amg::AMG< M, X, S, PI, A >::Smoother

The type of the smoother.

One of the preconditioners implementing the Preconditioner interface. Note that the smoother has to fit the ParallelInformation.

Enumeration Type Documentation

◆ anonymous enum

template<typename G , std::size_t i>
anonymous enum
Enumerator
index 

the index to access in the bitset.

◆ anonymous enum

anonymous enum
Enumerator
MAX_PROCESSES 

Hard limit for the number of processes allowed.

This is needed to prevent overflows when calculating the coarsening rate. Currently set 72,000 which is enough for JUGENE.

◆ anonymous enum

template<typename C , typename K , std::size_t i, typename T = typename C::ValueType, typename R = typename C::Reference>
anonymous enum
Enumerator
index 

The index of the property in the bundle.

◆ AccumulationMode

Identifiers for the different accumulation modes.

Enumerator
noAccu 

No data accumulution.

The coarse level data will be distributed to all processes.

atOnceAccu 

Accumulate data to one process at once.

Once no further coarsening is possible all data will be accumulated to one process

successiveAccu 

Successively accumulate to fewer processes.

Function Documentation

◆ addCoarser()

template<class T , class A >
void Dune::Amg::Hierarchy< T, A >::addCoarser ( Arguments &  args)

Add an element on a coarser level.

Parameters
argsThe arguments needed for the construction.

References Dune::Amg::ConstructionTraits< T >::construct().

Referenced by Dune::Amg::MatrixHierarchy< M, PI, A >::coarsenSmoother().

◆ addFiner()

template<class T , class A >
void Dune::Amg::Hierarchy< T, A >::addFiner ( Arguments &  args)

Add an element on a finer level.

Parameters
argsThe arguments needed for the construction.

References Dune::Amg::ConstructionTraits< T >::construct().

◆ Aggregate()

template<class G , class S >
Dune::Amg::Aggregate< G, S >::Aggregate ( MatrixGraph &  graph,
AggregatesMap< Vertex > &  aggregates,
VertexSet connectivity,
std::vector< Vertex > &  front_ 
)

Constructor.

Parameters
graphThe matrix graph we work on.
aggregatesThe mapping of vertices onto aggregates.
connectivityThe set of vertices connected to the aggregate. distance spheres.
front_The vertices of the current aggregate front.

◆ AggregatesMap()

template<class V >
Dune::Amg::AggregatesMap< V >::AggregatesMap ( std::size_t  noVertices)

Constructs with allocating memory.

Parameters
noVerticesThe number of vertices we will hold information for.

◆ aggregatesMaps()

template<class M , class IS , class A >
const MatrixHierarchy< M, IS, A >::AggregatesMapList & Dune::Amg::MatrixHierarchy< M, IS, A >::aggregatesMaps

Get the hierarchy of the mappings of the nodes onto aggregates.

Returns
The hierarchy of the mappings of the nodes onto aggregates.

◆ AggregateVisitor()

template<class G >
template<class V >
Dune::Amg::Aggregator< G >::AggregateVisitor< V >::AggregateVisitor ( const AggregatesMap< Vertex > &  aggregates,
const AggregateDescriptor aggregate,
Visitor visitor 
)

Constructor.

Parameters
aggregatesThe aggregate numbers of the vertices.
aggregateThe id of the aggregate to visit.
visitorThe visitor.

◆ AggregationCriterion()

template<class T >
Dune::Amg::AggregationCriterion< T >::AggregationCriterion ( )
inline

Constructor.

The parameters will be initialized with default values suitable for 2D isotropic problems.

If that does not fit your needs either use setDefaultValuesIsotropic setDefaultValuesAnisotropic or setup the values by hand

◆ AggregationParameters()

Dune::Amg::AggregationParameters::AggregationParameters ( )
inline

Constructor.

The parameters will be initialized with default values suitable for 2D isotropic problems.

If that does not fit your needs either use setDefaultValuesIsotropic setDefaultValuesAnisotropic or setup the values by hand

◆ allocate()

template<class V >
void Dune::Amg::AggregatesMap< V >::allocate ( std::size_t  noVertices)

Allocate memory for holding the information.

Parameters
noVerticesThe total number of vertices to be mapped.

◆ AMG() [1/3]

template<class M , class X , class S , class PI , class A >
template<class C >
Dune::Amg::AMG< M, X, S, PI, A >::AMG ( const Operator fineOperator,
const C &  criterion,
const SmootherArgs smootherArgs = SmootherArgs(),
const ParallelInformation pinfo = ParallelInformation() 
)

Construct an AMG with an inexact coarse solver based on the smoother.

As coarse solver a preconditioned CG method with the smoother as preconditioner will be used. The matrix hierarchy is built automatically.

Parameters
fineOperatorThe operator on the fine level.
criterionThe criterion describing the coarsening strategy. E. g. SymmetricCriterion or UnsymmetricCriterion, and providing the parameters.
smootherArgsThe arguments for constructing the smoothers.
pinfoThe information about the parallel distribution of the data.

◆ AMG() [2/3]

template<class M , class X , class S , class PI , class A >
Dune::Amg::AMG< M, X, S, PI, A >::AMG ( OperatorHierarchy matrices,
CoarseSolver coarseSolver,
const SmootherArgs smootherArgs,
const Parameters parms 
)

Construct a new amg with a specific coarse solver.

Parameters
matricesThe already set-up matrix hierarchy.
coarseSolverThe set up solver to use on the coarse grid, must match the coarse matrix in the matrix hierarchy.
smootherArgsThe arguments needed for thesmoother to use for pre and post smoothing.
parmsThe parameters for the AMG.

◆ AMG() [3/3]

template<class M , class X , class S , class PI , class A >
Dune::Amg::AMG< M, X, S, PI, A >::AMG ( std::shared_ptr< const Operator fineOperator,
const ParameterTree configuration,
const ParallelInformation pinfo = ParallelInformation() 
)

Constructor an AMG via ParameterTree.

Parameters
fineOperatorThe operator on the fine level.
configurationParameterTree containing AMG parameters.
pinfoOptionally, specify ParallelInformation
ParameterTree Key Meaning
smootherIterations The number of iterations to perform.
smootherRelaxation The relaxation factor
maxLevel Maximum number of levels allowed in the hierarchy.
coarsenTarget Maximum number of unknowns on the coarsest level.
minCoarseningRate Coarsening will stop if the rate is below this threshold.
accumulationMode If and how data is agglomerated on coarser level to

| fewer processors. ("atOnce": do agglomeration once and | to one process; "successive": Multiple agglomerations to | fewer processes until all data is on one process; | "none": Do no agglomeration at all and solve coarse level | iteratively). prolongationDampingFactor | Damping factor for the prolongation. alpha | Scaling value for marking connections as strong. beta | Threshold for marking nodes as isolated. additive | Whether to use additive multigrid. gamma | 1 for V-cycle, 2 for W-cycle. preSteps | Number of presmoothing steps. postSteps | Number of postsmoothing steps. verbosity | Output verbosity. default=2. criterionSymmetric | If true use SymmetricCriterion (default), else UnSymmetricCriterion strengthMeasure | What conversion to use to convert a matrix block | to a scalar when determining strength of connection: | diagonal (use a diagonal of row diagonalRowIndex, class Diagonal, default); | rowSum (rowSum norm), frobenius (Frobenius norm); | one (use always one and neglect the actual entries). diagonalRowIndex | The index to use for the diagonal strength (default 0) | if this is i and strengthMeasure is "diagonal", then | block[i][i] will be used when determining strength of | connection. defaultAggregationSizeMode | Whether to set default values depending on isotropy of | problem uses parameters "defaultAggregationDimension" and | "maxAggregateDistance" (isotropic: For and isotropic problem; | anisotropic: for an anisotropic problem). defaultAggregationDimension | Dimension of the problem (used for setting default aggregate size). maxAggregateDistance | Maximum distance in an aggregte (in term of minimum edges needed to travel. | one vertex to another within the aggregate). minAggregateSize | Minimum number of vertices an aggregate should consist of. maxAggregateSize | Maximum number of vertices an aggregate should consist of.

See ISTL_Factory for the ParameterTree layout and examples.

◆ apply() [1/2]

template<class M , class X , class S , class PI , class A >
void Dune::Amg::AMG< M, X, S, PI, A >::apply ( Domain v,
const Range d 
)

Apply one step of the preconditioner to the system A(v)=d.

On entry v=0 and d=b-A(x) (although this might not be computed in that way. On exit v contains the update, i.e one step computes \( v = M^{-1} d \) where \( M \) is the approximate inverse of the operator \( A \) characterizing the preconditioner.

Parameters
[out]vThe update to be computed
dThe current defect.

◆ apply() [2/2]

template<class M , class X , class S , class P , class K , class A >
void Dune::Amg::KAMG< M, X, S, P, K, A >::apply ( Domain v,
const Range d 
)

Apply one step of the preconditioner to the system A(v)=d.

On entry v=0 and d=b-A(x) (although this might not be computed in that way. On exit v contains the update, i.e one step computes \( v = M^{-1} d \) where \( M \) is the approximate inverse of the operator \( A \) characterizing the preconditioner.

Parameters
[out]vThe update to be computed
dThe current defect.

◆ beta()

double Dune::Amg::DependencyParameters::beta ( ) const
inline

Get the threshold for marking nodes as isolated. The default value is 1.0E-5.

Returns
beta

◆ breadthFirstSearch() [1/2]

template<class V >
template<bool reset, class G , class F , class VM >
std::size_t Dune::Amg::AggregatesMap< V >::breadthFirstSearch ( const VertexDescriptor start,
const AggregateDescriptor aggregate,
const G &  graph,
F &  aggregateVisitor,
VM &  visitedMap 
) const

Breadth first search within an aggregate.

Template Parameters
resetIf true the visited flags of the vertices will be reset after the search
GThe type of the graph we perform the search on
FThe type of the visitor to operate on the vertices
Parameters
startThe vertex where the search should start from. This does not need to belong to the aggregate.
aggregateThe aggregate id.
graphThe matrix graph to perform the search on.
visitedMapA map to mark the already visited vertices
aggregateVisitorA functor that is called with each G::ConstEdgeIterator with an edge pointing to the aggregate. Use DummyVisitor if these are of no interest.

◆ breadthFirstSearch() [2/2]

template<class V >
template<bool remove, bool reset, class G , class L , class F1 , class F2 , class VM >
std::size_t Dune::Amg::AggregatesMap< V >::breadthFirstSearch ( const VertexDescriptor start,
const AggregateDescriptor aggregate,
const G &  graph,
L &  visited,
F1 &  aggregateVisitor,
F2 &  nonAggregateVisitor,
VM &  visitedMap 
) const

Breadth first search within an aggregate.

Template Parameters
LA container type providing push_back(Vertex), and pop_front() in case remove is true
removeIf true the entries in the visited list will be removed.
resetIf true the visited flag will be reset after the search
Parameters
startThe vertex where the search should start from. This does not need to belong to the aggregate.
aggregateThe aggregate id.
graphThe matrix graph to perform the search on.
visitedA list to store the visited vertices in.
aggregateVisitorA functor that is called with each G::ConstEdgeIterator with an edge pointing to the aggregate. Use DummyVisitor these are of no interest.
nonAggregateVisitorA functor that is called with each G::ConstEdgeIterator with an edge pointing to another aggregate. Use DummyVisitor these are of no interest.
visitedMapA map to mark the already visited vertices

◆ build() [1/4]

template<class G >
template<class M , class C >
std::tuple< int, int, int, int > Dune::Amg::Aggregator< G >::build ( const M &  m,
G &  graph,
AggregatesMap< Vertex > &  aggregates,
const C &  c,
bool  finestLevel 
)

Build the aggregates.

Template Parameters
CThe type of the coarsening Criterion to use
Parameters
mThe matrix to build the aggregates accordingly.
graphA (sub) graph of the matrix.
aggregatesAggregate map we will build. All entries should be initialized to UNAGGREGATED!
cThe coarsening criterion to use.
finestLevelWhether this the finest level. In that case rows representing Dirichlet boundaries will be detected and ignored during aggregation.
Returns
A tuple of the total number of aggregates, the number of isolated aggregates, the number of isolated aggregates, the number of aggregates consisting only of one vertex, and the number of skipped aggregates built.

◆ build() [2/4]

template<class M , class IS , class A >
template<typename O , typename T >
void Dune::Amg::MatrixHierarchy< M, IS, A >::build ( const T &  criterion)

Build the matrix hierarchy using aggregation.

criterion The criterion describing the aggregation process.

References Dune::Amg::atOnceAccu, Dune::countNonZeros(), Dune::Amg::MAX_PROCESSES, Dune::size(), and Dune::Amg::successiveAccu.

◆ build() [3/4]

template<class T >
template<class G , class V , class Set >
G::MutableMatrix * Dune::Amg::GalerkinProduct< T >::build ( G &  fineGraph,
V &  visitedMap,
const ParallelInformation &  pinfo,
AggregatesMap< typename G::VertexDescriptor > &  aggregates,
const typename G::Matrix::size_type &  size,
const Set &  copy 
)

Calculates the coarse matrix via a Galerkin product.

Parameters
fineGraphThe graph of the fine matrix.
visitedMapMap for marking vertices as visited.
pinfoParallel information about the fine level.
aggregatesThe mapping of the fine level unknowns onto aggregates.
sizeThe number of columns and rows of the coarse matrix.
copyThe attribute set identifying the copy nodes of the graph.

◆ build() [4/4]

template<class G , class V , class Set >
G::MutableMatrix * Dune::Amg::GalerkinProduct< SequentialInformation >::build ( G &  fineGraph,
V &  visitedMap,
const SequentialInformation &  pinfo,
const AggregatesMap< typename G::VertexDescriptor > &  aggregates,
const typename G::Matrix::size_type &  size,
const Set &  copy 
)

Calculates the coarse matrix via a Galerkin product.

Parameters
fineGraphThe graph of the fine matrix.
visitedMapMap for marking vertices as visited.
pinfoParallel information about the fine level.
aggregatesThe mapping of the fine level unknowns onto aggregates.
sizeThe number of columns and rows of the coarse matrix.
copyThe attribute set identifying the copy nodes of the graph.

References Dune::dinfo, Dune::size(), and Dune::GeometryTypes::vertex.

◆ buildAggregates()

template<class V >
template<class M , class G , class C >
std::tuple< int, int, int, int > Dune::Amg::AggregatesMap< V >::buildAggregates ( const M &  matrix,
G &  graph,
const C &  criterion,
bool  finestLevel 
)

Build the aggregates.

Parameters
matrixThe matrix describing the dependency.
graphThe graph corresponding to the matrix.
criterionThe aggregation criterion.
finestLevelWhether this the finest level. In that case rows representing Dirichlet boundaries will be detected and ignored during aggregation.
Returns
A tuple of the total number of aggregates, the number of isolated aggregates, the number of isolated aggregates, the number of aggregates consisting only of one vertex, and the number of skipped aggregates built.

◆ calculate()

template<class M , class V , class I , class O >
void Dune::Amg::BaseGalerkinProduct::calculate ( const M &  fine,
const AggregatesMap< V > &  aggregates,
M &  coarse,
const I &  pinfo,
const O &  copy 
)

Calculate the galerkin product.

Parameters
fineThe fine matrix.
aggregatesThe aggregate mapping.
coarseThe coarse Matrix.
pinfoParallel information about the fine level.
copyThe attribute set identifying the copy nodes of the graph.

◆ coarsen()

template<typename T , typename E >
template<typename Graph , typename VM >
Graph::VertexDescriptor Dune::Amg::ParallelIndicesCoarsener< T, E >::coarsen ( ParallelInformation fineInfo,
Graph &  fineGraph,
VM &  visitedMap,
AggregatesMap< typename Graph::VertexDescriptor > &  aggregates,
ParallelInformation coarseInfo,
typename Graph::VertexDescriptor  noAggregates,
bool  useFixedOrder = false 
)
inlinestatic

Build the coarse index set after the aggregatio.

Parameters
fineInfoThe parallel information at the fine level.
fineGraphThe graph of the fine lecel,
visitedMapMap for marking vertices as visited.
aggregatesThe mapping of unknowns onto aggregates.
coarseInfoThe information about the parallel data decomposition on the coarse level.
noAggregates
useFixedOrderFlag indicating if creating indices for the coarser level should be done in a fixed order, i.e., the order in which the rows were sent. If set to true, this makes the runs reproducible but it might slow down performance.
Returns
The number of unknowns on the coarse level.

◆ CoarseningParameters()

Dune::Amg::CoarseningParameters::CoarseningParameters ( int  maxLevel = 100,
int  coarsenTarget = 1000,
double  minCoarsenRate = 1.2,
double  prolongDamp = 1.6,
AccumulationMode  accumulate = successiveAccu,
bool  useFixedOrder = false 
)
inline

Constructor.

Parameters
maxLevelThe maximum number of levels allowed in the matrix hierarchy (default: 100).
coarsenTargetIf the number of nodes in the matrix is below this threshold the coarsening will stop (default: 1000).
minCoarsenRateIf the coarsening rate falls below this threshold the coarsening will stop (default: 1.2)
prolongDampThe damping factor to apply to the prolongated update (default: 1.6)
accumulateWhether to accumulate the data onto fewer processors on coarser levels.
useFixedOrderFlag indicating if creating indices for the coarser level should be done in a fixed order, i.e., the order in which the rows were sent. If set to true, this makes the runs reproducible but it might slow down performance.

◆ coarsenSmoother()

template<class M , class IS , class A >
template<class S , class TA >
void Dune::Amg::MatrixHierarchy< M, IS, A >::coarsenSmoother ( Hierarchy< S, TA > &  smoothers,
const typename SmootherTraits< S >::Arguments &  args 
) const

Coarsen the smoother hierarchy according to the matrix hierarchy.

Parameters
smoothersThe smoother hierarchy to coarsen.
argsThe arguments for the construction of the coarse level smoothers.

References Dune::Amg::Hierarchy< T, A >::addCoarser(), and Dune::Amg::Hierarchy< T, A >::levels().

◆ coarsenVector()

template<class M , class IS , class A >
template<class V , class BA , class TA >
void Dune::Amg::MatrixHierarchy< M, IS, A >::coarsenVector ( Hierarchy< BlockVector< V, BA >, TA > &  hierarchy) const

Coarsen the vector hierarchy according to the matrix hierarchy.

Parameters
hierarchyThe vector hierarchy to coarsen.

References Dune::dvverb.

◆ coarsest() [1/2]

template<class T , class A >
Hierarchy< T, A >::Iterator Dune::Amg::Hierarchy< T, A >::coarsest

Get an iterator positioned at the coarsest level.

Returns
An iterator positioned at the coarsest level.

Referenced by Dune::Amg::AMG< M, X, S, PI, A >::post().

◆ coarsest() [2/2]

template<class T , class A >
Hierarchy< T, A >::ConstIterator Dune::Amg::Hierarchy< T, A >::coarsest

Get an iterator positioned at the coarsest level.

Returns
An iterator positioned at the coarsest level.

◆ ConnectedBuilder()

template<class G , class S , class V >
Dune::Amg::BaseConnectivityConstructor::ConnectedBuilder< G, S, V >::ConnectedBuilder ( const AggregatesMap< Vertex > &  aggregates,
Graph graph,
VisitedMap visitedMap,
Set connected 
)

Constructor.

Parameters
aggregatesThe mapping of the vertices onto the aggregates.
graphThe graph to work on.
visitedMapThe map for marking vertices as visited
connectedThe set to added the connected aggregates to.

◆ ConnectivityCounter()

template<class G >
Dune::Amg::Aggregator< G >::ConnectivityCounter::ConnectivityCounter ( const VertexSet &  connected,
const AggregatesMap< Vertex > &  aggregates 
)

Constructor.

Parameters
connectedThe set of connected aggregates.
aggregatesMapping of the vertices onto the aggregates.
aggregatesThe mapping of aggregates to vertices.

◆ construct()

template<typename T >
static std::shared_ptr< T > Dune::Amg::ConstructionTraits< T >::construct ( Arguments args)
inlinestatic

Construct an object with the specified arguments.

In the default implementation the copy constructor is called.

Parameters
argsThe arguments for the construction.

Referenced by Dune::Amg::Hierarchy< T, A >::addCoarser(), and Dune::Amg::Hierarchy< T, A >::addFiner().

◆ debugLevel()

int Dune::Amg::Parameters::debugLevel ( ) const
inline

Get the debugging Level.

Returns
0 if no debugging output will be generated.

◆ depends()

bool Dune::Amg::EdgeProperties::depends ( ) const
inline

Checks whether the vertex the edge points to depends on the vertex the edge starts.

Returns
True if it depends on the starting point.

◆ excludedBorder()

bool Dune::Amg::VertexProperties::excludedBorder ( ) const
inline

Tests whether the vertex is excluded from the aggregation.

Returns
True if the vertex is excluded from the aggregation process.

◆ finest() [1/2]

template<class T , class A >
Hierarchy< T, A >::Iterator Dune::Amg::Hierarchy< T, A >::finest

Get an iterator positioned at the finest level.

Returns
An iterator positioned at the finest level.

◆ finest() [2/2]

template<class T , class A >
Hierarchy< T, A >::ConstIterator Dune::Amg::Hierarchy< T, A >::finest

Get an iterator positioned at the finest level.

Returns
An iterator positioned at the finest level.

◆ FrontMarker()

template<class G >
Dune::Amg::Aggregator< G >::FrontMarker::FrontMarker ( std::vector< Vertex > &  front,
MatrixGraph graph 
)

Constructor.

Parameters
frontThe list to store the front vertices in.
graphThe matrix graph we work on.

◆ FrontNeighbourCounter()

template<class G >
Dune::Amg::Aggregator< G >::FrontNeighbourCounter::FrontNeighbourCounter ( const MatrixGraph front)

Constructor.

Parameters
frontThe vertices of the front.

◆ getAdditive()

bool Dune::Amg::Parameters::getAdditive ( ) const
inline

Get whether to use additive multigrid.

Returns
True if multigrid should be additive.

◆ getCoarsestAggregateNumbers()

template<class M , class X , class S , class PI , class A >
template<class A1 >
void Dune::Amg::AMG< M, X, S, PI, A >::getCoarsestAggregateNumbers ( std::vector< std::size_t, A1 > &  cont)

Get the aggregate number of each unknown on the coarsest level.

Parameters
contThe random access container to store the numbers in.

◆ getCoarsestAggregatesOnFinest()

template<class M , class IS , class A >
void Dune::Amg::MatrixHierarchy< M, IS, A >::getCoarsestAggregatesOnFinest ( std::vector< std::size_t > &  data) const

Get the mapping of fine level unknowns to coarse level aggregates.

For each fine level unknown i the corresponding data[i] is the aggregate it belongs to on the coarsest level.

Parameters
[out]dataThe mapping of fine level unknowns to coarse level aggregates.

References Dune::Amg::AggregatesMap< V >::ISOLATED, Dune::Hybrid::max, and Dune::size().

◆ getNoPostSmoothSteps()

std::size_t Dune::Amg::Parameters::getNoPostSmoothSteps ( ) const
inline

Get the number of postsmoothing steps to apply.

Returns
The number of steps:

◆ getNoPreSmoothSteps()

std::size_t Dune::Amg::Parameters::getNoPreSmoothSteps ( ) const
inline

Get the number of presmoothing steps to apply.

Returns
The number of steps:

◆ getProlongationDampingFactor()

double Dune::Amg::CoarseningParameters::getProlongationDampingFactor ( ) const
inline

Get the damping factor for the prolongation.

Returns
d The damping factor.

◆ Hierarchy() [1/2]

template<class T , class A >
Dune::Amg::Hierarchy< T, A >::Hierarchy ( const Hierarchy< T, A > &  other)

Copy constructor (deep copy!).

deep copy of a given hierarchy

◆ Hierarchy() [2/2]

template<class T , class A >
Dune::Amg::Hierarchy< T, A >::Hierarchy ( const std::shared_ptr< MemberType > &  first)

Construct a new hierarchy.

Parameters
firststd::shared_ptr to the first element in the hierarchy.

◆ influences()

bool Dune::Amg::EdgeProperties::influences ( ) const
inline

Checks whether the start vertex is influenced by the end vertex.

Returns
True if it is influenced.

◆ isBuilt()

template<class M , class IS , class A >
bool Dune::Amg::MatrixHierarchy< M, IS, A >::isBuilt

Whether the hierarchy was built.

Returns
true if the MatrixHierarchy::build method was called.

◆ KAMG() [1/2]

template<class M , class X , class S , class P , class K , class A >
template<class C >
Dune::Amg::KAMG< M, X, S, P, K, A >::KAMG ( const Operator fineOperator,
const C &  criterion,
const SmootherArgs smootherArgs = SmootherArgs(),
std::size_t  maxLevelKrylovSteps = 3,
double  minDefectReduction = 1e-1,
const ParallelInformation pinfo = ParallelInformation() 
)

Construct an AMG with an inexact coarse solver based on the smoother.

As coarse solver a preconditioned CG method with the smoother as preconditioner will be used. The matrix hierarchy is built automatically.

Parameters
fineOperatorThe operator on the fine level.
criterionThe criterion describing the coarsening strategy. E. g. SymmetricCriterion or UnsymmetricCriterion, and providing the parameters.
smootherArgsThe arguments for constructing the smoothers.
maxLevelKrylovStepsmaximum of krylov iterations on a particular level (default=3)
minDefectReductionminimal defect reduction during the krylov iterations on a particular level (default=1e-1)
pinfoThe information about the parallel distribution of the data.

◆ KAMG() [2/2]

template<class M , class X , class S , class P , class K , class A >
Dune::Amg::KAMG< M, X, S, P, K, A >::KAMG ( OperatorHierarchy matrices,
CoarseSolver coarseSolver,
const SmootherArgs smootherArgs,
const Parameters parms,
std::size_t  maxLevelKrylovSteps = 3,
double  minDefectReduction = 1e-1 
)

Construct a new amg with a specific coarse solver.

Parameters
matricesThe already set-up matrix hierarchy.
coarseSolverThe set up solver to use on the coarse grid, must match the coarse matrix in the matrix hierarchy.
smootherArgsThe arguments needed for thesmoother to use for pre and post smoothing.
parmsThe parameters for the AMG.
maxLevelKrylovStepsmaximum of krylov iterations on a particular level (default=3)
minDefectReductionminimal defect reduction during the krylov iterations on a particular level (default=1e-1)

◆ levels() [1/2]

template<class T , class A >
std::size_t Dune::Amg::Hierarchy< T, A >::levels

Get the number of levels in the hierarchy.

Returns
The number of levels.

Referenced by Dune::Amg::MatrixHierarchy< M, PI, A >::coarsenSmoother().

◆ levels() [2/2]

template<class M , class IS , class A >
std::size_t Dune::Amg::MatrixHierarchy< M, IS, A >::levels

Get the number of levels in the hierarchy.

Returns
The number of levels.

◆ matrices()

template<class M , class IS , class A >
const MatrixHierarchy< M, IS, A >::ParallelMatrixHierarchy & Dune::Amg::MatrixHierarchy< M, IS, A >::matrices

Get the matrix hierarchy.

Returns
The matrix hierarchy.

◆ MatrixHierarchy()

template<class M , class IS , class A >
Dune::Amg::MatrixHierarchy< M, IS, A >::MatrixHierarchy ( std::shared_ptr< MatrixOperator fineMatrix,
std::shared_ptr< ParallelInformation pinfo = std::make_shared<ParallelInformation>() 
)

Constructor.

Parameters
fineMatrixThe matrix to coarsen.
pinfoThe information about the parallel data decomposition at the first level.

References Dune::SolverCategory::category(), and DUNE_THROW.

◆ maxAggregateSize()

std::size_t Dune::Amg::AggregationParameters::maxAggregateSize ( ) const
inline

Get the maximum number of nodes a aggregate is allowed to have.

Returns
The maximum number of nodes.

◆ maxConnectivity()

std::size_t Dune::Amg::AggregationParameters::maxConnectivity ( ) const
inline

Get the maximum number of connections a aggregate is allowed to have.

This limit exists to achieve sparsity of the coarse matrix. the default value is 15.

Returns
The maximum number of connections a aggregate is allowed to have.

◆ maxDistance()

std::size_t Dune::Amg::AggregationParameters::maxDistance ( ) const
inline

Get the maximal distance allowed between two nodes in a aggregate.

The distance between two nodes in a aggregate is the minimal number of edges it takes to travel from one node to the other without leaving the aggregate.

Returns
The maximum distance allowed.

◆ maxlevels()

template<class M , class IS , class A >
std::size_t Dune::Amg::MatrixHierarchy< M, IS, A >::maxlevels

Get the max number of levels in the hierarchy of processors.

Returns
The maximum number of levels.

◆ minAggregateSize()

std::size_t Dune::Amg::AggregationParameters::minAggregateSize ( ) const
inline

Get the minimum number of nodes a aggregate has to consist of.

Returns
The minimum number of nodes.

◆ operator()() [1/7]

template<class G , class S , class V >
void Dune::Amg::BaseConnectivityConstructor::ConnectedBuilder< G, S, V >::operator() ( const ConstEdgeIterator edge)

Process an edge pointing to another aggregate.

Parameters
edgeThe iterator positioned at the edge.

References Dune::GeometryTypes::vertex.

◆ operator()() [2/7]

template<class M >
FieldTraits< typenameM::field_type >::real_type Dune::Amg::RowSum::operator() ( const M &  m) const
inline

compute the norm of a matrix.

Parameters
mThe matrix row to compute the norm of.

◆ operator()() [3/7]

template<class M >
FieldTraits< typenameM::field_type >::real_type Dune::Amg::FrobeniusNorm::operator() ( const M &  m) const
inline

compute the norm of a matrix.

Parameters
mThe matrix row to compute the norm of.

◆ operator()() [4/7]

template<class M >
FieldTraits< typenameM::field_type >::real_type Dune::Amg::AlwaysOneNorm::operator() ( const M &  m) const
inline

compute the norm of a matrix.

Parameters
mThe matrix row to compute the norm of.

◆ operator()() [5/7]

template<int N>
template<class M >
auto Dune::Amg::Diagonal< N >::operator() ( const M &  m,
typename std::enable_if_t< Dune::IsNumber< M >::value > *  sfinae = nullptr 
) const
inline

Compute the norm of a scalar.

Parameters
mThe scalar to compute the norm of

◆ operator()() [6/7]

template<int N>
template<class M >
FieldTraits< typenameM::field_type >::real_type Dune::Amg::Diagonal< N >::operator() ( const M &  m,
typename std::enable_if_t<!Dune::IsNumber< M >::value > *  sfinae = nullptr 
) const
inline

compute the norm of a matrix.

Parameters
mThe matrix to compute the norm of

◆ operator()() [7/7]

template<class G >
template<class V >
void Dune::Amg::Aggregator< G >::AggregateVisitor< V >::operator() ( const typename MatrixGraph::ConstEdgeIterator edge)

Examine an edge.

The edge will be examined by the adapted visitor if it belongs to the right aggregate.

◆ operator[]() [1/4]

template<typename C , typename K , std::size_t i, typename T = typename C::ValueType, typename R = typename C::Reference>
Reference Dune::Amg::RandomAccessBundledPropertyMap< C, K, i, T, R >::operator[] ( const Key key) const
inline

Get the property for a key.

Parameters
keyThe key.
Returns
The corresponding property.

References Dune::Amg::RandomAccessBundledPropertyMap< C, K, i, T, R >::index.

◆ operator[]() [2/4]

template<typename G , std::size_t i>
Reference Dune::Amg::PropertyGraphVertexPropertyMap< G, i >::operator[] ( const Vertex vertex) const
inline

Get the properties associated to a vertex.

Parameters
vertexThe vertex whose Properties we want.

References Dune::GeometryTypes::vertex.

◆ operator[]() [3/4]

template<class V >
AggregateDescriptor & Dune::Amg::AggregatesMap< V >::operator[] ( const VertexDescriptor v)

Get the aggregate a vertex belongs to.

Parameters
vThe vertex we want to know the aggregate of.
Returns
The aggregate the vertex is mapped to.

◆ operator[]() [4/4]

template<class V >
const AggregateDescriptor & Dune::Amg::AggregatesMap< V >::operator[] ( const VertexDescriptor v) const

Get the aggregate a vertex belongs to.

Parameters
vThe vertex we want to know the aggregate of.
Returns
The aggregate the vertex is mapped to.

◆ parallelInformation()

template<class M , class IS , class A >
const MatrixHierarchy< M, IS, A >::ParallelInformationHierarchy & Dune::Amg::MatrixHierarchy< M, IS, A >::parallelInformation

Get the hierarchy of the parallel data distribution information.

Returns
The hierarchy of the parallel data distribution information.

◆ Parameters()

Dune::Amg::Parameters::Parameters ( int  maxLevel = 100,
int  coarsenTarget = 1000,
double  minCoarsenRate = 1.2,
double  prolongDamp = 1.6,
AccumulationMode  accumulate = successiveAccu,
bool  useFixedOrder = false 
)
inline

Constructor.

Parameters
maxLevelThe maximum number of levels allowed in the matrix hierarchy (default: 100).
coarsenTargetIf the number of nodes in the matrix is below this threshold the coarsening will stop (default: 1000).
minCoarsenRateIf the coarsening rate falls below this threshold the coarsening will stop (default: 1.2)
prolongDampThe damping factor to apply to the prolongated update (default: 1.6)
accumulateWhether to accumulate the data onto fewer processors on coarser levels.

◆ post() [1/2]

template<class M , class X , class S , class PI , class A >
void Dune::Amg::AMG< M, X, S, PI, A >::post ( Domain x)
virtual

Clean up.

This method is called after the last apply call for the linear system to be solved. Memory may be deallocated safely here. x is the solution of the linear equation.

Parameters
xThe right hand side of the equation.

Implements Dune::Preconditioner< X, X >.

References Dune::Amg::Hierarchy< T, A >::coarsest().

◆ post() [2/2]

template<class M , class X , class S , class P , class K , class A >
void Dune::Amg::KAMG< M, X, S, P, K, A >::post ( Domain x)
virtual

Clean up.

This method is called after the last apply call for the linear system to be solved. Memory may be deallocated safely here. x is the solution of the linear equation.

Parameters
xThe right hand side of the equation.

Implements Dune::Preconditioner< X, X >.

◆ postsmooth()

template<typename LevelContext >
void Dune::Amg::postsmooth ( LevelContext &  levelContext,
size_t  steps 
)

Apply post smoothing on the current level.

Parameters
levelContextthe iterators of the current level.
stepsThe number of smoothing steps to apply.

References Dune::Amg::SmootherApplier< T >::postSmooth().

Referenced by Dune::Amg::KAmgTwoGrid< AMG >::apply().

◆ postSmooth()

template<class T >
static void Dune::Amg::SmootherApplier< T >::postSmooth ( Smoother &  smoother,
Domain &  v,
const Range &  d 
)
inlinestatic

apply post smoothing in forward direction

Parameters
smootherThe smoother to use.
dThe current defect.
vhandle to store the update in.

Referenced by Dune::Amg::postsmooth().

◆ pre() [1/2]

template<class M , class X , class S , class PI , class A >
void Dune::Amg::AMG< M, X, S, PI, A >::pre ( Domain x,
Range b 
)

Prepare the preconditioner.

A solver solves a linear operator equation A(x)=b by applying one or several steps of the preconditioner. The method pre() is called before the first apply operation. b and x are right hand side and solution vector of the linear system respectively. It may. e.g., scale the system, allocate memory or compute a (I)LU decomposition. Note: The ILU decomposition could also be computed in the constructor or with a separate method of the derived method if several linear systems with the same matrix are to be solved.

Note
if a preconditioner is copied (e.g. for a second thread) again the pre() method has to be called to ensure proper memory management.
X x(0.0);
Y b = ...; // rhs
prec.pre(x,b); // prepare the preconditioner
prec.apply(x,b); // can be called multiple times now...
prec.post(x); // cleanup internal state
Base class for matrix free definition of preconditioners.
Definition: preconditioner.hh:33
Parameters
xThe left hand side of the equation.
bThe right hand side of the equation.

◆ pre() [2/2]

template<class M , class X , class S , class P , class K , class A >
void Dune::Amg::KAMG< M, X, S, P, K, A >::pre ( Domain x,
Range b 
)

Prepare the preconditioner.

A solver solves a linear operator equation A(x)=b by applying one or several steps of the preconditioner. The method pre() is called before the first apply operation. b and x are right hand side and solution vector of the linear system respectively. It may. e.g., scale the system, allocate memory or compute a (I)LU decomposition. Note: The ILU decomposition could also be computed in the constructor or with a separate method of the derived method if several linear systems with the same matrix are to be solved.

Note
if a preconditioner is copied (e.g. for a second thread) again the pre() method has to be called to ensure proper memory management.
X x(0.0);
Y b = ...; // rhs
prec.pre(x,b); // prepare the preconditioner
prec.apply(x,b); // can be called multiple times now...
prec.post(x); // cleanup internal state
Parameters
xThe left hand side of the equation.
bThe right hand side of the equation.

◆ presmooth()

template<typename LevelContext >
void Dune::Amg::presmooth ( LevelContext &  levelContext,
size_t  steps 
)

Apply pre smoothing on the current level.

Parameters
levelContextthe iterators of the current level.
stepsThe number of smoothing steps to apply.

References Dune::Amg::SmootherApplier< T >::preSmooth().

Referenced by Dune::Amg::KAmgTwoGrid< AMG >::apply().

◆ preSmooth()

template<class T >
static void Dune::Amg::SmootherApplier< T >::preSmooth ( Smoother &  smoother,
Domain &  v,
const Range &  d 
)
inlinestatic

apply pre smoothing in forward direction

Parameters
smootherThe smoother to use.
dThe current defect.
vhandle to store the update in.

Referenced by Dune::Amg::presmooth().

◆ PropertyGraphVertexPropertyMap()

template<typename G , std::size_t i>
Dune::Amg::PropertyGraphVertexPropertyMap< G, i >::PropertyGraphVertexPropertyMap ( G &  g)
inline

Constructor.

Parameters
gThe graph whose properties we access.

◆ RandomAccessBundledPropertyMap()

template<typename C , typename K , std::size_t i, typename T = typename C::ValueType, typename R = typename C::Reference>
Dune::Amg::RandomAccessBundledPropertyMap< C, K, i, T, R >::RandomAccessBundledPropertyMap ( Container container)
inline

Constructor.

Parameters
containerThe container with the property bundle.

◆ recalculateGalerkin()

template<class M , class IS , class A >
template<class F >
void Dune::Amg::MatrixHierarchy< M, IS, A >::recalculateGalerkin ( const F &  copyFlags)

Recalculate the galerkin products.

If the data of the fine matrix changes but not its sparsity pattern this will recalculate all coarser levels without starting the expensive aggregation process all over again.

◆ recalculateHierarchy()

template<class M , class X , class S , class PI = SequentialInformation, class A = std::allocator<X>>
void Dune::Amg::AMG< M, X, S, PI, A >::recalculateHierarchy ( )
inline

Recalculate the matrix hierarchy.

It is assumed that the coarsening for the changed fine level matrix would yield the same aggregates. In this case it suffices to recalculate all the Galerkin products for the matrices of the coarser levels.

◆ reconstruct()

template<class G , class S >
void Dune::Amg::Aggregate< G, S >::reconstruct ( const Vertex vertex)

Reconstruct the aggregat from an seed node.

Will determine all vertices of the same aggregate and reference those.

◆ redistributeInformation()

template<class M , class IS , class A >
const MatrixHierarchy< M, IS, A >::RedistributeInfoList & Dune::Amg::MatrixHierarchy< M, IS, A >::redistributeInformation

Get the hierarchy of the information about redistributions,.

Returns
The hierarchy of the information about redistributions of the data to fewer processes.

◆ setAdditive()

void Dune::Amg::Parameters::setAdditive ( bool  additive)
inline

Set whether to use additive multigrid.

Parameters
additiveTrue if multigrid should be additive.

◆ setDebugLevel()

void Dune::Amg::Parameters::setDebugLevel ( int  level)
inline

Set the debugging level.

Parameters
levelIf 0 no debugging output will be generated.
Warning
In parallel the level has to be consistent over all procceses.

◆ setDefaultValuesAnisotropic() [1/2]

template<class T >
void Dune::Amg::AggregationCriterion< T >::setDefaultValuesAnisotropic ( std::size_t  dim,
std::size_t  diameter = 2 
)
inline

Sets reasonable default values for an aisotropic problem.

Reasonable means that we should end up with cube aggregates with sides of diameter 2 and sides in one dimension that are longer (e.g. for 3D: 2x2x3).

Parameters
dimThe dimension of the problem.
diameterThe preferred diameter for the aggregation.

References Dune::Amg::AggregationCriterion< T >::setDefaultValuesIsotropic().

◆ setDefaultValuesAnisotropic() [2/2]

void Dune::Amg::AggregationParameters::setDefaultValuesAnisotropic ( std::size_t  dim,
std::size_t  diameter = 2 
)
inline

Sets reasonable default values for an anisotropic problem.

Reasonable means that we should end up with cube aggregates with sides of diameter 2 and sides in one dimension that are longer (e.g. for 3D: 2x2x3).

Parameters
dimThe dimension of the problem.
diameterThe preferred diameter for the aggregation.

References Dune::Amg::AggregationParameters::setDefaultValuesIsotropic().

◆ setDefaultValuesIsotropic() [1/2]

template<class T >
void Dune::Amg::AggregationCriterion< T >::setDefaultValuesIsotropic ( std::size_t  dim,
std::size_t  diameter = 2 
)
inline

Sets reasonable default values for an isotropic problem.

Reasonable means that we should end up with cube aggregates of diameter 2.

Parameters
dimThe dimension of the problem.
diameterThe preferred diameter for the aggregation.

Referenced by Dune::Amg::AggregationCriterion< T >::setDefaultValuesAnisotropic().

◆ setDefaultValuesIsotropic() [2/2]

void Dune::Amg::AggregationParameters::setDefaultValuesIsotropic ( std::size_t  dim,
std::size_t  diameter = 2 
)
inline

Sets reasonable default values for an isotropic problem.

Reasonable means that we should end up with cube aggregates of diameter 2.

Parameters
dimThe dimension of the problem.
diameterThe preferred diameter for the aggregation.

Referenced by Dune::Amg::AggregationParameters::setDefaultValuesAnisotropic().

◆ setIsolated()

void Dune::Amg::VertexProperties::setIsolated ( )
inline

Marks that node as being isolated.

A node is isolated if it ha not got any strong connections to other nodes in the matrix graph.

◆ setMaxAggregateSize()

void Dune::Amg::AggregationParameters::setMaxAggregateSize ( std::size_t  size)
inline

Set the maximum number of nodes a aggregate is allowed to have.

The default values is 6.

Parameters
sizeThe maximum number of nodes.

References Dune::size().

◆ setMaxConnectivity()

void Dune::Amg::AggregationParameters::setMaxConnectivity ( std::size_t  connectivity)
inline

Set the maximum number of connections a aggregate is allowed to have.

This limit exists to achieve sparsity of the coarse matrix. the default value is 15.

Parameters
connectivityThe maximum number of connections a aggregate is allowed to have.

◆ setMaxDistance()

void Dune::Amg::AggregationParameters::setMaxDistance ( std::size_t  distance)
inline

Set the maximal distance allowed between two nodes in a aggregate.

The distance between two nodes in a aggregate is the minimal number of edges it takes to travel from one node to the other without leaving the aggregate. The default value is 2.

Parameters
distanceThe maximum distance allowed.

◆ setMinAggregateSize()

void Dune::Amg::AggregationParameters::setMinAggregateSize ( std::size_t  size)
inline

Set the minimum number of nodes a aggregate has to consist of.

the default value is 4.

References Dune::size().

◆ setMinCoarsenRate()

void Dune::Amg::CoarseningParameters::setMinCoarsenRate ( double  rate)
inline

Set the minimum coarsening rate to be achieved in each coarsening.

The default value is 1.2

◆ setNoPostSmoothSteps()

void Dune::Amg::Parameters::setNoPostSmoothSteps ( std::size_t  steps)
inline

Set the number of postsmoothing steps to apply.

Parameters
stepsThe number of steps:

◆ setNoPreSmoothSteps()

void Dune::Amg::Parameters::setNoPreSmoothSteps ( std::size_t  steps)
inline

Set the number of presmoothing steps to apply.

Parameters
stepsThe number of steps:

◆ setProlongationDampingFactor()

void Dune::Amg::CoarseningParameters::setProlongationDampingFactor ( double  d)
inline

Set the damping factor for the prolongation.

Parameters
dThe new damping factor.

◆ setSkipIsolated()

void Dune::Amg::AggregationParameters::setSkipIsolated ( bool  skip)
inline

Set whether isolated aggregates will not be represented on the coarse level.

Parameters
skipTrue if these aggregates will be skipped.

◆ skipIsolated()

bool Dune::Amg::AggregationParameters::skipIsolated ( ) const
inline

Whether isolated aggregates will not be represented on the coarse level.

Returns
True if these aggregates will be skipped.

◆ SparsityBuilder()

template<class M >
Dune::Amg::SparsityBuilder< M >::SparsityBuilder ( M &  matrix)

Constructor.

Parameters
matrixThe matrix whose sparsity pattern we should set up.

◆ usesDirectCoarseLevelSolver()

template<class M , class X , class S , class PI , class A >
bool Dune::Amg::AMG< M, X, S, PI, A >::usesDirectCoarseLevelSolver

Check whether the coarse solver used is a direct solver.

Returns
True if the coarse level solver is a direct solver.

◆ visitNeighbours()

template<class G , class V >
int Dune::Amg::visitNeighbours ( const G &  graph,
const typename G::VertexDescriptor &  vertex,
V &  visitor 
)

Visit all neighbour vertices of a vertex in a graph.

Parameters
graphThe graph whose vertices to visit.
vertexThe vertex whose neighbours we want to visit.
visitorThe visitor evaluated for each EdgeIterator (by its method operator()(const ConstEdgeIterator& edge)
Returns
The number of neighbours of the vertex.
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Jul 17, 22:30, 2024)