|
dune-istl 2.12-git
|
Loading...
Searching...
No Matches
twolevelmethod.hh
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
171 std::cout<<"no aggregates="<<noAggregates<<" iso="<<isoAggregates<<" one="<<oneAggregates<<" skipped="<<skippedAggregates<<std::endl;
194 productBuilder.calculate(fineOperator.getmat(), *aggregatesMap_, *matrix_, pinfo, OverlapFlags());
276 void apply(X& x, X& b, [[maybe_unused]] double reduction, [[maybe_unused]] InverseOperatorResult& res) override
The AMG preconditioner.
Provides a class for building the galerkin product based on a aggregation scheme.
Define general, extensible interface for inverse operators.
Define general, extensible interface for operators. The available implementation wraps a matrix.
G::MutableMatrix * build(G &fineGraph, V &visitedMap, const ParallelInformation &pinfo, AggregatesMap< typename G::VertexDescriptor > &aggregates, const typename G::Matrix::size_type &size, const Set ©)
Calculates the coarse matrix via a Galerkin product.
Definition galerkin.hh:563
SmootherTraits< Smoother >::Arguments SmootherArgs
The argument type for the construction of the smoother.
Definition amg.hh:101
Operator Operator
The matrix operator type.
Definition amg.hh:74
void presmooth(LevelContext &levelContext, size_t steps)
Apply pre smoothing on the current level.
Definition smoother.hh:407
void postsmooth(LevelContext &levelContext, size_t steps)
Apply post smoothing on the current level.
Definition smoother.hh:429
void calculate(const M &fine, const AggregatesMap< V > &aggregates, M &coarse, const I &pinfo, const O ©)
Calculate the galerkin product.
iterator end()
Class providing information about the mapping of the vertices onto aggregates.
Definition aggregates.hh:553
Class representing the properties of an edge in the matrix graph.
Definition dependency.hh:39
Class representing a node in the matrix graph.
Definition dependency.hh:126
Definition galerkin.hh:118
Attaches properties to the edges and vertices of a graph.
Definition graph.hh:978
VertexDescriptor maxVertex() const
Get the maximal vertex descriptor.
Definition indicescoarsener.hh:36
Definition pinfo.hh:28
The default class for the smoother arguments.
Definition smoother.hh:39
Definition transfer.hh:32
Abstract base class for transfer between levels and creation of the coarse level system.
Definition twolevelmethod.hh:38
CO CoarseOperatorType
The linear operator of the finel level system. Has to be derived from AssembledLinearOperator.
Definition twolevelmethod.hh:57
virtual void moveToCoarseLevel(const FineRangeType &fineRhs)=0
Transfers the data to the coarse level.
FineOperatorType::range_type FineRangeType
The type of the range of the fine level operator.
Definition twolevelmethod.hh:48
virtual void createCoarseLevelSystem(const FineOperatorType &fineOperator)=0
Algebraically creates the coarse level system.
CoarseOperatorType::range_type CoarseRangeType
The type of the range of the coarse level operator.
Definition twolevelmethod.hh:61
virtual ~LevelTransferPolicy()
Destructor.
Definition twolevelmethod.hh:124
CoarseDomainType lhs_
The coarse level lhs.
Definition twolevelmethod.hh:130
virtual LevelTransferPolicy * clone() const =0
Clone the current object.
CoarseDomainType & getCoarseLevelLhs()
Get the coarse level left hand side.
Definition twolevelmethod.hh:87
std::shared_ptr< CoarseOperatorType > operator_
the coarse level linear operator.
Definition twolevelmethod.hh:132
CoarseRangeType rhs_
The coarse level rhs.
Definition twolevelmethod.hh:128
virtual void moveToFineLevel(FineDomainType &fineLhs)=0
Updates the fine level linear system after the correction of the coarse levels system.
std::shared_ptr< CoarseOperatorType > & getCoarseLevelOperator()
Get the coarse level operator.
Definition twolevelmethod.hh:70
CoarseRangeType & getCoarseLevelRhs()
Get the coarse level right hand side.
Definition twolevelmethod.hh:78
FO FineOperatorType
The linear operator of the finel level system. Has to be derived from AssembledLinearOperator.
Definition twolevelmethod.hh:44
CoarseOperatorType::domain_type CoarseDomainType
The type of the domain of the coarse level operator.
Definition twolevelmethod.hh:65
FineOperatorType::domain_type FineDomainType
The type of the domain of the fine level operator.
Definition twolevelmethod.hh:52
A LeveTransferPolicy that used aggregation to construct the coarse level system.
Definition twolevelmethod.hh:143
AggregationLevelTransferPolicy(const Criterion &crit)
Definition twolevelmethod.hh:150
AggregationLevelTransferPolicy * clone() const
Clone the current object.
Definition twolevelmethod.hh:214
void moveToFineLevel(typename FatherType::FineDomainType &fineLhs)
Updates the fine level linear system after the correction of the coarse levels system.
Definition twolevelmethod.hh:207
void moveToCoarseLevel(const typename FatherType::FineRangeType &fineRhs)
Definition twolevelmethod.hh:200
SequentialInformation ParallelInformation
Definition twolevelmethod.hh:148
LevelTransferPolicy< O, O > FatherType
Definition twolevelmethod.hh:146
void createCoarseLevelSystem(const O &fineOperator)
Algebraically creates the coarse level system.
Definition twolevelmethod.hh:154
A policy class for solving the coarse level system using one step of AMG.
Definition twolevelmethod.hh:234
OneStepAMGCoarseSolverPolicy(const SmootherArgs &args, const Criterion &c)
Constructs the coarse solver policy.
Definition twolevelmethod.hh:253
AMGInverseOperator CoarseLevelSolver
The type of solver constructed for the coarse level.
Definition twolevelmethod.hh:315
OneStepAMGCoarseSolverPolicy(const OneStepAMGCoarseSolverPolicy &other)
Copy constructor.
Definition twolevelmethod.hh:257
O::range_type X
The type of the range and domain of the operator.
Definition twolevelmethod.hh:239
C Criterion
The type of the crition used for the aggregation within AMG.
Definition twolevelmethod.hh:241
Dune::Amg::SmootherTraits< S >::Arguments SmootherArgs
The type of the arguments used for constructing the smoother.
Definition twolevelmethod.hh:245
O Operator
The type of the linear operator used.
Definition twolevelmethod.hh:237
AMG< Operator, X, Smoother > AMGType
The type of the AMG construct on the coarse level.
Definition twolevelmethod.hh:247
CoarseLevelSolver * createCoarseLevelSolver(P &transferPolicy)
Constructs a coarse level solver.
Definition twolevelmethod.hh:325
S Smoother
The type of the smoother used in AMG.
Definition twolevelmethod.hh:243
Definition twolevelmethod.hh:353
CoarseOperatorType::range_type CoarseRangeType
The type of the range of the coarse level operator.
Definition twolevelmethod.hh:380
FineOperatorType::domain_type FineDomainType
The type of the domain of the fine level operator.
Definition twolevelmethod.hh:371
TwoLevelMethod(const TwoLevelMethod &other)
Definition twolevelmethod.hh:418
void post(FineDomainType &x) override
Definition twolevelmethod.hh:436
FO FineOperatorType
The linear operator of the finel level system. Has to be derived from AssembledLinearOperator.
Definition twolevelmethod.hh:363
CoarseLevelSolverPolicy::CoarseLevelSolver CoarseLevelSolver
The type of the coarse level solver.
Definition twolevelmethod.hh:358
void apply(FineDomainType &v, const FineRangeType &d) override
Definition twolevelmethod.hh:439
CSP CoarseLevelSolverPolicy
The type of the policy for constructing the coarse level solver.
Definition twolevelmethod.hh:356
CoarseOperatorType::domain_type CoarseDomainType
The type of the domain of the coarse level operator.
Definition twolevelmethod.hh:384
TwoLevelMethod(const FineOperatorType &op, std::shared_ptr< SmootherType > smoother, const LevelTransferPolicy< FineOperatorType, CoarseOperatorType > &policy, CoarseLevelSolverPolicy &coarsePolicy, std::size_t preSteps=1, std::size_t postSteps=1)
Constructs a two level method.
Definition twolevelmethod.hh:404
SolverCategory::Category category() const override
Category of the preconditioner (see SolverCategory::Category)
Definition twolevelmethod.hh:466
void pre(FineDomainType &x, FineRangeType &b) override
Definition twolevelmethod.hh:431
FineOperatorType::range_type FineRangeType
The type of the range of the fine level operator.
Definition twolevelmethod.hh:367
CSP::Operator CoarseOperatorType
The linear operator of the finel level system. Has to be derived from AssembledLinearOperator.
Definition twolevelmethod.hh:376
S SmootherType
The type of the fine level smoother.
Definition twolevelmethod.hh:388
Base class for matrix free definition of preconditioners.
Definition preconditioner.hh:33
Statistics about the application of an inverse operator.
Definition solver.hh:50
virtual void apply(X &x, X &b, InverseOperatorResult &res)=0
Apply inverse operator,.
@ sequential
Category for sequential solvers.
Definition solvercategory.hh:25
T begin(T... args)
T end(T... args)
T endl(T... args)
T reset(T... args)
T tie(T... args)
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8