dune-pdelab 2.7-git
|
#include <dune/pdelab/backend/istl/ovlp_amg_dg_backend.hh>
Public Types | |
typedef DGGO::Traits::TrialGridFunctionSpace | GFS |
typedef DGGO::Traits::Jacobian | M |
typedef DGGO::Traits::Domain | V |
typedef Backend::Native< M > | Matrix |
typedef Backend::Native< V > | Vector |
typedef Vector::field_type | field_type |
using | CGV = Dune::PDELab::Backend::Vector< CGGFS, field_type > |
typedef Backend::Native< CGV > | CGVector |
typedef Dune::PDELab::ISTL::BCRSMatrixBackend | MBE |
typedef Dune::PDELab::EmptyTransformation | CC |
typedef TransferLOP | CGTODGLOP |
typedef Dune::PDELab::GridOperator< CGGFS, GFS, CGTODGLOP, MBE, field_type, field_type, field_type, CC, CC > | PGO |
typedef PGO::Jacobian | PMatrix |
typedef Backend::Native< PMatrix > | P |
typedef Dune::TransposedMatMultMatResult< P, Matrix >::type | PTADG |
typedef Dune::MatMultMatResult< PTADG, P >::type | CGMatrix |
typedef Dune::PDELab::ISTL::CommSelector< s, Dune::MPIHelper::isFake >::type | Comm |
typedef Dune::OverlappingSchwarzOperator< CGMatrix, CGVector, CGVector, Comm > | ParCGOperator |
typedef Dune::SeqSSOR< CGMatrix, CGVector, CGVector, 1 > | Smoother |
typedef Dune::BlockPreconditioner< CGVector, CGVector, Comm, Smoother > | ParSmoother |
typedef Dune::Amg::AMG< ParCGOperator, CGVector, ParSmoother, Comm > | AMG |
typedef Dune::Amg::Parameters | Parameters |
Public Member Functions | |
PMatrix & | prolongation_matrix () |
void | setParameters (const Parameters &amg_parameters_) |
set AMG parameters More... | |
const Parameters & | parameters () const |
Get the parameters describing the behaviuour of AMG. More... | |
void | setReuse (bool reuse_) |
Set whether the AMG should be reused again during call to apply(). More... | |
bool | getReuse () const |
Return whether the AMG is reused during call to apply() More... | |
ISTLBackend_OVLP_AMG_4_DG (DGGO &dggo_, const DGCC &dgcc_, CGGFS &cggfs_, const CGCC &cgcc_, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true) | |
ISTLBackend_OVLP_AMG_4_DG (DGGO &dggo_, const DGCC &dgcc_, CGGFS &cggfs_, const CGCC &cgcc_, const ParameterTree ¶ms) | |
void | setDGSmootherRelaxation (double relaxation_) |
set number of presmoothing steps on the DG level More... | |
void | setNoDGPreSmoothSteps (int n1_) |
set number of presmoothing steps on the DG level More... | |
void | setNoDGPostSmoothSteps (int n2_) |
set number of postsmoothing steps on the DG level More... | |
void | apply (M &A, V &z, V &r, typename Dune::template FieldTraits< typename V::ElementType >::real_type reduction) |
solve the given linear system More... | |
X::ElementType | dot (const X &x, const X &y) const |
Dot product of two vectors. It is assumed that the vectors are consistent on the interior+border partition. More... | |
Dune::template FieldTraits< typenameX::ElementType >::real_type | norm (const X &x) const |
Norm of a right-hand side vector. The vector must be consistent on the interior+border partition. More... | |
const ISTL::ParallelHelper< DGGO::Traits::TrialGridFunctionSpace > & | parallelHelper () const |
ISTL::ParallelHelper< DGGO::Traits::TrialGridFunctionSpace > & | parallelHelper () |
const Dune::PDELab::LinearSolverResult< double > & | result () const |
Return access to result data. More... | |
Protected Attributes | |
Dune::PDELab::LinearSolverResult< double > | res |
Overlapping solver backend for using AMG for DG in PDELab
The template parameters are: DGGO GridOperator for DG discretization, allows access to matrix, vector and grid function space DGCC constraints container for DG problem CGGFS grid function space for CG subspace CGCC constraints container for CG problem TransferLOP local operator to assemble prolongation from CGGFS to DGGFS DGPrec preconditioner for DG problem Solver solver to be used on the complete problem int s size of global index to be used in AMG
Note: The subspace matrix is calculated by a triple matrix product with the fine space DG matrix passed into the apply method. This only works if this DG matrix does not contain P0ParallelConstraints. In order to achieve this behaviour you should use this solver backend with a StationaryLinearProblem or Newton solver that was created using a grid operator with empty constranints. See the overlapping test case in
dune-pdelab/dune/pdelab/test-dg-amg.cc
for an example.
typedef Dune::Amg::AMG<ParCGOperator,CGVector,ParSmoother,Comm> Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::AMG |
typedef Dune::PDELab::EmptyTransformation Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::CC |
typedef Dune::MatMultMatResult<PTADG,P>::type Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::CGMatrix |
typedef TransferLOP Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::CGTODGLOP |
using Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::CGV = Dune::PDELab::Backend::Vector<CGGFS,field_type> |
typedef Backend::Native<CGV> Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::CGVector |
typedef Dune::PDELab::ISTL::CommSelector<s,Dune::MPIHelper::isFake>::type Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::Comm |
typedef Vector::field_type Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::field_type |
typedef DGGO::Traits::TrialGridFunctionSpace Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::GFS |
typedef DGGO::Traits::Jacobian Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::M |
typedef Backend::Native<M> Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::Matrix |
typedef Dune::PDELab::ISTL::BCRSMatrixBackend Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::MBE |
typedef Backend::Native<PMatrix> Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::P |
typedef Dune::Amg::Parameters Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::Parameters |
typedef Dune::OverlappingSchwarzOperator<CGMatrix,CGVector,CGVector,Comm> Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::ParCGOperator |
typedef Dune::BlockPreconditioner<CGVector,CGVector,Comm,Smoother> Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::ParSmoother |
typedef Dune::PDELab::GridOperator<CGGFS,GFS,CGTODGLOP,MBE,field_type,field_type,field_type,CC,CC> Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::PGO |
typedef PGO::Jacobian Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::PMatrix |
typedef Dune::TransposedMatMultMatResult<P,Matrix>::type Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::PTADG |
typedef Dune::SeqSSOR<CGMatrix,CGVector,CGVector,1> Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::Smoother |
typedef DGGO::Traits::Domain Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::V |
typedef Backend::Native<V> Dune::PDELab::ISTLBackend_OVLP_AMG_4_DG< DGGO, DGCC, CGGFS, CGCC, TransferLOP, DGPrec, Solver, s >::Vector |
|
inline |
make backend object
|
inline |
make backend object
|
inline |
solve the given linear system
[in] | A | the given matrix |
[out] | z | the solution vector to be computed |
[in] | r | right hand side |
[in] | reduction | to be achieved |
|
inlineinherited |
Dot product of two vectors. It is assumed that the vectors are consistent on the interior+border partition.
|
inline |
Return whether the AMG is reused during call to apply()
|
inlineinherited |
Norm of a right-hand side vector. The vector must be consistent on the interior+border partition.
|
inlineinherited |
|
inlineinherited |
|
inline |
Get the parameters describing the behaviuour of AMG.
The returned object can be adjusted to ones needs and then can be reset using setParameters.
|
inline |
|
inlineinherited |
Return access to result data.
|
inline |
set number of presmoothing steps on the DG level
|
inline |
set number of postsmoothing steps on the DG level
|
inline |
set number of presmoothing steps on the DG level
|
inline |
set AMG parameters
[in] | amg_parameters_ | a parameter object of Type Dune::Amg::Parameters |
|
inline |
Set whether the AMG should be reused again during call to apply().
|
protectedinherited |