Dune::MultithreadDILU< M, X, Y > Class Template Reference

The OpenMP thread parallelized DILU preconditioner. More...

#include <DILU.hpp>

Inheritance diagram for Dune::MultithreadDILU< M, X, Y >:
Inheritance graph

Public Types

using matrix_type = M
 The matrix type the preconditioner is for. More...
 
using domain_type = X
 The domain type of the preconditioner. More...
 
using range_type = Y
 The range type of the preconditioner. More...
 
using field_type = typename X::field_type
 The field type of the preconditioner. More...
 

Public Member Functions

 MultithreadDILU (const M &A)
 scalar type underlying the field_type More...
 
void update () override
 Update the preconditioner. More...
 
void pre (X &v, Y &d) override
 Prepare the preconditioner. More...
 
void apply (X &v, const Y &d) override
 Apply the preconditioner. More...
 
void post (X &x) override
 Clean up. More...
 
std::vector< typename M::block_type > getDiagonal ()
 
virtual SolverCategory::Category category () const override
 Category of the preconditioner (see SolverCategory::Category) More...
 

Detailed Description

template<class M, class X, class Y>
class Dune::MultithreadDILU< M, X, Y >

The OpenMP thread parallelized DILU preconditioner.

Safe to run serially without OpenMP. When run in parallel the matrix is assumed to be symmetric.

Template Parameters
MThe matrix type to operate on
XType of the update
YType of the defect

Member Typedef Documentation

◆ domain_type

template<class M , class X , class Y >
using Dune::MultithreadDILU< M, X, Y >::domain_type = X

The domain type of the preconditioner.

◆ field_type

template<class M , class X , class Y >
using Dune::MultithreadDILU< M, X, Y >::field_type = typename X::field_type

The field type of the preconditioner.

◆ matrix_type

template<class M , class X , class Y >
using Dune::MultithreadDILU< M, X, Y >::matrix_type = M

The matrix type the preconditioner is for.

◆ range_type

template<class M , class X , class Y >
using Dune::MultithreadDILU< M, X, Y >::range_type = Y

The range type of the preconditioner.

Constructor & Destructor Documentation

◆ MultithreadDILU()

template<class M , class X , class Y >
Dune::MultithreadDILU< M, X, Y >::MultithreadDILU ( const M &  A)
inline

scalar type underlying the field_type

Constructor gets all parameters to operate the prec.

Parameters
AThe matrix to operate on.

Assuming symmetric matrices using a lower triangular coloring to construct the levels is sufficient

References Opm::getMatrixRowColoring(), Opm::LOWER, and Dune::MultithreadDILU< M, X, Y >::update().

Member Function Documentation

◆ apply()

template<class M , class X , class Y >
void Dune::MultithreadDILU< M, X, Y >::apply ( X &  v,
const Y &  d 
)
inlineoverride

Apply the preconditioner.

◆ category()

template<class M , class X , class Y >
virtual SolverCategory::Category Dune::MultithreadDILU< M, X, Y >::category ( ) const
inlineoverridevirtual

Category of the preconditioner (see SolverCategory::Category)

◆ getDiagonal()

template<class M , class X , class Y >
std::vector< typename M::block_type > Dune::MultithreadDILU< M, X, Y >::getDiagonal ( )
inline

◆ post()

template<class M , class X , class Y >
void Dune::MultithreadDILU< M, X, Y >::post ( X &  x)
inlineoverride

Clean up.

◆ pre()

template<class M , class X , class Y >
void Dune::MultithreadDILU< M, X, Y >::pre ( X &  v,
Y &  d 
)
inlineoverride

Prepare the preconditioner.

◆ update()

template<class M , class X , class Y >
void Dune::MultithreadDILU< M, X, Y >::update ( )
inlineoverridevirtual

The documentation for this class was generated from the following file: