Dune Core Modules (2.6.0)
preconditioners.hh
Go to the documentation of this file.
92 DUNE_THROW(InvalidStateException, "User supplied solver category does not match that of the supplied iverser operator");
954 for( auto row = decomposition_.begin(), rowend = decomposition_.end(); row != rowend; ++row, ++i )
Default exception if a function was called while the object is not in a valid state for that function...
Definition: exceptions.hh:279
Turns an InverseOperator into a Preconditioner.
Definition: preconditioners.hh:71
O::range_type range_type
The range type of the preconditioner.
Definition: preconditioners.hh:76
O::domain_type domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:74
virtual void post(domain_type &)
Clean up.
Definition: preconditioners.hh:105
range_type::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:78
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:109
virtual void pre(domain_type &, range_type &)
Prepare the preconditioner.
Definition: preconditioners.hh:95
SimdScalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:80
InverseOperator2Preconditioner(InverseOperator &inverse_operator)
Construct the preconditioner from the solver.
Definition: preconditioners.hh:88
O InverseOperator
type of the wrapped inverse operator
Definition: preconditioners.hh:82
virtual void apply(domain_type &v, const range_type &d)
Apply one step of the preconditioner to the system A(v)=d.
Definition: preconditioners.hh:98
Base class for matrix free definition of preconditioners.
Definition: preconditioner.hh:30
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:832
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:878
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:830
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:850
SimdScalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:834
Richardson(scalar_field_type w=1.0)
Constructor.
Definition: preconditioners.hh:841
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:828
virtual void apply(X &v, const Y &d)
Apply the precondioner.
Definition: preconditioners.hh:861
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:361
SeqGS(const M &A, int n, scalar_field_type w)
Constructor.
Definition: preconditioners.hh:350
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:337
SimdScalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:341
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:339
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:390
virtual void apply(X &v, const Y &d)
Apply the preconditioner.
Definition: preconditioners.hh:372
M matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:333
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:335
SeqILDL(const matrix_type &A, scalar_field_type relax=scalar_field_type(1))
constructor
Definition: preconditioners.hh:926
X domain_type
domain type of the preconditioner
Definition: preconditioners.hh:910
Y range_type
range type of the preconditioner
Definition: preconditioners.hh:912
std::remove_const_t< M > matrix_type
type of matrix the preconditioner is for
Definition: preconditioners.hh:908
SimdScalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:916
void apply(X &v, const Y &d) override
Apply one step of the preconditioner to the system A(v)=d.
Definition: preconditioners.hh:973
void pre(X &x, Y &b) override
Prepare the preconditioner.
Definition: preconditioners.hh:966
X::field_type field_type
field type of the preconditioner
Definition: preconditioners.hh:914
SolverCategory::Category category() const override
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:986
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:684
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:712
virtual void apply(X &v, const Y &d)
Apply the preconditoner.
Definition: preconditioners.hh:695
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:659
SeqILU0(const M &A, scalar_field_type w)
Constructor.
Definition: preconditioners.hh:671
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:657
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:661
std::remove_const< M >::type matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:655
SimdScalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:663
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:580
virtual void apply(X &v, const Y &d)
Apply the preconditoner.
Definition: preconditioners.hh:591
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:513
const scalar_field_type w_
The relaxation factor to use.
Definition: preconditioners.hh:634
CRS lower_
The ILU(n) decomposition of the matrix. As storage a CRS structure is used.
Definition: preconditioners.hh:629
const bool wNotIdentity_
true if w != 1.0
Definition: preconditioners.hh:636
SeqILU(const M &A, int n, scalar_field_type w, const bool resort=false)
Constructor.
Definition: preconditioners.hh:544
std::remove_const< M >::type matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:507
matrix_type::block_type block_type
block type of matrix
Definition: preconditioners.hh:509
SeqILU(const M &A, scalar_field_type w, const bool resort=false)
Constructor.
Definition: preconditioners.hh:531
SimdScalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:519
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:516
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:619
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:511
std::unique_ptr< matrix_type > ILU_
The ILU(n) decomposition of the matrix. As storage a BCRSMatrix is used.
Definition: preconditioners.hh:626
SeqILUn(const M &A, int n, scalar_field_type w)
Constructor.
Definition: preconditioners.hh:759
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:772
std::remove_const< M >::type matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:742
SimdScalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:750
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:744
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:746
virtual void apply(X &v, const Y &d)
Apply the precondioner.
Definition: preconditioners.hh:783
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:748
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:800
virtual void apply(X &v, const Y &d)
Apply the preconditioner.
Definition: preconditioners.hh:458
M matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:419
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:425
SeqJac(const M &A, int n, scalar_field_type w)
Constructor.
Definition: preconditioners.hh:436
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:447
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:421
SimdScalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:427
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:476
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:423
M matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:228
SimdScalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:236
void apply(X &v, const Y &d)
Apply the preconditioner in a special direction.
Definition: preconditioners.hh:281
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:230
SeqSOR(const M &A, int n, scalar_field_type w)
Constructor.
Definition: preconditioners.hh:245
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:256
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:304
virtual void apply(X &v, const Y &d)
Apply the preconditioner.
Definition: preconditioners.hh:267
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:232
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:234
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:197
SimdScalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:146
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:144
SeqSSOR(const M &A, int n, scalar_field_type w)
Constructor.
Definition: preconditioners.hh:155
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:140
M matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:138
virtual void apply(X &v, const Y &d)
Apply the preconditioner.
Definition: preconditioners.hh:178
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:166
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:142
#define DUNE_UNUSED_PARAMETER(parm)
A macro to mark intentionally unused function parameters with.
Definition: unused.hh:25
void bilu_backsolve(const M &A, X &v, const Y &d)
LU backsolve with stored inverse.
Definition: ilu.hh:97
void bilu0_decomposition(M &A)
compute ILU decomposition of A. A is overwritten by its decomposition
Definition: ilu.hh:36
Simple iterative methods like Jacobi, Gauss-Seidel, SOR, SSOR, etc. in a generic way.
Incomplete LDL decomposition.
???
Some handy generic functions for ISTL matrices.
void bildl_decompose(Matrix &A)
compute ILDL decomposition of a symmetric matrix A
Definition: ildl.hh:76
STL namespace.
Define general, extensible interface for inverse operators.
static void check(const Matrix &mat)
Check whether the a matrix has diagonal values on blocklevel recursion levels.
Definition: matrixutils.hh:88
Statistics about the application of an inverse operator.
Definition: solver.hh:41
@ sequential
Category for sequential solvers.
Definition: solvercategory.hh:23
static Category category(const OP &op, decltype(op.category()) *=nullptr)
Helperfunction to extract the solver category either from an enum, or from the newly introduced virtu...
Definition: solvercategory.hh:32
Definition of the DUNE_UNUSED macro for the case that config.h is not available.
|
Legal Statements / Impressum |
Hosted by TU Dresden |
generated with Hugo v0.111.3
(Nov 24, 23:30, 2024)