A scalar product for multi-type vectors. More...
#include <dumux/linear/scalarproducts.hh>
Consistent vectors in interior and border are assumed
| X | The type of the sequential vector to use for the left hand side, e.g. Dune::MultiTypeBlockVector or another type fulfilling its interface | 
| C | The 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) | |
| real_type | norm (const X &x) const override | 
| compute 2-norm of a right-hand side vector | |
| Dune::SolverCategory::Category | category () const override | 
| category of the scalar product | |
| using Dumux::ParallelMultiTypeScalarProduct< X, C >::communication_type = C | 
| using Dumux::ParallelMultiTypeScalarProduct< X, C >::domain_type = X | 
| using Dumux::ParallelMultiTypeScalarProduct< X, C >::field_type = typename X::field_type | 
| using Dumux::ParallelMultiTypeScalarProduct< X, C >::real_type = typename Dune::FieldTraits<field_type>::real_type | 
| 
 | inline | 
| 
 | 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.
| 
 | inlineoverride | 
| 
 | inlineoverride |