dune-istl 2.8.0
Public Types | Public Member Functions | List of all members
Dune::OverlappingSchwarzOperator< M, X, Y, C > Class Template Reference

An overlapping Schwarz operator. More...

#include <dune/istl/schwarz.hh>

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

Public Types

typedef M matrix_type
 The type of the matrix we operate on. More...
 
typedef X domain_type
 The type of the domain. More...
 
typedef Y range_type
 The type of the range. More...
 
typedef X::field_type field_type
 The field type of the range. More...
 
typedef C communication_type
 The type of the communication object. More...
 

Public Member Functions

 OverlappingSchwarzOperator (const matrix_type &A, const communication_type &com)
 constructor: just store a reference to a matrix. More...
 
 OverlappingSchwarzOperator (const std::shared_ptr< matrix_type > A, const communication_type &com)
 
virtual void apply (const X &x, Y &y) const
 apply operator to x: $ y = A(x) $ More...
 
virtual void applyscaleadd (field_type alpha, const X &x, Y &y) const
 apply operator to x, scale and add: $ y = y + \alpha A(x) $ More...
 
virtual const matrix_typegetmat () const
 get the sequential assembled linear operator. More...
 
virtual SolverCategory::Category category () const
 Category of the linear operator (see SolverCategory::Category) More...
 
const communication_typegetCommunication () const
 Get the object responsible for communication. More...
 

Detailed Description

template<class M, class X, class Y, class C>
class Dune::OverlappingSchwarzOperator< M, X, Y, C >

An overlapping Schwarz operator.

This operator represents a parallel matrix product using sequential data structures together with a parallel index set describing an overlapping domain decomposition and the communication.

Template Parameters
MThe type of the sequential matrix to use, e.g. BCRSMatrix or another matrix type fulfilling the matrix interface of ISTL.
XThe type of the sequential vector to use for the left hand side, e.g. BlockVector or another type fulfilling the ISTL vector interface.
YThe type of the sequential vector to use for the right hand side, e..g. BlockVector or another type fulfilling the ISTL vector interface.
CThe type of the communication object. This must either be OwnerOverlapCopyCommunication or a type implementing the same interface.

Member Typedef Documentation

◆ communication_type

template<class M , class X , class Y , class C >
typedef C Dune::OverlappingSchwarzOperator< M, X, Y, C >::communication_type

The type of the communication object.

This must either be OwnerOverlapCopyCommunication or a type implementing the same interface.

◆ domain_type

template<class M , class X , class Y , class C >
typedef X Dune::OverlappingSchwarzOperator< M, X, Y, C >::domain_type

The type of the domain.

E.g. BlockVector or another type fulfilling the ISTL vector interface.

◆ field_type

template<class M , class X , class Y , class C >
typedef X::field_type Dune::OverlappingSchwarzOperator< M, X, Y, C >::field_type

The field type of the range.

◆ matrix_type

template<class M , class X , class Y , class C >
typedef M Dune::OverlappingSchwarzOperator< M, X, Y, C >::matrix_type

The type of the matrix we operate on.

E.g. BCRSMatrix or another matrix type fulfilling the matrix interface of ISTL

◆ range_type

template<class M , class X , class Y , class C >
typedef Y Dune::OverlappingSchwarzOperator< M, X, Y, C >::range_type

The type of the range.

E.g. BlockVector or another type fulfilling the ISTL vector interface.

Constructor & Destructor Documentation

◆ OverlappingSchwarzOperator() [1/2]

template<class M , class X , class Y , class C >
Dune::OverlappingSchwarzOperator< M, X, Y, C >::OverlappingSchwarzOperator ( const matrix_type A,
const communication_type com 
)
inline

constructor: just store a reference to a matrix.

Parameters
AThe assembled matrix.
comThe communication object for syncing overlap and copy data points. (E.~g. OwnerOverlapCopyCommunication )

◆ OverlappingSchwarzOperator() [2/2]

template<class M , class X , class Y , class C >
Dune::OverlappingSchwarzOperator< M, X, Y, C >::OverlappingSchwarzOperator ( const std::shared_ptr< matrix_type A,
const communication_type com 
)
inline

Member Function Documentation

◆ apply()

template<class M , class X , class Y , class C >
virtual void Dune::OverlappingSchwarzOperator< M, X, Y, C >::apply ( const X &  x,
Y &  y 
) const
inlinevirtual

apply operator to x: $ y = A(x) $

Implements Dune::LinearOperator< X, Y >.

◆ applyscaleadd()

template<class M , class X , class Y , class C >
virtual void Dune::OverlappingSchwarzOperator< M, X, Y, C >::applyscaleadd ( field_type  alpha,
const X &  x,
Y &  y 
) const
inlinevirtual

apply operator to x, scale and add: $ y = y + \alpha A(x) $

Implements Dune::LinearOperator< X, Y >.

◆ category()

template<class M , class X , class Y , class C >
virtual SolverCategory::Category Dune::OverlappingSchwarzOperator< M, X, Y, C >::category ( ) const
inlinevirtual

Category of the linear operator (see SolverCategory::Category)

Implements Dune::LinearOperator< X, Y >.

◆ getCommunication()

template<class M , class X , class Y , class C >
const communication_type & Dune::OverlappingSchwarzOperator< M, X, Y, C >::getCommunication ( ) const
inline

Get the object responsible for communication.

◆ getmat()

template<class M , class X , class Y , class C >
virtual const matrix_type & Dune::OverlappingSchwarzOperator< M, X, Y, C >::getmat ( ) const
inlinevirtual

get the sequential assembled linear operator.

Implements Dune::AssembledLinearOperator< M, X, Y >.


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