Dune Core Modules (2.7.0)
preconditioners.hh
Go to the documentation of this file.
95 DUNE_THROW(InvalidStateException, "User supplied solver category does not match that of the supplied iverser operator");
670 class DUNE_DEPRECATED_MSG("Use SeqILU instead of SeqILU0!") SeqILU0: public Preconditioner<X,Y> {
778 class DUNE_DEPRECATED_MSG("Use SeqILU instead of SeqILUn!") SeqILUn : public Preconditioner<X,Y> {
953 DUNE_REGISTER_PRECONDITIONER("richardson", [](auto tl, const auto& mat, const ParameterTree& config){
1041 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:74
O::range_type range_type
The range type of the preconditioner.
Definition: preconditioners.hh:79
O::domain_type domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:77
virtual void post(domain_type &)
Clean up.
Definition: preconditioners.hh:108
range_type::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:81
Simd::Scalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:83
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:112
virtual void pre(domain_type &, range_type &)
Prepare the preconditioner.
Definition: preconditioners.hh:98
InverseOperator2Preconditioner(InverseOperator &inverse_operator)
Construct the preconditioner from the solver.
Definition: preconditioners.hh:91
O InverseOperator
type of the wrapped inverse operator
Definition: preconditioners.hh:85
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:101
std::string get(const std::string &key, const std::string &defaultValue) const
get value as string
Definition: parametertree.cc:183
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:882
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:944
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:880
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:916
Richardson(scalar_field_type w=1.0)
Constructor.
Definition: preconditioners.hh:891
Simd::Scalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:884
Richardson(const ParameterTree &configuration)
Constructor.
Definition: preconditioners.hh:906
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:878
virtual void apply(X &v, const Y &d)
Apply the precondioner.
Definition: preconditioners.hh:927
SeqILDL(const matrix_type &A, const ParameterTree &config)
Constructor.
Definition: preconditioners.hh:1001
SeqILDL(const matrix_type &A, scalar_field_type relax=scalar_field_type(1))
constructor
Definition: preconditioners.hh:1013
X domain_type
domain type of the preconditioner
Definition: preconditioners.hh:981
Y range_type
range type of the preconditioner
Definition: preconditioners.hh:983
std::remove_const_t< M > matrix_type
type of matrix the preconditioner is for
Definition: preconditioners.hh:979
void apply(X &v, const Y &d) override
Apply one step of the preconditioner to the system A(v)=d.
Definition: preconditioners.hh:1060
void pre(X &x, Y &b) override
Prepare the preconditioner.
Definition: preconditioners.hh:1053
Simd::Scalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:987
X::field_type field_type
field type of the preconditioner
Definition: preconditioners.hh:985
SolverCategory::Category category() const override
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:1073
Simd::Scalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:681
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:721
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:749
virtual void apply(X &v, const Y &d)
Apply the preconditoner.
Definition: preconditioners.hh:732
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:677
SeqILU0(const M &A, scalar_field_type w)
Constructor.
Definition: preconditioners.hh:689
SeqILU0(const M &A, const ParameterTree &configuration)
Constructor.
Definition: preconditioners.hh:709
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:675
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:679
std::remove_const< M >::type matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:673
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:596
virtual void apply(X &v, const Y &d)
Apply the preconditoner.
Definition: preconditioners.hh:607
ILU::CRS< block_type, typename M::allocator_type > CRS
type of ILU storage
Definition: preconditioners.hh:518
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:509
const scalar_field_type w_
The relaxation factor to use.
Definition: preconditioners.hh:650
CRS lower_
The ILU(n) decomposition of the matrix. As storage a CRS structure is used.
Definition: preconditioners.hh:645
const bool wNotIdentity_
true if w != 1.0
Definition: preconditioners.hh:652
SeqILU(const M &A, const ParameterTree &config)
Constructor.
Definition: preconditioners.hh:546
SeqILU(const M &A, int n, scalar_field_type w, const bool resort=false)
Constructor.
Definition: preconditioners.hh:560
std::remove_const< M >::type matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:503
matrix_type::block_type block_type
block type of matrix
Definition: preconditioners.hh:505
SeqILU(const M &A, scalar_field_type w, const bool resort=false)
Constructor.
Definition: preconditioners.hh:527
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:512
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:635
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:507
Simd::Scalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:515
std::unique_ptr< matrix_type > ILU_
The ILU(n) decomposition of the matrix. As storage a BCRSMatrix is used.
Definition: preconditioners.hh:642
Simd::Scalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:789
SeqILUn(const M &A, int n, scalar_field_type w)
Constructor.
Definition: preconditioners.hh:798
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:822
std::remove_const< M >::type matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:781
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:783
SeqILUn(const M &A, const ParameterTree &configuration)
Constructor.
Definition: preconditioners.hh:809
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:785
virtual void apply(X &v, const Y &d)
Apply the precondioner.
Definition: preconditioners.hh:833
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:787
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:850
SeqJac(const M &A, const ParameterTree &configuration)
Constructor.
Definition: preconditioners.hh:429
virtual void apply(X &v, const Y &d)
Apply the preconditioner.
Definition: preconditioners.hh:453
M matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:393
Simd::Scalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:401
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:399
SeqJac(const M &A, int n, scalar_field_type w)
Constructor.
Definition: preconditioners.hh:410
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:442
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:395
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:471
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:397
M matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:252
void apply(X &v, const Y &d)
Apply the preconditioner in a special direction.
Definition: preconditioners.hh:326
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:254
SeqSOR(const M &A, int n, scalar_field_type w)
Constructor.
Definition: preconditioners.hh:269
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:301
Simd::Scalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:260
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:349
virtual void apply(X &v, const Y &d)
Apply the preconditioner.
Definition: preconditioners.hh:312
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:256
SeqSOR(const M &A, const ParameterTree &configuration)
Constructor.
Definition: preconditioners.hh:288
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:258
SeqSSOR(const M &A, const ParameterTree &configuration)
Constructor.
Definition: preconditioners.hh:177
virtual SolverCategory::Category category() const
Category of the preconditioner (see SolverCategory::Category)
Definition: preconditioners.hh:221
X::field_type field_type
The field type of the preconditioner.
Definition: preconditioners.hh:147
Simd::Scalar< field_type > scalar_field_type
scalar type underlying the field_type
Definition: preconditioners.hh:149
SeqSSOR(const M &A, int n, scalar_field_type w)
Constructor.
Definition: preconditioners.hh:158
X domain_type
The domain type of the preconditioner.
Definition: preconditioners.hh:143
M matrix_type
The matrix type the preconditioner is for.
Definition: preconditioners.hh:141
virtual void apply(X &v, const Y &d)
Apply the preconditioner.
Definition: preconditioners.hh:202
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: preconditioners.hh:190
Y range_type
The range type of the preconditioner.
Definition: preconditioners.hh:145
#define DUNE_DEPRECATED_MSG(text)
Mark some entity as deprecated.
Definition: deprecated.hh:169
#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:95
void bilu0_decomposition(M &A)
compute ILU decomposition of A. A is overwritten by its decomposition
Definition: ilu.hh:34
typename Overloads::ScalarType< std::decay_t< V > >::type Scalar
Element type of some SIMD type.
Definition: interface.hh:233
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:86
A hierarchical structure of string parameters.
Include file for users of the SIMD abstraction layer.
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:52
Statistics about the application of an inverse operator.
Definition: solver.hh:46
@ 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
(Oct 13, 22:30, 2024)