DUNE-FEM (unstable)

Criterion suitable for unsymmetric matrices. More...

#include <dune/istl/paamg/aggregates.hh>

Public Types

typedef Dependency< M, NormDependencyPolicy
 The policy for calculating the dependency graph.
 
typedef M Matrix
 The matrix type we build the dependency of.
 
typedef Norm Norm
 The norm to use for examining the matrix entries.
 
typedef Matrix::row_type Row
 Constant Row iterator of the matrix.
 
typedef Matrix::ConstColIterator ColIter
 Constant column iterator of the matrix.
 

Public Member Functions

void setDefaultValuesIsotropic (std::size_t dim, std::size_t diameter=2)
 Sets reasonable default values for an isotropic problem. More...
 
void setDefaultValuesAnisotropic (std::size_t dim, std::size_t diameter=2)
 Sets reasonable default values for an aisotropic problem. More...
 
void setDebugLevel (int level)
 Set the debugging level. More...
 
int debugLevel () const
 Get the debugging Level. More...
 
void setNoPreSmoothSteps (std::size_t steps)
 Set the number of presmoothing steps to apply. More...
 
std::size_t getNoPreSmoothSteps () const
 Get the number of presmoothing steps to apply. More...
 
void setNoPostSmoothSteps (std::size_t steps)
 Set the number of postsmoothing steps to apply. More...
 
std::size_t getNoPostSmoothSteps () const
 Get the number of postsmoothing steps to apply. More...
 
void setGamma (std::size_t gamma)
 Set the value of gamma; 1 for V-cycle, 2 for W-cycle.
 
std::size_t getGamma () const
 Get the value of gamma; 1 for V-cycle, 2 for W-cycle.
 
void setAdditive (bool additive)
 Set whether to use additive multigrid. More...
 
bool getAdditive () const
 Get whether to use additive multigrid. More...
 
void setMaxLevel (int l)
 Set the maximum number of levels allowed in the hierarchy.
 
int maxLevel () const
 Get the maximum number of levels allowed in the hierarchy.
 
void setCoarsenTarget (int nodes)
 Set the maximum number of unknowns allowed on the coarsest level.
 
int coarsenTarget () const
 Get the maximum number of unknowns allowed on the coarsest level.
 
void setMinCoarsenRate (double rate)
 Set the minimum coarsening rate to be achieved in each coarsening. More...
 
double minCoarsenRate () const
 Get the minimum coarsening rate to be achieved.
 
AccumulationMode accumulate () const
 Whether the data should be accumulated on fewer processes on coarser levels.
 
void setAccumulate (AccumulationMode accu)
 Set whether the data should be accumulated on fewer processes on coarser levels.
 
bool useFixedOrder () const
 Check if the indices for the coarser levels should be created in a fixed order.
 
void setProlongationDampingFactor (double d)
 Set the damping factor for the prolongation. More...
 
double getProlongationDampingFactor () const
 Get the damping factor for the prolongation. More...
 
std::size_t maxDistance () const
 Get the maximal distance allowed between two nodes in a aggregate. More...
 
void setMaxDistance (std::size_t distance)
 Set the maximal distance allowed between two nodes in a aggregate. More...
 
bool skipIsolated () const
 Whether isolated aggregates will not be represented on the coarse level. More...
 
void setSkipIsolated (bool skip)
 Set whether isolated aggregates will not be represented on the coarse level. More...
 
std::size_t minAggregateSize () const
 Get the minimum number of nodes a aggregate has to consist of. More...
 
void setMinAggregateSize (std::size_t size)
 Set the minimum number of nodes a aggregate has to consist of. More...
 
std::size_t maxAggregateSize () const
 Get the maximum number of nodes a aggregate is allowed to have. More...
 
void setMaxAggregateSize (std::size_t size)
 Set the maximum number of nodes a aggregate is allowed to have. More...
 
std::size_t maxConnectivity () const
 Get the maximum number of connections a aggregate is allowed to have. More...
 
void setMaxConnectivity (std::size_t connectivity)
 Set the maximum number of connections a aggregate is allowed to have. More...
 
void setBeta (double b)
 Set threshold for marking nodes as isolated. The default value is 1.0E-5.
 
double beta () const
 Get the threshold for marking nodes as isolated. The default value is 1.0E-5. More...
 
void setAlpha (double a)
 Set the scaling value for marking connections as strong. Default value is 1/3.
 
double alpha () const
 Get the scaling value for marking connections as strong. Default value is 1/3.
 

Protected Types

typedef Matrix::field_type field_type
 The current max value.
 

Protected Attributes

const Matrixmatrix_
 The matrix we work on.
 
Norm norm_
 The functor for calculating the norm.
 
int row_
 index of the currently evaluated row.
 
real_type diagonal_
 The norm of the current diagonal.
 

Detailed Description

template<class M, class Norm>
class Dune::Amg::UnSymmetricCriterion< M, Norm >

Criterion suitable for unsymmetric matrices.

Nevertheless the sparsity pattern has to be symmetric.

Template Parameters
MThe type of the matrix the amg coarsening works on, e.g. BCRSMatrix
NormThe norm to use to determine the strong couplings between the nodes, e.g. FirstDiagonal or RowSum.

Member Function Documentation

◆ setDefaultValuesAnisotropic()

void Dune::Amg::AggregationCriterion< Dependency< M, Norm > >::setDefaultValuesAnisotropic ( std::size_t  dim,
std::size_t  diameter = 2 
)
inlineinherited

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.

◆ setDefaultValuesIsotropic()

void Dune::Amg::AggregationCriterion< Dependency< M, Norm > >::setDefaultValuesIsotropic ( std::size_t  dim,
std::size_t  diameter = 2 
)
inlineinherited

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.

The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 20, 23:30, 2024)