version 3.8
Dumux::ParallelMultiTypeScalarProduct< X, C > Class Template Reference

A scalar product for multi-type vectors. More...

#include <dumux/linear/scalarproducts.hh>

Inheritance diagram for Dumux::ParallelMultiTypeScalarProduct< X, C >:

Description

template<class X, class C>
class Dumux::ParallelMultiTypeScalarProduct< X, C >

Consistent vectors in interior and border are assumed

Template Parameters
XThe type of the sequential vector to use for the left hand side, e.g. Dune::MultiTypeBlockVector or another type fulfilling its interface
CThe type of the communication object This must either be Dune::OwnerOverlapCopyCommunication or a type implementing the same interface

Dune::OwnerOverlapCopyCommunication can represent a overlapping or a non-overlapping decomposition. This class allows to use different types of decompositions for each sub-domain of the vector.

Public Types

using domain_type = X
 
using field_type = typename X::field_type
 
using real_type = typename Dune::FieldTraits< field_type >::real_type
 
using communication_type = C
 

Public Member Functions

 ParallelMultiTypeScalarProduct (const std::array< std::shared_ptr< const communication_type >, numSubDomains > &comms)
 
field_type dot (const X &x, const X &y) const override
 Dot product of two vectors It is assumed that the vectors are consistent on the interior+border partition According to Blatt and Bastian (2009) https://doi.org/10.1504/IJCSE.2008.021112 they only have to be in a "valid representation" (i.e. all dofs owned by the process have the same value as the global vector) More...
 
real_type norm (const X &x) const override
 compute 2-norm of a right-hand side vector More...
 
Dune::SolverCategory::Category category () const override
 category of the scalar product More...
 

Member Typedef Documentation

◆ communication_type

template<class X , class C >
using Dumux::ParallelMultiTypeScalarProduct< X, C >::communication_type = C

◆ domain_type

template<class X , class C >
using Dumux::ParallelMultiTypeScalarProduct< X, C >::domain_type = X

◆ field_type

template<class X , class C >
using Dumux::ParallelMultiTypeScalarProduct< X, C >::field_type = typename X::field_type

◆ real_type

template<class X , class C >
using Dumux::ParallelMultiTypeScalarProduct< X, C >::real_type = typename Dune::FieldTraits<field_type>::real_type

Constructor & Destructor Documentation

◆ ParallelMultiTypeScalarProduct()

template<class X , class C >
Dumux::ParallelMultiTypeScalarProduct< X, C >::ParallelMultiTypeScalarProduct ( const std::array< std::shared_ptr< const communication_type >, numSubDomains > &  comms)
inline

Member Function Documentation

◆ category()

template<class X , class C >
Dune::SolverCategory::Category Dumux::ParallelMultiTypeScalarProduct< X, C >::category ( ) const
inlineoverride

see Dune::SolverCategory::Category

as we have potentially several categories choose overlapping if there is no clear category This is part of a check mechanism and the category has to match with the linear operator and preconditioner when used in a parallel solver.

◆ dot()

template<class X , class C >
field_type Dumux::ParallelMultiTypeScalarProduct< X, C >::dot ( const X &  x,
const X &  y 
) const
inlineoverride

◆ norm()

template<class X , class C >
real_type Dumux::ParallelMultiTypeScalarProduct< X, C >::norm ( const X &  x) const
inlineoverride

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