A scalar product for multi-type vectors. More...
#include <dumux/linear/scalarproducts.hh>
A scalar product for multi-type vectors.
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) 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... | |
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 |
category of the scalar product
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 |
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)
|
inlineoverride |
compute 2-norm of a right-hand side vector