AMDiS  2.10
The Adaptive Multi-Dimensional Simulation Toolbox
Traits.hpp
1 #pragma once
2 
3 #include <dune/common/fmatrix.hh>
4 #include <dune/common/fvector.hh>
5 #include <dune/grid/common/partitionset.hh>
6 #include <dune/istl/operators.hh>
7 #include <dune/istl/preconditioner.hh>
8 #include <dune/istl/scalarproducts.hh>
9 #include <dune/istl/solver.hh>
10 
11 #include <amdis/linearalgebra/SparsityPattern.hpp>
12 #include <amdis/linearalgebra/istl/IndexDistribution.hpp>
13 #include <amdis/linearalgebra/istl/Creators.hpp>
14 #include <amdis/linearalgebra/istl/MatrixBackend.hpp>
15 #include <amdis/linearalgebra/istl/VectorBackend.hpp>
16 
17 namespace AMDiS
18 {
22  struct ISTLTraits
23  {
24  template <class Basis>
25  using IndexDist = ISTLIndexDistribution_t<Basis>;
26 
27  template <class RowBasis, class ColBasis>
28  struct Matrix
29  {
31 
32  template <class Value>
34  };
35 
36  template <class>
37  struct Vector
38  {
39  template <class Value>
41  };
42 
43  using PartitionSet = Dune::Partitions::All;
44  };
45 
46  using BackendTraits = ISTLTraits;
47 
48 
49  template <class Mat, class VecX, class VecY = VecX>
50  struct SolverTraits
51  {
52  using M = typename Mat::BaseMatrix;
53  using X = typename VecX::BaseVector;
54  using Y = typename VecY::BaseVector;
55  using Comm = typename Mat::Comm;
56 
57  using ScalProd = Dune::ScalarProduct<X>;
58  using LinOp = Dune::AssembledLinearOperator<M, X, Y>;
59  using Solver = Dune::InverseOperator<X, Y>;
60  using Prec = Dune::Preconditioner<X, Y>;
64  };
65 
66  template <class Traits>
68  {
69  using Comm = typename Traits::Comm::Sequential;
70  };
71 
72 } // end namespace AMDiS
Definition: Traits.hpp:28
Definition: Traits.hpp:67
Definition: AdaptBase.hpp:6
Creator to create ScalarProduct objects.
Definition: Creators.hpp:23
Definition: Traits.hpp:37
Definition: MatrixBackend.hpp:30
A general sparsity pattern implementation using the full pattern of the basis by adding all local ind...
Definition: SparsityPattern.hpp:14
Definition: Traits.hpp:22
Definition: Traits.hpp:14
Creator to create Linear Operator objects.
Definition: Creators.hpp:65
Definition: Traits.hpp:50
Creator to create parallel Preconditioners.
Definition: Creators.hpp:108
Definition: VectorBackend.hpp:26