24#ifndef DUMUX_LINEAR_SOLVER_TRAITS_HH
25#define DUMUX_LINEAR_SOLVER_TRAITS_HH
27#include <dune/istl/schwarz.hh>
28#include <dune/istl/novlpschwarz.hh>
29#include <dune/istl/owneroverlapcopy.hh>
30#include <dune/istl/paamg/pinfo.hh>
31#include <dune/istl/preconditioners.hh>
32#include <dune/grid/common/capabilities.hh>
42#include <dune/grid/uggrid.hh>
47template<
class Gr
id,
int codim>
50 static const bool v =
false;
54template<
int dim,
int codim>
57 static const bool v =
true;
67template<
class Gr
idGeometry, DiscretizationMethod discMethod>
71template<
class Gr
idGeometry>
75template<
class MType,
class VType>
83 template<
class SeqPreconditioner>
88template <
class MType,
class VType>
94 using Comm = Dune::OwnerOverlapCopyCommunication<Dune::bigunsignedint<96>,
int>;
95 using LinearOperator = Dune::NonoverlappingSchwarzOperator<MType, VType, VType, Comm>;
96 using ScalarProduct = Dune::NonoverlappingSchwarzScalarProduct<VType, Comm>;
99 template<
class SeqPreconditioner>
100 using Preconditioner = Dune::NonoverlappingBlockPreconditioner<Comm, SeqPreconditioner>;
103template <
class MType,
class VType>
109 using Comm = Dune::OwnerOverlapCopyCommunication<Dune::bigunsignedint<96>,
int>;
110 using LinearOperator = Dune::OverlappingSchwarzOperator<MType, VType, VType, Comm>;
114 template<
class SeqPreconditioner>
115 using Preconditioner = Dune::BlockPreconditioner<VType, VType, Comm, SeqPreconditioner>;
119template<
class Gr
idGeometry>
123 using Grid =
typename GridGeometry::GridView::Traits::Grid;
125 template<
class Matrix,
class Vector>
129 template<
class Matrix,
class Vector>
132 template<
class Matrix,
class Vector>
138template<
class Gr
idGeometry>
143 using Grid =
typename GridGeometry::GridView::Traits::Grid;
144 static constexpr int dofCodim = Grid::dimension;
147 static constexpr bool canCommunicate =
148 Dune::Capabilities::canCommunicate<Grid, dofCodim>::v
151 template<
class Gr
idView>
153 {
return gridView.overlapSize(0) == 0; }
157template<
class Gr
idGeometry>
162 using Grid =
typename GridGeometry::GridView::Traits::Grid;
163 static constexpr int dofCodim = 0;
166 static constexpr bool canCommunicate =
167 Dune::Capabilities::canCommunicate<Grid, dofCodim>::v
170 template<
class Gr
idView>
176template<
class Gr
idGeometry>
181template<
class Gr
idGeometry>
The available discretization methods in Dumux.
DiscretizationMethod
The available discretization methods in Dumux.
Definition: method.hh:37
Definition: common/pdesolver.hh:35
Definition: linearsolvertraits.hh:45
Definition: linearsolvertraits.hh:49
static const bool v
Definition: linearsolvertraits.hh:50
The implementation is specialized for the different discretizations.
Definition: linearsolvertraits.hh:68
sequential solver traits
Definition: linearsolvertraits.hh:77
MType Matrix
Definition: linearsolvertraits.hh:78
VType Vector
Definition: linearsolvertraits.hh:79
Dune::MatrixAdapter< MType, VType, VType > LinearOperator
Definition: linearsolvertraits.hh:80
SeqPreconditioner Preconditioner
Definition: linearsolvertraits.hh:84
Dune::SeqScalarProduct< VType > ScalarProduct
Definition: linearsolvertraits.hh:81
Definition: linearsolvertraits.hh:90
Dune::NonoverlappingSchwarzOperator< MType, VType, VType, Comm > LinearOperator
Definition: linearsolvertraits.hh:95
MType Matrix
Definition: linearsolvertraits.hh:92
Dune::NonoverlappingBlockPreconditioner< Comm, SeqPreconditioner > Preconditioner
Definition: linearsolvertraits.hh:100
Dune::NonoverlappingSchwarzScalarProduct< VType, Comm > ScalarProduct
Definition: linearsolvertraits.hh:96
VType Vector
Definition: linearsolvertraits.hh:93
Dune::OwnerOverlapCopyCommunication< Dune::bigunsignedint< 96 >, int > Comm
Definition: linearsolvertraits.hh:94
static constexpr bool isNonOverlapping
Definition: linearsolvertraits.hh:97
Definition: linearsolvertraits.hh:105
static constexpr bool isNonOverlapping
Definition: linearsolvertraits.hh:112
Dune::OverlappingSchwarzOperator< MType, VType, VType, Comm > LinearOperator
Definition: linearsolvertraits.hh:110
MType Matrix
Definition: linearsolvertraits.hh:107
Dune::BlockPreconditioner< VType, VType, Comm, SeqPreconditioner > Preconditioner
Definition: linearsolvertraits.hh:115
VType Vector
Definition: linearsolvertraits.hh:108
Dune::OwnerOverlapCopyCommunication< Dune::bigunsignedint< 96 >, int > Comm
Definition: linearsolvertraits.hh:109
Dune::OverlappingSchwarzScalarProduct< VType, Comm > ScalarProduct
Definition: linearsolvertraits.hh:111
Definition: linearsolvertraits.hh:121
typename GridGeometry::GridView::Traits::Grid Grid
Definition: linearsolvertraits.hh:123
typename GridGeometry::GridView GridView
Definition: linearsolvertraits.hh:122
static bool isNonOverlapping(const GridView &gridView)
Definition: linearsolvertraits.hh:152
typename GridGeometry::VertexMapper DofMapper
Definition: linearsolvertraits.hh:142
static bool isNonOverlapping(const GridView &gridView)
Definition: linearsolvertraits.hh:171
typename GridGeometry::ElementMapper DofMapper
Definition: linearsolvertraits.hh:161